<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bohdan Stupak&#39;s blog</title>
    <link>https://wkalmar.github.io/</link>
    <description>Recent content on Bohdan Stupak&#39;s blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 01 Jul 2026 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://wkalmar.github.io/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>You don&#39;t need to create all properties inside a DTO to successfully deserialize</title>
      <link>https://wkalmar.github.io/post/json-dto/</link>
      <pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/json-dto/</guid>
      <description>The example below might seem like very simple advice, but I found people across many codebases do not know this. This, in turn, leads to excessive usage of JsonNode class, forcing developers to lose benefits of compiler support in a strongly typed language.
Consider the JSON below
string json = &amp;#34;&amp;#34;&amp;#34;	{&amp;#34;Name&amp;#34;: &amp;#34;Alice&amp;#34;,&amp;#34;Age&amp;#34;: 30,&amp;#34;NonExistentStringField&amp;#34;: &amp;#34;foo&amp;#34;,&amp;#34;NonExistingIntField&amp;#34;: 48}&amp;#34;&amp;#34;&amp;#34;;  Let&amp;rsquo;s say, for our needs, we require only Name and Age fields.</description>
    </item>
    
    <item>
      <title>Partitioning PotgreSQL Database</title>
      <link>https://wkalmar.github.io/post/speeding-up-queries-with-table-partitiong/</link>
      <pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/speeding-up-queries-with-table-partitiong/</guid>
      <description>Introduction In one of the projects I used to work on, we&amp;rsquo;ve employed CQRS approach with PostgreSQL as a write storage and NoSQL database as a read storage. As a safety measure, we had a special endpoint that allowed us to regenerate entire content of the read storage based on the write storage that is supposed to be the single source of truth.
