# Fernando Cejas Blog

Welcome! I'm Fernando Cejas, Head of Engineering @TignumEng, former Director of Mobile @Wire, @SoundCloud Alumni, former @IBM Developer Advocate and @Tuenti Alumni. I'm a geek/nerd, huge fan of Mobile Development, Artificial Intelligence, Quantum Computing and Software Engineering in general. Here I share my experiences and expose my ideas but all views, posts and opinions are my own.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Integrating Rust with Android for Cross-Platform Code Reuse

DevFeed: [Integrating Rust with Android for Cross-Platform Code Reuse](<https://devfeed.tech/articles/rust-cross-platform-the-android-part-34674.md>)

Original publisher: [Read original article](<http://fernandocejas.com/blog/engineering/2023-07-27-rust-cross-platform-android/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2023-07-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Android](<https://devfeed.tech/topics/android.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Development](<https://devfeed.tech/topics/development.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [architectures](<https://devfeed.tech/tags/architectures.md>), [code](<https://devfeed.tech/tags/code.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [linux](<https://devfeed.tech/tags/linux.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A tutorial on integrating Rust with an Android application for cross-platform code reuse. It covers project structure, Rust compilation, Android CPU architecture libraries, JNI integration, Android SDK and NDK requirements, and an example involving encryption and decryption.

### Source excerpt

In this journey, we will go through the **process, infrastructure and architecture** on how we can integrate **Rust in our Android Project** in a **cross-platform development** way. Topics like **JNI** and **NDK** are also covered, plus some **anti-patterns** and **real use cases/scenarios**.

## An over-engineered Home Lab with Docker and Kubernetes.

DevFeed: [An over-engineered Home Lab with Docker and Kubernetes.](<https://devfeed.tech/articles/an-over-engineered-home-lab-with-docker-and-kubernetes-34673.md>)

Original publisher: [Read original article](<http://fernandocejas.com/blog/engineering/2023-01-06-over-engineered-home-lab-docker-kubernetes/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2023-01-06T00:00:00Z

Content type: article

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Homelab](<https://devfeed.tech/topics/homelab.md>), [.env](<https://devfeed.tech/topics/dotenv.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [Network Attached Storage (NAS)](<https://devfeed.tech/topics/network-attached-storage-nas.md>), [Network](<https://devfeed.tech/topics/network.md>), [Security, Privacy and Abuse Prevention](<https://devfeed.tech/topics/security-privacy-and-abuse-prevention.md>), [Virtual Private Network](<https://devfeed.tech/topics/vpn.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [culture](<https://devfeed.tech/tags/culture.md>), [data-privacy](<https://devfeed.tech/tags/data-privacy.md>), [development](<https://devfeed.tech/tags/development.md>), [docker](<https://devfeed.tech/tags/docker.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [home-lab](<https://devfeed.tech/tags/home-lab.md>), [home-server](<https://devfeed.tech/tags/home-server.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [internet](<https://devfeed.tech/tags/internet.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [linux](<https://devfeed.tech/tags/linux.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [network](<https://devfeed.tech/tags/network.md>), [network-attached-storage-nas](<https://devfeed.tech/tags/network-attached-storage-nas.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [openwrt](<https://devfeed.tech/tags/openwrt.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A personal account of building a private home lab using two Intel NUC Mini PCs, a modem/router, an OpenWRT router, and a NAS. The article compares Kubernetes and Docker, discusses maintenance and troubleshooting costs, and explains that the author ultimately chose a plain Docker setup.

### Source excerpt

**Setting up a personal Home Lab is not a task for lazy people**: it incurrs a **big cost of maintenance** and **issues arise** even though we might use the **best IT-Infrastructure practices...** but we can always **learn a lot** out of it and make it also **super fun**. In this post I would like to share **my journey** and share some **tips and tricks and issues** I bumped into. **Let's jump in!**

## Arch Linux System Maintainance.

DevFeed: [Arch Linux System Maintainance.](<https://devfeed.tech/articles/arch-linux-system-maintainance-34672.md>)

Original publisher: [Read original article](<http://fernandocejas.com/blog/engineering/2022-03-30-arch-linux-system-maintance/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2022-03-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Arch Linux](<https://devfeed.tech/topics/archlinux.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [pacman](<https://devfeed.tech/topics/pacman.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [guide](<https://devfeed.tech/tags/guide.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [linux](<https://devfeed.tech/tags/linux.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pacman](<https://devfeed.tech/tags/pacman.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A guide to maintaining Arch Linux installations. It covers system updates, troubleshooting keyring issues, cleaning the pacman cache, removing orphaned and unwanted packages, and managing cache data in the home directory.

### Source excerpt

In this guide we will walk through the most important practices **regarding system maintainance for Linux home computers.** Most of them are **Arch Linux** (and variants) specific but we can get ideas on how other distros can use and apply the same principles.

## Cooking Effective Code Reviews.

DevFeed: [Cooking Effective Code Reviews.](<https://devfeed.tech/articles/cooking-effective-code-reviews-34671.md>)

Original publisher: [Read original article](<http://fernandocejas.com/blog/engineering/2021-08-04-cooking-effective-code-reviews/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2021-08-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Code review](<https://devfeed.tech/topics/code-review.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [Development](<https://devfeed.tech/topics/development.md>), [engineering-culture](<https://devfeed.tech/topics/engineering-culture.md>), [decision-making](<https://devfeed.tech/topics/decision-making.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [code-review](<https://devfeed.tech/tags/code-review.md>), [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [linux](<https://devfeed.tech/tags/linux.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [processes](<https://devfeed.tech/tags/processes.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [structured](<https://devfeed.tech/tags/structured.md>), [team](<https://devfeed.tech/tags/team.md>), [tech-debt](<https://devfeed.tech/tags/tech-debt.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A tutorial on making pull request code reviews more effective through a structured process. It discusses their role in code quality, documentation, collaboration, engineering culture, and keeping reviews small enough to manage.

### Source excerpt

**Reviewing code (PRs) is not an easy task**, so in this post I will share **tips and tricks** on how your code reviews can better contribute to **code quality**, **be more effective and increase team morale** by following a structured and organized process. **Let's jump in!**

## Writing First-Class Features: BDD and Gherkin.

DevFeed: [Writing First-Class Features: BDD and Gherkin.](<https://devfeed.tech/articles/writing-first-class-features-bdd-and-gherkin-34670.md>)

Original publisher: [Read original article](<http://fernandocejas.com/blog/engineering/2021-01-23-writing-first-class-features-bdd-gherkin/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2021-01-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Behavior-driven development](<https://devfeed.tech/topics/bdd.md>), [domain-specific language](<https://devfeed.tech/topics/domain-specific-language.md>), [Development](<https://devfeed.tech/topics/development.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [bdd](<https://devfeed.tech/tags/bdd.md>), [communication](<https://devfeed.tech/tags/communication.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [domain-specific-language](<https://devfeed.tech/tags/domain-specific-language.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [feature](<https://devfeed.tech/tags/feature.md>), [framework](<https://devfeed.tech/tags/framework.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [linux](<https://devfeed.tech/tags/linux.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [organization](<https://devfeed.tech/tags/organization.md>), [processes](<https://devfeed.tech/tags/processes.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [web-development](<https://devfeed.tech/tags/web-development.md>), [writing](<https://devfeed.tech/tags/writing.md>)

### AI overview

The article explains how behavior-driven development (BDD) and the Gherkin domain-specific language can establish a shared vocabulary for writing software features. It presents BDD as a collaborative process involving developers, QA, and business participants, and describes how structured natural-language scenarios can express behavior and acceptance criteria.

### Source excerpt

As our product evolves, **there is the need to adopt a common vocabulary**, interpreted by all the moving parts of our organization: business users, analysts, managers, engineers, etc. **A technique like BDD and the Gherkin language can help us to achieve this goal**.

## Install Arch Linux with Full-Disk Encryption

DevFeed: [Install Arch Linux with Full-Disk Encryption](<https://devfeed.tech/articles/learn-linux-install-arch-with-full-disk-encryption-34669.md>)

Original publisher: [Read original article](<http://fernandocejas.com/blog/engineering/2020-12-28-install-arch-linux-full-disk-encryption/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2020-12-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Arch Linux](<https://devfeed.tech/topics/archlinux.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [intel](<https://devfeed.tech/topics/intel.md>), [dell](<https://devfeed.tech/topics/dell.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [culture](<https://devfeed.tech/tags/culture.md>), [debian](<https://devfeed.tech/tags/debian.md>), [development](<https://devfeed.tech/tags/development.md>), [distribution](<https://devfeed.tech/tags/distribution.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [installation](<https://devfeed.tech/tags/installation.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [linux](<https://devfeed.tech/tags/linux.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pacman](<https://devfeed.tech/tags/pacman.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A guide to installing Arch Linux with full-disk encryption while explaining the concepts involved. It assumes basic command-line knowledge and covers installation on Intel-based hardware, including a Dell XPS 13.

### Source excerpt

This post will act pretty much as **a guide** (a **long** one), in order to help you **INSTALL and UNDERSTAND Arch Linux** with **full disk encryption**. Let's also walk together through some of the **concepts involved in the amazing world of Linux**.

## Using Postmortems to Learn from Mistakes

DevFeed: [Using Postmortems to Learn from Mistakes](<https://devfeed.tech/articles/learn-out-of-mistakes-postmortems-to-the-rescue-34667.md>)

Original publisher: [Read original article](<http://fernandocejas.com/blog/culture/2020-06-21-learn-out-of-mistakes-postmortems/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2020-06-21T00:00:00Z

Content type: opinion

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Learning](<https://devfeed.tech/topics/learning.md>), [retrospectives](<https://devfeed.tech/topics/retrospectives.md>), [Resilience](<https://devfeed.tech/topics/resilience.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learning](<https://devfeed.tech/tags/learning.md>), [linux](<https://devfeed.tech/tags/linux.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [postmortems](<https://devfeed.tech/tags/postmortems.md>), [processes](<https://devfeed.tech/tags/processes.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [resilience](<https://devfeed.tech/tags/resilience.md>), [retrospectives](<https://devfeed.tech/tags/retrospectives.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

The article argues that organizations should treat mistakes as opportunities to learn, share lessons, and avoid repeating failures. It presents postmortems as a tool for drawing useful conclusions and supporting retrospective discussion.

### Source excerpt

**Postmortems** are a valuable tool for learning out of mistakes. They provide **useful conclusions** and should be included in retrospectives for further discussion in order to **not fall into the same trap again.**

## Postmortems for Learning From Mistakes

DevFeed: [Postmortems for Learning From Mistakes](<https://devfeed.tech/articles/learn-out-of-mistakes-postmortems-to-the-rescue-34666.md>)

Original publisher: [Read original article](<http://fernandocejas.com/2020/03/21/learn-out-of-mistakes-postmortems/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2020-06-21T00:00:00Z

Content type: opinion

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Learning](<https://devfeed.tech/topics/learning.md>), [retrospectives](<https://devfeed.tech/topics/retrospectives.md>), [Resilience](<https://devfeed.tech/topics/resilience.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learning](<https://devfeed.tech/tags/learning.md>), [linux](<https://devfeed.tech/tags/linux.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [postmortems](<https://devfeed.tech/tags/postmortems.md>), [processes](<https://devfeed.tech/tags/processes.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [resilience](<https://devfeed.tech/tags/resilience.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

The author argues that organizations should treat mistakes as opportunities to learn without blaming people. The article presents postmortems as a way to share lessons, discuss them in retrospectives, avoid repeating failures, and build resilience.

### Source excerpt

**Postmortems** are a valuable tool for learning out of mistakes. They provide **useful conclusions** and should be included in retrospectives for further discussion in order to **not fall into the same trap again.**

## Technical Debt and Legacy Code: Techniques for Improving Code Health

DevFeed: [Technical Debt and Legacy Code: Techniques for Improving Code Health](<https://devfeed.tech/articles/technical-debt-guru-level-unlocked-34665.md>)

Original publisher: [Read original article](<http://fernandocejas.com/2019/06/13/technical-debt-guru-level-unlocked/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2020-03-13T00:00:00Z

Content type: opinion

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [clean-code](<https://devfeed.tech/tags/clean-code.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [linux](<https://devfeed.tech/tags/linux.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [strategies](<https://devfeed.tech/tags/strategies.md>), [technical](<https://devfeed.tech/tags/technical.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This article examines technical debt and legacy code in software projects, defines legacy code as code without tests, and discusses techniques and strategies for assessing and addressing code health and maintenance challenges.

### Source excerpt

As **Software Engineers** we know that **Technical Debt** and **Legacy Code** are familiar concepts we have to live with. **Code healthiness and maintenance are challenging**, so let's dive into **tips and techniques on how to effectively address this problem.**

## Technical Debt and Legacy Code: Techniques for Improving Code Health

DevFeed: [Technical Debt and Legacy Code: Techniques for Improving Code Health](<https://devfeed.tech/articles/technical-debt-guru-level-unlocked-34668.md>)

Original publisher: [Read original article](<http://fernandocejas.com/blog/engineering/2020-03-13-technical-debt-guru-level-unlocked/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2020-03-13T00:00:00Z

Content type: opinion

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [linux](<https://devfeed.tech/tags/linux.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [technical](<https://devfeed.tech/tags/technical.md>), [tips](<https://devfeed.tech/tags/tips.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

The article discusses technical debt, legacy code, and software project health. It introduces legacy code as code without tests and explores techniques and strategies for measuring and addressing these maintenance challenges.

### Source excerpt

As **Software Engineers** we know that **Technical Debt** and **Legacy Code** are familiar concepts we have to live with. **Code healthiness and maintenance are challenging**, so let's dive into **tips and techniques on how to effectively address this problem.**