<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Articles on orestkyrylchuk</title><link>https://orestkyrylchuk.com/articles/</link><description>Recent content in Articles on orestkyrylchuk</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 23 Nov 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://orestkyrylchuk.com/articles/index.xml" rel="self" type="application/rss+xml"/><item><title>Rust Testing: A Short Guide to Mocking</title><link>https://orestkyrylchuk.com/rust-testing-mocks/</link><pubDate>Sun, 23 Nov 2025 00:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/rust-testing-mocks/</guid><description>&lt;p&gt;So you need to mock something in Rust? There are a few different approaches you can take, and the best one depends on your needs. You can either roll your own mocking implementation or use an existing crate.&lt;/p&gt;</description></item><item><title>Onboarding Home Assistant: Solving Smart Switch Issues</title><link>https://orestkyrylchuk.com/smart-switches/</link><pubDate>Fri, 04 Jul 2025 00:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/smart-switches/</guid><description>&lt;p&gt;I recently had problems with smart dimmer switches that led me down a path to Home Assistant. What started as a simple switch replacement ended up being a full automation setup.&lt;/p&gt;</description></item><item><title>Serverless in action. Part 4: CI/CD</title><link>https://orestkyrylchuk.com/serverless-in-action-part-4/</link><pubDate>Sun, 03 Mar 2019 00:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/serverless-in-action-part-4/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-0/"&gt;Part 0: Intro&lt;/a&gt;, &lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-1/"&gt;Part 1: Auth&lt;/a&gt; and &lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-2/"&gt;Part 2: CRUD&lt;/a&gt; and &lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-3/"&gt;Part 3: Notification&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In this part, we will create a CI/CD process using AWS tools.
There are a few AWS services for that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/codebuild"&gt;CodeBuild&lt;/a&gt; - continuous integration service.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/codedeploy"&gt;CodeDeploy&lt;/a&gt; - deployment service.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/codepipeline"&gt;CodePipeline&lt;/a&gt; - continuous delivery service.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Is Java enum underused?</title><link>https://orestkyrylchuk.com/java-enum-underused/</link><pubDate>Tue, 01 Jan 2019 00:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/java-enum-underused/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;An enum type is a special data type that holds a list of constants.
An enum type variable must be equal to one of those constants.
Java Enum is a type of class that is defined with the &lt;code&gt;enum&lt;/code&gt; keyword and was introduced in Java 5.
As mentioned, it&amp;rsquo;s used to define a list of constants, but is not limited to that and can also contain methods and fields.&lt;/p&gt;
&lt;p&gt;More specific information could be found in &lt;a href="https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html"&gt;Java enum&amp;rsquo;s documentation&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Serverless in action. Part 3: Notification</title><link>https://orestkyrylchuk.com/serverless-in-action-part-3/</link><pubDate>Sat, 17 Nov 2018 00:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/serverless-in-action-part-3/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-0/"&gt;Part 0: Intro&lt;/a&gt;, &lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-1/"&gt;Part 1: Auth&lt;/a&gt; and &lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-2/"&gt;Part 2: CRUD&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Here we will implement the last, but not least part of our application - notifying customers that they should come to the place they are waiting for:
&lt;img src="https://orestkyrylchuk.com/images/serverless-in-action/notification.jpg" alt=""&gt;
It has two lambda functions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Producer - sends waitees that should be notified into SQS.&lt;/li&gt;
&lt;li&gt;Consumer - processes SQS and sends notifications to the waitees.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Serverless in action. Part 2: CRUD</title><link>https://orestkyrylchuk.com/serverless-in-action-part-2/</link><pubDate>Tue, 06 Nov 2018 00:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/serverless-in-action-part-2/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-0/"&gt;Part 0: Intro&lt;/a&gt; and &lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-1/"&gt;Part 1: Auth&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This section is about the core of our application - CRUD lambda functions. To remind you of the architecture:
&lt;img src="https://orestkyrylchuk.com/images/serverless-in-action/crud.jpg" alt=""&gt;
On the design above we have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CRUD Waitlist - lambda function to handle all the operations on the waitlist.&lt;/li&gt;
&lt;li&gt;CRUD Waitee - lambda function to handle all the operations on waitees from a specific waitlist.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Serverless in action. Part 1: Auth</title><link>https://orestkyrylchuk.com/serverless-in-action-part-1/</link><pubDate>Sun, 21 Oct 2018 15:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/serverless-in-action-part-1/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Part 0: Intro could be found &lt;a href="https://orestkyrylchuk.com/articles/serverless-in-action-part-0/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;We start our deep dive into the architecture from the &lt;code&gt;Auth&lt;/code&gt; section.
To remind you from the previous part, it has the following design:
&lt;img src="https://orestkyrylchuk.com/images/serverless-in-action/auth.jpg" alt=""&gt;&lt;/p&gt;</description></item><item><title>Serverless in action. Part 0: Intro</title><link>https://orestkyrylchuk.com/serverless-in-action-part-0/</link><pubDate>Sun, 21 Oct 2018 00:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/serverless-in-action-part-0/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Nowadays serverless architecture has become a thing in application design.
The main advantage it gives us is that we don&amp;rsquo;t need to manage servers anymore, however, technically it still runs on servers.
Serverless architecture became popular after the release of &lt;a href="https://aws.amazon.com/lambda/"&gt;AWS Lambda&lt;/a&gt; which gave us the possibility to deploy a single function (piece of code) to the AWS environment and then execute it.
This article consists of 3 parts which describe how to build a serverless application step by step.&lt;/p&gt;</description></item><item><title>Is there an alternative to Lombok?</title><link>https://orestkyrylchuk.com/lombok-alternatives/</link><pubDate>Wed, 29 Aug 2018 00:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/lombok-alternatives/</guid><description>&lt;p&gt;Over the last few years &lt;a href="https://projectlombok.org/"&gt;Lombok&lt;/a&gt; has become one of the most used Java libraries.&lt;/p&gt;
&lt;p&gt;Unfortunately with the latest releases of Java it has some problems &lt;a href="https://github.com/rzwitserloot/lombok/issues/985"&gt;Java 9&lt;/a&gt;, &lt;a href="https://github.com/rzwitserloot/lombok/issues/1572"&gt;Java 10&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I won&amp;rsquo;t list all the advantages and disadvantages of it, but rather show some alternative libraries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://immutables.github.io/"&gt;Immutables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/auto/blob/master/value/userguide/index.md"&gt;AutoValue&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Fishshell, is it worth a try?</title><link>https://orestkyrylchuk.com/fishshell/</link><pubDate>Sat, 18 Aug 2018 00:00:00 +0000</pubDate><guid>https://orestkyrylchuk.com/fishshell/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Disclaimer: This post is more like a list of notes rather than structured material.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;To be honest, before using &lt;code&gt;fishshell&lt;/code&gt; I only used &lt;code&gt;bash&lt;/code&gt; and it satisfied my needs, but around 6 months ago my friend suggested I try &lt;code&gt;fishshell&lt;/code&gt; instead and it was totally worth it.
Below I&amp;rsquo;m going to list some pros and cons that I discovered (some of them are pretty straightforward and obvious).&lt;/p&gt;</description></item></channel></rss>