The story started one day when we discovered that our safety handle started to fail with the write storage database timeout due to several millions of rows in it.</description>
    </item>
    
    <item>
      <title>Using RAG architecture for generative tasks</title>
      <link>https://wkalmar.github.io/post/using-rag-for-generative-tasks/</link>
      <pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/using-rag-for-generative-tasks/</guid>
      <description>Large language models are used widely across the industry these days. Yet still, many people are skeptical about their capabilities as they are quite prone to hallucination. For that reason, in this article, I decided to use LLM in a case where there are no incorrect answers: generating artistic text. However, even in the case of art which is highly subjective, there are still some quality gates (or shall I say personal preferences?</description>
    </item>
    
    <item>
      <title>Describing musical domain with F#</title>
      <link>https://wkalmar.github.io/post/describing-domain-with-fsharp/</link>
      <pubDate>Mon, 12 Aug 2024 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/describing-domain-with-fsharp/</guid>
      <description>One of my recent projects was to create software that would automatically generate music based on a predefined set of rules. The degree of randomness I&amp;rsquo;ve planned to introduce would let me create different melodies every time, while the set of rules I was planning to create would ensure that it still would sound nice. You can access the complete source code here. Below we&amp;rsquo;ll dive more deeply into the details regarding what it does.</description>
    </item>
    
    <item>
      <title>Composing poésie concrète with AWS Step Function</title>
      <link>https://wkalmar.github.io/post/poeme-concrete-with-aws-step-functions/</link>
      <pubDate>Sat, 24 Feb 2024 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/poeme-concrete-with-aws-step-functions/</guid>
      <description>Concept Observing signs of russo-Ukrainian war fatigue I decided to come up with a poem called &amp;ldquo;Is the war over?&amp;rdquo;. I&amp;rsquo;ve labeled it as poésie concrète drawing an analogy with musique concrète - genre where music is composed of non-musical pieces of sound.
In the same way, my poem is composed of search engine results for &amp;ldquo;russian war crimes&amp;rdquo; in the latest week which are then processed by a sentiment analysis model to extract sentences that highlight russian atrocities most properly.</description>
    </item>
    
    <item>
      <title>Dynamic polymorphism: key concept to master OOP</title>
      <link>https://wkalmar.github.io/post/dynamic-polymorphism/</link>
      <pubDate>Sun, 25 Jun 2023 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/dynamic-polymorphism/</guid>
      <description>The world of object-oriented programming is a bit confusing. It requires mastering a lot of things: SOLID principles, design patterns to name a few. This gives birth to a lot of discussions: are design patterns still relevant, is SOLID intended solely for object-oriented code? It is said that one should prefer composition to inheritance but what is the exact rule of thumb when one should choose one or another?</description>
    </item>
    
    <item>
      <title>Visualizing your photos on a map with React Native</title>
      <link>https://wkalmar.github.io/post/visualising-you-photos-with-react/</link>
      <pubDate>Thu, 02 Feb 2023 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/visualising-you-photos-with-react/</guid>
      <description>Back in the looney days before russian full-scale invasion, I&amp;rsquo;ve used to travel a lot domestically and internationally. Also at that time, I had a Nokia Lumia phone with a nice widget that displayed the locations of the photos I&amp;rsquo;ve taken on a map. I enjoyed looking at it realizing how big is the world and how much I have to travel in order to discover it.
While I have a similar widget in my Android phone I wasn&amp;rsquo;t satisfied with its look and feel.</description>
    </item>
    
    <item>
      <title>Applying custom similarity calculation in Elasticsearch</title>
      <link>https://wkalmar.github.io/post/applying-custom-similarity-for-elasticsearch/</link>
      <pubDate>Sat, 10 Dec 2022 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/applying-custom-similarity-for-elasticsearch/</guid>
      <description>Presently we&amp;rsquo;ve been discussing improving elasticsearch autocomplete functionality. For most cases, this is enough. However, in our case, things turned out to be not that rosy and we&amp;rsquo;ll have a look at why.
Setup In our system we single document type per index. Since we have quite a lot of types in our system and the number of types and their mappings can be changed by the end-user, we have unpredictable number of indices.</description>
    </item>
    
    <item>
      <title>Implementing clean architecture in Go</title>
      <link>https://wkalmar.github.io/post/go-clean-architecture/</link>
      <pubDate>Thu, 20 Oct 2022 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/go-clean-architecture/</guid>
      <description>It has been written a lot about the clean architecture. Its main value is the ability to maintain free from side effects domain layer that allows us to test core business logic without leveraging heavy mocks.
This is accomplished by writing dependency-free core domain logic and external adapters (be it database storage or API layer) that rely on the domain and not vice versa.
In this article, we&amp;rsquo;ll have a look at how clean architecture is implemented with a sample Go project.</description>
    </item>
    
    <item>
      <title>Property-based tests and clean architecture are perfect fit</title>
      <link>https://wkalmar.github.io/post/clean-architecture-and-property-based-fit/</link>
      <pubDate>Mon, 01 Aug 2022 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/clean-architecture-and-property-based-fit/</guid>
      <description>It has been written a lot about the clean architecture. Its main value is the ability to maintain free from side effects domain layer that allows us to test core business logic without leveraging heavy mocks.
However, when it comes to designing tests for pure domain logic quite often we don&amp;rsquo;t tend to be so picky. Unit testing contains many traps such as overspecified software. But even when it comes to testing pure functions which may seem as a pretty straightforward process we may encounter some pitfalls.</description>
    </item>
    
    <item>
      <title>Leveraging lazy evaluation</title>
      <link>https://wkalmar.github.io/post/leveraging-lazy-evaluation/</link>
      <pubDate>Mon, 30 May 2022 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/leveraging-lazy-evaluation/</guid>
      <description>I&amp;rsquo;m usually skeptical about leetcode tasks since this is not something you&amp;rsquo;ll encounter in your daily line-of-business code. But the idea behind this particular task has fascinated me. So I&amp;rsquo;ll break it down here.
I&amp;rsquo;ll provide a bit simplified version of the task so you could capture the gist of it more easily.
Write an API that generates fancy sequences using the append, addAll, and multAll operations. Implement the Fancy class: Fancy() Initializes the object with an empty sequence.</description>
    </item>
    
    <item>
      <title>It&#39;s not about how you inject your services, it&#39;s about how you test them</title>
      <link>https://wkalmar.github.io/post/its-about-how-you-test/</link>
      <pubDate>Sat, 16 Apr 2022 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/its-about-how-you-test/</guid>
      <description>It has been written a lot about the value of unit testing and still a lot of developers may have witnessed codebases with unit tests being too brittle or rarely discovering actual defects in software. Also some have questioned default architectural style supposed to make code testable. These are the reasons why a lot of developers openly question unit-testing while others just silently sabotage the process of writing unit-tests.</description>
    </item>
    
    <item>
      <title>Improving Elasticsearch-based autocomplete</title>
      <link>https://wkalmar.github.io/post/improving-autocomplete/</link>
      <pubDate>Tue, 25 Jan 2022 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/improving-autocomplete/</guid>
      <description>Recently I&amp;rsquo;ve investigated autocomplete functionality of our system as there were a lot of complaints that it returns irrelevant results. The approach we&amp;rsquo;ve taken was pretty naive: our backend wrapped query into wildcard symbols and executed it as query_string on fields __title, title and commonInfo.RealName. Index we&amp;rsquo;ve executed search upon contained entity with _title equal 3 foxes but autocomplete query 3 foxes suggested BRN-3 / QCK 3 / 19 foxes, AC d / 3 foxes, 3 BRW / 1 foxes.</description>
    </item>
    
    <item>
      <title>Overriding JSON serializer in Giraffe</title>
      <link>https://wkalmar.github.io/post/overriding-json-serializer-in-giraffe/</link>
      <pubDate>Thu, 23 Dec 2021 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/overriding-json-serializer-in-giraffe/</guid>
      <description>I use my side-project KyivStationWalk as a set of my opinionated takes on software architecture. No wonder I use F# here. One of the types I use in this project to describe my domain is the subway station branch. There are 3 branches in Kyiv named by their traditional colors. type Branch =| Red| Blue| Green By default Giraffe, the framework which I use as a web server, uses Newtonsoft.</description>
    </item>
    
    <item>
      <title>Strive for short-lived synchronous communication</title>
      <link>https://wkalmar.github.io/post/make-synchronous-communication-short-lived/</link>
      <pubDate>Sun, 31 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/make-synchronous-communication-short-lived/</guid>
      <description>When interacting with a service asynchronous communication often is a preferred way. &amp;ldquo;Enterprise integration patterns&amp;rdquo; book puts it that way (which also might be a TL;DR; for the rest of the article)
 With synchronous communication, the caller must wait for the receiver to finish processing the call before the caller can receive the result and continue. In this way, the caller can only make calls as fast as the receiver can perform them.</description>
    </item>
    
    <item>
      <title>Prefer using Stream to byte[]</title>
      <link>https://wkalmar.github.io/post/prefer-stream-to-byte-array/</link>
      <pubDate>Sun, 25 Jul 2021 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/prefer-stream-to-byte-array/</guid>
      <description>When working with files there are often both APIs operating byte[] and Stream so quite often people chose byte[] counterpart as it requires less ceremony or just intuitively more clear.
You may think of this conclusion as far-fetched but I&amp;rsquo;ve decided to write about it after reviewing and refactoring some real-world production code. So you may find this simple trick neglected in your codebase as some other simple things I&amp;rsquo;ve mentioned in my previous articles.</description>
    </item>
    
    <item>
      <title>DateTime.TryParse and the case of Z letter</title>
      <link>https://wkalmar.github.io/post/date-time-parse/</link>
      <pubDate>Sat, 08 May 2021 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/date-time-parse/</guid>
      <description>Recently I&amp;rsquo;ve been tasked to provide date in a specific format from backend to the frontend and I&amp;rsquo;ve noticed a behavior that I&amp;rsquo;ve found a bit odd. private static void OutputDateInfo(string value){Console.WriteLine($&amp;#34;Input: {value}&amp;#34;);if (DateTime.TryParse(value, out DateTime dateTimeValue)){Console.WriteLine($&amp;#34;Setialized to universal format {dateTimeValue.ToString(&amp;#34;yyyy-MM-dd&amp;#39;T&amp;#39;HHssZ&amp;#34;)}&amp;#34;);}Console.WriteLine();}//somewhere in mainOutputDateInfo(&amp;#34;2021-04-15T2100.0000000Z&amp;#34;);OutputDateInfo(&amp;#34;2021-04-15T2100.0000000&amp;#34;);  Produces the output
Input: 2021-04-15T21:01:00.0000000Z Setialized to universal format 2021-04-16T00:01:00Z Input: 2021-04-15T21:01:00.0000000 Setialized to universal format 2021-04-15T21:01:00Z  So as I was in Kyiv which is in UTC+3 timezone it looked as letter Z forced ToString method to convert date to local time.</description>
    </item>
    
    <item>
      <title>Batch processing with Directory.EnumerateFiles</title>
      <link>https://wkalmar.github.io/post/batch-processing-with-enumeratefiles/</link>
      <pubDate>Sun, 28 Mar 2021 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/batch-processing-with-enumeratefiles/</guid>
      <description>In case one wants to retrieve files from catalog Directory.GetFiles is a simple answer sufficient for most scenarios. However, when you deal with a large amount of data you might need more advanced techniques.
Example Let&amp;rsquo;s assume you have a big data solution and you need to process a directory that contains 200000 files. For each file, you extract some basic info public record FileProcessingDto{public string FullPath { get; set; }public long Size { get; set; }public string FileNameWithoutExtension { get; set; }public string Hash { get; internal set; }}</description>
    </item>
    
    <item>
      <title>Converting video with FFmpegCore</title>
      <link>https://wkalmar.github.io/post/converting-video-with-ffmpeg-core/</link>
      <pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/converting-video-with-ffmpeg-core/</guid>
      <description>Working with multimedia is terra incognita for most of the developers since it&amp;rsquo;s something that one rarely encounters while working with usual business applications. So when I was tasked to convert video for the project I&amp;rsquo;m currently working on I was expecting to deal with some sort of old poorly maintained C++ library. So FFmpegCore was a pleasant surprise since it enables working with .Net Core which is an area of my expertise.</description>
    </item>
    
    <item>
      <title>Using Span&lt;T&gt; to improve performance of C# code</title>
      <link>https://wkalmar.github.io/post/improving-performance-with-span/</link>
      <pubDate>Sat, 30 May 2020 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/improving-performance-with-span/</guid>
      <description>In my experience, the main thing to do in order to improve application performance is to reduce the number and duration of IO-calls. However, once this option is exercised another path that developers take is using memory on stack. Stack allows very fast allocation and deallocation although it should be used only for allocating small portions since stack size is pretty small. Also, using stack allows reducing pressure on GC.</description>
    </item>
    
    <item>
      <title>Refactoring string into the specific type</title>
      <link>https://wkalmar.github.io/post/refactoring-string-into-specific-type/</link>
      <pubDate>Sun, 10 May 2020 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/refactoring-string-into-specific-type/</guid>
      <description>Introduction While the article title may sound controversial as there is clearly nothing wrong with using string in your code below I&amp;rsquo;ll show the case where string type doesn&amp;rsquo;t clearly communicate all the necessary properties of a domain in question. Then I&amp;rsquo;ll show how this can be handled. You can watch full code on Github.
The code Recently I was tasked to write the code which converts Linux permissions to their octal representation.</description>
    </item>
    
    <item>
      <title>Building auth endpoint with Go and AWS Lambda</title>
      <link>https://wkalmar.github.io/post/building-auth-endpoint-with-go-and-aws-lambda/</link>
      <pubDate>Sat, 15 Feb 2020 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/building-auth-endpoint-with-go-and-aws-lambda/</guid>
      <description>When I was playing around with my pet-project Kyiv Station Walk I’ve noticed that manually removing test data is tedious and I need to come up with a concept of the admin page. This required some sort of authentication endpoint. Some super-lightweight service which would check login and password against as a pair of super-user credentials.
Serverless is quite useful for this simple nanoservice. This brings some cost-saving as serverless comes to me almost free due to low execution rate that I anticipate for the admin page of my low-popular service.</description>
    </item>
    
    <item>
      <title>Distributed locking with Redlock.net</title>
      <link>https://wkalmar.github.io/post/leader-election-with-redlock-net/</link>
      <pubDate>Fri, 19 Jul 2019 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/leader-election-with-redlock-net/</guid>
      <description>Why locking things Microservice architecture becomes widely adopted these days. One of the benefits it offers is the possibility of horizontal scaling which allows us to increase the performance of our application dramatically. However, there are situations when multiple instances of service face contention for some shared resource. In such a case one of the instances would acquire a lock over this resource claiming exclusive access to it. Let&amp;rsquo;s have a look at some possible use cases when this is helpful.</description>
    </item>
    
    <item>
      <title>Ignoring Operation Result when using F# async Computation Expression</title>
      <link>https://wkalmar.github.io/post/ignoring-operation-result-when-using-fsharp-async/</link>
      <pubDate>Wed, 06 Mar 2019 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/ignoring-operation-result-when-using-fsharp-async/</guid>
      <description>Consider this simple code downloading page contents using Puppeteer-sharp. let renderHtml = async {BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision) |&amp;gt; Async.AwaitTask |&amp;gt; ignorelet options = LaunchOptions()options.Headless &amp;lt;- truelet! browser = Puppeteer.LaunchAsync(options) |&amp;gt; Async.AwaitTasklet! page = browser.NewPageAsync() |&amp;gt; Async.AwaitTaskpage.GoToAsync(&amp;#34;https://i.ua&amp;#34;) |&amp;gt; Async.AwaitTask |&amp;gt; ignorereturn! page.GetContentAsync() |&amp;gt; Async.AwaitTask} Since we actually don&amp;rsquo;t care about download browser result, we naturally would expect that our line&amp;hellip; BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision) |&amp;gt; Async.AwaitTask |&amp;gt; ignore &amp;hellip;would be equivalent to this C# code: await new BrowserFetcher().</description>
    </item>
    
    <item>
      <title>Understanding Dependency Injection in .NET Core with Quartz.NET example</title>
      <link>https://wkalmar.github.io/post/dependency-injection-for-quartz-net-in-net-core/</link>
      <pubDate>Fri, 22 Feb 2019 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/dependency-injection-for-quartz-net-in-net-core/</guid>
      <description>Introduction Quartz.NET is a handy library that allows you to schedule recurring tasks via implementing IJob interface. Yet the limitation of it is that, by default, it supports only parameterless constructor which complicates injecting external service inside of it, i.e., for implementing repository pattern. In this article, we&amp;rsquo;ll take a look at how we can tackle this problem using standard .NET Core DI container.
The whole project referred in the article is provided inside the following [Github repository]().</description>
    </item>
    
    <item>
      <title>Cooking angular.js with Typescript</title>
      <link>https://wkalmar.github.io/post/cooking-angular-js-with-typescript/</link>
      <pubDate>Wed, 26 Dec 2018 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/cooking-angular-js-with-typescript/</guid>
      <description>Introduction Typescript starts to gain more and more popularity because of static typing offering its benefits. Still, some developers who are involved in supporting projects with angular.js may be stuck with lack of community offering their recipes of using angular.js together with typescript. This article will try to fill this gap.
Our strategy involves shipping working product at every stage of development. So in real life, transition to typescript can be performed gradually thus not hurting business goals that development team has to reach.</description>
    </item>
    
    <item>
      <title>Refactoring F# Imperative Code Towards Declarative</title>
      <link>https://wkalmar.github.io/post/refactoring-fsharp-imperative-code-towards-declarative/</link>
      <pubDate>Tue, 22 May 2018 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/refactoring-fsharp-imperative-code-towards-declarative/</guid>
      <description>Recently, perusing the internet, I found an article which implements the trapezoidal rule in F#. open Systemlet main() =//Function to integratelet f x =10.0*x*xlet trapezoidal a b N =let mutable xi = alet h = (b - a)/Nlet mutable suma = h/2.0*(f(a)+f(b))for x in 1 .. System.Convert.ToInt32(N) dolet mutable xi1 = xi + hsuma &amp;lt;- suma + h*f(xi1)xi &amp;lt;- xi1suma//some usage examplelet fromA = 0.</description>
    </item>
    
    <item>
      <title>End-to-end Testing of Your Web Applications with Canopy</title>
      <link>https://wkalmar.github.io/post/end-to-end-testing-of-your-web-applications-with-c/</link>
      <pubDate>Mon, 14 May 2018 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/end-to-end-testing-of-your-web-applications-with-c/</guid>
      <description>Why Canopy Stabilization Layer Built on Top of Selenium One of the most crucial concepts of canopy is reliability - when performing an action framework tries during time span specified via elementTimeout or compareTimeout or pageTimeout before failing which improves experience during writing tests.
Expressiveness The syntax looks pretty self-explanatory: &amp;#34;Bio should contain twitter link&amp;#34; &amp;amp;&amp;amp;&amp;amp; fun _ -&amp;gt;url &amp;#34;https://github.com/Wkalmar&amp;#34;&amp;#34;.user-profile-bio&amp;#34; == &amp;#34;https://twitter.com/BohdanStupak1&amp;#34;
F# In one of my previous articles, I have already expressed my opinion regarding power and expressiveness of F#.</description>
    </item>
    
    <item>
      <title>&#34;Method can be made static&#34; May Hide OO Design Flaw</title>
      <link>https://wkalmar.github.io/post/method-can-be-made-static-may-hide-oo-design-flaw/</link>
      <pubDate>Sun, 18 Feb 2018 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/method-can-be-made-static-may-hide-oo-design-flaw/</guid>
      <description>Introduction Wandering through codebases, I&amp;rsquo;ve encountered some examples of code where Microsoft Code Analysis issues the above-mentioned warning. Although the fix seems straightforward, the warning itself may hide a more subtle issue connected to object responsibility assignment.
Toy Example Let&amp;rsquo;s take a look at the following code: public class EmailConstructor{private const string Signature = &amp;#34;Regards&amp;#34;;public string Construct(User recipient, string body){var builder = new StringBuilder();builder.</description>
    </item>
    
    <item>
      <title>Querying Last.fm web API with F#</title>
      <link>https://wkalmar.github.io/post/querying-last-fm-web-api-with-fsharp/</link>
      <pubDate>Tue, 07 Nov 2017 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/querying-last-fm-web-api-with-fsharp/</guid>
      <description>Introduction Let&amp;rsquo;s imagine that you have an edgy musical taste so you would like to recommend to your friends only those artists which are the most mainstream. If you have a profile on last.fm, then you could write a small tool which would query and process your listening statistics to automate this task.
My tool for this job is F# programming language and I&amp;rsquo;ll show you some benefits of it such as type providers or the ease of unit testing functions comparing to objects.</description>
    </item>
    
    <item>
      <title>Registry Redirection when using 32-bit Application on 64-bit Windows</title>
      <link>https://wkalmar.github.io/post/registry-redirection-when-using-bit-application-on/</link>
      <pubDate>Mon, 04 Sep 2017 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/registry-redirection-when-using-bit-application-on/</guid>
      <description>This article will guide you through Windows registry redirection feature, which might seem quite unintuitive at first acquaintance. ##The Code Consider the following situation. We have code that writes to HKEY_LOCAL_MACHINE registry on 64-bit OS. var softwareSubKey = Registry.LocalMachine.OpenSubKey(&amp;#34;Software&amp;#34;, RegistryKeyPermissionCheck.ReadWriteSubTree);softwareSubKey.CreateSubKey(&amp;#34;MySoftware&amp;#34;);  When successfully executing this code, we somewhat unexpectedly receive no MySoftware folder at \HKEY_LOCAL_MACHINE\SOFTWARE path. After investigating build tab in project options, we discover the following:</description>
    </item>
    
    <item>
      <title>Pure CSS Salesforce-like progressbar Control</title>
      <link>https://wkalmar.github.io/post/pure-css-salesforce-like-progressbar-control/</link>
      <pubDate>Sun, 09 Jul 2017 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/pure-css-salesforce-like-progressbar-control/</guid>
      <description>Introduction This article covers several CSS techniques: using LESS, using display: flex and some CSS hacks.
You can download the complete source code on github.
Using LESS LESS is CSS preprocessor which allows extending CSS with some useful features. You can learn more about it here. In this project, I use LESS variables and functions which as you can see later, allow me to work with colors in a cleaner way.</description>
    </item>
    
    <item>
      <title>Money Precision Issues</title>
      <link>https://wkalmar.github.io/post/money-precision-issues/</link>
      <pubDate>Sun, 15 Feb 2015 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/money-precision-issues/</guid>
      <description>Many developers like MONEY data type as it tends to be faster during computations and byte cheaper (arguably). Still in the next few examples, I am going to show an issue that can lead to possible loss of precision.
Let us try the following code: decalare @d1 money, @d2 money, @res moneyset @d1 = 18.4172set @d2 = 1.00set @res = @d2/@d1select @res The actual result is 0,054297 and by all mathematical rules should be rounded to 0,0543.</description>
    </item>
    
    <item>
      <title>Some Common Mistakes When Querying SQL Database</title>
      <link>https://wkalmar.github.io/post/some-common-mistakes-when-querying-sql-database/</link>
      <pubDate>Sun, 22 Jun 2014 00:00:00 +0000</pubDate>
      
      <guid>https://wkalmar.github.io/post/some-common-mistakes-when-querying-sql-database/</guid>
      <description>Introduction When I started learning SQL, I found out several issues which I thought to be interesting to share. For our needs, let&amp;rsquo;s use AdventureWorks2012 database, which can be obtained here.
1. Don&amp;rsquo;t Forget about NULL Let us execute the following query: select Count(*)from Sales.SalesOrderDetail The result will be:
Filtering by CarrierTrackingNumber: select Count(*)from Sales.SalesOrderDetailwhere CarrierTrackingNumber = &amp;#39;4911-403C-98&amp;#39; will give us:
It is natural to assume that the result of the following query: select Count(*)from Sales.</description>
    </item>
    
  </channel>
</rss>