{ "version": "https:\/\/jsonfeed.org\/version\/1.1", "title": "Oleg Andreev", "_rss_description": "Software designer and crypto-anarchy historian. about • twitter • telegram", "_rss_language": "en", "_itunes_email": "oleganza@gmail.com", "_itunes_categories_xml": "", "_itunes_image": "https:\/\/oleganza.com\/pictures\/userpic\/userpic-square@2x.jpg?1686684482", "_itunes_explicit": "no", "home_page_url": "https:\/\/oleganza.com\/", "feed_url": "https:\/\/oleganza.com\/json\/", "icon": "https:\/\/oleganza.com\/pictures\/userpic\/userpic@2x.jpg?1686684482", "authors": [ { "name": "Oleg Andreev", "url": "https:\/\/oleganza.com\/", "avatar": "https:\/\/oleganza.com\/pictures\/userpic\/userpic@2x.jpg?1686684482" } ], "items": [ { "id": "38", "url": "https:\/\/oleganza.com\/all\/consume-content\/", "title": "Forbidden words", "content_html": "

Consume content<\/s><\/p>\n

These two words embody many things that are wrong in technology, business and our society. Both words are forbidden in my company.<\/p>\n

Do I still need to elaborate?<\/p>\n

Abstract concepts such as “user” \/ “consumes” \/ “content” used routinely strip the things we love doing from all humanity and sense. When I listen how Apple engineers explain how you can put your content in a glassy rounded box, I sigh and remember how Steve Jobs was talking about concrete things that matter: people reading, artists drawing, musicians composing. Things made sense and products were made with concrete purpose.<\/p>\n

When we use such newspeak at work, we focus on the form and forget about the meaning. We stop communcating with clients and start living in our own world of platonic ideas. Results of such work do not make the life better. At best, they produce temporary excitement and fading attention.<\/p>\n

Be precise, seek meaning, be human.<\/p>\n", "date_published": "2025-07-08T21:49:39+00:00", "date_modified": "2025-07-08T21:49:30+00:00", "tags": [], "_date_published_rfc2822": "Tue, 08 Jul 2025 21:49:39 +0000", "_rss_guid_is_permalink": "false", "_rss_guid": "38", "_rss_enclosures": [], "_e2_data": { "is_favourite": false, "links_required": [], "og_images": [] } }, { "id": "1", "url": "https:\/\/oleganza.com\/all\/about-oleg-andreev\/", "title": "About Oleg Andreev", "content_html": "

I am into UI design, software architecture, information security and crypto-anarchy.<\/p>\n

On crypto industry<\/h2>\n

Blockchain is social game based on math tricks to escape 5000-year-old symmetry of force. Crypto assets are harder to steal than to protect. Bitcoin is better than gold in all respects. It is a 500-meter solid cast iron plate, on which our entire civilisation can stand. For everyday finances people need a flexible super-structure and that’s why I am building TON. Blockchains give ultimate freedom to all of us, that’s why 99% of projects are scam, but 1% make the revolution. Do your own research.<\/p>\n

Select Public Talks<\/h2>\n

ZkVM talk at Zcon1 conference<\/a> (Split, Croatia, 2019)<\/p>\n

All cryptography is bad<\/a> (Riga, Latvia, 2019)<\/p>\n

ZkVM Talk (Russian)<\/a> (Izhevsk, Russia, 2021)<\/p>\n

TON Scalability Masterclass<\/a> (Prague, Czech Republic, 2022)<\/p>\n

Wallet W5 Standard Intro at TON Gateway<\/a> (Dubai, UAE, 2022)<\/p>\n

Writings<\/h2>\n

Inventions in cryptography and Bitcoin.<\/a><\/p>\n

Select articles on Bitcoin and cryptoanarchy.<\/a><\/p>\n

Work<\/h2>\n

Building Tonkeeper<\/a>: powerful wallet app for TON<\/a> (2021-2025).<\/p>\n

Author of ZkVM<\/a>: blockchain with confidential smart contracts (2019-2020).<\/p>\n

Author of Gitbox<\/a>, a 5-star version control app for OS X.<\/p>\n

Author of CoreBitcoin<\/a>, a Bitcoin toolkit for Objective-C and Swift (2013-2015).<\/p>\n

Author of BTCRuby<\/a>, a Bitcoin toolkit for Ruby (2014-2015).<\/p>\n

Designer and developer of Mycelium iOS wallet<\/a> (2014).<\/p>\n

Co-designer and developer of FunGolf GPS, currently TAG Heuer Golf<\/a>, the best assistant app for golfers (2012-2014).<\/p>\n

Initial designer and developer of VK<\/a> video service (2007–2008).<\/p>\n

Contacts<\/h2>\n

Email: oleganza@gmail.com<\/a><\/p>\n

Linked In: @oleganza<\/a><\/p>\n

Twitter: @oleganza<\/a><\/p>\n

Telegram channel: @oleganza_channel<\/a><\/p>\n

Github: @oleganza<\/a><\/p>\n

Location<\/h2>\n

London, UK.<\/p>\n", "date_published": "2025-06-24T06:02:00+00:00", "date_modified": "2026-01-09T19:22:35+00:00", "tags": [], "_date_published_rfc2822": "Tue, 24 Jun 2025 06:02:00 +0000", "_rss_guid_is_permalink": "false", "_rss_guid": "1", "_rss_enclosures": [], "_e2_data": { "is_favourite": false, "links_required": [], "og_images": [] } }, { "id": "35", "url": "https:\/\/oleganza.com\/all\/how-to-use-group-chats-in-telegram\/", "title": "How to use group chats in Telegram", "content_html": "

Sometimes you need to summon 3+ people in a group chat for a discussion. I’ve been using Telegram since it’s launch in 2013 and since then I have accumulated over 600<\/b> group chats. Most of those were added while working on Tonkeeper<\/a> in the past 2.5 years. When people use group chats incorrectly, we all suffer from the consequences.<\/p>\n

Here’s how to use group chats:<\/p>\n

    \n
  1. Make everyone an admin.<\/b> This will allow others invite more people, change picture and settings later without bothering you.<\/li>\n<\/ol>\n
      \n
    1. While making everyone an admin, do not check<\/b> “remain anonymous”. The person won’t be able to untick it themselves ¯\\_(ツ)_\/¯.<\/li>\n<\/ol>\n
        \n
      1. Immediately turn off<\/b> “history hidden from new members”. This will bite you when more people are coming in and miss out on important bits of information. In my practice keeping history secret was useful in grand total of three group chats in the past 2 years.<\/li>\n<\/ol>\n

        This advice works for 99% of family- and work-related chats. Of course, if you are starting a large community, or discuss something extra-sensistive, you’d pay extra attention to the settings and tune them to your situation.<\/p>\n

        PS. I wish Telegram added a quick toggle for that behavior somewhere on the chat setup screen.<\/p>\n", "date_published": "2024-05-03T05:51:06+00:00", "date_modified": "2024-05-03T05:50:57+00:00", "tags": [ "telegram", "ux" ], "_date_published_rfc2822": "Fri, 03 May 2024 05:51:06 +0000", "_rss_guid_is_permalink": "false", "_rss_guid": "35", "_rss_enclosures": [], "_e2_data": { "is_favourite": false, "links_required": [], "og_images": [] } }, { "id": "34", "url": "https:\/\/oleganza.com\/all\/blockchain-business-is-like-formula-one\/", "title": "Blockchain business is like Formula One", "content_html": "

        Building apps on a blockchain is very much like the top-tier racing sport, F1. And it’s not about speed, performance or running in circles.<\/p>\n

        You see, F1 is a technical sport between some of the best engineers on the planet, and the smartest one wins the trophies. In F1, like in real life, there is a stack of technical regulations saying what you can and cannot do. If you break the regulations — you are disqualified. If you meet the regulations — try hard to reach the fourth, third, or maybe even a second place.<\/p>\n

        But in order to win your job is to find the gap — the one where the regulations mean one thing, but actually say a different one. That’s where the true geniuses figure out extra power and downforce to be added to otherwise excellent engineering expected from everyone in the paddock.<\/p>\n

        Blockchains and Fintech are somewhat like this. You don’t want to break the regulations, but you also don’t want to make a complicit product — blockchain part adds more overhead and instability to whatever traditional piece of software you are doing. Blockchain products are used in the middle area: where people need to break away from corrupt status quo imposed by old order, achieve personal freedom and take personal responsibility. All while using it wisely and not get disqualified.<\/p>\n

        In F1 only the top of the top need to find the gap. In blockchain everyone has to play this game to stay afloat. Airdrops instead of ICOs. NFTs instead of securities. Self-custody apps instead of banks. Zero-knowledge protocols over cloud computing.<\/p>\n

        You don’t disrupt the world head-on. You work around the obstacles by building a better way.<\/p>\n", "date_published": "2024-05-01T14:46:33+00:00", "date_modified": "2024-05-01T14:45:19+00:00", "tags": [ "blockchain" ], "_date_published_rfc2822": "Wed, 01 May 2024 14:46:33 +0000", "_rss_guid_is_permalink": "false", "_rss_guid": "34", "_rss_enclosures": [], "_e2_data": { "is_favourite": false, "links_required": [], "og_images": [] } }, { "id": "31", "url": "https:\/\/oleganza.com\/all\/component-vs-interconnect-language\/", "title": "Component vs Interconnect language", "content_html": "

        Insightful quotes from an article by Marcel Weiher on Mojo<\/a>, a new language designed by Chris Lattner (the author of LLVM and Swift).<\/p>\n

        To those who don’t know: Mojo is a fun new language that extends Python with features usually reserved for “systems programming”: static type system, algebraic types and memory ownership. The language is so fun, the file extension is the fire emoji, literally: filename.🔥<\/i>.<\/p>\n

        So here is the quote:<\/p>\n

        \n

        The scripted component pattern itself is a (common) solution to the problem, first identified in the 70s that programming-in-the-large is not the same as programming-in-the-small, that module implementation<\/i> languages are not necessarily suitable as module interconnection<\/i> languages.
        \n...
        \nThe reason [Swift’s and ObjC’s made a] mistake is that it turns out that the connection language is actually the more general one, the component language is a specialisation of the connection language.
        \nWith this realisation, Mojo’s approach of making the connection language the base language make sense.<\/p>\n<\/blockquote>\n", "date_published": "2023-06-12T10:29:18+00:00", "date_modified": "2023-06-12T10:29:11+00:00", "tags": [], "_date_published_rfc2822": "Mon, 12 Jun 2023 10:29:18 +0000", "_rss_guid_is_permalink": "false", "_rss_guid": "31", "_rss_enclosures": [], "_e2_data": { "is_favourite": false, "links_required": [], "og_images": [] } }, { "id": "28", "url": "https:\/\/oleganza.com\/all\/ton\/", "title": "TON", "content_html": "

        Bitcoin is dead again, economies are in recession, wars are everywhere. It’s once again the time to build decentralized systems!<\/p>\n

        Preface<\/h2>\n

        For the past 8 years I’ve been extensively studying cryptography, Bitcoin, politics of crypto-anarchy and cypherpunk culture. The very first day when I discovered Bitcoin I understood that the world is irreversibly moving towards decentralized finance based on asymmetric security<\/a> offered by powerful cryptographic protocols.<\/p>\n

        As a product designer, I decided to help bridge the UI\/UX culture with the most hardcore cipherpunk culture. I built the first iOS library for Bitcoin<\/a> that at some point powered half of the wallets on AppStore. My Bitcoin FAQ was recurring in the Bitcoin Magazine. I’ve written a number of popular articles on crypto-anarchy and Bitcoin<\/a>.<\/p>\n

        I began studying cryptography by designing my own blind signature scheme<\/a> aimed at improving security of crypto-wallets while not compromising ergonomics and privacy. Together with amazing Cathie Yun<\/a> and Henry de Valence<\/a> I’ve built zero-knowledge library Bulletproofs<\/a>. Then on top of it — a novel blockchain format for confidential smart contracts ZkVM<\/a> based on our prior work on TxVM<\/a> with Dan Robinson<\/a> and others at Chain<\/a>.<\/p>\n

        TON born and reborn<\/h2>\n

        While I was busy with ZkVM, folks at Telegram invented yet another blockchain, TON (then — “Telegram Open Network”). They tried to do an ICO, but were threatened by SEC and abandoned the project<\/a>.<\/p>\n

        But TON did not die. The coins were dumped into mining contracts on the testnet (sidenote: oh, the irony — people mining coins on the proof-of-stake blockchain), from where the early community of developers and investors continued tinkering with the thing. This was somewhat similar to Bitcoin where we all had to decipher Bitcoin all by ourselves after its founder left the project without leaving much guidance.<\/p>\n

        In 2021 TON testnet was renamed into mainnet, its coins got listed on a couple of exchanges and the activity around the network began to grow. That’s when I learned (to my surprise) that TON is no longer an abandonware and began work on Tonkeeper<\/a>.<\/p>\n

        It’s all about scaling<\/h2>\n

        TON is an attempt to resolve two conflicting requirements: provide a flexible development environment on the blockchain to allow any sort of apps to be programmed, while making sure they also become horizontally scalable.<\/p>\n

        Bitcoin and Ethereum make two opposing choices here. Bitcoin (and LN) work fine at scale, but focus on virtually one use-case — securing your savings. Ethereum offers a simple yet powerful development environment, but it does not scale for the intended use-cases.<\/p>\n

        The idea of TON is to solve both of these issues and roll out decentralized markets at a massive scale.<\/p>\n

        TON is weird<\/h2>\n

        Any engineer worth their salt would recognize that there must be some tradeoff if you attempt to solve both problems. The tradeoff that TON makes is employing one of the weirdest execution models in the entire computer industry<\/b>. TON’s model has elements of Smalltalk’s OOP, Erlang’s distributed processes, hostility of web services and unforgiveness of smart contract and consensus systems.<\/p>\n

        In the name of scalability, TON makes many hard decisions.<\/p>\n

        For instance, your smart contract has to pay rent for its storage.<\/b> When it runs out of money — it is frozen, and when it runs out of money more<\/i>, its entire state is completely forgotten. This is somewhat dangerous because the contract may later be reset and all its external messages could be replayed.<\/p>\n

        Another example: contracts cannot read each other’s state.<\/b> Of course, we can only send one-way messages, but we can do some good-old client-server request-response exchange, right? Not really. Those requests and responses are taking many seconds, you cannot afford any locks or mutexes (due to denial-of-service exploits), and yours or someone else’s state may change in-between these communications. Your only option is to carefully design mostly unidirectional graphs of transactions where you tell, don’t ask<\/u>”<\/a> as Smalltalk programmers taught us.<\/p>\n

        One more shocking idea: in TON there are no allocations and no arrays.<\/b> Your only array is the blockchain itself. The reason again is the goal of infinite scalability. The network shards the blockchain, you place your data all over the place so it’s not creating a bottlneck anywhere. If you have a multi-user contract, you should store per-user data in some sort of tokens — independent smart-contracts held by individual users. The endgame is to have O(1)-ish complexity of all the pieces, which is good, but sometimes feels like you are designing a real-time aviation software (which is also good).<\/p>\n

        Crossing the chasm<\/h2>\n

        I think TON is an exciting technology. All its shortcomings are not rooted in the architecture, but in the lack of tooling and infrastructure. It is too low-level: it is a platform for building a platform for decentralized apps. Or maybe for a platform for a platform for a platform. The exciting bit is that we are starting to discover missing concepts and abstractions and can improve the design of the apps and programming languages.<\/p>\n

        This summer I kickstarted work on a new language for TON: Tact language<\/a>. It is aimed at bringing order into highly asynchronous nature of smart contracts and make it easy to write secure multi-contract apps.<\/p>\n

        Later in this year I’ve attended a couple of TON-themed meetups in Prague and Dubai, where together with fellow developers we brainstormed a conceptual framework for TON contracts<\/a>.<\/p>\n

        This is an exciting start of a long journey.<\/p>\n", "date_published": "2022-12-04T15:18:54+00:00", "date_modified": "2023-01-12T16:02:09+00:00", "tags": [], "_date_published_rfc2822": "Sun, 04 Dec 2022 15:18:54 +0000", "_rss_guid_is_permalink": "false", "_rss_guid": "28", "_rss_enclosures": [], "_e2_data": { "is_favourite": false, "links_required": [], "og_images": [] } }, { "id": "27", "url": "https:\/\/oleganza.com\/all\/apple-lies-about-appstore\/", "title": "Apple lies about App Store", "content_html": "

        Apple has published a brochure Building a Trusted Ecosystem for Millions of Apps<\/a> where they argue that the App Store is an important middleman that delivers safety to billions of people and that if people are allowed to load apps from random sources, bad things™ would happen.<\/p>\n

        I respect many people at Apple who work real hard to push for better design and better technology. I also respect Apple as a commercial enterprise that knows how to make money that funds all that design and technology with scale and consistency.<\/p>\n

        However, we should call propaganda for what it is. The App Store is not the important middleman that provides safety for the users. It is the design of the gadget itself that protects the owner and their data from malicious or malfunctioning code. Of course, there are spots of imperfection, but the App Store provides only a superficial and incomplete substitute for a solid technical solution within the design of the hardware and the software.<\/p>\n

        The principle<\/b><\/p>\n

        I’ll get to the boring commentary of the points made by the brochure below, but before I’d like to remind you all of a principle formulated in 2010 by Ivan Krstić who still works on core security at Apple: “security driven by user intent”. At WWDC 2010, Apple announced sandbox technology<\/i> being brought from iPhone to the Mac. Ivan made an insightful presentation that explained the philosophy behind this:<\/p>\n