Over the course of my career, I introduced a couple of engineers into the topic of query engines. Every time, I bumped into the same problem: query engines are extremely academic. Despite the fact that industry has over 40 years of expertise, reading foundational papers and then sort of just googling around is the only way to dive deep. Database courses and seminars from Andy Pavlo definitely help, but they are still targeted at academic audience and require a lot of extra reading to be useful.| Nikita Lapkov
This site has buttons now! Here, try to click it: Click me! I added buttons that act as a simple counter with a name attached. These are good for polls too! Pineapple on pizza: Yay Nay Of course, the results will be biased because there is no deduplication. I don’t limit the number of clicks at all. If you really want to express your view on the pineapple pizza or just love to click stuff - I encourage you to click multiple times!| Nikita Lapkov
Imagine we have a list of paths to Parquet files on R2. We need to fetch Parquet footer of each file. However, we don’t know in advance whether we will need footers of all files and we want to avoid fetching extra. Rust has a streams abstraction. It is kind of like an iterator, but with async operations permitted. Like iterators, streams are lazy - they don’t do anything unless explicitly polled. This sounds like it ticks all the boxes, so lets try to implement it:| Nikita Lapkov
I really like RTS games. I pretty much grew up on them, starting with Command&Conquer 3: Kane’s Wrath, moving on to StarCraft 2 trilogy and witnessing the downfall of Command&Conquer 4. I never had the disks for any other RTS games during my teenage years. Yes, the disks, the ones you go to the store to buy! I didn’t know Steam existed back then, so this was my only source of games. There is something magical in owning a physical copy of the game. I always liked the art on the front (a ma...| Posts on Nikita Lapkov
Whether we like it or not, email is widely used to identify a person. Code sent to email is used as authentication and sometimes as authorisation for certain actions. I’m not comfortable with Google having such power over me, especially given the fact that they practically don’t have any support you can appeal to. If your Google account is blocked, that’s it. Maybe you know someone from Google and they can help you, but for most of us mortals that’s not an option.| Nikita Lapkov
I had the chance to speak at RustLab 2024! I will be honest, this was the point I realised that 4 conferences in one year was a bad idea. I was exhausted and overwhelmed, but I still had a blast meeting new people and answering the questions after the talk. It had the following abstract: Rhino: Low-latency Key-value Database in Rust Rhino is a key-value database optimised for low-latency edge workloads. It is built on top of FoundationDB and written entirely in Rust. This talk is a deep dive ...| Posts on Nikita Lapkov
I had the pleasure to speak at EuroRust this year! This was my third and final talk about elfo, an actor system written in Rust. As I’m no longer an active contributor to elfo, it feels a bit bittersweet to finish last thing related to the project. I wish maintainers of elfo well as they continue to push one of the most hard-core Rust code I’ve ever seen :) The talk had the following abstract:| Posts on Nikita Lapkov
This year, I was invited to speak at P99 Conf. The format of a virtual conference was new to me, but hats off to the organisers as it went very smooth for me. I presented a talk with the following abstract: Low-Latency Mesh Services Using Actors We’re transforming elfo, our Rust actor system, into a distributed mesh of services. Learn how we tackled message serialization, compression, and back-pressure to optimize for high-frequency trading. Dive into our journey to make everything observab...| Nikita Lapkov
Holy shit, what a year that was. It was absolutely bonkers overwhelming. A lot of interesting stuff happened, but at the same time I took on so much more than I could handle. Conferences Speaking at RustLab 2024 During late 2023 and early 2024 I applied to a bunch of conferences. Previously, I didn’t have any luck of becoming a speaker at non-Russian conferences - all of my talk proposals were rejected (with a notable exception of Handmade Seattle, which happened late 2023).| laplab.me
A month ago I received an email from the organisers of Rust Nation UK 2024 inviting me to speak at the conference. One of the speakers got COVID and I was chosen to be their replacement. I had less than 48 hours to prepare the slides, which was a fun challenge, but very stressful! The final result was a talk about my work on elfo with the following abstract: Type-safe and fault-tolerant mesh services with Rust| laplab.me
Discussion on HackerNews and Lobsters. Roughly a year ago I moved into my new apartment. One of the reasons I picked this apartment was age of the building. The construction was finished in 2015, which ensured pretty good thermal isolation for winters as well as small nice things like Ethernet ports in each room. However, there was one part of my apartment that was too new and too smart for me.| laplab.me
Disclaimer: When reading this post, please keep in mind that you are likely to come from a very different cultural background than me. Russians approach life in their own way and some things might seem strange. Still, this was my path and I would like to share it. My name is Nikita, I am 23 years old Software Engineer working on query execution at MongoDB. I would like to share how I ended up here.| laplab.me
Feel free to join the discussion on HackerNews. In the early 2020 I was working in the Distributed Queries team of YDB. YDB is a Distributed SQL Database that combines high availability and scalability with strong consistency and ACID transactions. One of my key tasks there was to develop new storage format for JSON data. YDB recently became open source, so I can now share some interesting technical details behind this journey.| laplab.me
Feel free to join the discussion on HackerNews. Compilers always seemed a little bit like magic to me. You write the code in some language and then it spits out bitcode that a small crystall inside your computer understands. Some databases ship with a specialized compiler inside them. This compiler can generate assembly code for parts of the query that are executed often. Such technique is called JIT compilation and can greatly reduce the interpretation overhead during query execution.| laplab.me