• Software Engineering Craftsmanship

    16 min read

    Software Engineering Craftsmanship

    Tools help, but craft comes from how you think. You don’t need a heavyweight IDE or a pattern catalog to design data structures. You don't even need a certification. What you need is a tight feedback loop. Chrome DevTools[1] is enough.

    Open the browser, open dev tools, open console, open live expressions[2] and let's build something useful. No help, no go to definition, no refactoring, no fancy diagrams. Just a thought, crafted step by step.

  • Control flow (Part 2)

    28 min read

    Higher abstractions

    Control flow (Part 1)

    In Part 2, we delve deeper into control flow techniques. This time, we focus on code design skills rather than relying on tools integrated into the compiler/language. As a result, these techniques can be applied to any modern programming language or runtime of choice. While some of them are recognized as patterns, others involve manipulating language rules in a more nuanced way. Regardless, all of them merit our attention as novel approaches to resolving common programming challenges.

  • Control flow (Part 1)

    20 min read

    Continuation

    Control flow (Part 2)

    It's been a while since my last post, but I'm back with more thoughts on managing execution control flow. How do programming languages control the flow or processing of instructions? We are going to be talking about tools far more interesting than control structures such as loops, conditional statements, functions, and exceptions. Not every language has them built-in, but most of them could be emulated. As such, this Part 1 article discusses the use of continuations, coroutines, and fibers for managing control flow in software programs. It explores the benefits and differences of each mechanism and provides examples of their implementation.

  • Passing JSNAD certification in one go

    9 min read

    JSNAD badge

    As somebody who recently passed JSNAD certification exam, I wanted to share some thoughts about the exam process and preparation tips. It should be useful for those seeking to pass the certification. It is not that difficult. But, as usual, it's all about details.

  • Reactivity in JavaScript

    13 min read

    JavaScript reactivity

    These days, all mainstream JavaScript frameworks have reactivity built-in. Understanding basic principles of reactivity behind fancy implementations could be helpful while tackling complex ideas and/or design decisions for a particular framework or library. In this post, we'll be talking about reactivity of interactive user interfaces and specifically reactivity of the UI-bound state.

  • Statistical analysis while staying at home

    1 min read

    Quarantine times bring quarantine ideas. I've got one as well. How about building a website that shows COVID spread for the local area yet shows historical trends synced with the publicly available data sources? Sounds difficult? No way...

  • Producer - consumer file processing

    9 min read

    My [previous post] got some questions about the front-end architecture and its potential improvements. So, this time, I am spending a bit more time within the JavaScript space with some modern front-end decisions that could be made here.

  • Packing larger files into Azure blobs

    14 min read

    On November 4th 2019, Azure SDK team published[1] a release containing improved APIs for the blob storage manipulations. Finally, I got some time to try new features regarding existing use cases of dealing with larger files. Following is a step by step project setup for uploading/downloading large files using Azure blob containers.

  • Killing "IF" softly

    11 min read

    There is a ton of material out there about the negative effects of nested if-else statements. Most of the time the problem description is accompanied by the refactoring tips and tricks to make the code more readable, flat, compact, etc. With this article, we are going to explore a different approach to dealing with the conditional "if" operator. We'll try to eliminate the "if" statements from the code usage, yet keeping all the benefits of conditional branching.