RSS Parrot

BETA

🦜 Markus Oberlehner

@markus.oberlehner.net@rss-parrot.net

I'm an automated parrot! I relay a website's RSS feed to the Fediverse. Every time a new post appears in the feed, I toot about it. Follow me to get all new posts in your Mastodon timeline! Brought to you by the RSS Parrot.

---

Markus Oberlehner is a Software Engineer living in Austria. He writes articles about Vue.js / Nuxt, React / Next.js, Test-driven Development, and CSS.

Your feed and you don't want it here? Just e-mail the birb.

Site URL: markus.oberlehner.net/

Feed URL: markus.oberlehner.net/index.xml

Posts: 259

Followers: 1

What We Do

Published: November 1, 2025 09:53

Is it worth automating things? I'm a software developer. My job is to automate things. Automation, over the last couple of hundred years, has made many of us rich (compared to our ancestors). So the answer should be simple, and yet it isn't...

Visual Regression Testing With Vitest

Published: October 1, 2025 17:32

Visual regression testing is the perfect tool to catch regressions within our UI component libraries and applications early, yet few teams practice it. Teams often avoid it due to complicated setups, cumbersome workflows, and difficulties syncing tests…

Let's Share Our Failures Not Our Successes!

Published: April 2, 2025 07:00

Stop sharing only the things that went well! Start sharing your failures instead! I wholeheartedly agree with David Duchovny that there is more to learn from failure than from success. So why are we so obsessed with sharing mostly useless (and often fake)…

You Can't Fight 'Not-enoughness' with 'More'

Published: February 16, 2025 09:00

After being rejected to speak at several conferences, I wondered: Why is it so important to me? The answer: a deep sense of not-enoughness that I try to overcome by pushing harder and harder to accomplish more and more...

Running Next.js with Docker

Published: September 22, 2024 07:07

Nowadays, there are plenty of ways to run and deploy our Next.js application to the World Wide Web. Yet, especially in an enterprise environment or when we don't want to depend on a particular provider like Vercel, we may consider bundling our…

Microservices, the Expulsion From E2E Testing Paradise, and the Path to Salvation: Contract Testing

Published: July 13, 2024 04:07

Recently, I was back on the job hunt. At one particular interview, my potential future colleagues and I got into a discussion about testing, specifically the term end-to-end testing. I was in the awkward position that I didn't have a word to describe a…

Using Testing Library jest-dom with Vitest

Published: June 4, 2024 04:15

Vite brought super fast bundling and hot reloading to our regular dev workflow, and Vitest is doing the same for our testing workflow. So I'm mostly transitioning away from Jest in favor of Vitest. But there are a lot of amazing tools in the Jest…

No More Mocking! Write Better Tests for Microservices-powered Server-side Rendered Applications with Contract Tests

Published: March 23, 2024 14:07

I could never quite wrap my head around how to test SSR applications (Nuxt, Next.js, Laravel, etc.) that talk to HTTP APIs (e.g., microservices). Using the built-in mocking capabilities of tools like Playwright and Cypress is not possible in this scenario…

Reactive Data Fetching and Updating in Nuxt 3: Automatically Refresh `useFetch()` When Deleting or Updating Data

Published: January 25, 2024 08:07

Managing data across different components is a common challenge when working with modern web frameworks. Imagine a typical scenario where actions (e.g., deleting or updating data) in one component must reflect changes in another—for example, fetching a…

Test Smarter, Not Harder: Focus on Outcomes, Not Outputs

Published: December 31, 2023 09:07

When we dive into the world of testing in programming, it's easy to get caught up in the numbers game—how many tests have we written? What's our code coverage? However, if we pause and consider the bigger picture, we realize that the true measure of…

Running Nuxt 3 in a Docker Container

Published: July 8, 2023 12:07

In this article, we'll dive into the world of Nuxt 3 and Docker, exploring how they can work together to streamline our development and deployment processes. We'll walk through setting up a Nuxt 3 application in a Docker environment for production and…

Leveraging Docker to Run CLI Tools in Languages Like Java, Ruby, and PHP Without Local Installation

Published: July 6, 2023 18:21

We often find ourselves needing to use various command-line interface (CLI) tools written in different programming languages. Sometimes, we don't have the required programming environment set up on our local machines or may not want to install it for…

Building a ChatGPT Client with Remix: Leveraging Response Streaming for a Chat-like Experience

