<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Vasil Kosturski</title><description>On software and technology</description><link>https://vkontech.com/</link><item><title>How Smartsheet built a remote MCP server on AWS</title><link>https://aws.amazon.com/blogs/machine-learning/how-smartsheet-built-a-remote-mcp-server-on-aws/</link><guid isPermaLink="true">https://aws.amazon.com/blogs/machine-learning/how-smartsheet-built-a-remote-mcp-server-on-aws/</guid><description>As enterprise teams adopt AI agents, those agents need structured access to the data inside systems like Smartsheet. How Smartsheet built a remote Model Context Protocol server on AWS to give AI clients that access.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Generation Got Cheap, Trust Didn’t: A Multi-Agent Trading System with Guardrails and Traceability</title><link>https://vkontech.com/multi-agent-trading-guardrails-traceability/</link><guid isPermaLink="true">https://vkontech.com/multi-agent-trading-guardrails-traceability/</guid><description>Generation got cheap, trust didn’t. How a 4-trader multi-agent system uses output guardrails and per-run audit trails to close the verification gap.</description><pubDate>Tue, 23 Jun 2026 19:31:50 GMT</pubDate></item><item><title>Distributed Tracing Demo with OpenTelemetry and Grafana Cloud</title><link>https://vkontech.com/distributed-tracing-demo-with-opentelemetry-and-grafana-cloud/</link><guid isPermaLink="true">https://vkontech.com/distributed-tracing-demo-with-opentelemetry-and-grafana-cloud/</guid><description>Discover how to set up end-to-end distributed tracing in a microservices architecture using OpenTelemetry and Grafana Cloud. This hands-on guide walks you through instrumenting Java and Go services, visualizing traces, and gaining deep insights into your system’s behavior.</description><pubDate>Sun, 06 Jul 2025 18:52:47 GMT</pubDate></item><item><title>Monitoring Kafka in Kubernetes with Prometheus and Grafana</title><link>https://vkontech.com/monitoring-kafka-in-kubernetes-with-prometheus-and-grafana/</link><guid isPermaLink="true">https://vkontech.com/monitoring-kafka-in-kubernetes-with-prometheus-and-grafana/</guid><description>This article illustrates monitoring Kafka on Kubernetes using Prometheus and Grafana. We’ll deploy Kafka and Zookeeper, add Kafka Exporter, configure Prometheus to scrape metrics, and set up Grafana dashboards for visualization.</description><pubDate>Fri, 24 Jan 2025 09:46:18 GMT</pubDate></item><item><title>Leader Election and Failover with Zookeeper – Case Study</title><link>https://vkontech.com/leader-election-and-failover-with-zookeeper-case-study/</link><guid isPermaLink="true">https://vkontech.com/leader-election-and-failover-with-zookeeper-case-study/</guid><description>Learn how to implement leader election and failover using Zookeeper, .NET Core, and Docker. This article demonstrates building a distributed system with automatic leader election, handling failures gracefully to ensure high availability and fault tolerance.</description><pubDate>Sun, 20 Oct 2024 14:29:52 GMT</pubDate></item><item><title>Unit and Integration Testing in Apache Flink</title><link>https://vkontech.com/unit-and-integration-testing-in-apache-flink/</link><guid isPermaLink="true">https://vkontech.com/unit-and-integration-testing-in-apache-flink/</guid><description>This article provides a practical guideline for unit and integration testing in Apache Flink. Using a financial fraud detection application as an example, we demonstrate how to write effective tests to ensure the correctness of your Flink jobs.</description><pubDate>Sun, 04 Aug 2024 10:29:47 GMT</pubDate></item><item><title>AWS Data Lake: Handling News Data Stream via Firehose C# Client, Athena, Glue, and MySQL RDS</title><link>https://vkontech.com/aws-data-lake-handling-news-data-stream-via-firehose-c-client-athena-glue-and-mysql-rds/</link><guid isPermaLink="true">https://vkontech.com/aws-data-lake-handling-news-data-stream-via-firehose-c-client-athena-glue-and-mysql-rds/</guid><description>This guide walks you through building a sample Data Lake in AWS by pushing a News API data stream into S3 using a Firehose C# client, analyzing the data with Athena, and setting up an ETL process via Glue to load the data into MySQL RDS.</description><pubDate>Fri, 16 Feb 2024 08:51:13 GMT</pubDate></item><item><title>[Guest Post] Breaking Barriers: How Technology Fuels Career Success for Individuals with Disabilities</title><link>https://vkontech.com/guest-post-breaking-barriers-how-technology-fuels-career-success-for-individuals-with-disabilities/</link><guid isPermaLink="true">https://vkontech.com/guest-post-breaking-barriers-how-technology-fuels-career-success-for-individuals-with-disabilities/</guid><description>In today’s technology-driven world, opportunities for career advancement are increasingly accessible to individuals with disabilities. The advent of new technologies has opened doors that were previously closed, offering innovative ways to overcome traditional barriers. From job search platforms to accessible software, technology is a game-changer in leveling the playing field for those with disabilities. In this article, courtesy of VKonTech.com, you’ll discover how leveraging these technologies can significantly enhance career prospects for people with disabilities.</description><pubDate>Fri, 26 Jan 2024 07:52:12 GMT</pubDate></item><item><title>AWS Site-to-Site VPN with strongSwan</title><link>https://vkontech.com/aws-site-to-site-vpn-with-strongswan/</link><guid isPermaLink="true">https://vkontech.com/aws-site-to-site-vpn-with-strongswan/</guid><description>This blog post offers a detailed tutorial on configuring strongSwan for an AWS Site-to-Site VPN. It includes step-by-step instructions, security practices, and troubleshooting tips for robust connectivity between local networks and AWS.</description><pubDate>Sun, 19 Nov 2023 12:19:59 GMT</pubDate></item><item><title>AWS RDS Replication and Recoverability</title><link>https://vkontech.com/aws-rds-replication-and-recoverability/</link><guid isPermaLink="true">https://vkontech.com/aws-rds-replication-and-recoverability/</guid><description>In this demo, we set up primary and replica MySQL RDS instances in two regions. We then insert some data into the primary and read from the replica, accessing the databases through EC2 hosts. We also configure a CloudWatch alarm for high replication lag and demonstrate promoting the replica.</description><pubDate>Wed, 20 Sep 2023 08:20:15 GMT</pubDate></item><item><title>The Outbox Pattern with Mongo, Kafka and Debezium in C#</title><link>https://vkontech.com/the-outbox-pattern-with-mongo-kafka-and-debezium-in-c/</link><guid isPermaLink="true">https://vkontech.com/the-outbox-pattern-with-mongo-kafka-and-debezium-in-c/</guid><description>Discover a practical solution for the Dual Write Problem in distributed systems using the Outbox Pattern. This guide presents a C# demo app with MongoDB, Kafka, and Debezium, illustrating reliable data propagation between services.</description><pubDate>Tue, 27 Jun 2023 07:43:54 GMT</pubDate></item><item><title>Kafka Messaging with Cloud Events, Protobuf, and Polymorphic Types</title><link>https://vkontech.com/kafka-messaging-with-cloud-events-protobuf-and-polymorphic-types/</link><guid isPermaLink="true">https://vkontech.com/kafka-messaging-with-cloud-events-protobuf-and-polymorphic-types/</guid><description>This article explores producing and consuming Kafka messages in Protobuf format, adhering to Cloud Events spec, and covers polymorphic data type serialization.</description><pubDate>Tue, 09 May 2023 08:43:18 GMT</pubDate></item><item><title>Kafka Messaging with Protobuf and Schema Registry in C#</title><link>https://vkontech.com/kafka-messaging-with-protobuf-and-schema-registry-in-c/</link><guid isPermaLink="true">https://vkontech.com/kafka-messaging-with-protobuf-and-schema-registry-in-c/</guid><description>In this article, we explore Kafka with Protobuf &amp; C#, including a demo for message production &amp; consumption. See how to manage your schema using Confluent Schema Registry and Control Center.</description><pubDate>Wed, 12 Apr 2023 08:49:53 GMT</pubDate></item><item><title>Producing and Consuming Kafka Messages in CloudEvents Format Using the C# SDK</title><link>https://vkontech.com/producing-and-consuming-kafka-messages-in-cloudevents-format-using-the-c-sdk/</link><guid isPermaLink="true">https://vkontech.com/producing-and-consuming-kafka-messages-in-cloudevents-format-using-the-c-sdk/</guid><description>A blog post about using C# to produce and consume Kafka messages in CloudEvents format. We’ll use JSON for serialization for now, but I’ll also explore Avro and Protobuf in a subsequent article.</description><pubDate>Thu, 16 Mar 2023 08:08:46 GMT</pubDate></item><item><title>Exploring Kafka Streams Partitioning, Scaling, and Fault Tolerance</title><link>https://vkontech.com/exploring-kafka-steams-partitioning-scaling-and-fault-tolerance/</link><guid isPermaLink="true">https://vkontech.com/exploring-kafka-steams-partitioning-scaling-and-fault-tolerance/</guid><description>Exploring Kafka Steams Partitioning, Scaling, and Fault Tolerance – we’ll build a simple streaming app and inspect the contents of the repartition topic, RocksDB state store, and the Kafka internal changelog topic. Also, we’ll see how the workload gets distributed between the running app instances.</description><pubDate>Thu, 23 Feb 2023 08:25:11 GMT</pubDate></item><item><title>Integration Tests for your Kafka Producer with “Testcontainers” in C#</title><link>https://vkontech.com/integration-tests-for-your-kafka-producer-with-testcontainers-in-c/</link><guid isPermaLink="true">https://vkontech.com/integration-tests-for-your-kafka-producer-with-testcontainers-in-c/</guid><description>An article about integration tests for your Kafka workflow. Using C# and the “Testcontainers” framework, we first run Kafka in Docker, call an API that will push a message to Kafka, consume the produced Kafka message ensuring it’s correct, and finally drop the created containers.</description><pubDate>Thu, 08 Dec 2022 09:14:03 GMT</pubDate></item><item><title>Kafka Networking via Wireshark</title><link>https://vkontech.com/kafka-networking-via-wireshark/</link><guid isPermaLink="true">https://vkontech.com/kafka-networking-via-wireshark/</guid><description>A blog post where we use Wireshark to trace the Kafka networking protocol. The client is a simple C# app interacting with a multi-broker Kafka cluster.</description><pubDate>Thu, 10 Nov 2022 08:36:43 GMT</pubDate></item><item><title>Exploring Kafka Listeners in Docker</title><link>https://vkontech.com/exploring-kafka-listeners-in-docker-part-1/</link><guid isPermaLink="true">https://vkontech.com/exploring-kafka-listeners-in-docker-part-1/</guid><description>In this article, I’ll introduce Kafka listeners, the client-broker “handshake” and pub/sub interactions.</description><pubDate>Sun, 09 Oct 2022 09:28:57 GMT</pubDate></item><item><title>Running Containerized .NET Scheduled Tasks with AWS Fargate – Part 2</title><link>https://vkontech.com/running-containerized-net-scheduled-tasks-with-aws-fargate-part-2/</link><guid isPermaLink="true">https://vkontech.com/running-containerized-net-scheduled-tasks-with-aws-fargate-part-2/</guid><description>In this article, we’ll continue where we left off and see how to properly handle the networking issues we had last time.
Concretely, we need to find a way to host our Fargate Task in a private subnet (so it’s not reachable publicly) but also allow for outbound internet traffic through a static public IP address.
We will whitelist this IP in Atlas, making the Mongo cluster accessible from the running container.</description><pubDate>Mon, 15 Aug 2022 09:27:19 GMT</pubDate></item><item><title>Running Containerized .NET Scheduled Tasks with AWS Fargate – Part 1</title><link>https://vkontech.com/running-containerized-net-scheduled-tasks-with-aws-fargate-part-1/</link><guid isPermaLink="true">https://vkontech.com/running-containerized-net-scheduled-tasks-with-aws-fargate-part-1/</guid><description>In this couple of articles, I’ll demonstrate how you can deploy a sample .NET console app to AWS and run it periodically as a Fargate task. That’s a common use case for any kind of background service you need to run on some predefined time intervals.</description><pubDate>Sun, 31 Jul 2022 12:27:15 GMT</pubDate></item><item><title>Sentiment Analysis of Stocktwits Messages using LSTM in PyTorch</title><link>https://vkontech.com/sentiment-analysis-of-stocktwits-messages-using-lstm-in-pytorch/</link><guid isPermaLink="true">https://vkontech.com/sentiment-analysis-of-stocktwits-messages-using-lstm-in-pytorch/</guid><description>In this article, I’ll present a demo project for classifying the sentiment of posts from the Stocktwits social media.
The community on Stocktwits is full of investors, traders, and entrepreneurs. Each message posted is called a Twit. This is similar to Twitter’s version of a post, called a Tweet. Using Pytorch, we’ll build a model around these twits that generate a sentiment score.</description><pubDate>Mon, 11 Jul 2022 08:32:36 GMT</pubDate></item><item><title>GraphQL, Node, Apollo and React (Social Media Demo Project) –  Part 2</title><link>https://vkontech.com/graphql-node-apollo-and-react-social-media-demo-project-part-2/</link><guid isPermaLink="true">https://vkontech.com/graphql-node-apollo-and-react-social-media-demo-project-part-2/</guid><description>In this article, I’ll present the UI part of the Social Media demo project we started exploring last time. In the previous post, you dug into the GraphQL API and how to send queries via the Apollo Playground. Now it’s time to bring it all together and see how the React front-end integrates with the API using Apollo Client.</description><pubDate>Thu, 09 Jun 2022 07:21:39 GMT</pubDate></item><item><title>GraphQL, Node, Apollo and React (Social Media Demo Project) –  Part 1</title><link>https://vkontech.com/graphql-node-apollo-and-react-social-media-demo-project-part-1/</link><guid isPermaLink="true">https://vkontech.com/graphql-node-apollo-and-react-social-media-demo-project-part-1/</guid><description>It can’t go unnoticed that GraphQL is being adopted by plenty of reputable companies like Facebook, Shopify, Twitter, and many more.
For quite some time, I hadn’t had the chance to explore it and understand what it brings to the table. Still, probably like many of you, I’ve read some isolated references here and there, gaining intuition about what kind of API design pain points GraphQL is meant to solve.
So I decided to spend some time learning GraphQL, its pros and cons, and get a better feeling of the scenarios when it can improve the general quality of a system and integration workflows.</description><pubDate>Wed, 25 May 2022 09:05:09 GMT</pubDate></item><item><title>Running NodeJS Microservices in Kubernetes using AWS EKS &amp; Travis CI – Part 3</title><link>https://vkontech.com/running-nodejs-microservices-in-kubernetes-using-aws-eks-travis-ci-part-3/</link><guid isPermaLink="true">https://vkontech.com/running-nodejs-microservices-in-kubernetes-using-aws-eks-travis-ci-part-3/</guid><description>Running NodeJS Microservices in Kubernetes using AWS EKS &amp; Travis CI, Part 3 – a demo project part of the Udacity “Cloud Developer” Nanodegree. In this post, you will see how to deploy the sample system to Kubernetes using AWS EKS.</description><pubDate>Fri, 29 Apr 2022 09:43:47 GMT</pubDate></item><item><title>Running NodeJS Microservices in Kubernetes using AWS EKS &amp; Travis CI – Part 2</title><link>https://vkontech.com/running-nodejs-microservices-in-kubernetes-using-aws-eks-travis-ci-part-2/</link><guid isPermaLink="true">https://vkontech.com/running-nodejs-microservices-in-kubernetes-using-aws-eks-travis-ci-part-2/</guid><description>Running NodeJS Microservices in Kubernetes using AWS EKS &amp; Travis CI, Part 2 – a demo project part of the Udacity “Cloud Developer” Nanodegree. In this post, you will see how to set up Continuous Integration with Travis CI.</description><pubDate>Fri, 01 Apr 2022 09:44:35 GMT</pubDate></item><item><title>Running NodeJS Microservices in Kubernetes using AWS EKS &amp; Travis CI – Part 1</title><link>https://vkontech.com/running-nodejs-microservices-in-kubernetes-using-aws-eks-travis-ci-part-1/</link><guid isPermaLink="true">https://vkontech.com/running-nodejs-microservices-in-kubernetes-using-aws-eks-travis-ci-part-1/</guid><description>Running NodeJS Microservices in Kubernetes using AWS EKS &amp; Travis CI, Part 1 – a demo project part of the Udacity “Cloud Developer” Nanodegree.</description><pubDate>Wed, 23 Mar 2022 09:23:32 GMT</pubDate></item><item><title>Deploying Your Node API to AWS Using Elastic Beanstalk (Demo Project)</title><link>https://vkontech.com/deploying-your-node-api-to-aws-using-elastic-beanstalk-demo-project/</link><guid isPermaLink="true">https://vkontech.com/deploying-your-node-api-to-aws-using-elastic-beanstalk-demo-project/</guid><description>Deploying your Node API to AWS using Elastic Beanstalk – a demo project part of the Udacity “Cloud Developer” Nanodegree.</description><pubDate>Sat, 05 Mar 2022 10:38:35 GMT</pubDate></item><item><title>Monitoring Public Transportation with the Kafka Ecosystem (Demo Project)</title><link>https://vkontech.com/monitoring-public-transportation-with-the-kafka-ecosystem-demo-project/</link><guid isPermaLink="true">https://vkontech.com/monitoring-public-transportation-with-the-kafka-ecosystem-demo-project/</guid><description>Monitoring Public Transportation with the Kafka Ecosystem – a demo project part of the Udacity “Data Streaming” Nanodegree. It contains data streaming workflows using Kafka Producers and Consumers, JSON and Avro serialization, Kafka Connect (JDBC), REST Proxy, Robinhood Faust, and KSQL.</description><pubDate>Mon, 14 Feb 2022 10:14:14 GMT</pubDate></item><item><title>Should You Migrate Your Reporting Queries From a “General Purpose” DB (MongoDB) to a Data Warehouse (ClickHouse)? (Performance Overview)</title><link>https://vkontech.com/migrating-your-reporting-queries-from-a-general-purpose-db-mongodb-to-a-data-warehouse-clickhouse-performance-overview/</link><guid isPermaLink="true">https://vkontech.com/migrating-your-reporting-queries-from-a-general-purpose-db-mongodb-to-a-data-warehouse-clickhouse-performance-overview/</guid><description>Migrating Your Reporting Queries From a “General Purpose” DB to a Data Warehouse – Performance Overview. The article focuses on MongoDB and ClickHouse, but most takeaways apply to other “traditional” DBs and “data warehouse” solutions.</description><pubDate>Fri, 21 Jan 2022 09:53:29 GMT</pubDate></item><item><title>Causal Consistency Guarantees in MongoDB – Lamport Clock, Cluster Time, Operation Time, and Causally Consistent Sessions</title><link>https://vkontech.com/causal-consistency-guarantees-in-mongodb-lamport-clock-cluster-time-operation-time-and-causally-consistent-sessions/</link><guid isPermaLink="true">https://vkontech.com/causal-consistency-guarantees-in-mongodb-lamport-clock-cluster-time-operation-time-and-causally-consistent-sessions/</guid><description>Exploring Causal Consistency in MongoDB – the article goes through the concepts of Lamport (Logical) Clocks, Operation Time, Cluster Time, and Causally Consistent Sessions that lead to solving the “Read Your Write” consistency violation.</description><pubDate>Mon, 13 Dec 2021 08:02:50 GMT</pubDate></item><item><title>Causal Consistency Guarantees in MongoDB – “majority” Read and Write Concerns</title><link>https://vkontech.com/causal-consistency-guarantees-in-mongodb-majority-read-and-write-concerns/</link><guid isPermaLink="true">https://vkontech.com/causal-consistency-guarantees-in-mongodb-majority-read-and-write-concerns/</guid><description>A code example of how to break the Read You Write consistency in Mongo. Followed by a review of “majority” reads and writes. This will move the discussion towards Causally Consistent Sessions that I’ll cover next.</description><pubDate>Mon, 22 Nov 2021 18:10:06 GMT</pubDate></item><item><title>Causal Consistency Guarantees – Case Studies</title><link>https://vkontech.com/causal-consistency-guarantees-case-studies/</link><guid isPermaLink="true">https://vkontech.com/causal-consistency-guarantees-case-studies/</guid><description>When is Eventual Consistency not sufficient in a Distributed System? This article explores Causal Consistency Guarantees and describes the most popular ones – Read Your Write, Monotonic Reads, Monotonic Writes, Writes Follow Reads.</description><pubDate>Thu, 04 Nov 2021 16:18:30 GMT</pubDate></item><item><title>MongoDB Change Data Capture via Debezium Kafka Connector with a .NET 5 Client</title><link>https://vkontech.com/mongodb-change-data-capture-via-debezium-kafka-connector-with-a-net-5-client/</link><guid isPermaLink="true">https://vkontech.com/mongodb-change-data-capture-via-debezium-kafka-connector-with-a-net-5-client/</guid><description>MongoDB Change Data Capture via Debezium Kafka Connector with a .NET 5 Client</description><pubDate>Wed, 29 Sep 2021 16:35:59 GMT</pubDate></item><item><title>TensorFlow Serving gRPC Endpoint in Docker with a .NET 5 Client</title><link>https://vkontech.com/tensorflow-serving-grpc-endpoint-in-docker-with-a-net-5-client/</link><guid isPermaLink="true">https://vkontech.com/tensorflow-serving-grpc-endpoint-in-docker-with-a-net-5-client/</guid><description>Tensorflow Serving gRPC Endpoint in Docker with a .NET 5 Client</description><pubDate>Mon, 06 Sep 2021 09:29:53 GMT</pubDate></item><item><title>Predicting English Premier Leagues Games Using Transfermarkt Market Values</title><link>https://vkontech.com/predicting-english-premier-leagues-games-using-transfermarkt-market-values/</link><guid isPermaLink="true">https://vkontech.com/predicting-english-premier-leagues-games-using-transfermarkt-market-values/</guid><description>Predicting English Premier League games based on Transfermarkt market values for the home and away team. It’s fascinating how close we can get to the bookies’ prediction with such a simple model. This proves the impact money has on the game of Football (Soccer).</description><pubDate>Thu, 12 Aug 2021 17:41:52 GMT</pubDate></item><item><title>Predicting Football Clubs Winning Percentage in the English Premier League Using Pythagorean Expectation</title><link>https://vkontech.com/predicting-football-clubs-winning-percentage-in-the-english-premier-league-using-pythagorean-expectation/</link><guid isPermaLink="true">https://vkontech.com/predicting-football-clubs-winning-percentage-in-the-english-premier-league-using-pythagorean-expectation/</guid><description>Pythagorean Expectation for the English Premier League</description><pubDate>Tue, 20 Jul 2021 17:28:05 GMT</pubDate></item><item><title>Making Predictions in C# with a Pre-Trained TensorFlow Model via ONNX</title><link>https://vkontech.com/making-predictions-in-c-with-a-pre-trained-tensorflow-model-via-onnx/</link><guid isPermaLink="true">https://vkontech.com/making-predictions-in-c-with-a-pre-trained-tensorflow-model-via-onnx/</guid><description>Making Predictions in C# with a Pre-Trained TensorFlow Model via ONNX.</description><pubDate>Sun, 27 Jun 2021 16:53:09 GMT</pubDate></item><item><title>Exploring the async/await State Machine – Stack Traces and Refactoring Pitfalls</title><link>https://vkontech.com/exploring-the-async-await-state-machine-stack-traces-and-refactoring-pitfalls/</link><guid isPermaLink="true">https://vkontech.com/exploring-the-async-await-state-machine-stack-traces-and-refactoring-pitfalls/</guid><description>Call stacks in async methods are fundamentally different compared to synchronous execution. This leads to pitfalls where seemingly reasonable refactoring can make a method “disappear” from the Stack Trace. Let’s see why and how.</description><pubDate>Wed, 09 Jun 2021 17:58:30 GMT</pubDate></item><item><title>Course Review – “Deep Learning Specialization” by Andrew Ng, DeepLearning.AI on Coursera</title><link>https://vkontech.com/course-review-deep-learning-specialization-by-andrew-ng-deeplearning-ai-on-coursera/</link><guid isPermaLink="true">https://vkontech.com/course-review-deep-learning-specialization-by-andrew-ng-deeplearning-ai-on-coursera/</guid><description>If you have some beginner knowledge in Machine Learning and want to dive into Deep Learning with its’ modern applications in Computer Vision and NLP – taking the “Deep Learning Specialization” by Andrew Ng on Coursera is a great way to achieve that. Here is a full review of the Specialization.</description><pubDate>Wed, 26 May 2021 17:39:20 GMT</pubDate></item><item><title>Course Review – “Machine Learning” by Andrew Ng, Stanford on Coursera</title><link>https://vkontech.com/course-review-machine-learning-by-andrew-ng-stanford-on-coursera/</link><guid isPermaLink="true">https://vkontech.com/course-review-machine-learning-by-andrew-ng-stanford-on-coursera/</guid><description>The Machine Learning course by Andrew NG at Coursera is one of the best sources for stepping into Machine Learning. It has built quite a reputation for itself due to the authors’ teaching skills and the quality of the content. Admittedly, it also has a few drawbacks. Here’s a complete course review:</description><pubDate>Thu, 13 May 2021 16:27:00 GMT</pubDate></item><item><title>The Experienced Developer Stepping Into Machine Learning – Why and How?</title><link>https://vkontech.com/the-experienced-developer-stepping-into-machine-learning-why-and-how/</link><guid isPermaLink="true">https://vkontech.com/the-experienced-developer-stepping-into-machine-learning-why-and-how/</guid><description>An article on stepping into Machine Learning as an experienced Developer. How to overcome self-doubt, Imposter Syndrome and get the right mindset. You’ll also see some great online courses to start with!</description><pubDate>Thu, 29 Apr 2021 16:06:32 GMT</pubDate></item><item><title>Exploring the async/await State Machine – Nested Async Calls and ConfigureAwait(false)</title><link>https://vkontech.com/exploring-the-async-await-state-machine-nested-async-calls-and-configureawaitfalse/</link><guid isPermaLink="true">https://vkontech.com/exploring-the-async-await-state-machine-nested-async-calls-and-configureawaitfalse/</guid><description>An article on the internals of nested async/await calls. You’ll see a very detailed workflow diagram with all the execution steps. This also helps to understand precisely why and when we need to use ConfigureAwait(false) in our libraries.</description><pubDate>Thu, 25 Mar 2021 16:06:28 GMT</pubDate></item><item><title>Exploring the async/await State Machine – Synchronization Context</title><link>https://vkontech.com/exploring-the-async-await-state-machine-synchronization-context/</link><guid isPermaLink="true">https://vkontech.com/exploring-the-async-await-state-machine-synchronization-context/</guid><description>The Synchronization Context is an abstraction that lets you run a piece of code asynchronously without thinking about the specifics of the current environment. How does it work, and when is it invoked as part of the async workflow? Let’s explore those topics!</description><pubDate>Mon, 01 Mar 2021 15:29:30 GMT</pubDate></item><item><title>Exploring the async/await State Machine – Series Overview</title><link>https://vkontech.com/exploring-the-async-await-state-machine-series-overview/</link><guid isPermaLink="true">https://vkontech.com/exploring-the-async-await-state-machine-series-overview/</guid><description>I wrote a series of articles describing the async/await State Machine produced by the C# compiler when it encounters an asynchronous method. The discussion starts with a high-level conceptual overview and gradually moves towards the intriguing technical details and performance optimizations.</description><pubDate>Sun, 07 Feb 2021 09:02:23 GMT</pubDate></item><item><title>Exploring the async/await State Machine – Concrete Implementation</title><link>https://vkontech.com/exploring-the-async-await-state-machine-concrete-implementation/</link><guid isPermaLink="true">https://vkontech.com/exploring-the-async-await-state-machine-concrete-implementation/</guid><description>Let’s examine the concrete implementation of the async/await State Machine along with all the intriguing optimizations performed by the compiler.</description><pubDate>Thu, 21 Jan 2021 15:20:15 GMT</pubDate></item><item><title>Exploring the async/await State Machine – Conceptual Implementation</title><link>https://vkontech.com/exploring-the-async-await-state-machine-conceptual-implementation/</link><guid isPermaLink="true">https://vkontech.com/exploring-the-async-await-state-machine-conceptual-implementation/</guid><description>A conceptual implementation of the async/await State Machine</description><pubDate>Mon, 28 Dec 2020 18:44:12 GMT</pubDate></item><item><title>Exploring the async/await State Machine – Main Workflow and State Transitions</title><link>https://vkontech.com/exploring-the-async-await-state-machine-main-workflow-and-state-transitions/</link><guid isPermaLink="true">https://vkontech.com/exploring-the-async-await-state-machine-main-workflow-and-state-transitions/</guid><description>The async/await State Machine can be easily understood with a comprehensive workflow diagram that models the program flow and the state transitions. Such a higher-level representation is a mandatory step before diving into the implementation details. Let’s see how that looks!</description><pubDate>Sat, 12 Dec 2020 10:26:22 GMT</pubDate></item><item><title>Exploring the async/await State Machine – The Awaitable Pattern</title><link>https://vkontech.com/exploring-the-async-await-state-machine-the-awaitable-pattern/</link><guid isPermaLink="true">https://vkontech.com/exploring-the-async-await-state-machine-the-awaitable-pattern/</guid><description>The Awaitable Pattern plays a vital role in the whole async/await workflow behind the scenes. The best way to understand how it works is to build your own awaitable type. Let’s see how!</description><pubDate>Sat, 21 Nov 2020 09:54:36 GMT</pubDate></item><item><title>The Intuitive Guide to Understanding Closures in C#</title><link>https://vkontech.com/the-intuitive-guide-to-understanding-closures-in-c/</link><guid isPermaLink="true">https://vkontech.com/the-intuitive-guide-to-understanding-closures-in-c/</guid><description>How are closures implemented in C#? How do they “capture” environment variables from different scopes? The idea is simple, but it can have complex implications. That’s why it’s essential to understand the concept in detail. Let’s get some practical intuition inspecting the IL code as a source of truth.</description><pubDate>Sun, 25 Oct 2020 13:45:07 GMT</pubDate></item><item><title>Polymorphism on Steroids – Dive Into Multiple Dispatch (Multimethods)</title><link>https://vkontech.com/polymorphism-on-steroids-dive-into-multiple-dispatch-multimethods/</link><guid isPermaLink="true">https://vkontech.com/polymorphism-on-steroids-dive-into-multiple-dispatch-multimethods/</guid><description>The common understanding of Polymorphism takes into account only the runtime type of the “receiving” object. That’s the implementation in most languages. But what if we also consider the method arguments as part of the runtime method resolution logic? That’s the idea behind “Multiple Dispatch.”</description><pubDate>Fri, 02 Oct 2020 13:14:20 GMT</pubDate></item><item><title>The “Clash of Styles” Series – FP vs. OOP as a Daily Choice</title><link>https://vkontech.com/the-clash-of-styles-series-fp-vs-oop-as-a-daily-choice/</link><guid isPermaLink="true">https://vkontech.com/the-clash-of-styles-series-fp-vs-oop-as-a-daily-choice/</guid><description>The “Clash of Styles” series compare OOP and FP from a very practical standpoint. Modern general-purpose languages support both of the paradigms. Being conscious of that and choosing the right style for your use case is vital for ending up with an elegant and maintainable system.</description><pubDate>Mon, 31 Aug 2020 13:19:26 GMT</pubDate></item><item><title>Clash of Styles, Part #6 – FP in OOP via the Visitor Pattern</title><link>https://vkontech.com/clash-of-styles-part-6-fp-in-oop-via-the-visitor-pattern/</link><guid isPermaLink="true">https://vkontech.com/clash-of-styles-part-6-fp-in-oop-via-the-visitor-pattern/</guid><description>The Visitor Pattern addresses a fundamental limitation of Object-Oriented modeling. In OOP, adding a new “operation” is tricky. You have to modify the existing classes, which is error-prone and violates OCP. Let’s look beyond the standard UML diagram and see how the Visitor solves this problem.</description><pubDate>Wed, 19 Aug 2020 14:05:34 GMT</pubDate></item><item><title>Clash of Styles, Part #5 – Double Dispatch, or When to Abandon OOP</title><link>https://vkontech.com/clash-of-styles-part-5-double-dispatch-or-when-to-abandon-oop/</link><guid isPermaLink="true">https://vkontech.com/clash-of-styles-part-5-double-dispatch-or-when-to-abandon-oop/</guid><description>OOP is established to the point that we sometimes follow absurdly complicated “idiomatic” patterns(tricks). One example is the Double Dispatch technique, which is a quite puzzling chain of polymorphic calls. Let’s see it in action and compare it to a quite elegant Functional alternative.</description><pubDate>Wed, 22 Jul 2020 13:14:33 GMT</pubDate></item><item><title>Clash of Styles, Part #4 – Adding Support for Rational Numbers with FP</title><link>https://vkontech.com/clash-of-styles-part-4-adding-support-for-rational-numbers-with-fp/</link><guid isPermaLink="true">https://vkontech.com/clash-of-styles-part-4-adding-support-for-rational-numbers-with-fp/</guid><description>FP or OOP is not a binary choice. You can have a healthy mix of the two in your program. Whatever paradigm you select to be central to your design, there will be cases when the other style fits better. Let’s start exploring this in Part #4 of the Clash of Styles series.</description><pubDate>Thu, 02 Jul 2020 13:23:37 GMT</pubDate></item><item><title>Clash of Styles, Part #3 – Extensibility via OOP and FP</title><link>https://vkontech.com/clash-of-styles-part-3-extensibility-via-oop-and-fp/</link><guid isPermaLink="true">https://vkontech.com/clash-of-styles-part-3-extensibility-via-oop-and-fp/</guid><description>The choice between FP and OOP can directly affect the maintainability characteristics of your program. What is “easy” to add in OOP is “hard” in FP and vice versa. How can that be presented in terms of the Open-Closed Principle? What are some practical examples? Explore those topics in Part #3 of the Clash of Styles series.</description><pubDate>Wed, 17 Jun 2020 12:33:15 GMT</pubDate></item><item><title>Clash of Styles, Part #2 – Operations Matrix via FP</title><link>https://vkontech.com/clash-of-styles-part-2-operations-matrix-via-fp/</link><guid isPermaLink="true">https://vkontech.com/clash-of-styles-part-2-operations-matrix-via-fp/</guid><description>How do we “interpret” our requirements with a Functional Programming mindset? How does it encourage us to decompose our program in terms of Operations? How is that precisely the opposite of the OOP perspective? Learn about it in the second part of the “Clash of Styles” series. Examples in C# and F#</description><pubDate>Sat, 30 May 2020 09:20:56 GMT</pubDate></item><item><title>Clash of Styles, Part #1 – Operations Matrix via OOP</title><link>https://vkontech.com/clash-of-styles-part-1-operations-matrix-via-oop/</link><guid isPermaLink="true">https://vkontech.com/clash-of-styles-part-1-operations-matrix-via-oop/</guid><description>OOP or FP? C# or F#? Is it just a matter of style? These series will give you a lot of food for thought. Enjoy Part #1</description><pubDate>Fri, 15 May 2020 13:11:44 GMT</pubDate></item><item><title>Course Review – “Programming Languages” Series on Coursera</title><link>https://vkontech.com/course-review-programming-languages-series-on-coursera/</link><guid isPermaLink="true">https://vkontech.com/course-review-programming-languages-series-on-coursera/</guid><description>“Programming Languages” Series on Coursera is IMO, one of the best classes on foundational programming language paradigms. I strongly recommend it. You’ll be writing your own mini interpreter in Racket. Here is a full course review. Do you have your own favorite online class?</description><pubDate>Wed, 29 Apr 2020 17:22:54 GMT</pubDate></item><item><title>Don’t Help Your Clients to Deadlock</title><link>https://vkontech.com/dont-help-your-clients-to-deadlock/</link><guid isPermaLink="true">https://vkontech.com/dont-help-your-clients-to-deadlock/</guid><description>If you’re not careful what and when you invoke from within a critical section, you may cause a deadlock. Everything may seem correct from yours’ and your clients’ perspective, but out of a sudden, the program may go to sleep forever. In this article, I’ll demonstrate some scenarios when this can happen and what you can do(or even should do) to mitigate the risk. But first, let’s do a quick refresher on the lock statement in C# and why we use it. The easiest way to read and write to some shared data from multiple threads and make sure it doesn’t get corrupted is to use some kind of a lock. There are various types of locks in .NET Framework like Monitor, SpinLock, ReaderWriterLockSlim. The most straightforward construct is the lock statement(which is just a simple wrapper around the Monitor), and we can safely say it works well in the majority of the cases. All the examples in this article will be based on it. But the conclusions would be valid for the other types of locks as well. Please note this article is not about strategies and patterns for parallel programming. In many cases, you may avoid locking altogether,…</description><pubDate>Tue, 21 Apr 2020 14:51:54 GMT</pubDate></item><item><title>The Dispose Pattern Step by Step</title><link>https://vkontech.com/the-dispose-pattern-step-by-step/</link><guid isPermaLink="true">https://vkontech.com/the-dispose-pattern-step-by-step/</guid><description>How to avoid memory leaks? When is the Garbage Collector not going to help you? How to make sure you implement IDisposable exactly right for your use case without falling into the “overdesign trap?” Explore those topics with a lot of practical examples.</description><pubDate>Wed, 01 Apr 2020 18:51:39 GMT</pubDate></item><item><title>A Practical Intro to Covariance and Contravariance in C#</title><link>https://vkontech.com/a-practical-intro-to-covariance-and-contravariance-in-c/</link><guid isPermaLink="true">https://vkontech.com/a-practical-intro-to-covariance-and-contravariance-in-c/</guid><description>When defining a generic interface, have you received a hint from Resharper like “The type parameter T could be declared as covariant” (or “contravariant”)? If so, have you then blindly applied the proposed refactoring which decorates your generic parameter with the in or out keyword? Like so: I know I’ve done this a few times before deciding to dig deeper into what these terms actually mean and how they affect my type’s behavior. Type variance is one of the topics developers work with pretty much on a daily basis but don’t always understand it well. I will discuss what it exactly means for a type to be covariant, contravariant or invariant, how are those terms represented via the in and out keywords, the semantics of the so called input and output positions, and how all of this can make our types more flexible and useful. When I was researching the topic myself, I’ve come across some resources online that get a little bit theoretical and academic. That’s probably because the terms covariance and contravariance have their deep mathematical origin. This is not something I will bother you with here. In this blog post, I’ll try to develop the practical intuition…</description><pubDate>Tue, 17 Mar 2020 19:39:22 GMT</pubDate></item><item><title>FirstOrDefault() is a Code Smell</title><link>https://vkontech.com/firstordefault-is-a-code-smell/</link><guid isPermaLink="true">https://vkontech.com/firstordefault-is-a-code-smell/</guid><description>FirstOrDefault() is one of the most (over)used IEnumerable extensions. Of course, it has its’ valid use cases not only semantically but sometimes from a performance perspective. In many cases, though, you can utilize alternative methods to convey your intentions more cleanly.</description><pubDate>Fri, 28 Feb 2020 15:10:48 GMT</pubDate></item><item><title>Avoid Conversion Operators</title><link>https://vkontech.com/avoid-conversion-operators/</link><guid isPermaLink="true">https://vkontech.com/avoid-conversion-operators/</guid><description>Prefer constructor overloads or factory methods over implicit or explicit conversion operators.</description><pubDate>Fri, 14 Feb 2020 11:40:14 GMT</pubDate></item><item><title>GetHashCode() Pitfalls</title><link>https://vkontech.com/gethashcode-pitfalls/</link><guid isPermaLink="true">https://vkontech.com/gethashcode-pitfalls/</guid><description>GetHashCode() is one of the functions you should probably avoid implementing yourself. It generates a lot of confusion among developers and can lead to some hard to track bugs when implemented poorly. The goal of this article is to help you understand the common mistakes developers make when implementing GetHashCode() and some general misconceptions when it comes to computing hash codes for your custom types in C#. Note that this is not a hash function design and implementation guideline. Rather, the main focus will be on GetHashCode() in .Net and more specifically: The difference between GetHashCode() behavior for reference and value types. Implementation details you need to be aware of when defining your own GetHashCode() version. Hash Codes for Reference and Value Types Every object in C# has a default behavior for generating an integer value called a hash code. This is the value that a hash-based container like HashSet&lt;T&gt; or Dictionary&lt;K,V&gt; uses to store and retrieve objects. The objects are grouped together by their hash codes into buckets or slots. Multiple objects can produce the same hash key. This is what’s called a hash collision. To store an object in a hash container, its hash code is computed, which…</description><pubDate>Fri, 07 Feb 2020 14:07:55 GMT</pubDate></item></channel></rss>