• Exploring a possible implementation of non-blocking IO by writing a server on pure syscalls

    • Translation

    How do people usually write a server if they don't really care about performance? A program starts, then starts accepting incoming connections from clients and starts a new thread for each client, which is engaged in servicing this client. If you use framework, like Spring or Flask or Poco there, then it does something like this inside itself - the only difference is the threads can be reused, that is, taken from a certain pool. It's all quite convenient, but not too effective (and Spring is bad). Most likely, your threads serving clients do not live long and most of the time they are waiting either to receive data from the client or to send it to the client - that is, they are waiting for some system calls to return. Creating an OS thread is quite an expensive operation, as is context switching between OS threads. If you want to be able to serve a lot of customers efficiently, you need to come up with something else. For example, callbacks, but they are pretty inconvenient (though there are different opinions on this).

    Another option is to use non-blocking I/O in combination with some kind of implementation of user-space threads (fibers). In this article I will show you how to write all this with your own hands.

    Read more
  • Setting Up an Experiment Environment for Data-Driven Product Development

    As a product owner, it is common to face the question of whether to proceed with option A or option B. Or, which version of the screen should be implemented to achieve better results? Making such decisions can be challenging, especially when you are under tight deadlines with limited resources. Furthermore, such decisions are made based on personal judgment or copying the approach of a competitor, which can lead to suboptimal results.

    The good news is that one can avoid such pitfalls by setting up a simple experiment environment that requires relatively low effort. In this article, we will describe how you can achieve this.

    Read more
  • Machine Learning for price optimization

    • Tutorial
    • Translation

    This is a translated and adopted article I wrote for the Aha'22 (30 May 2022) conference. It describes an approach to a marketplace prices optimisation. Here I've outlined some important definitions and tried to define the scopes and roles of ML, algorithms, and humans in optimal pricing. Although the article covers rather basic things, still, you can find out some new formulas and ideas, because these basics are somewhat "well-known only in a very closed clubs", and besides, the real gem found here is the detailed recipe for ML engineers how to build optimal pricing systems.

    Read more
  • TRIZ: The Problem-Solving Methodology for Product Managers

    • Opinion

    Background

    As a product manager with over a decade of experience, I'm always looking for new ways to enhance my skills and help other product managers advance in their careers. One area that many companies focus on during the job interview process is analytical and creative problem-solving. And as product managers, we encounter these types of challenges on a daily basis. It's important to stay sharp and continuously develop our problem-solving abilities. That's why I made it a habit to practice a logic puzzle every day. But I also wondered if there was a common approach to solving these puzzles. That's when I discovered TRIZ – the Theory of Inventive Problem Solving. In this article, I'll provide an overview of what TRIZ is and how it can be applied in product management. Then, I'll apply TRIZ principles to solve a series of logical puzzles, showcasing the power and effectiveness of this methodology. So whether you're an experienced product manager looking to enhance your skills or someone who enjoys a good brain teaser, read on to discover the power of TRIZ!

    If you find TRIZ to be a useful tool for problem-solving and innovation, there are many resources available to help you delve deeper into the methodology. The TRIZ Journal, for example, offers enough information on TRIZ, including case studies, articles, and other resources. You can also find books and online courses that provide a more in-depth look at TRIZ and how it can be applied in different industries and contexts. So if you're interested in learning more, there are plenty of opportunities to expand your knowledge and apply TRIZ to your work.

    Read more
  • Erlang больше не в моде. berry-lang — новый язык для BEAM со статической типизацией

    Привет! Сегодня хочу поделиться идеей нового языка для платформы BEAM: читатели хабра всё должны узнавать из первых рук! Планируется, что он будет транслироваться в эрланг source-to-source, и семантически будет тоже максимально совместим с эрлангом.

    berry-lang поддерживает статическую типизацию, однако типы в нём - не главное. Главное - это приятный синтаксис, о чём свидетельствует его ягодное название. Кстати, о названии: помимо того, что оно созвучно слову Erlang, у него есть и другая подоплёка.

    Дело в том, что berry-lang крадёт весь свой синтаксис у языка Сyber (слышали о таком?) Получается - кибер-тема. А чем заняты в кибер-городе? Выращиванием ягод, конечно! Скриншот - из последней Матрицы, на нём генерал Найоби угощает Нео клубникой и говорит, не без гордости - "Zion could have never made something like this!".

    Статья содержит много коротких примеров с кодом! Будет интересна всем поклонникам языка эрланг и платформы BEAM. А если о языке Сyber ничего не слышали, то вообще - must-see.

    Читать
  • Business process management. Part 1. Why bother?

    This is the first post in a series on Business Process Management (BPM). Having worked as a business analyst and product manager in various companies ranging from middle-sized startups to big corporations, I have observed differences in approaches to business process management - from almost complete disregard to excessive attention. So, I decided to share my views on the topic, why I think BPM is important, especially when a company grows fast and switches from the startup stage to a grown company, and what approach I think might work for a company of average size without involving too much time and resources.

    Read more
  • An introduction to the world of AI for designers

    Every day a new neural network appears and every day more opportunities are opened to designers to simplify their workflow. Someone fundamentally refuses to use them, because “there is no life in machinex and technologies”, and someone is only happy to find a way to reduce the amount of work. Personally, I belong to the second type and want to share the most detailed gait on neurons I have acquired lately. 

    Read more
  • Networking for Programmers: How to Build Connections and Get Hired

    • Roadmap

    As a programmer, building connections with industry professionals can help you in advancing your career. Whether you're looking for a new job or want to connect with industry professionals, networking can help you achieve your goals. In this article, we'll examine the importance of networking for programmers and share practical tips and techniques for making strong connections in the programming community.

    From attending industry events to exploiting social media for developing soft skills and building a personal brand, we'll cover everything you need to know to network effectively as a programmer. So, whether you're just starting your career or looking to take it to the next level, read on to learn how to build connections and get hired through effective networking.

    Read more
  • Google SSO for Kibana straightforward way on basic license

    • Tutorial

    As many times before, I keep writing cheat sheets after the tasks which made me search a lot and glue things together before I found a solution. Long story short, this time I was asked to set up Google SSO for Kibana without switching from a basic license to a paid one. Kibana, by the moment, already had authentication set up and the customer wanted to log in there with the use of Google Workspace user accounts. Along with that, the customer wanted to keep user account which was already there, in Kibana. There was no need for role mapping or other advanced features, just plain SSO and that's all. As you probably know Elastic provides SSO feature only on paid license, so I have had no other way to get it working except for using 3rd party software. But first things first, let's list the steps we should go over:

    Read more
  • Automation in mobile QA testing

    • Case

    It takes a lot of time and effort to develop a game. Finding and fixing errors before the release is one of the most crucial stages of the whole process, and the bigger your project is, the more people are usually involved in testing. Even the most uncomplicated games require a proper and thorough examination by QAs. The processes are automated to provide high-level project maintenance by increasing testing speed and reducing the influence of the human factor.

    Automated testing is done with the help of specific programs, like Selenoid and Appium (although such frameworks are rarely used in games). 

    However, the chances of successful automation depend primarily on the genre. Plus, it doesn’t cover all stages. For example, while the analytical issues can be automated, the visual aspect and gameplay are still tested manually (or are they really? We’ll get back to this later). We differentiate the two most popular types of auto testing: 

    Read more
  • Compiling fast .exe console applications with PHP 8.1, why not?

    With each release, PHP is getting faster, and when JIT (Just-In-Time) compilation is enabled, it reaches almost the same C marks.

    Many people at one time probably had a desire to easily write console and window applications. The guys of Runet sometimes wrote irreplaceable applications for solving small tasks and shared them on forums, although some of them contained small bugs.

    However, times are changing, and people have begun to realize their mistakes, switching, say, to OOP.

    To be nostalgic and demonstrate the new Frankenstein, we will build a full-fledged console exe application in PHP.

    Read more
  • Langton's ant: a mystery cellular automaton

    The life of Langton's Ant seems sad and lonely, but, as we'll soon discover, he is not ready to put up with such an outrageous situation and is trying his best to escape. American scientist Christopher Langton invented his ant back in 1986. Since then, no one has been able to explain the strange behavior of this mysterious model...

    Read more
  • GNU radio 802.11 black box optimization

    In this post I'll share my experience in adjustment of WiFi physical channel. The channel was implemented on a software defined radio (SDR) platform. WiFi looks like a very complicated thing standardized over hundreds of pages. Could a non-expert with a PC and a couple of 100$ devices (HackRFs) somehow improve it? Here I try to develop a WiFi optimization approach basically agnostic of protocol implementation details. There's some math and Python programming in it.

    Read more
  • About «free» #iam, #oidc, #saml, #etc

    • Review

    There is a task to develop a solution that allows:

    - Access control to web applications via #oidc/#saml

    - Access control to vanilla #Kubernetes

    - SSH access control to bare-metal hosts - using SSH certificate technology if possible

    - Authorizing users to other server applications such as #Vault, #PostgreSQL, #Kafka, #ClickHouse, #MongoDB

    - Being able to connect users from third-party organizations to certain resources based on group membership, etc

    - Ensuring that everything described above works, including the bare metal environment

    Read more