Critical Thinking

Tip: Critical thinking skills can be really valuable for Software engineers, Product and many other walks of life. It’s about approaching new information with a mix of humble curiosity and doubt.

Think independently and ask good questions that help make thoughtful decisions.

In broad strokes, some of the questions I like to ask based on critical thinking are:

➡️ How do we know we’re solving the right problem?
➡️ How do we know we’re solving the problem in the right way? (i.e. balancing rigor and efficiency, given our understanding of the problem and constraints)
➡️ If we don’t know the sources of our problem, how can we determine the root cause?
➡️ How can we break the key question down into smaller questions that we can analyze further?
➡️ Once we have one or more hypotheses, how do we structure work to evaluate them?
➡️ What shortcuts might we take if we’re under constraints (time pressure) without unduly compromising our analytics rigor around the question?
➡️ Does the evidence sufficiently support the conclusions?
How do we know when we are done? When is the solution “good enough”?
➡️ How do I communicate the solution clearly and logically to all stakeholders?

I’ve found these questions often help. Sometimes we’ll address the symptom of a problem, only to discover there are other symptoms that pop up. At other times, we might quickly ship a solution that creates more problems later down the road.

With a lens on critical thinking, we might challenge assumptions, look closer at the risk/benefit, seek out contradictory evidence, evaluate credibility and look for more data to build confidence we are doing the right thing.

Being in engineering or product, we can sometimes rush to solve a problem right away so it feels like we’re making progress or looks like we’re being responsive to stakeholders. This can introduce risks if we aren’t asking the right questions before doing so, fully considering causes and consequences. Put another way, critical thinking is thinking on purpose and forming your own conclusions. This goal-directed thinking can help you focus on root-cause issues that avoid future problems that arise from not keeping in mind causes and consequences.

Critical thinkers:
➡️ Raise mindful questions, formulating them clearly and precisely
➡️ Collect and assess relevant information, validating how they might answer the question
➡️ Arrive at well-reasoned conclusions and solutions, testing them against relevant criteria and standards
➡️ Think open mindedly within alternative systems of thought, recognizing and assessing, as need be, their assumptions, implications, and practical consequences
➡️ Communicate effectively with others in figuring out solutions to complex problems

only time

Chi può dire quando le strade incontreranno quell’amore che potrebbe entrare nel tuo cuore per sempre.

Chi può dirlo, solo il tempo.

L’amore non basta

Non si può amare solo con la voglia di amare.
Con il voler amare.
Con il voler restare.
Con il crederci.
Con io lo amo.
Perché poi non basta.
Non regge.
L’amore non basta per amare.
Bisogna che ci sia la storia, per amare.
La vita, per amare.
Non bastano le parole, per amare.
Neanche quelle giuste, bastano.
Neanche le parole d’amore bastano per amare.
Dobbiamo fare una passeggiata.
Dobbiamo cenare insieme.
Leggere un giornale.
Andare a fare la spesa.
Fare una cosa insieme.
Che sia nostra.
Che siamo noi.

Esercizi per la mente

Sulla forza di volontà. “Riconoscerò che la forza di volontà è il tribunale supremo di tutti i reparti della mente. Lo eserciterò ogni giorno, quando sarà necessario svolgere un’azione con uno scopo; e ne farò un’abitudine progettata per convertire il potere della mia volontà in azione almeno una volta al giorno”.

Sull’emozione. “Saprò distinguere le emozioni positive e quelle negative, e cercherò di promuovere ogni giorno lo sviluppo delle emozioni positive, cercando di fare un uso positivo di quelle negative”.

Sulla ragione. “Riconoscere che le mie emozioni positive e negative potranno essere pericolose se non controllate e guidate da uno scopo ben desiderato. Metterò i miei desideri, i miei obiettivi e i miei propositi sotto il controllo della ragione”.

Sull’immaginazione. “Riconoscere la necessità di parlare dei miei piani e delle mie idee per raggiungere i miei desideri, svilupperò la mia immaginazione rivolgendomi ad essa per ottenere aiuto nella progettazione dei miei piani”.

Sulla memoria. “Riconoscere il valore di una memoria allerta, cercherò di stampare nella mente tutti i pensieri e i desideri da ricordare, associando ad essi gli obiettivi relativi, che cercherò di ricordare frequentemente”.