Published: May 10, 2023 08:00

ChatGPT has recently gained significant attention due to its powerful natural language understanding and generation capabilities. While the official ChatGPT client offers a decent UX, I wanted to create a better client as a pet project. In this article,…

Building a ChatGPT Client with Nuxt 3: Leveraging Response Streaming for a Chat-like Experience

Published: May 7, 2023 08:00

ChatGPT has recently gained significant attention due to its powerful natural language understanding and generation capabilities. While the official ChatGPT client offers a decent UX, I wanted to create a better client as a pet project. In this article,…

The Three-Layer UI Component Architecture: Versatile Building Blocks for Crafting Multiple Design Systems

Published: March 20, 2023 10:54

Creating custom component libraries for multiple products or applications can be challenging, particularly for companies that need to maintain two or more different design systems. The Three Layer UI Component Architecture is an approach for maintaining…

Using Mock Service Worker with Vitest and fetch

Published: June 25, 2022 06:15

The JavaScript ecosystem has a lot to offer when it comes to testing. With the recent addition of Vitest we get the performance and convenience features of Vite for testing too. Mock Service Worker is an excellent mocking solution for mocking network…

TODO Timeboxing

Published: January 11, 2022 16:22

Every couple of months, I reach a point where I have to declare TODO bankruptcy. The items on my TODO list are getting more and more, and I schedule more and more todos each day to get ahead. But obviously, that doesn't work—quite the opposite...

Manual testing, E2E testing, unit testing – how to decide which testing strategy to use?

Published: November 27, 2021 12:55

When we first start to dip our toes into the deep waters of automated software testing, all those different kinds of tests can feel intimidating. In this article, I give you a quick overview of the most crucial testing strategies. After reading this…

Vue Composition API: VueUse Composable Library

Published: August 24, 2021 15:36

The Composition API makes it very easy to share code between components in our codebase or even across projects via npm packages. I recently stumbled upon the excellent VueUse library that provides us with a ton of valuable composables. In this article, we…

Vue Composition API: Composables

Published: August 5, 2021 17:02

What makes the Vue 3 Composition API so much better than the Options API is code sharing. Inside the setup hook of a component, we can group parts of our code by logical concern. We then can extract pieces of reactive logic and share the code with other…

Don't Write Documentation!

Published: July 24, 2021 09:24

Whenever we find a severe bug that is caused by an error in a complicated piece of code, in my experience, the first instinct is that better documentation is needed. So that the next time we need to debug the code, at least we know what it is supposed to…

Cypress Live-Reload Tests on Code Changes

Published: July 19, 2021 18:10

Out of the box, Cypress offers an amazing live-reloading feature. But there is one caveat: live-reloading only works when changing test code, not when updating the application code. Nowadays, we are used to live-reloading in the browser thanks to webpack…

Vue 3 Composition API vs. Options API

Published: July 3, 2021 06:29

When migrating from Vue 2 to Vue 3 or starting a new Vue 3 project, many people wonder if they should continue using the Options API or go all-in on the Composition API. I advise using the Composition API (for new components) exclusively ASAP and never…

Vue 3 Composition API: ref() vs. reactive()

Published: April 20, 2021 19:26

One of the first questions that arise when starting with the new Vue Composition API is ref() or reactive()? The initial instinct is to use ref() for primitives (Boolean, String,...) and reactive() for objects. But there is more to it...

Your Components Do Too Much

Published: January 17, 2021 06:56

Whenever you feel the need to access global state or globally injected plugin methods or global anything for that matter, often it is a sign that the component you're working on is doing too much...

What Makes a Senior Developer? It Depends!

Published: January 3, 2021 07:04

The most common answer when you ask a professional about how to solve a specific problem is: it depends. I find myself regularly in this situation when I talk to craftspeople about home renovation projects. I can understand how frustrating this can be...

JavaScript Runtime Bundling Concept

Published: December 20, 2020 06:44

Imagine a world where you don't need to install a single dependency, but you're still able to use all modern JavaScript features. Where you don't need to run a build script every time you change a file. And you can do all of that knowing that your app will…

Progressive Enhancement and the Modern Web

Published: November 29, 2020 07:34

A few years ago, before frameworks like React and Vue.js became popular and WordPress and jQuery dominated the web (which, strictly speaking, still is the case today), there seemed to be an agreement on the overall importance of Progressive Enhancement. My…

