Quick introduction to the pipe-and-filter design pattern by referring to the Unix philosophy.| Massimo Nazaria - Blog
A command-line tool to find rhyming words in a text by using Grep and the CMU pronouncing dictionary.| Massimo Nazaria - Blog
| Massimo Nazaria - Blog
| Massimo Nazaria - Blog
| Massimo Nazaria - Blog
| Massimo Nazaria - Blog
This post introduces the hacker culture, the open source world, and finally Jekyll and GitHub Pages.| Massimo Nazaria - Blog
Tutorial on how to implement a random text generator in Bash by using the n-gram language model.| Massimo Nazaria - Blog
A step-by-step example on how to write modular code in object-oriented programming by using dependency injection.| Massimo Nazaria - Blog
Tutorial and code on how to implement a command-line tool to convert images to ASCII art in Python.| Massimo Nazaria - Blog
Tutorial on how to implement a MIDI software synthesizer in Python by using sine waves.| Massimo Nazaria - Blog
This post briefly illustrates the idea that the best code is no code at all.| Massimo Nazaria - Blog
This article presents a set of recommendations on how to prevent the phenomenon of spaghetti code by minimizing the scope of variables.| Massimo Nazaria - Blog
This article shows how modularity and testability are strongly related by explaining how testability issues imply modularity issues.| Massimo Nazaria - Blog
This article introduces some fundamental principles about software architecture design, including modularity, low coupling, and high cohesion.| Massimo Nazaria - Blog
This article introduces the rubber duck debugging method, and then shows 3 effective alternative ways of using it.| Massimo Nazaria - Blog
This post shows how to make the shell experience funnier.| Massimo Nazaria - Blog
This article introduces the Unix Philosophy by explaining the concepts of filter and pipeline with a playful example.| Massimo Nazaria - Blog
This article describes an architectural design approach aimed at preventing the accumulation of technical debt.| Massimo Nazaria - Blog