Posted on August 12, 2025 by Evgeny Poberezkin Tags: security, internet This essay is purposefully provocative. It has no intention to offend anybody. I appreciate that many people worked very hard designing and implementing MLS (Messaging Layer Security), and many of them have a fervent belief that MLS is a necessary technology. But the value of the technology is not determined by how much was invested, nor by who supports it. The value of technology comes from effectively solving problems f...| Evgeny Poberezkin
Posted on October 31, 2023 by Evgeny Poberezkin Tags: security, internet This post is about myths and realities of privacy, business and venture funding. The privacy community is isolated from the rest of people. Unless it changes privacy won’t become a norm for technology solutions. Without venture funding, SimpleX Chat would not exist In 2022 I raised funds for SimpleX Chat from several angel investors and an early stage VC fund Village Global 1. They believe that everybody will want comm...| Evgeny Poberezkin
Evgeny Poberezkin's blog| www.poberezkin.com
Posted on December 7, 2022 by Evgeny Poberezkin Tags: privacy, internet It’s been more than a year since I wrote here. Since December 2021 I’ve been working on SimpleX Chat 1 non-stop. I said many times that SimpleX is not only one of the most private communication platforms in existence 2, it also redefines the meaning of privacy for its users, and delivers the level of metadata privacy no other communication platform can because of their design decisions. Quite a few people criticized m...| Evgeny Poberezkin
Posted on April 21, 2021 by Evgeny Poberezkin Tags: haskell, coding, essay This post started as a rant in the email to a colleague, moving to messages with my son, and then to LinkedIn exchanges with some well known people in Haskell community (who were kind enough not to ban me)… I tried to convert this rant into the collection of ideas that I hope could help both the people who are just starting to learn Haskell and, maybe, some of those who are getting through the advanced levels. Why Ha...| Evgeny Poberezkin
Posted on February 11, 2021 by Evgeny Poberezkin Tags: open-source, javascript, json-schema, coding, ajv This post is also published by OpenJS foundation Version 7 It’s been over a month since Ajv version 7 was released, and in this time many users have migrated to the new version. Ajv v7 is a complete rewrite that both changed the language to TypeScript and also changed the library design. I’m happy to share that it has been relatively smooth, without any major issues. What’s new I’v...| Evgeny Poberezkin
Posted on November 14, 2020 by Evgeny Poberezkin Tags: open-source, javascript, json-schema, coding, ajv Prologue My relationship with Ajv changed over time, going full circle: the weekend project to enable another project almost nobody knows about (this short conference talk can give you some context). the project I had a growing excitement about as it was becoming more and more adopted, with some huge number of JavaScript developers using it all over the world, millions of GitHub projects d...| Evgeny Poberezkin
Posted on September 4, 2020 by Evgeny Poberezkin Tags: haskell, executable, coding Modeling state machines with dependent types in Haskell: Part 2 This post is “literate” haskell (thanks to markdown-unlit), it can be run from the site repo using GHC 8.8.3 with stack run atm. You may want to read first “Modeling state machines with dependent types in Haskell: Part 1”, - this post builds upon it and answers the questions raised there. If you used singletons package and aware of the stat...| Evgeny Poberezkin
Posted on August 14, 2020 by Evgeny Poberezkin Tags: open-source, javascript, json-schema, coding, ajv I am really excited to share this news: Ajv has been awarded a grant from Mozilla’s Open Source Support (MOSS) program in the “Foundational Technology” track and it joined the OpenJS Foundation! What is Ajv? Ajv is a JavaScript open-source library for data validation using JSON Schema standard. I started developing Ajv 5 years ago, because all validators I’ve tested failed some of th...| Evgeny Poberezkin
Posted on June 29, 2020 by Evgeny Poberezkin Tags: haskell, executable, coding This post is “literate” haskell (thanks to markdown-unlit), it can be run using GHC 8.8.3 with stack run elevator. Why? The reason to use types to model state transitions is to guarantee the correctness of state machine implementation by the way it is constructed, so that invalid implementations fail to compile. When we model a state machine we usually create some diagram or use some meta-language to show allow...| Evgeny Poberezkin
Posted on May 17, 2020 by Evgeny Poberezkin Tags: haskell, coding Haskell has a very advanced type system, but it does not yet have dependent types. Yet, singleton types and singletons library provide a very good approximation of dependent types, that is shown on this diagram - the explanations to follow. Justin Le wrote a fantastic introduction to singletons library and dependent type programming with Haskell - if you did not use singletons library before, I highly recommended reading it. I...| Evgeny Poberezkin
Posted on April 29, 2020 by Evgeny Poberezkin Tags: haskell, coding Haskell type system has dramatically evolved, both with the language extensions and libraries. It can be a challenge to navigate this space. So why anything beyond basic types is needed? Types in Haskell provide a way not only to type-check the code you write, but to design the whole system in types, before any code is written, and then use the types to guide the development. It is worth reading the book “Type-driven develo...| Evgeny Poberezkin
Posted on March 15, 2020 by Evgeny Poberezkin Tags: haskell, executable, coding The thesis here is that Haskell is not just one of many functional programming languages — it is a different, more advanced programming paradigm. Haskell is indeed a functional language, but calling Haskell “a functional language” is like calling a skyscraper “a dwelling” — while technically correct, it does not describe how the latter is much more than just a place to live. What defines a programming ...| Evgeny Poberezkin
Posted on July 10, 2019 by Evgeny Poberezkin Tags: talk, coding, open-source This is a talk at FullStack London 2019. Coding is hard but you still love it. But you also hate it, at least on some days. Humans are unpredictable so you chose to work with code and computers. But code outcomes are becoming increasingly unpredictable, and to succeed in coding you need to succeed with other humans. Open-source contribution is a complete waste of time. But it is also the best investment of time you c...| Evgeny Poberezkin
Posted on May 31, 2019 by Evgeny Poberezkin Tags: essay When we are children, we choose the stories of our future lives. “I will be a cosmonaut.” Or “I will be a doctor”. Our stories are supported by parents — toys fuel our fantasies until they burn out and we move on. For most of us these stories change many times as we grow up. Few stay fixated on the story to live it, fewer turn out to be happy when they do. As we become older we continue choosing such stories. “I want to be a ...| Evgeny Poberezkin
Posted on July 12, 2017 by Evgeny Poberezkin Tags: talk, github, coding, open-source This is a talk at FullStack London 2017. If your organisation has hundreds of code repositories you probably have some guidelines for them: how they are documented, how branches are protected, whether direct commits to master branch are allowed or only PRs should be used and all PRs should be reviewed, whether tests are run and code coverage is reported to PRs, etc. Making sure that those guidelines are follo...| Evgeny Poberezkin
Posted on April 28, 2017 by Evgeny Poberezkin Tags: talk, reactive This is a talk at Progscon 2017. Slides are available in slideshare. This is a journey through the evolution of both the definition and implementations of Reactive Programming and how they have been converging in a quest to make building responsive applications a sane process. We are still at the point where there is no complete consensus on what a reactive application is; I will explore how this consensus is evolving and what...| Evgeny Poberezkin
Posted on February 19, 2017 by Evgeny Poberezkin Tags: tests, coding Test Driven Development existed long before the term itself. It’s been “rediscovered” and popularised by Kent Beck, the creator of Extreme Programming. He wrote on Quora: The complexity of software systems since those ancient times has evolved to a point when it is no longer possible to define the expected application behaviours in as simple terms as “the output tape you expect”. The software development community ...| Evgeny Poberezkin
Posted on September 10, 2016 by Evgeny Poberezkin Tags: javascript, coding I have been hearing the mantra “eval is evil” for many years by now and none of the arguments presented to support it made any sense until very recently. Let’s explore the myths of eval, uncover the real evil behind it and find out the alternative way to reap eval’s benefits without its evilness. All the code examples below are available in eval-is-evil repository. Myth #1: Eval Is Bad For Performance This stat...| Evgeny Poberezkin
Posted on July 13, 2016 by Evgeny Poberezkin Tags: talk, javascript, open-source This is a talk at FullStack London 2016. A very common situation in web development: you need to make multiple requests, often with some conditions and logic between calls, to get the required result. It can be achieved in three ways: Sending multiple requests to the server and implementing all the processing logic in the client. The advantage of this approach is that the server remains unchanged and the client c...| Evgeny Poberezkin
Posted on March 3, 2016 by Evgeny Poberezkin Tags: json-schema, tutorial, coding, ajv Tutsplus.com published my 2 part tutorial on how to use JSON-schemas and also about some other related stuff: use schemas to define default values and to filter data version 5 proposals for the JSON-schema standard define custom validation keywords JSON-schema validators comparison (so far my Ajv is ahead :)| Evgeny Poberezkin