# Fabrizio Duroni | Chicio Coding > Official blog chicio coding. Property of Fabrizio Duroni. Main skills: mobile application development, computer graphics, web development. > Personal blog by Fabrizio Duroni, a Software Engineer passionate about computer graphics, mobile development, and software engineering best practices. This website contains technical blog posts about software engineering, computer graphics, mobile development, and web development, along with interactive tutorials on data structures and algorithms. Every page is also available as Markdown: request it with the `Accept: text/markdown` header, or fetch https://www.fabrizioduroni.it/markdown followed by the page path. ## Main Pages - [Home](https://www.fabrizioduroni.it): Landing page with latest posts and featured content - [Blog](https://www.fabrizioduroni.it/blog): Technical articles and tutorials - [Blog Stats](https://www.fabrizioduroni.it/blog/stats): Publishing history and blog statistics - [Contact](https://www.fabrizioduroni.it/contact): Get in touch with Fabrizio - [About Me](https://www.fabrizioduroni.it/about-me): Fabrizio Duroni, software engineer passionate about iOS development, computer graphics, and creating beautiful user experiences. - [MCP fabrizioduroni.it](https://www.fabrizioduroni.it/mcp): Connect any MCP-compatible AI assistant to Fabrizio Duroni's portfolio. Browse blog posts, DSA exercises, search content, and more via the Model Context Protocol. - [Cookies Policy](https://www.fabrizioduroni.it/cookie-policy): Official blog chicio coding. Property of Fabrizio Duroni. Main skills: mobile application development, computer graphics, web development. - [Art](https://www.fabrizioduroni.it/art): A collection of drawings from Fabrizio Duroni's ongoing journey learning to draw: tattoo-inspired sketches, anatomy studies, and pop culture homages. - [Easter Egg Hunt](https://www.fabrizioduroni.it/easter-egg-hunt): Hidden secrets are scattered across this site. Follow the clues and trigger the easter eggs yourself. - [Data Structures & Algorithms](https://www.fabrizioduroni.it/data-structures-and-algorithms): A structured course covering data structures, algorithms and problem-solving techniques - [Data Structures and Algorithms](https://www.fabrizioduroni.it/data-structures-and-algorithms/roadmap): A comprehensive DSA course roadmap covering fundamental data structures, algorithms, and problem-solving patterns. - [DSA Exercises](https://www.fabrizioduroni.it/data-structures-and-algorithms/exercises): A curated list of Data Structures and Algorithms exercises grouped by topic, each with a detailed solution walkthrough. - [My Videogames Collection](https://www.fabrizioduroni.it/videogames): Personal videogame collection by Fabrizio Duroni: consoles and games from 8-bit machines to modern hardware, and the story behind them. - [Blog Archive](https://www.fabrizioduroni.it/blog/archive): Complete chronological archive of all blog posts - [Blog Tags](https://www.fabrizioduroni.it/blog/tags): Browse all available topic tags - [Blog Authors](https://www.fabrizioduroni.it/blog/authors): The people who write here - [Chat](https://www.fabrizioduroni.it/chat): AI-powered chat interface to discuss blog content ## Blog Posts Articles with descriptions: - [Memories and failures: 18 years of a software engineering career, and the life around it](https://www.fabrizioduroni.it/blog/post/2026/07/18/memories-failures-18-years-software-engineer): A personal essay looking back at my first 18 years as a software engineer, and the life, and the losses, that ran alongside them. - [The software engineer skills pyramid: how we encoded our own harness](https://www.fabrizioduroni.it/blog/post/2026/07/10/software-engineer-skills-pyramid-harness-sdlc): In this post we will show how we encoded our software development lifecycle in a set of custom skills and subagents. - [App.js Conf 2026](https://www.fabrizioduroni.it/blog/post/2026/06/01/app-js-conf-2026): My recap of App.js Conf 2026 in Krakow: talks, libraries, the 'elephant in the room' called AI - [Building an MCP server for my Next.js blog: how I gave AI assistants direct access to my content](https://www.fabrizioduroni.it/blog/post/2026/05/01/mcp-server-nextjs): How I built a Model Context Protocol (MCP) server on top of my Next.js blog, covering the MCP protocol architecture, JSON-RPC transport, capability negotiation, Streamable HTTP, OAuth discovery, and a full TypeScript implementation deployed on Vercel. - [Guardrails for LLM chatbots: how I protect my chat AI assistant from prompt injection and off-topic queries](https://www.fabrizioduroni.it/blog/post/2026/04/26/llm-chatbot-guardrails): How I implemented a three-layer guardrail system for the AI chatbot on my portfolio website, using regex-based prompt injection detection, Llama Prompt Guard for injection classification, and an LLM-as-judge for topic relevance. - [Chrome Built-in AI: adding on-device summarization to my blog with the Summarizer API](https://www.fabrizioduroni.it/blog/post/2026/04/05/chrome-built-in-ai-summarizer): How I integrated Chrome's Built-in AI Summarizer API to add TL;DR and Key Points features to my blog posts, with progressive enhancement, streaming responses, and on-device privacy. - [Mastering the Core: Data Structures and Algorithms](https://www.fabrizioduroni.it/blog/post/2025/11/01/data-structures-algorithms): A strong foundation in data structures and algorithms is essential. Here’s how I decided to revisit the fundamentals and turn them into my own DSA course. - [Creating Stunning Gradients in React Native with Skia](https://www.fabrizioduroni.it/blog/post/2025/04/02/react-native-skia-text-gradient): Learn how to create stunning text with React Native using React Native Skia. In this post, we’ll explore how to leverage Skia’s powerful features to bring vibrant gradients to life. - [Which Locale? Decoding the Madness Behind iOS Localization and Language Preferences](https://www.fabrizioduroni.it/blog/post/2025/03/17/locale-ios-app-device): iOS localization is a wild ride where device and app locales play by their own rules. Under the hood, Apple uses CLDR/ICU language distance matching to pick the best locale for your app. Let’s decode the madness together. - [Large Language Models (LLMs): a hitchhiker's guide to their galaxy (for newbies like me)](https://www.fabrizioduroni.it/blog/post/2025/03/01/llm): Large Language Models (LLMs) are revolutionizing how we interact with technology. This article provides some entry level knowledge about them. A personal selection of topic needed to understand the basics of them. - [Styled Components: create a type to define transient props based on the props interface of another component](https://www.fabrizioduroni.it/blog/post/2025/01/03/styled-component-transient-props-type-mapped-type-typescript): Standard transient props and shouldForwardProp are styled components API let you filter out props that should not be passed to the underlying React node or DOM element. In this post we will see how we can create a type to automatically define props from the interface of props of a parent component. - [Create a circular carousel with parallax effect in React Native](https://www.fabrizioduroni.it/blog/post/2024/12/31/carousel-parallax-circular-loop-react-native-expo): Let's see how it is possible to create a circular carousel with parallax effect in React Native by leveraging the power of React Native Reanimated. - [React Universe 2024](https://www.fabrizioduroni.it/blog/post/2024/10/21/react-universe-2024): Let's dive into the talks from React Universe 2024 that stood out to us the most and share the key insights we gained. From innovative debugging tools to cross-platform development strategies, we’ll walk you through what we found valuable and how it’s shaping our approach to React and React Native development. - [React Native is Native: drawing customized background shapes with React Native Skia and React Native SVG](https://www.fabrizioduroni.it/blog/post/2024/03/02/react-native-skia-svg-background-shape-text): A lot of mobile developer often complains that React Native is not Native, because it is missing some features. This is absolutely not true! In this blog post I will show you how I create a component with a custom background shape, similar to the one I did for a native component ome time ago - [Advent of TypeScript 2023: Santa is stuck! (Day 24)](https://www.fabrizioduroni.it/blog/post/2024/01/31/advent-of-typescript-2023-santa-is-stuck): Santa is stuck! Let's see how I helped him to escape from the maze using the TypeScript type system. - [Advent of TypeScript 2023: Connect 4 (Day 23)](https://www.fabrizioduroni.it/blog/post/2024/01/20/advent-of-typescript-2023-connect-4): Connect 4, a classical family Christmas game. Let's see how to tackle it with the typescript type system. - [Advent of TypeScript 2023: Tic tac toe (Day 21)](https://www.fabrizioduroni.it/blog/post/2024/01/04/advent-of-typescript-2023-tic-tac-toe): Tic tac toe, another classical kata games you can find at a coding dojo. A game that is simple to implement with functions, variables etc. becomes a real challenge when you try to implement it using only types. - [Advent of TypeScript 2023: Rock paper scissors (Day 17)](https://www.fabrizioduroni.it/blog/post/2023/12/30/advent-of-typescript-2023-rock-paper-scissors): Rock paper scissors, one of the classical kata games you can find at a coding dojo. Can it be implemented using only TypeScript types? - [Advent of TypeScript 2023: my personal favourite challenges](https://www.fabrizioduroni.it/blog/post/2023/12/29/advent-of-typescript-2023-favourite-challenges): This year I participated in the first edition of Advent of TypeScript created by TypeHero. In this new series of article I will show my solutions to the challenges I liked the most. - [SwiftUI and the Text concatenations super powers](https://www.fabrizioduroni.it/blog/post/2023/06/30/swiftui-text-concatenation): Do you need a way to compose beautiful text with images and custom font like you are used with Attributed String. The Text component has everything we need to create some sort of 'attributed text' directly in SwiftUI. Let's go!!! - [Widget iOS: how to fix the image bundling problem](https://www.fabrizioduroni.it/blog/post/2023/01/10/widget-ios-swiftui-image-problem): Discover how we had a long day debugging WidgetKit problems with images. - [Use SwiftUI Path and Shape to render your svg files: a practical example](https://www.fabrizioduroni.it/blog/post/2022/10/03/swiftui-path-svg-scale): Let's have some fun with SwiftUI by drawing an inspiration title component leveraging Path and Shape. - [Create a microfrontend app using module federation and dynamic configuration](https://www.fabrizioduroni.it/blog/post/2022/06/06/microfrontend-module-federation-dynamic-configuration): We are used to the term microservice in the backend world. Is there a way to achieve the same architectural indipendence in the frontend world? Let's see how it is possible to create a microfrontend app by leveraging Webpack 5 module federation with a widget-based custom remote configuration. - [A custom module for Jackson object mapper using Java Service Provider](https://www.fabrizioduroni.it/blog/post/2022/03/02/custom-jackson-module-deserlializer-serializer-object-mapper-java-spi): Sometimes you have custom Jackson object mapper imported from external modules/libraries. How can you customize their serialization/deserialization? Let's go to discover the power of Java Service Provider Interface. - [A simple react hook to detect scroll direction](https://www.fabrizioduroni.it/blog/post/2022/01/02/react-detect-scroll-direction): How do you detect scroll direction using React hooks? Let’s find out in this new post. - [Contract testing asynchronous messaging with Pact and MockK](https://www.fabrizioduroni.it/blog/post/2021/11/05/contract-testing-asynchronous-messaging-pact-junit-mockk): In the last weeks I worked with my colleague Felice Giovinazzo on a new feature for the refund process. Let’s see how we used pact to test a message-based interaction between two microservices with Pact - [A Domain Driven Design dictionary for newbies](https://www.fabrizioduroni.it/blog/post/2021/06/06/ddd-dictionary): In the last months, I started to hear a lot of stuff about Domain Driven Design. What is DDD? What does it try to solve? This is a post for all the newbies (like me) that are searching for a definition of what DDD is, which are its main parts and what is its main goal. - [How to test your Swift source code on Linux: locally and on Github Actions](https://www.fabrizioduroni.it/blog/post/2021/05/31/swift-linux-test-local-ci-docker-container): Quick tips (useful for open source projects) for testing your Swift source code on Linux locally and with Github Actions. - [Better organize tests and run them against multiple configuration with Xcode Test Plan](https://www.fabrizioduroni.it/blog/post/2021/03/08/ios-test-multiple-configuration-test-plan): Recently I added a lot of Unit and UI tests to RangeUISlider, one of my open source projects. Let's see how I grouped them and run them against multiple configurations with Xcode Test Plan. - [Unit testing in Kotlin with JUnit 5 and MockK](https://www.fabrizioduroni.it/blog/post/2021/01/27/kotlin-junit5-mockk): I recently discovered MockK, a mocking library created for Kotlin. Let's see how it is possible to write modern unit tests with MockK + JUnit 5. - [Spring Boot + Kotlin Rest client cheatsheet: RestTemplate and Webclient](https://www.fabrizioduroni.it/blog/post/2020/12/23/rest-template-webclient-spring-boot): During the last months I worked a lot with Spring Boot backend applications. In this post I explain how you can consume a REST api from a Spring Boot application using RestTemplate and (the new) WebClient. - [Swift Package Manager: bundling resources with a Swift Package](https://www.fabrizioduroni.it/blog/post/2020/10/19/swift-package-manager-resources): Recently I upgraded my ID3TagEditor swift package to the latest Swift tools version (5.3). During the upgraded I discovered that now you can bundle resources with your Swift package. In this post I will show you how you can do this, and also an interesting trick in order to be able to build a project as a Swift Package and as a standard project from Xcode. - [Create a service worker with Workbox, Webpack and TypeScript](https://www.fabrizioduroni.it/blog/post/2020/08/07/webpack-workbox-service-worker-typescript): Recently I migrated my website to Webpack and TypeScript. I decided also to give a try to Workbox, a set of Google libraries to improve the creation of a Progressive Web App. Let's see how easy it is to create a PWA with this tools. - [Use UIKit components in SwiftUI: UIViewControllerRepresentable and UIViewRepresentable](https://www.fabrizioduroni.it/blog/post/2020/07/02/expose-uikit-to-swiftui): Do you know that it is possible to use UKit components in SwiftUI? Let's see how you can use UIViewRepresentable and UIViewControllerRepresentable to use your UIKit based component or to fill the gap for missing SwiftUI API. - [Lazy loading of JavaScript modules by using dynamic imports and code splitting with Webpack](https://www.fabrizioduroni.it/blog/post/2020/06/02/dynamic-imports-webpack-chunks): Most of the time you have a big JavaScript codebase for your website but you need only a small fraction of it when a page is requested. Is it possible to load chunks of JavaScript code only when they are really needed? Yes you can with Webpack and its code splitting feature based on a syntax equal to the one of ES2020 dynamic imports. - [Add dark mode support on your website with SASS and prefers-color-scheme media query](https://www.fabrizioduroni.it/blog/post/2020/05/20/dark-mode-css-sass-scss): Dark mode support has been around for quite some time. Let's see how you can create a light theme and a dark theme for your website that will be selected automatically based on the user system preference. - [How to: create your SUPER simple dependency injector container in Swift](https://www.fabrizioduroni.it/blog/post/2020/04/19/dependecy-injection-swift): There are a lot of dependency injection framework in the open source swift world with really cool features like object graph, persistence etc. But what if all you need is a lightweight dependencies container? In this post I will show you how to create it by leveraging the Metatype Type, Generics, the Hashable protocol and the Equatable protocol. - [Create a custom TabBar in SwiftUI](https://www.fabrizioduroni.it/blog/post/2020/03/06/custom-tabbar-swiftui): SwiftUI has been introduced by Apple during the last WWDC. I started to use it for a personal project to understand its potential. Let's see how I used SwiftUI to create a custom TabBar with modal and detail navigation. - [How to: enable Hermes JavaScript engine in your React Native app](https://www.fabrizioduroni.it/blog/post/2020/01/18/react-native-activate-hermes): React native 0.60.4 has a new cool feature for Android: a new JavaScript engine called Hermes. Let's see how you can turn it on in your React Native application to get all its benefits. - [Implement offline tracking with Google Analytics in your Progressive Web App](https://www.fabrizioduroni.it/blog/post/2019/12/15/pwa-offiline-tracking-google-analytics): PWA offer great native alike offline capabilities. But what about tracking? In this tutorial I will show you how simple it is to implement offline tracking with Google Analytics in your PWA. - [Implement a pull to refresh component for you web application](https://www.fabrizioduroni.it/blog/post/2019/11/16/pull-to-refresh-web): Implementing a pull to refresh component in vanilla js for your progressive web app (PWA) it's really easy. Let's do it now! - [Web to native code communication on Android using JavaScript Interfaces](https://www.fabrizioduroni.it/blog/post/2019/09/06/html-javascript-to-native-communication-android): Javascript Interface can be helpful when you need to call native code from a webview on Android. - [Web to native code communication on iOS using WKScriptMessageHandler](https://www.fabrizioduroni.it/blog/post/2019/08/03/html-javascript-to-native-communication-ios): Did you know that it is possible to call Swift/Objective-C code from the JavaScript code of a web page displayed inside a WKWebView? - [Clean Code: functions](https://www.fabrizioduroni.it/blog/post/2019/07/28/clean-code-functions): Let's learn how to write function in a clean way. - [Publish your Progressive Web App to the Google Play Store](https://www.fabrizioduroni.it/blog/post/2019/06/13/google-play-store-publish-pwa): You can now publish your progressive web apps to the Google Play Store using Trusted Web Activities without writing a single line of Java/Kotlin code. - [Intersection Observer API: speed up your web applications with lazy loading](https://www.fabrizioduroni.it/blog/post/2019/05/08/intersection-observer): Intersection Observer can improve your web application performance by helping you to implement lazy loading of resources inside your web pages. - [Flow, the static type checker for Javascript: how to use it and a brief comparison with TypeScript](https://www.fabrizioduroni.it/blog/post/2019/04/07/flow-javascript-types-typescript): Sick and tired of TypeScript? Give a chance to Flow, the JavaScript static type checker from Facebook. - [Blender tutorial: Cycles overview](https://www.fabrizioduroni.it/blog/post/2019/03/29/blender-tutorial-15-cycles): In this new post of the series Blender tutorial I will talk about Cycles. - [Blender tutorial: armatures and character rigging](https://www.fabrizioduroni.it/blog/post/2019/03/28/blender-tutorial-14-armatures-character-rigging): In this new post of the series Blender tutorial I will talk about character rigging. - [Blender tutorial: animation](https://www.fabrizioduroni.it/blog/post/2019/03/27/blender-tutorial-13-animation): In this new post of the series Blender tutorial I will talk about animations. - [Blender tutorial: camera and rendering](https://www.fabrizioduroni.it/blog/post/2019/03/26/blender-tutorial-12-camera-rendering): In this new post of the series Blender tutorial I will talk about camera and rendering. - [Blender tutorial: light - part 2](https://www.fabrizioduroni.it/blog/post/2019/03/25/blender-tutorial-11-light-part-2): In this new post of the series Blender tutorial I will talk about about how to do other cool stuff with lights in Blender. - [Blender tutorial: light - part 1](https://www.fabrizioduroni.it/blog/post/2019/03/24/blender-tutorial-10-light-part-1): In this new post of the series Blender tutorial I will talk about light. - [Blender tutorial: textures - part 2](https://www.fabrizioduroni.it/blog/post/2019/03/23/blender-tutorial-9-textures-part-2): In this new post of the series Blender tutorial I will talk other about textures techniques. - [Blender tutorial: textures - part 1](https://www.fabrizioduroni.it/blog/post/2019/03/22/blender-tutorial-8-textures-part-1): In this new post of the series Blender tutorial I will talk about textures. - [Blender tutorial: materials](https://www.fabrizioduroni.it/blog/post/2019/03/21/blender-tutorial-7-materials): In this new post of the series Blender tutorial I will talk about materials. - [Progressive Web App: an app-like experience for your website users](https://www.fabrizioduroni.it/blog/post/2019/03/03/github-pages-progressive-web-app): In this post I will talk about how I transformed my blog on Github Pages and Jekyll into a PWA. - [End to end (e2e) cross platform testing for your mobile apps with Appium](https://www.fabrizioduroni.it/blog/post/2019/02/08/mobile-ui-test-crossplatform-appium): In this post I will talk about how to use Appium to write cross platform end to end tests for you mobile apps. - [Create a Swift library compatible with the Swift Package Manager for macOS and Linux](https://www.fabrizioduroni.it/blog/post/2019/01/03/swift-package-manager-linux-macos-create-library-executable): In this post I will talk about how to create a Swift library with the Swift Package Manager for macOS and Linux. - [React Native: a simple architecture for Native Modules communication with your UIViewController on iOS](https://www.fabrizioduroni.it/blog/post/2018/12/03/react-native-modules-bridge-communication-uiviewcontroller-ios): In this post I will talk about a simple architecture for communication between React Native Native modules (aka bridges) and your native code on iOS. - [React Native: a simple architecture for Native Modules communication with your Activities and Fragments on Android](https://www.fabrizioduroni.it/blog/post/2018/12/02/react-native-modules-bridge-communication-activitiy-fragment-android): In this post I will talk about a simple architecture for communication between React Native Native modules (aka bridges) and your native code on Android. - [My first experience as speaker at Voxxed Days 2018: a talk about React, React Native and Typescript](https://www.fabrizioduroni.it/blog/post/2018/11/01/react-native-typescript-conference-voxxed-2018): In this post I will talk about my first experience as a speaker at a conference: a talk about React, React Native and Typescript with Alessandro Romano. - [Blender tutorial: outliner, layers, groups, hierarchies and scenes](https://www.fabrizioduroni.it/blog/post/2018/10/18/blender-tutorial-6-outliner-layers-groups-hierarchies-scenes): In this new post of the series Blender tutorial I will talk about outliner, layers, groups, hierarchies and scenes. - [Refactoring: a real case of a nested if structure transformed into a chain of responsibility](https://www.fabrizioduroni.it/blog/post/2018/09/18/refactoring-if-chain-of-responsibility): In this post my colleague Francesco Bonfadelli will show you how to transform a nested if structure into a chain of responsibility. - [Rich iOS notifications with Notification Content App Extension](https://www.fabrizioduroni.it/blog/post/2018/09/09/ios-notification-content-extensions): In this post I will talk about iOS notification customization with Notification Content App Extension. - [Blender tutorial: advanced modeling](https://www.fabrizioduroni.it/blog/post/2018/08/21/blender-tutorial-5-advanced-modeling): In this new post of the series Blender tutorial I will talk about advanced modeling in Blender. - [Design thinking and Design sprint: embrace you creativity](https://www.fabrizioduroni.it/blog/post/2018/08/02/design-thinking-design-sprint-workshop): In this new post I will talk about my experience with design sprint and design thinking during a workshop I attended. - [Eat Your Own Dog Food: distribute a beta version of your iOS app using Apple Enterprise Developer Program](https://www.fabrizioduroni.it/blog/post/2018/07/05/distribution-enterprise-app-ios-beta): In this post I will show you how to distribute a beta version of your iOS app using Apple Enterprise Developer Program. - [React Native + Typescript, love at first sight. Setup in an existing app](https://www.fabrizioduroni.it/blog/post/2018/07/04/react-native-typescript-existing-app): In this post I will show you how to setup React Native + Typescript in an existing app and I will show you how powerful they are when used together. - [Blender tutorial: introduction to basics of modeling - part 2](https://www.fabrizioduroni.it/blog/post/2018/06/02/blender-tutorial-4-modeling-basics-part-2): In this new post of the series Blender tutorial I will continue to talk about the fundamental of modeling in Blender. - [Asynchronous testing in Swift](https://www.fabrizioduroni.it/blog/post/2018/06/01/async-closure-test-mock-expectation-fulfill): In this post I will talk about asynchronous testing in Swift. - [Mp3ID3Tagger: a native macOS app to edit the ID3 tag of your mp3 files written using RxSwift and RxCocoa](https://www.fabrizioduroni.it/blog/post/2018/05/09/mp3id3tagger-macos-tag-mp3-id3-rxswift-rxcocoa): The third of a short series of post in which I describe my two latest project: ID3TagEditor and Mp3ID3Tagger. In this post I will talk about Mp3ID3Tagger, a macOS application to edit id3 tag of your mp3 files. - [ID3TagEditor: a Swift framework to read and write ID3 tag of your mp3 files for macOS, iOS, tvOS and watchOS](https://www.fabrizioduroni.it/blog/post/2018/05/08/id3tageditor-swift-read-write-id3-tag-mp3): The second of a short series of post in which I describe my two latest project: ID3TagEditor and Mp3ID3Tagger. In this post I will talk about ID3TagEditor framework. - [The birth of ID3TagEditor and Mp3ID3Tagger and my journey into the ID3 tag standard](https://www.fabrizioduroni.it/blog/post/2018/05/07/born-id3tageditor-mp3id3tagger): The first of a short series of post in which I describe my two latest project: ID3TagEditor and Mp3ID3Tagger. In this post I will talk about why I started to develop them. - [Clean Code: data structures vs objects and the law of demeter](https://www.fabrizioduroni.it/blog/post/2018/04/25/clean-code-objects-data-structures-law-demeter): In this post I will talk about clean code: data structures, objects vs procedural and the law of demeter. - [Blender tutorial: introduction to basics of modeling - part 1](https://www.fabrizioduroni.it/blog/post/2018/04/03/blender-tutorial-3-modeling-basics-part-1): In this new post of the Blender tutorial series I will talk about the fundamental of modeling in Blender. - [Golden master testing aka Characterization test: a powerful tool to win your fight against legacy code](https://www.fabrizioduroni.it/blog/post/2018/03/20/golden-master-test-characterization-test-legacy-code): In this post I will talk about golden master test aka characterization test: what it is and how to use it. - [Code review: what it is and why it matters](https://www.fabrizioduroni.it/blog/post/2018/03/02/code-review-whats-it-is-and-why-it-is-important): In this post I will talk about code review: what it is and why it matters. - [Blender tutorial: selecting and transforming objects](https://www.fabrizioduroni.it/blog/post/2018/02/17/blender-tutorial-2-selecting-transforming-objects): Second post of the Blender tutorial series. This time we will learn how to select and move objects. - [React Native: the power of RCTBundleURLProvider to build, run and debug on an iOS device from Xcode](https://www.fabrizioduroni.it/blog/post/2018/02/08/react-native-debug-on-device-rctbundleurlprovider): Do you know how to debug your react native app on a iOS device? - [Blender tutorial: user interface](https://www.fabrizioduroni.it/blog/post/2018/01/31/blender-tutorial-1-user-interface): In this new series of post I will talk about learning to use Blender, the famous 3D computer graphics software. A series of tutorial for beginners (like me). - [Android Studio vs Xcode vs AppCode: a brief comparison about coding speed](https://www.fabrizioduroni.it/blog/post/2018/01/16/ide-refactoring-android-studio-xcode-appcode-webstorm-jetbrains): In this post I will compare the coding speed that it is possible to achieve in some JetBrains IDEs and Xcode, in terms of code creation and refactoring. - [SceneKit and physically based rendering](https://www.fabrizioduroni.it/blog/post/2018/01/03/scene-kit-physically-based-rendering): Let's try to build a scene using SceneKit and its physically based rendering features. - [React Native: use multiple RCTRootView instances in an existing iOS app](https://www.fabrizioduroni.it/blog/post/2017/12/08/react-native-multiple-instance-rctrootview): In this post I show you how it is possible to use multiple RCTRootView instances in an existing iOS app. - [Physically based rendering: informal introduction](https://www.fabrizioduroni.it/blog/post/2017/12/07/physically-base-rendering-introduction): In this post I will give you an informal introduction about Physically based rendering. - [React Native and Realm: custom manual link for an iOS app with custom directory structure](https://www.fabrizioduroni.it/blog/post/2017/11/14/react-native-realm-custom-manual-linking-app-custom-directories-ios): In this post I will show you how to install realm as a dependency in a React Native project with custom folders structure without using react-native link command. - [Model View Presenter on Android: unit test for everything](https://www.fabrizioduroni.it/blog/post/2017/10/27/model-view-presenter-architecture-android-java): In this post I will talk about the model view presenter architectural pattern and how it can improve your unit test and your TDD workflow when developing an Android application. - [Clean Code: meaningful names](https://www.fabrizioduroni.it/blog/post/2017/09/11/clean-code-meaningful-names): In this post I will talk about clean code and how important are the name you choose while you're developing software. - [How to calculate the reflection vector](https://www.fabrizioduroni.it/blog/post/2017/08/25/how-to-calculate-reflection-vector): In this post I will talk about reflection vector used in some lighting models, for example the Phong reflection model. I will show you how this vector is calculated. - [Model View Presenter on iOS: no more excuses, write your unit test](https://www.fabrizioduroni.it/blog/post/2017/08/11/model-view-presenter-architecture-ios-swift-unit-test): In this post I will talk about the model view presenter architectural pattern and how it can improve your unit test and your TDD workflow when developing an iOS application. - [Phong reflection model](https://www.fabrizioduroni.it/blog/post/2017/07/26/phong-lighting-model): In this post I will talk about phong reflection model: one of the oldest and most popular lighting model in computer graphics. - [A first approach to contract test](https://www.fabrizioduroni.it/blog/post/2017/07/25/a-first-approach-to-contract-test): In this post I will talk about contract test: what they are and how you can use them. - [Swift Closure: demystifying @escaping and @autoclosure attributes](https://www.fabrizioduroni.it/blog/post/2017/06/14/swift-closure-demystifying-autoclosure-escaping): In this post I will talk about Swift closure and the potential of the @escaping and @autoclosure attributes - [Swift Closure: definition and syntax](https://www.fabrizioduroni.it/blog/post/2017/06/02/swift-closure-syntax): In this post I will talk about Swift closure: what they are and their syntax - [A physically based scene with three.js](https://www.fabrizioduroni.it/blog/post/2017/05/13/first-threejs-scene): In this post I will show you how to create a scene using ThreeJS with support for Physically Based Rendering - [Github Pages and Jekyll: chicio coding birth](https://www.fabrizioduroni.it/blog/post/2017/05/12/github-pages-jekyll-blog-born): So, how was created this blog? Let's go through the development process of its creation. Boring and fun at the same time. ## Blog Tags Browse posts by topic/tags: - [advent of typescript 2023](https://www.fabrizioduroni.it/blog/tag/advent-of-typescript-2023/): 5 posts - [agile](https://www.fabrizioduroni.it/blog/tag/agile/): 2 posts - [ai](https://www.fabrizioduroni.it/blog/tag/ai/): 5 posts - [algorithms](https://www.fabrizioduroni.it/blog/tag/algorithms/): 1 post - [android](https://www.fabrizioduroni.it/blog/tag/android/): 13 posts - [apple](https://www.fabrizioduroni.it/blog/tag/apple/): 34 posts - [architectural pattern](https://www.fabrizioduroni.it/blog/tag/architectural-pattern/): 3 posts - [backend](https://www.fabrizioduroni.it/blog/tag/backend/): 2 posts - [blender](https://www.fabrizioduroni.it/blog/tag/blender/): 15 posts - [bootstrap](https://www.fabrizioduroni.it/blog/tag/bootstrap/): 1 post - [career](https://www.fabrizioduroni.it/blog/tag/career/): 1 post - [chrome](https://www.fabrizioduroni.it/blog/tag/chrome/): 1 post - [clean code](https://www.fabrizioduroni.it/blog/tag/clean-code/): 6 posts - [computer graphics](https://www.fabrizioduroni.it/blog/tag/computer-graphics/): 20 posts - [conference](https://www.fabrizioduroni.it/blog/tag/conference/): 2 posts - [contract test](https://www.fabrizioduroni.it/blog/tag/contract-test/): 1 post - [data structures and algorithms](https://www.fabrizioduroni.it/blog/tag/data-structures-and-algorithms/): 1 post - [design](https://www.fabrizioduroni.it/blog/tag/design/): 1 post - [domain driven design](https://www.fabrizioduroni.it/blog/tag/domain-driven-design/): 1 post - [dsa](https://www.fabrizioduroni.it/blog/tag/dsa/): 1 post - [expo](https://www.fabrizioduroni.it/blog/tag/expo/): 3 posts - [github pages](https://www.fabrizioduroni.it/blog/tag/github-pages/): 1 post - [gulp](https://www.fabrizioduroni.it/blog/tag/gulp/): 1 post - [IDE](https://www.fabrizioduroni.it/blog/tag/IDE/): 1 post - [ios](https://www.fabrizioduroni.it/blog/tag/ios/): 34 posts - [java](https://www.fabrizioduroni.it/blog/tag/java/): 17 posts - [javascript](https://www.fabrizioduroni.it/blog/tag/javascript/): 26 posts - [jekyll](https://www.fabrizioduroni.it/blog/tag/jekyll/): 1 post - [kotlin](https://www.fabrizioduroni.it/blog/tag/kotlin/): 3 posts - [llm](https://www.fabrizioduroni.it/blog/tag/llm/): 4 posts - [machine learning](https://www.fabrizioduroni.it/blog/tag/machine-learning/): 2 posts - [macos](https://www.fabrizioduroni.it/blog/tag/macos/): 6 posts - [mcp](https://www.fabrizioduroni.it/blog/tag/mcp/): 1 post - [mobile application development](https://www.fabrizioduroni.it/blog/tag/mobile-application-development/): 38 posts - [nextjs](https://www.fabrizioduroni.it/blog/tag/nextjs/): 1 post - [node](https://www.fabrizioduroni.it/blog/tag/node/): 1 post - [objective-c](https://www.fabrizioduroni.it/blog/tag/objective-c/): 6 posts - [pact](https://www.fabrizioduroni.it/blog/tag/pact/): 1 post - [personal](https://www.fabrizioduroni.it/blog/tag/personal/): 1 post - [physically based rendering](https://www.fabrizioduroni.it/blog/tag/physically-based-rendering/): 2 posts - [pwa](https://www.fabrizioduroni.it/blog/tag/pwa/): 6 posts - [react](https://www.fabrizioduroni.it/blog/tag/react/): 7 posts - [react native](https://www.fabrizioduroni.it/blog/tag/react-native/): 14 posts - [realm](https://www.fabrizioduroni.it/blog/tag/realm/): 1 post - [rxcocoa](https://www.fabrizioduroni.it/blog/tag/rxcocoa/): 1 post - [rxswift](https://www.fabrizioduroni.it/blog/tag/rxswift/): 1 post - [skia](https://www.fabrizioduroni.it/blog/tag/skia/): 2 posts - [software mansion](https://www.fabrizioduroni.it/blog/tag/software-mansion/): 1 post - [spring](https://www.fabrizioduroni.it/blog/tag/spring/): 1 post - [spring boot](https://www.fabrizioduroni.it/blog/tag/spring-boot/): 1 post - [swift](https://www.fabrizioduroni.it/blog/tag/swift/): 35 posts - [swift package manager](https://www.fabrizioduroni.it/blog/tag/swift-package-manager/): 1 post - [swiftui](https://www.fabrizioduroni.it/blog/tag/swiftui/): 4 posts - [test driven development](https://www.fabrizioduroni.it/blog/tag/test-driven-development/): 9 posts - [threejs](https://www.fabrizioduroni.it/blog/tag/threejs/): 2 posts - [tvos](https://www.fabrizioduroni.it/blog/tag/tvos/): 4 posts - [typescript](https://www.fabrizioduroni.it/blog/tag/typescript/): 23 posts - [ux](https://www.fabrizioduroni.it/blog/tag/ux/): 1 post - [watchos](https://www.fabrizioduroni.it/blog/tag/watchos/): 4 posts - [web development](https://www.fabrizioduroni.it/blog/tag/web-development/): 22 posts ## Data Structures & Algorithms Interactive tutorials and educational content on fundamental computer science concepts: - [Time and Space Complexity](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/time-and-space-complexity): Understanding how algorithm performance is measured using Big-O notation and analyzing time-space tradeoffs. - [Arrays](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/array): Arrays are one of the most fundamental data structures in computer science. They provide a way to store elements in a contiguous block of memory, allowing efficient access and manipulation. - [Strings](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/string): Strings are fundamental data types serving as the foundation for text processing, pattern recognition, and encoding/decoding operations. - [Bit Manipulation](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/bit-manipulation): Bit manipulation (bit wise) is one of the most powerful tools in computer science, allowing direct control over how data is represented and processed at the hardware level. - [Hashtable](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/hashtable): A hash table is a data structure that stores key-value pairs and allows extremely fast lookups, insertions, and deletions, typically in O(1) average time. - [Two Pointers](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/two-pointers): The Two Pointers technique uses two indices to solve array problems in linear time O(n) instead of inefficient O(n²) nested loops. - [Prefix Sum](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/prefix-sum): The Prefix Sum technique precomputes cumulative information so that range sum queries can be answered in O(1) time. - [Sliding Window](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/sliding-window): The Sliding Window pattern transforms O(n²) problems into O(n) solutions by maintaining a window over data and adjusting it incrementally. - [Kadane's Algorithm](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/kadane-algorithm): Kadane's Algorithm is a classic algorithm designed to efficiently find the maximum sum subarray within a one-dimensional array of numbers in O(n) time. - [Matrix (2D Array)](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/matrix): Matrix problems focus on navigating rows and columns, managing boundaries, applying consistent traversal rules, and performing transformations on 2D arrays. - [Linked List](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/linked-list): A linked list is a data structure consisting of nodes where each node contains a value and a reference to the next node, enabling flexible insertions and deletions. - [Stack](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/stack): A stack is a fundamental LIFO (Last In, First Out) data structure where the last element added is the first one to be removed. - [Queue](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/queue): A queue is a fundamental FIFO (First In, First Out) data structure where the first element added is the first one to be removed. - [Bucket sort](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/bucket-sort): Bucket Sort is a distribution-based sorting algorithm that works by dividing elements into several buckets and then sorting each bucket individually. It is particularly effective for sorting numbers that fall within a bounded range or when sorting elements based on their frequency. - [Recursion](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/recursion): A deep dive into recursion as a problem-solving technique, with practical TypeScript examples. - [Merge Sort](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/merge-sort): A deep dive into Merge Sort as a divide-and-conquer algorithm, from array sorting to linked lists and advanced counting problems. - [Quick Sort](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/quicksort): An in-depth look at Quick Sort as a divide-and-conquer algorithm, focusing on partitioning, expected complexity, and selection problems. - [Binary Search](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/binary-search): Binary search is an efficient algorithm for finding an item from a sorted list of items. It works by repeatedly dividing the search interval in half. - [Backtracking](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/backtracking): Deep dive into the backtracking technique, a fundamental approach for combinatorial problems, permutation generation, and constraint satisfaction tasks. - [Tree](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/tree): A comprehensive guide to tree, including traversal techniques covering BFS (level-order) and DFS (pre-order, in-order, post-order) with formal tree definitions, tree types, traversal templates, problem patterns, and complexity analysis. - [Binary Search Tree and Ordered Set](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/binary-search-tree): Deep dive into Binary Search Trees, Ordered Sets, and their applications in advanced algorithmic problems. - [Tries](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/tries): A comprehensive guide to Trie data structures, exploring their implementation, applications, and use cases. - [Heaps](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/heap): A heap is a complete binary tree stored as an array that enforces a priority ordering, enabling O(log n) insert and extract operations and powering greedy scheduling and two-heaps patterns. - [Intervals](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/intervals): Interval merging, scheduling, and overlap problems. Techniques for efficiently handling ranges, detecting conflicts, and optimizing interval-based tasks. - [K-Way Merge](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/k-way-merge): Learn how to efficiently merge multiple sorted data sources using heaps, a fundamental pattern behind many advanced problems. - [Data Structure Design](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/data-structure-design): Data structure design is the art of composing primitive structures into custom abstractions that satisfy complex operational requirements under strict time and space constraints. - [Greedy Algorithms](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/greedy): Greedy algorithms build solutions incrementally by making locally optimal choices at each step, relying on the greedy-choice property and optimal substructure to guarantee global optimality. - [Graph](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/graph): A comprehensive guide to graph, including traversal using Depth-First Search and Breadth-First Search, extending tree traversal techniques to general graphs with cycles, disconnected components, and implicit structures. - [Topological Sort](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/topological-sort): A comprehensive guide to topological sorting on directed acyclic graphs, covering DFS-based and BFS-based approaches, cycle detection, and multi-level dependency resolution. - [Union Find](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/union-find): A comprehensive guide to the Union Find (Disjoint Set Union) data structure, covering the forest representation, path compression, union by rank, inverse Ackermann analysis, and application patterns for dynamic connectivity problems. - [Minimum Spanning Tree](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/minimum-spanning-tree): A comprehensive guide to Minimum Spanning Trees, covering the cut property, Kruskal's algorithm with Union-Find, Prim's algorithm with a min-heap, and the trade-offs between the two approaches. - [Shortest Path](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/shortest-path): A comprehensive guide to shortest path algorithms, covering Dijkstra's algorithm with a min-heap, the Bellman-Ford algorithm for graphs with negative weights, and their variations on grids and constrained problems. - [Eulerian Circuit](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/eulerian-circuit): A comprehensive guide to Eulerian circuits and paths, covering the necessary and sufficient conditions for their existence, Hierholzer's algorithm, De Bruijn sequences, and applications to graph traversal problems. - [DP Foundations & 1D DP](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/dp-foundations-1d-dp): A comprehensive guide to dynamic programming: optimal substructure, overlapping subproblems, memoization vs tabulation, state definition, recurrence relations, and space optimization, taught through one-dimensional DP problems. - [Knapsack DP](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/knapsack-dp): A comprehensive guide to knapsack dynamic programming: the 0/1 knapsack pattern for bounded items and the unbounded knapsack pattern for unlimited items, with the critical inner loop direction insight that distinguishes them. - [Longest Increasing Subsequence DP](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/longest-increasing-subsequence-dp): A comprehensive guide to the Longest Increasing Subsequence problem: the O(n²) DP formulation, the O(n log n) patience sorting optimization, counting and reconstruction variants, and the unifying view through Dilworth's theorem. - [2D Grid DP](https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/2d-grid-dp): A comprehensive guide to dynamic programming on two-dimensional grids: path counting, minimum and maximum path sums, obstacle variants, matrix-local recurrences, transition optimization, multi-dimensional grid states, and rolling-array space reduction. ## Additional Information: - [Blog Pagination](https://www.fabrizioduroni.it/blog/posts/2): Browse posts page by page. Pay attention that the first page is just https://www.fabrizioduroni.it/blog. - Blog post URLs follow the pattern: https://www.fabrizioduroni.it/blog/post/YYYY/MM/DD/slug - Tag URLs follow the pattern: https://www.fabrizioduroni.it/blog/tag/tag-name - Videogame URLs follow the pattern: https://www.fabrizioduroni.it/videogames/console/console-name, then /game/game-name for a single game - DSA exercise URLs follow the pattern: https://www.fabrizioduroni.it/data-structures-and-algorithms/topic/topic-name/exercise/exercise-name