<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.0">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2024-02-29T23:31:39-05:00</updated><id>/feed.xml</id><title type="html">Kirill Dubovikov</title><subtitle>My thoughts on everything :)</subtitle><author><name>Kirill Dubovikov</name></author><entry><title type="html">Solving Microcorruption</title><link href="/articles/microcorruption" rel="alternate" type="text/html" title="Solving Microcorruption" /><published>2024-02-20T00:00:00-05:00</published><updated>2024-02-20T00:00:00-05:00</updated><id>/articles/microcorruption</id><author><name>Kirill Dubovikov</name></author><summary type="html">My growing interest towards low-level programming led me to a CTF game called Microcorruption. The goal there is to do a series of challenges related to hacking embedded systems. There is some dissasembly of a digital lock firmware that you should analyze and exploit to find a way for opening the door. Each level progressively increases in complexity. I feel that the difficulty progression was great and in general it’s a good tool to learn basic binary exploitation vulnerabilities. Most of the vulernabilities explored there are related to stack overflows, format string attacks, heap overflows. If you consider modern OS, most of these are considered outdated and are not as common as they used to be. However, if we embark in a world of embedded systems, these are still very relevant. In this post, I will provide my solutions and notes for different levels of Microcorruption.</summary></entry><entry><title type="html">LLM-Oriented Programming: Keeping Your Codebase Organized for Large Language Models</title><link href="/articles/programming/llm-oriented-programming" rel="alternate" type="text/html" title="LLM-Oriented Programming: Keeping Your Codebase Organized for Large Language Models" /><published>2023-04-03T20:00:00-04:00</published><updated>2023-04-03T20:00:00-04:00</updated><id>/articles/programming/llm-oriented-programming</id><author><name>Kirill Dubovikov</name></author><category term="programming" /><summary type="html">Introduction I feel that the world of coding is changing. In a couple of years, I expect a lot of new developer tools based on LLMs to come up. They will likely change the way we write code. And maybe even change the definition of what we think is Software Developer. With the release of GPT-4, the ways you can use it in daily programming activities is impressive. As with any tool, developers should learn how to make a better use of it. While working with LLMs you may notice that some codebases are suited better for them. As powerful as these LLM models are, they have their limitations. One of the primary constraints is their inability to maintain context over long input prompts. This can lead to confusion and misinterpretation when working with large codebases. More and more people start to think that SDEs will be replaced. My take is that our job might be transformed, but not replaced. More and more developers will likely to be more like software architects and team leads, using LLMs to solve partial tasks and combining final results. LLMs are also pretty bad at correctness and validation, which will most likely remain an important part of our job. This raises a question: how to write code to be better understood by language models? Let’s dive into LLM-oriented programming.</summary></entry><entry><title type="html">Coding a SaaS landing page</title><link href="/articles/programming/landing-page" rel="alternate" type="text/html" title="Coding a SaaS landing page" /><published>2023-03-20T20:00:00-04:00</published><updated>2023-03-20T20:00:00-04:00</updated><id>/articles/programming/landing-page</id><author><name>Kirill Dubovikov</name></author><category term="programming" /><summary type="html">I’ve decided to create a side project to catch up with the latest tech trends, see what’s new in frontend, and experience the thrill of setting up a small SaaS. My first step was to create a landing page, and in this post, I will share my research and results.</summary></entry><entry><title type="html">Why study algorithms?</title><link href="/articles/programming/algo-study" rel="alternate" type="text/html" title="Why study algorithms?" /><published>2022-10-07T20:00:00-04:00</published><updated>2022-10-07T20:00:00-04:00</updated><id>/articles/programming/algo-study</id><author><name>Kirill Dubovikov</name></author><category term="programming" /><summary type="html">In this post, we will look at a task dreaded by many: getting better at solving algorithmic challenges. Some think it’s worthless, others feel rage about the current hiring industry is blind to what’s really important. But we will try to look at this from another perspective to see if it’s worth to devote time to get skills necessary for solving computer science problems.</summary></entry><entry><title type="html">Employee is a non-performer? It is your fault. Act on it</title><link href="/articles/management/hiring-fault" rel="alternate" type="text/html" title="Employee is a non-performer? It is your fault. Act on it" /><published>2022-02-18T19:00:00-05:00</published><updated>2022-02-18T19:00:00-05:00</updated><id>/articles/management/hiring-fault</id><author><name>Kirill Dubovikov</name></author><category term="management" /><summary type="html">I want to start a new post topic. A part of future posts on this blog will be about management. Apart from data science, this is my day job and I feel like sharing my experience may help someone solve their problems. Some time ago, I hired a software engineer. The interview went fine, but the timeframe was strict and I missed a few questions that I usually ask. We were under heavy pressure, since projects were understaffed and we desperately needed people to keep up with the task stream. The slog of exhaustion, the need for help and a lack of success in hiring for weeks have done their job. I hired someone impulsively.</summary></entry><entry><title type="html">Blazing fast category encoding</title><link href="/articles/datascience/blazing-encoders" rel="alternate" type="text/html" title="Blazing fast category encoding" /><published>2021-09-15T20:00:00-04:00</published><updated>2021-09-15T20:00:00-04:00</updated><id>/articles/datascience/blazing-encoders</id><author><name>Kirill Dubovikov</name></author><category term="datascience" /><summary type="html">Category encoding can make a difference between bad and good machine learning modes. In this post, we will learn about target encoding with the blazing_encoders library.</summary></entry><entry><title type="html">Best time to post on HackerNews</title><link href="/articles/datascience/hn-posts-analysis" rel="alternate" type="text/html" title="Best time to post on HackerNews" /><published>2021-07-02T20:00:00-04:00</published><updated>2021-07-02T20:00:00-04:00</updated><id>/articles/datascience/hn-posts-analysis</id><author><name>Kirill Dubovikov</name></author><category term="datascience" /><summary type="html">Let’s determine what the best time to post on HackerNews using statistical analysis and machine learning is.</summary></entry><entry><title type="html">Building a Weather Station UI</title><link href="/articles/rust/ui/weather-station-ui" rel="alternate" type="text/html" title="Building a Weather Station UI" /><published>2020-11-04T19:00:00-05:00</published><updated>2020-11-04T19:00:00-05:00</updated><id>/articles/rust/ui/weather-station-ui</id><author><name>Kirill Dubovikov</name></author><category term="rust" /><category term="ui" /><summary type="html">In this last post of the series we are going to look at how to build a simple weather station UI dashboard.</summary></entry><entry><title type="html">Building a Weather Station Bot</title><link href="/articles/rust/building-a-weather-station-bot" rel="alternate" type="text/html" title="Building a Weather Station Bot" /><published>2020-09-18T20:00:00-04:00</published><updated>2020-09-18T20:00:00-04:00</updated><id>/articles/rust/building-a-weather-station-bot</id><author><name>Kirill Dubovikov</name></author><category term="rust" /><summary type="html">In this post we are going to switch from hardware to software and write a telegram bot that will be the primary user interface for our weather station.</summary></entry><entry><title type="html">Async Unicorns love Rust</title><link href="/articles/rust/async-unicorns-love-rust" rel="alternate" type="text/html" title="Async Unicorns love Rust" /><published>2020-07-26T20:00:00-04:00</published><updated>2020-07-26T20:00:00-04:00</updated><id>/articles/rust/async-unicorns-love-rust</id><author><name>Kirill Dubovikov</name></author><category term="rust" /><summary type="html">Before going on to write a backend for our weather station we first need to familiarize ourselves with a few concepts from the Rust world. If you are unfamiliar with the language take a few minutes to read through Learn Rust in Y minutes to get used to the syntax. When we will write a Telegram bot with Rust, we will use a technique called asynchronous programming. Let’s tackle what that means.</summary></entry></feed>