• Let’s (not) build an Event Sourcing app with DDD pt1.5 — in-memory projection issues

    To continue from part 1 here at Let’s build an Event Sourcing app with DDD pt1, this is part 1.5, where I address the in-memory projection issue.

    The app workflow

    This is an example of the real-world ES system I have worked with, and it has many issues that I will address in this blog.

    When booting up, the app needs to load the event from the database, and then it applies the event type/payload to update the value delta. Then, the event stream processor is started as a polling from DB to update the changes. At this point, we haven’t got a snapshot feature yet.

    Initializing the app

  • Let’s build an analog chronograph watch with VanillaJS + HTML pt.2

    Continuing from the pt.1 https://medium.com/@whoz_/lets-build-an-analog-chronograph-watch-with-vanillajs-html-pt-1-ef28ce9edf63, in this part, we will focus on the sub-dials and the chronograph function.

    You can find the source code here at: https://github.com/tungvotan/chronograph-analog-watch

  • Let’s build an analog chronograph watch with VanillaJS + HTML pt.1

    In this project, we’ll be recreating a functional chronograph analog watch using just Vanilla JavaScript and HTML, with a bit of CSS for styling.

    It’s been a long time since I haven’t worked with any pure HTML and Vanilla JS. I decided to choose the chronograph watch as the project since I love my watch so much! This project enables us to explore fundamental web development concepts, such as DOM manipulation, event handling, and animations.

    This is my lovely mechanical watch.

  • Let’s build an Event Sourcing app with DDD pt.1

    Recently, there has been a trend in Event Sourcing and Domain-Driven Design patterns like the hype of microservices 10 years ago.

    And I’m lucky enough to build a rich feature application using event sourcing with in-memory state (Redux) in my previous project, so I can understand some of the pros and cons. But to me the cons is overweight the pro in that case.

    So, I decided to make a simple billing app that better suits the ES goal and allows you to get a glimpse of what it is like.

  • Pull request best practices Pit fall

    Have you ever wondered why, after applying all of the PR best practices like tiny PRs, with a wall of text description, your pull request review progress and code quality still have not improved? It happens almost everywhere I’ve worked, and an important aspect often gets overlooked.

    Let’s explore this with an example. Then, we can break it down into the false miracles of focusing on PR best practices.

  • A Workaround for Your React Native Issues When the Standard (Browser) React App Works

    It has been three years since I last worked on a React Native app, and I’ve been wanting to write about this for a long time but always kept forgetting. It was also my last blockchain NFT project, which I will discuss in a separate post another day (I promise it will be an interesting story instead of this “tip” post). I’m telling you my story of getting my React Native app to render a binary file (which was not supported then) to give you an idea of a workaround if you’re facing a similar problem.

    tldr; if you have any issues with React Native app, but the React app works fine on your phone browser, try to embed it in React Native via WebView.

  • You Either Die a Hero or Live Long Enough to See Yourself Become the Villain

    I’ve been in software development for about ten years now since the uni time. Even with a limited pool of tools, mostly Node.js and React.js, I’ve noticed how open-source projects and custom libraries rise and fall. Just last night, I watched “The Dark Knight” again, and there’s a line: “You either die a hero or live long enough to see yourself become the villain.” I don’t know why it made me think about how often I’ve seen software tools start out as heroes — saving the day with new solutions, only to become villains when they grow too complex and hard to manage.

    I believe this one happened to anyone and not just me because whenever I shared what I think about this with my old “teammates” (I like it better than “colleague”), we all agreed that it’s everywhere. It’s a bit “same same but different” with the https://medium.com/@whoz_/the-untold-clean-code-clean-app-9cc2e1772644 posted in my profile from hung.dev, but here, I want to tell a similar story with a bit of change.

  • Beyond Code - Customer-Centric Mindset in Tech

    You know, I’ve been in the developer game for quite a while now. I’ve spent countless hours diving into the tech world, watching videos on how to build stuff, comparing different architectures, you name it. But you know what really shifted my perspective? It was this one video, a real game-changer. It’s called “Steve Jobs Insult Response,” and you can find it right there on YouTube, at this link:

  • The untold Clean code/Clean app

    Disclaimer: This is a fiction story from a great guy here at hung.dev. Because it’s too real to me so I have to translate an English version in case of… you know why.

    Disclaimer#2: I do not own the images and the memes.

    From the idea of Uncle Bob in a series of Clean Code