Partial Hydration Concepts: Lazy and Active

Published: November 8, 2020 06:58

I am currently working on porting vue-lazy-hydration to Vue 3. With that comes the potential to make some significant improvements since Vue 3 has an API that allows controlling the hydration of VNodes. Working with the new APIs got me thinking about the…

Vue.js Feature Toggle Context Provider

Published: October 25, 2020 04:47

Some time ago, I read a very informative article by Pete Hodgson about feature toggles. I'm thinking a lot about the Context Provider Pattern and the types of problems it can help solve, and it appeared to me as if feature toggles are one of the use cases…

Application State Management with Vue 3

Published: October 11, 2020 05:59

With the new Composition API and Vue 3, there is a lot of talk about whether or not we still need Vuex or if it is possible to replace Vuex completely by making reactive objects globally available. In this article, I argue that thanks to the Composition…

Wrap Third-Party Libraries

Published: October 4, 2020 08:36

Certain coding practices seem superfluous when you first encounter them, but sooner rather than later you get into a situation where you wish you had stuck with them. Wrapping third-party libraries instead of using them directly in your codebase is one of…

Vue.js Style Provider Pattern

Published: September 27, 2020 07:13

I recently played around with the idea of using renderless provider components not only for data but for styles too. This pattern seems especially promising when it comes to building base components with style modifier props...

Antifragile Web Development

Published: August 30, 2020 08:47

Recently I've finished reading the book Antifragile by Nassim Nicholas Taleb. I was fascinated by the concept of antifragility. He uses the term to describe systems that benefit from volatility and disorder. In this article, I would like to reflect on a…

Tight Coupling vs. Loose Coupling in Vue.js

Published: August 2, 2020 06:20

When talking about loose coupling and tight coupling, often, the impression arises that tight coupling is something we always have to avoid. But this is almost impossible. What's essential is that we use loose coupling when bridging the gap between layers…

Retry Failed API Requests with JavaScript

Published: July 26, 2020 05:36

One of the most fragile parts of modern web applications is the network connection. Any API request that we make in our code has a significant risk of failing. We can use several techniques to make our applications more resilient in the event of a network…

Business Logic in Fat Client Applications

Published: July 12, 2020 08:41

In typical server-side rendered web applications, the separation of the business logic from the view layer was usually straightforward. But the boundaries are becoming blurry as we create fat client applications where much of the business logic tend to…

Make it Simple

Published: July 5, 2020 11:17

Last weekend I had the pleasure to dine at Das Maier. I don't need to mention that the menu, cooked by the four-star chef, (by the way the first woman to be awarded four stars) was excellent. But besides the culinary delights, it was fascinating what her…

$refs and the Vue 3 Composition API

Published: June 7, 2020 07:33

If you’re used to working with Vue 2 $refs and switch to the Vue 3 Composition API, you might wonder how to use $refs inside the new setup() method. In this article, we find out how to use the new ref() function as a replacement for static and dynamic HTML…

Lint Only Files with Changes on pre-commit

Published: April 12, 2020 09:27

A few days ago, I remembered that at my former workplace, karriere.at, we had a pre-commit hook bash script that executed ESLint and Stylelint, not on the entire repo, but only on files that were changed. Because that was pretty handy, I was looking into…

Telling a Story with Test Code

Published: April 5, 2020 08:04

A few weeks ago, I wrote about naming unit tests BDD style using Given/When/Then. In this article, I have expressed the thought that I do not like to repeat information in the description and in the expect statement. After writing some tests the way I've…

Building Partially Hydrated, Progressively Enhanced Static Websites with Isomorphic Preact and Eleventy

Published: March 22, 2020 05:33

One of my top priorities is to create the fastest possible websites (think marketing sites, not web applications), but I also don't want to do without modern tools and a component-based workflow. While there are developments in the right direction, I don't…

Setting up Eleventy with Preact and htm

Published: March 15, 2020 06:09

One of my top priorities is to create the fastest possible websites (think marketing sites, not web applications), but I also don't want to do without modern tools and a component-based workflow. While there are developments in the right direction, I don't…

Naming Things: Staying in Line with the System

Published: March 8, 2020 05:20

When multiple people are working together on a project, it is important to define some rules to make sure that everything stays tidy and chaos does not arise. How to name things is one of the areas in which there are always differences in opinion...

~ 159 additional posts are not shown ~