Sulla coscienza. “Riconoscere che le mie emozioni spesso sbagliano per via di un eccessivo entusiasmo, e che alla mia ragione spesso mancano i sentimenti necessari per permettermi di abbinare la giustizia alla pietà nei miei giudizi. Chiederò alla mia coscienza di guidarmi su ciò che è giusto o sbagliato, ma non rinnegherò mai il suo verdetto, qualunque sia il suo costo”.

Why i switched form docker desktop to Colima

DDEV is an open source tool that makes it simple to get local PHP development environments up and running within minutes. It’s powerful and flexible as a result of its per-project environment configurations, which can be extended, version controlled, and shared. In short, DDEV aims to allow development teams to use containers in their workflow without the complexities of bespoke configuration.

DDEV replaces more traditional AMP stack solutions (WAMP, MAMP, XAMPP, and so on) with a flexible, modern, container-based solution. Because it uses containers, DDEV allows each project to use any set of applications, versions of web servers, database servers, search index servers, and other types of software.

In March 2022, the DDEV team announced support for Colima, an open source Docker Desktop replacement for macOS and Linux. Colima is open source, and by all reports it’s got performance gains over its alternative, so using Colima seems like a no-brainer.

Migrating to Colima

First off, Colima is almost a drop-in replacement for Docker Desktop. I say almost because some reconfiguration is required when using it for an existing DDEV project. Specifically, databases must be reimported. The fix is to first export your database, then start Colima, then import it. Easy.

Colima requires that either the Docker or Podman command is installed. On Linux, it also requires Lima.

Docker is installed by default with Docker Desktop for macOS, but it’s also available as a stand-alone command. If you want to go 100% pure Colima, you can uninstall Docker Desktop for macOS, and install and configure the Docker client independently. Full installation instructions can be found on the DDEV docs site.

An image of the container technology stack.

(Mike Anello,CC BY-SA 4.0)

If you choose to keep using both Colima and Docker Desktop, then when issuing docker commands from the command line, you must first specify which container you want to work with. More on this in the next section.

More on Kubernetes

What is Kubernetes?

Free online course: Containers, Kubernetes and Red Hat OpenShift technical over…

eBook: Storage Patterns for Kubernetes

Test drive OpenShift hands-on

An introduction to enterprise Kubernetes

How to explain Kubernetes in plain terms

eBook: Running Kubernetes on your Raspberry Pi homelab

Kubernetes cheat sheet

eBook: A guide to Kubernetes for SREs and sysadmins

Latest Kubernetes articles

Install Colima on macOS

I currently have some local projects using Docker, and some using Colima. Once I understood the basics, it’s not too difficult to switch between them.

  1. To get started, install Colima using Homebrew brew install colima
  2. ddev poweroff (just to be safe)
  3. Next, start Colima with colima start --cpu 4 --memory 4. The --cpu and --memory options only have to be done once. After the first time, only colima start is necessary.
  4. If you’re a DDEV user like me, then you can spin up a fresh Drupal 9 site with the usual ddev commands (ddev config, ddev start, and so on.) It’s recommended to enable DDEV’s mutagen functionality to maximize performance.

Switching between a Colima and Docker Desktop

If you’re not ready to switch to Colima wholesale yet, it’s possible to have both Colima and Docker Desktop installed.

  1. First, poweroff ddev:ddev poweroff
  2. Then stop Colima: colima stop
  3. Now run docker context use default to tell the Docker client which container you want to work with. The name default refers to Docker Desktop for Mac. When colima start is run, it automatically switches Docker to the colima context.
  4. To continue with the default (Docker Desktop) context, use the ddev start command.

Technically, starting and stopping Colima isn’t necessary, but the ddev poweroff command when switching between two contexts is.

Recent versions of Colima revert the Docker context back to default when Colima is stopped, so the docker context use default command is no longer necessary. Regardless, I still use docker context show to verify that either the default (Docker Desktop for Mac) or colima context is in use. Basically, the term context refers to which container provider the Docker client routes commands to.

Try Colima

Overall, I’m liking what I see so far. I haven’t run into any issues, and Colima-based sites seem a bit snappier (especially when DDEV’s Mutagen functionality is enabled). I definitely foresee myself migrating project sites to Colima over the next few weeks.