Skip to main content

12 min read
Pere Pages
Architect

This article explores the growing significance of linguistic precision and thorough understanding of foundational knowledge in the context of AI and software development, highlighting the historical importance of clear communication in the field and the relevance of Agile methodologies in the AI era. It also outlines the skills needed to effectively work with AI and navigate the evolving landscape of web development and other tech-related fields.

4 min read
Pere Pages
Architect

In software development, managing dependencies and state is crucial for ensuring deterministic behavior: for any given input, we aim for a consistent output (This is a key reason behind the growing hype for functional programming, as it emphasizes immutability and stateless functions, simplifying the management of dependencies and state). However, as the number of inputs and modules increases, so does the complexity of handling them, potentially leading to a higher risk of bugs鈥攗nintended outcomes. To mitigate this, it's essential to minimize and manage dependencies effectively, acknowledging that they can introduce similar challenges by increasing system interconnectedness and potential failure points.

6 min read
Pere Pages
Developer working with bugs

The following article ("Stop testing your code!") made me think about the benefits of testing beyond Bug Cacthing.

Diving into the world of tests reveals a multitude of benefits beyond the obvious ones (like ensuring functionality integrity and catching bugs early). Let's break down some of these benefits and then touch upon common mistakes that can undermine these advantages.

8 min read
Pere Pages
Vite logo

Vite, Next Generation Frontend Tooling

The Vite project is a modern, fast front-end build tool that significantly improves the development experience for web projects. Created by Evan You, the creator of Vue.js, Vite leverages modern web standards such as native ES modules (ESM) to enable lightning-fast server start-up and hot module replacement (HMR). Here's a quick rundown of its core features and philosophies:

  • Instant Server Start: By using native ESM, Vite starts its server in milliseconds, allowing developers to begin working on their project almost immediately after running the start command.
  • Hot Module Replacement (HMR): Vite provides out-of-the-box support for HMR, which means changes you make in your code can be reflected in the browser without needing a full page reload.
  • Optimized Build: For production builds, Vite uses Rollup under the hood. This combination allows for highly optimized output that's both efficient and scalable.
  • Rich Plugin Ecosystem: Vite supports a wide range of plugins, enabling integration with various frameworks (Vue, React, Svelte, etc.) and tools (TypeScript, PostCSS, etc.), enhancing its versatility.
  • Built-in Features: It comes packed with features like TypeScript support, CSS pre-processing, and more, all configured to work out-of-the-box.

7 min read
Pere Pages
slack book

Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency by Tom DeMarco is a well-regarded book in the field of management and organizational behavior first published in 2001.

DeMarco challenges the conventional wisdom that companies must maximize efficiency at all costs. He argues that an obsession with efficiency can lead to a work environment that lacks the slack necessary for innovation, flexibility, and the maintenance of employee well-being.

slack

The book advocates for creating slack within organizations to allow for recovery, learning, and innovation. DeMarco suggests that by allowing some degree of slack, organizations can improve their adaptability, employee satisfaction, and ultimately, their long-term performance.

"Slack" is not just a critique of the relentless pursuit of efficiency but also a practical guide to creating a more humane and effective workplace. It's a must-read for managers and leaders who want to foster an environment where innovation and creativity can thrive, without sacrificing the well-being of their employees.

2 min read
Pere Pages

Steve Jobs famously spoke about the concept of "A players" in the context of building effective teams. His philosophy was centered on the idea that the best employees, the "A players," are not just marginally better than average employees, but exponentially better. He believed that A players are more creative, productive, and capable of working at a pace and quality level that far exceeds others.

A players

6 min read
Pere Pages
Developer with bricks

Mixins are a concept in object-oriented programming where a class can include the properties and methods of another class without extending it. Essentially, it's a way to add functionality to a class from multiple sources.

Important

Especially working with modern JavaScript or TypeScript, you might encounter mixins in legacy code or specific libraries but will likely use more contemporary patterns for code reuse and composition.

5 min read
Pere Pages
Developer with blackboard

Recently, we had an in-depth discussion on structuring React applications using a layered architectural approach. This method aligns with fundamental software architecture principles such as the Single Responsibility Principle (SRP) and the Single Source of Truth (SSoT). It shares similarities with Clean Architecture and Layered Architecture and, interestingly, shows parallels with the Model-View-Controller (MVC) pattern in some respects. We are also applying Dependency Inversion principle (DIP), depending on abstractions rather than concrete implementations of lower-level modules.

TL;DR
  • Benefits: The architecture offers clear separation of concerns, encapsulation, reusability, and scalability.
  • Considerations: Potential complexity, performance implications of using Redux, and the learning curve associated with Redux and thunks.

4 min read
Pere Pages
Developer using github pages

Deploying single-page applications (SPAs) on platforms like GitHub Pages presents unique challenges, especially when it comes to handling direct URL access. In this post, we delve into the intricacies of setting up a Preact SPA on GitHub Pages, exploring solutions to common routing issues and discussing the broader implications for various SPA technologies.

8 min read
Pere Pages

functional

Both Result and Either types are considered monads in functional programming. They are commonly used for error handling and control flow in languages that support functional programming paradigms, such as Haskell, Scala, and even in TypeScript with certain libraries.

Both Result and Either are monads because they implement the monadic interface, specifically the bind (or flatMap, andThen) function, and satisfy the monad laws (Identity and Associativity).

These types are powerful abstractions for dealing with computations that might fail, providing a way to sequence operations while propagating errors in a clean, functional way.