<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://blog.pgpadilla.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.pgpadilla.com/" rel="alternate" type="text/html" /><updated>2026-05-10T23:18:24+02:00</updated><id>https://blog.pgpadilla.com/feed.xml</id><title type="html">Pablo Padilla’s Blog</title><subtitle>Personal blog, mainly about programming computers.</subtitle><entry><title type="html">Trust Through Structure</title><link href="https://blog.pgpadilla.com/2026-04-27-forks-not-permissions" rel="alternate" type="text/html" title="Trust Through Structure" /><published>2026-04-27T00:00:00+02:00</published><updated>2026-04-27T00:00:00+02:00</updated><id>https://blog.pgpadilla.com/forks-not-permissions</id><content type="html" xml:base="https://blog.pgpadilla.com/2026-04-27-forks-not-permissions"><![CDATA[<p>
Most teams I have worked with use a shared repository for
collaboration. Everyone gets write access, branch protection rules
enforce reviews, and the platform handles the rest. This is the
default on GitHub and GitLab. It works. But it is not how Git was
designed to work.
</p>

<p>
Git already has a collaboration model built into its most basic
operation: the clone. Every clone is a complete, independent
repository. Collaboration happens by proposing changes from your
clone to a maintainer who decides what gets merged. Platforms like
GitHub, GitLab, and Bitbucket call this a "fork"—but underneath, it
is just a hosted clone with a pull request workflow on top.
</p>

<p>
This distinction matters. The trust model is not a platform feature.
It is a Git feature.
</p>
<div id="outline-container-how-git-was-meant-to-work" class="outline-2">
<h2 id="how-git-was-meant-to-work"><span class="section-number-2">1.</span> How Git was meant to work</h2>
<div class="outline-text-2" id="text-how-git-was-meant-to-work">
<p>
Git is a distributed version control system. Every clone is a
complete copy of the repository. You work in your own clone,
publish it somewhere others can reach, and propose changes to a
maintainer who decides what gets integrated.
</p>

<p>
There is no need for fine-grained permissions inside a repository
because trust boundaries are structural. If you do not have write
access, you work in your own clone. That is not a workaround.
That is the design.
</p>

<p>
The Linux kernel works this way. Write access to the canonical
repository is extremely limited. Contributors publish their own
clones. Changes are reviewed and merged by a small group of
maintainers. Trust is explicit. Integration is deliberate.
</p>

<p>
When platforms host this clone for you and attach a pull request
workflow, they call it a "fork." The mechanism is the same.
</p>
</div>
</div>
<div id="outline-container-what-platforms-changed" class="outline-2">
<h2 id="what-platforms-changed"><span class="section-number-2">2.</span> What platforms changed</h2>
<div class="outline-text-2" id="text-what-platforms-changed">
<p>
GitHub normalized a different model. Teams work in a single shared
repository. Access is controlled through roles: read, write, admin.
Branch protection rules are layered on top to enforce reviews,
require CI checks, and prevent direct pushes.
</p>

<p>
These mechanisms are often presented as essential. Sometimes they
are framed as compensating for something Git lacks.
</p>

<p>
That framing is wrong. Git does not lack a permission model. It
has one. It uses repository boundaries instead of branch
permissions. Cloning is the mechanism. By collapsing everything
into a single repository, platforms created the need for branch
protection rules—a more complex and more fragile version of what
separate clones already provide.
</p>
</div>
</div>
<div id="outline-container-what-forks-give-you" class="outline-2">
<h2 id="what-forks-give-you"><span class="section-number-2">3.</span> What forks give you</h2>
<div class="outline-text-2" id="text-what-forks-give-you">
<p>
Forks enforce separation between contributors and the canonical
codebase. It does not matter if you are an external contributor or
an internal employee. You cannot modify the main repository unless
you have been explicitly granted that privilege. Trust is earned,
not assumed.
</p>

<p>
Forks simplify access control. You either have write access or you
do not. There is no hierarchy of roles to manage, no permission
creep where people accumulate privileges over time without anyone
noticing. In role-based systems, permissions tend to drift into
inconsistent configurations. Forks avoid this entirely.
</p>

<p>
Forks make review mandatory by design. Contributors cannot push
directly, so all changes go through a proposal and review process.
Branch protection rules try to enforce the same thing, but they
are policy-based. Someone with sufficient privileges can override
them. Structural constraints are harder to bypass.
</p>

<p>
Forks also handle CI/CD secrets better. Workflows triggered from
forks are typically restricted from accessing secrets because the
fork is a less-trusted environment. This is a feature. It forces a
clean separation between untrusted contributions and privileged
operations. In a shared repository, managing that separation is
harder and more error-prone.
</p>
</div>
</div>
<div id="outline-container-the-overhead-argument" class="outline-2">
<h2 id="the-overhead-argument"><span class="section-number-2">4.</span> The overhead argument</h2>
<div class="outline-text-2" id="text-the-overhead-argument">
<p>
The common objection is that forks add overhead. More repositories
to manage, more clutter.
</p>

<p>
I disagree. Forks are scoped to individual users. They do not
affect the main repository. Maintainers see a clean, focused
canonical repo. The perceived inconvenience is a reflection of
tooling defaults, not a flaw in the model.
</p>
</div>
</div>
<div id="outline-container-why-teams-still-use-shared-repos" class="outline-2">
<h2 id="why-teams-still-use-shared-repos"><span class="section-number-2">5.</span> Why teams still use shared repos</h2>
<div class="outline-text-2" id="text-why-teams-still-use-shared-repos">
<p>
Companies mirror their org charts in their tooling. Everyone gets
access. Policy mechanisms manage behavior. This prioritizes easy
onboarding and short-term productivity over strong boundaries.
</p>

<p>
Branch protection rules are the compensatory mechanism. They try
to reintroduce control into a system that already relaxed its
structural constraints. They can work when properly configured.
But they depend on correct configuration, consistent enforcement,
and the absence of privileged bypasses. All of which can fail.
</p>

<p>
Shared repositories are not without merit. They work for small
teams with high trust. But they are not a natural extension of
Git's design. They are a reinterpretation shaped by SaaS platforms
and corporate convenience.
</p>
</div>
</div>
<div id="outline-container-closing" class="outline-2">
<h2 id="closing"><span class="section-number-2">6.</span> Closing thought</h2>
<div class="outline-text-2" id="text-closing">
<p>
The question is not whether branch permissions are useful. It is
whether they are necessary.
</p>

<p>
Git already answered that. The answer is structural separation—your
own clone, your own repository, integrated only through deliberate
review.
</p>
</div>
</div>]]></content><author><name></name></author><category term="software" /><category term="git" /><category term="clones" /><category term="collaboration" /><category term="security" /><category term="software" /><summary type="html"><![CDATA[Most teams I have worked with use a shared repository for collaboration. Everyone gets write access, branch protection rules enforce reviews, and the platform handles the rest. This is the default on GitHub and GitLab. It works. But it is not how Git was designed to work. Git already has a collaboration model built into its most basic operation: the clone. Every clone is a complete, independent repository. Collaboration happens by proposing changes from your clone to a maintainer who decides what gets merged. Platforms like GitHub, GitLab, and Bitbucket call this a "fork"—but underneath, it is just a hosted clone with a pull request workflow on top. This distinction matters. The trust model is not a platform feature. It is a Git feature. 1. How Git was meant to work Git is a distributed version control system. Every clone is a complete copy of the repository. You work in your own clone, publish it somewhere others can reach, and propose changes to a maintainer who decides what gets integrated. There is no need for fine-grained permissions inside a repository because trust boundaries are structural. If you do not have write access, you work in your own clone. That is not a workaround. That is the design. The Linux kernel works this way. Write access to the canonical repository is extremely limited. Contributors publish their own clones. Changes are reviewed and merged by a small group of maintainers. Trust is explicit. Integration is deliberate. When platforms host this clone for you and attach a pull request workflow, they call it a "fork." The mechanism is the same. 2. What platforms changed GitHub normalized a different model. Teams work in a single shared repository. Access is controlled through roles: read, write, admin. Branch protection rules are layered on top to enforce reviews, require CI checks, and prevent direct pushes. These mechanisms are often presented as essential. Sometimes they are framed as compensating for something Git lacks. That framing is wrong. Git does not lack a permission model. It has one. It uses repository boundaries instead of branch permissions. Cloning is the mechanism. By collapsing everything into a single repository, platforms created the need for branch protection rules—a more complex and more fragile version of what separate clones already provide. 3. What forks give you Forks enforce separation between contributors and the canonical codebase. It does not matter if you are an external contributor or an internal employee. You cannot modify the main repository unless you have been explicitly granted that privilege. Trust is earned, not assumed. Forks simplify access control. You either have write access or you do not. There is no hierarchy of roles to manage, no permission creep where people accumulate privileges over time without anyone noticing. In role-based systems, permissions tend to drift into inconsistent configurations. Forks avoid this entirely. Forks make review mandatory by design. Contributors cannot push directly, so all changes go through a proposal and review process. Branch protection rules try to enforce the same thing, but they are policy-based. Someone with sufficient privileges can override them. Structural constraints are harder to bypass. Forks also handle CI/CD secrets better. Workflows triggered from forks are typically restricted from accessing secrets because the fork is a less-trusted environment. This is a feature. It forces a clean separation between untrusted contributions and privileged operations. In a shared repository, managing that separation is harder and more error-prone. 4. The overhead argument The common objection is that forks add overhead. More repositories to manage, more clutter. I disagree. Forks are scoped to individual users. They do not affect the main repository. Maintainers see a clean, focused canonical repo. The perceived inconvenience is a reflection of tooling defaults, not a flaw in the model. 5. Why teams still use shared repos Companies mirror their org charts in their tooling. Everyone gets access. Policy mechanisms manage behavior. This prioritizes easy onboarding and short-term productivity over strong boundaries. Branch protection rules are the compensatory mechanism. They try to reintroduce control into a system that already relaxed its structural constraints. They can work when properly configured. But they depend on correct configuration, consistent enforcement, and the absence of privileged bypasses. All of which can fail. Shared repositories are not without merit. They work for small teams with high trust. But they are not a natural extension of Git's design. They are a reinterpretation shaped by SaaS platforms and corporate convenience. 6. Closing thought The question is not whether branch permissions are useful. It is whether they are necessary. Git already answered that. The answer is structural separation—your own clone, your own repository, integrated only through deliberate review.]]></summary></entry><entry><title type="html">Software Malpractice: The Fallacy of Self-Documenting Code</title><link href="https://blog.pgpadilla.com/2026-03-27-self-documenting-code" rel="alternate" type="text/html" title="Software Malpractice: The Fallacy of Self-Documenting Code" /><published>2026-03-27T00:00:00+01:00</published><updated>2026-03-27T00:00:00+01:00</updated><id>https://blog.pgpadilla.com/self-documenting-code</id><content type="html" xml:base="https://blog.pgpadilla.com/2026-03-27-self-documenting-code"><![CDATA[<p>
There is a belief among software engineers that code can document
itself. The idea is comforting: if you name things well, keep
functions short, and structure your logic clearly, the code will speak
for itself. No comments needed. No external documentation. The code is
the documentation.
</p>

<p>
I used to find this convincing. I don't anymore.
</p>
<div id="outline-container-the-belief" class="outline-2">
<h2 id="the-belief"><span class="section-number-2">1.</span> The belief</h2>
<div class="outline-text-2" id="text-the-belief">
<p>
When engineers say "self-documenting code," they usually mean
something like this: readable code with good naming conventions,
small functions with clear responsibilities, and minimal or no
comments. The reasoning is that comments go stale, but code is
always up to date. So the code should be the single source of
truth.
</p>

<p>
There is real value in this. Readable code is easier to work with
than unreadable code. Good naming helps. Small functions help. None
of that is wrong.
</p>

<p>
But there is a quiet assumption hiding underneath: that if you can
read what the code does, you also know what it is supposed to do.
That assumption is where things fall apart.
</p>
</div>
</div>
<div id="outline-container-what-code-tells-you" class="outline-2">
<h2 id="what-code-tells-you"><span class="section-number-2">2.</span> What code can and cannot tell you</h2>
<div class="outline-text-2" id="text-what-code-tells-you">
<p>
Code describes what it does. It can tell you that a function takes
two numbers and returns their sum. It can tell you that a loop
iterates over a list and filters out entries matching some
condition. It can tell you the exact sequence of operations that
will execute at runtime.
</p>

<p>
What it cannot tell you is whether any of that is correct.
</p>

<p>
Correctness is not a property of code in isolation. It is a
relationship between the code and something external to it: the
intent. What was this supposed to do? What problem was it meant to
solve? For whom? Under what circumstances?
</p>

<p>
Code is an interpretation of intent. It is not the intent itself.
</p>
</div>
</div>
<div id="outline-container-the-car" class="outline-2">
<h2 id="the-car"><span class="section-number-2">3.</span> The car</h2>
<div class="outline-text-2" id="text-the-car">
<p>
Consider the requirement: "write a program that models a car."
</p>

<p>
One engineer builds a model with parts: engine, wheels, chassis,
doors. The model captures the structure of a car. It would work well
for a sales catalog or a parts inventory system.
</p>

<p>
Another engineer builds a model with behaviors: accelerate, brake,
steer, shift gears. This model captures what a car does. It would
work well for a driving simulation.
</p>

<p>
Both implementations are clean. Both have good names, clear
structure, small functions. Both are, by any reasonable standard,
"self-documenting." And both are completely correct — for different
intents.
</p>

<p>
If you only have the code, you cannot tell which one is right. You
might not even realize there is a question to ask. A confident
engineer could build the wrong system and never notice, because the
code reads perfectly well.
</p>
</div>
</div>
<div id="outline-container-the-missing-piece" class="outline-2">
<h2 id="the-missing-piece"><span class="section-number-2">4.</span> The missing piece</h2>
<div class="outline-text-2" id="text-the-missing-piece">
<p>
Intent is the purpose behind the code. It answers questions like:
what problem are we solving, who has this problem, and how will we
know we solved it?
</p>

<p>
You cannot derive intent from code. You can read the code and
understand what it does, but you cannot reconstruct why it was
written that way, or whether the approach was the right one. The
code is a finished product. The reasoning that led to it is not
embedded in the artifact.
</p>

<p>
This is the core of the fallacy: treating the artifact as if it
contains the reasoning. It doesn't.
</p>
</div>
</div>
<div id="outline-container-the-fallacy-spreads" class="outline-2">
<h2 id="the-fallacy-spreads"><span class="section-number-2">5.</span> The fallacy spreads</h2>
<div class="outline-text-2" id="text-the-fallacy-spreads">
<p>
The same pattern shows up in other places.
</p>

<p>
Tests written after the implementation tend to mirror the code they
are testing. They verify that the code does what the code does. This
is circular. A test that says "the function returns 42" is only
useful if you know that 42 is the right answer. Without intent, the
test is a tautology.
</p>

<p>
Commit messages often describe what changed but not why. "Refactored
user service" or "updated validation logic" tells you what happened
in the code. It does not tell you what motivated the change, what
problem it addressed, or what trade-offs were considered. Six months
later, the commit is a fact without context.
</p>

<p>
Code reviews suffer from the same gap. A reviewer can check whether
the code is clean, whether it follows conventions, whether there are
obvious bugs. But without knowing the intent, the reviewer cannot
assess whether the code solves the right problem. The review becomes
a style check.
</p>
</div>
</div>
<div id="outline-container-specifications" class="outline-2">
<h2 id="specifications"><span class="section-number-2">6.</span> Specifications are not immune</h2>
<div class="outline-text-2" id="text-specifications">
<p>
You might think that specifications capture intent. Sometimes they
do. But in practice, specifications often describe solutions rather
than problems.
</p>

<p>
"Implement a car model with the following attributes: engine, wheels,
chassis, doors." That is not intent. That is a design decision
already made. The specification has absorbed the interpretation and
presents it as if it were the requirement.
</p>

<p>
The same fallacy applies: the artifact is mistaken for the
reasoning. A specification that describes a solution without
explaining the problem it solves is just code written in prose.
</p>
</div>
</div>
<div id="outline-container-requirements-without-intent" class="outline-2">
<h2 id="requirements-without-intent"><span class="section-number-2">7.</span> Requirements without intent</h2>
<div class="outline-text-2" id="text-requirements-without-intent">
<p>
In larger organizations, there are often several layers between the
people who have the problem and the people who write the code.
Product managers talk to stakeholders, write requirements, hand them
to architects, who produce designs, which are passed to development
teams.
</p>

<p>
At each step, the original problem gets translated. And at each
translation, some intent is lost and some interpretation is added.
By the time the requirements reach the engineers, they often look
like solutions. The engineers implement them faithfully. The code is
clean. The tests pass. The system ships.
</p>

<p>
And sometimes nobody uses it. Or it solves a problem that nobody
actually had. Not because the engineers were incompetent, but
because the intent was lost somewhere in the chain.
</p>
</div>
</div>
<div id="outline-container-why-this-persists" class="outline-2">
<h2 id="why-this-persists"><span class="section-number-2">8.</span> Why this persists</h2>
<div class="outline-text-2" id="text-why-this-persists">
<p>
Software practices vary widely. Not every team has the luxury of
direct access to users. Not every organization enforces clear
documentation of intent. Under time pressure, the artifact becomes
the deliverable and the reasoning behind it is treated as overhead.
</p>

<p>
Writing down intent takes effort. It requires understanding the
problem well enough to articulate it, which is harder than it
sounds. It is easier to write code that works than to explain why it
should work that way.
</p>

<p>
So the fallacy persists not because people are careless, but because
the conditions make it easy to skip the hard part.
</p>
</div>
</div>
<div id="outline-container-what-to-do" class="outline-2">
<h2 id="what-to-do"><span class="section-number-2">9.</span> What to do about it</h2>
<div class="outline-text-2" id="text-what-to-do">
<p>
Code is not the source of truth for intent. It never was. Readable
code is valuable, but it is not sufficient. The artifacts we produce
— code, tests, commits, specs — need to be complemented by explicit
explanations of why they exist.
</p>

<p>
This does not mean writing novels in comments. It means answering a
few questions and making the answers visible: what problem are we
solving, for whom, and how will we know it worked?
</p>

<p>
The format matters less than the habit. A sentence in a commit
message. A paragraph at the top of a specification. A comment that
explains a non-obvious decision. These small acts of documentation
are what connect the artifact to its purpose.
</p>
</div>
</div>
<div id="outline-container-closing" class="outline-2">
<h2 id="closing"><span class="section-number-2">10.</span> Closing thought</h2>
<div class="outline-text-2" id="text-closing">
<p>
Code can explain itself. It cannot justify itself.
</p>

<p>
Without intent, correctness is undefined. And if correctness is
undefined, it does not matter how clean the code is.
</p>

<p>
This is the first entry in what I am calling Software
Malpractice. Not because I think engineers are negligent, but
because some of our most cherished practices deserve a closer look.
</p>
</div>
</div>]]></content><author><name></name></author><category term="software" /><category term="software" /><category term="malpractice" /><category term="documentation" /><category term="intent" /><summary type="html"><![CDATA[There is a belief among software engineers that code can document itself. The idea is comforting: if you name things well, keep functions short, and structure your logic clearly, the code will speak for itself. No comments needed. No external documentation. The code is the documentation. I used to find this convincing. I don't anymore. 1. The belief When engineers say "self-documenting code," they usually mean something like this: readable code with good naming conventions, small functions with clear responsibilities, and minimal or no comments. The reasoning is that comments go stale, but code is always up to date. So the code should be the single source of truth. There is real value in this. Readable code is easier to work with than unreadable code. Good naming helps. Small functions help. None of that is wrong. But there is a quiet assumption hiding underneath: that if you can read what the code does, you also know what it is supposed to do. That assumption is where things fall apart. 2. What code can and cannot tell you Code describes what it does. It can tell you that a function takes two numbers and returns their sum. It can tell you that a loop iterates over a list and filters out entries matching some condition. It can tell you the exact sequence of operations that will execute at runtime. What it cannot tell you is whether any of that is correct. Correctness is not a property of code in isolation. It is a relationship between the code and something external to it: the intent. What was this supposed to do? What problem was it meant to solve? For whom? Under what circumstances? Code is an interpretation of intent. It is not the intent itself. 3. The car Consider the requirement: "write a program that models a car." One engineer builds a model with parts: engine, wheels, chassis, doors. The model captures the structure of a car. It would work well for a sales catalog or a parts inventory system. Another engineer builds a model with behaviors: accelerate, brake, steer, shift gears. This model captures what a car does. It would work well for a driving simulation. Both implementations are clean. Both have good names, clear structure, small functions. Both are, by any reasonable standard, "self-documenting." And both are completely correct — for different intents. If you only have the code, you cannot tell which one is right. You might not even realize there is a question to ask. A confident engineer could build the wrong system and never notice, because the code reads perfectly well. 4. The missing piece Intent is the purpose behind the code. It answers questions like: what problem are we solving, who has this problem, and how will we know we solved it? You cannot derive intent from code. You can read the code and understand what it does, but you cannot reconstruct why it was written that way, or whether the approach was the right one. The code is a finished product. The reasoning that led to it is not embedded in the artifact. This is the core of the fallacy: treating the artifact as if it contains the reasoning. It doesn't. 5. The fallacy spreads The same pattern shows up in other places. Tests written after the implementation tend to mirror the code they are testing. They verify that the code does what the code does. This is circular. A test that says "the function returns 42" is only useful if you know that 42 is the right answer. Without intent, the test is a tautology. Commit messages often describe what changed but not why. "Refactored user service" or "updated validation logic" tells you what happened in the code. It does not tell you what motivated the change, what problem it addressed, or what trade-offs were considered. Six months later, the commit is a fact without context. Code reviews suffer from the same gap. A reviewer can check whether the code is clean, whether it follows conventions, whether there are obvious bugs. But without knowing the intent, the reviewer cannot assess whether the code solves the right problem. The review becomes a style check. 6. Specifications are not immune You might think that specifications capture intent. Sometimes they do. But in practice, specifications often describe solutions rather than problems. "Implement a car model with the following attributes: engine, wheels, chassis, doors." That is not intent. That is a design decision already made. The specification has absorbed the interpretation and presents it as if it were the requirement. The same fallacy applies: the artifact is mistaken for the reasoning. A specification that describes a solution without explaining the problem it solves is just code written in prose. 7. Requirements without intent In larger organizations, there are often several layers between the people who have the problem and the people who write the code. Product managers talk to stakeholders, write requirements, hand them to architects, who produce designs, which are passed to development teams. At each step, the original problem gets translated. And at each translation, some intent is lost and some interpretation is added. By the time the requirements reach the engineers, they often look like solutions. The engineers implement them faithfully. The code is clean. The tests pass. The system ships. And sometimes nobody uses it. Or it solves a problem that nobody actually had. Not because the engineers were incompetent, but because the intent was lost somewhere in the chain. 8. Why this persists Software practices vary widely. Not every team has the luxury of direct access to users. Not every organization enforces clear documentation of intent. Under time pressure, the artifact becomes the deliverable and the reasoning behind it is treated as overhead. Writing down intent takes effort. It requires understanding the problem well enough to articulate it, which is harder than it sounds. It is easier to write code that works than to explain why it should work that way. So the fallacy persists not because people are careless, but because the conditions make it easy to skip the hard part. 9. What to do about it Code is not the source of truth for intent. It never was. Readable code is valuable, but it is not sufficient. The artifacts we produce — code, tests, commits, specs — need to be complemented by explicit explanations of why they exist. This does not mean writing novels in comments. It means answering a few questions and making the answers visible: what problem are we solving, for whom, and how will we know it worked? The format matters less than the habit. A sentence in a commit message. A paragraph at the top of a specification. A comment that explains a non-obvious decision. These small acts of documentation are what connect the artifact to its purpose. 10. Closing thought Code can explain itself. It cannot justify itself. Without intent, correctness is undefined. And if correctness is undefined, it does not matter how clean the code is. This is the first entry in what I am calling Software Malpractice. Not because I think engineers are negligent, but because some of our most cherished practices deserve a closer look.]]></summary></entry><entry><title type="html">Salsa practice ideas</title><link href="https://blog.pgpadilla.com/2025-05-03-salsa-practice" rel="alternate" type="text/html" title="Salsa practice ideas" /><published>2025-05-03T00:00:00+02:00</published><updated>2025-05-03T00:00:00+02:00</updated><id>https://blog.pgpadilla.com/salsa-drills</id><content type="html" xml:base="https://blog.pgpadilla.com/2025-05-03-salsa-practice"><![CDATA[<p>
Here are some ideas for salsa dance practice, the main goals are to
train the ability to place the pause at different times deliberately. 
</p>

<p>
During the COVID pandemic I started to get bored of practicing only
the On 1 basic step for inline Salsa. I was trying to come up with
some ideas to spice up my practice sessions and also understand more
about the different ways of dancing inline Salsa.
</p>

<p>
One of the key concepts in Salsa is the pause. My goal was to
see how placing the pause in different beats changes the feel of
the dance. 
</p>
<div id="outline-container-basic-on1" class="outline-2">
<h2 id="basic-on1"><span class="section-number-2">1.</span> The Basic step On 1</h2>
<div class="outline-text-2" id="text-basic-on1">
<p>
For the Basic steps On 1, start by taking a step forward with the
left foot and stepping with the ball of your foot on beat 1 and the
pause comes in beats 4 and 8. 
</p>

<div style="text-align: center">
  <a href="assets/svg/salsa-on1-basic.svg">
    <img src="assets/svg/salsa-on1-basic-pause-on-4-8.svg"
         alt="On 1 Basic step">
  </a>
</div>
</div>
<div id="outline-container-basic-on1-diagram-notes" class="outline-3">
<h3 id="basic-on1-diagram-notes"><span class="section-number-3">1.1.</span> Diagram notes</h3>
<div class="outline-text-3" id="text-basic-on1-diagram-notes">
<ol class="org-ol">
<li><b>the beat</b>: the first row shows the beat, in Salsa music there are
2 sets of 4 beats, 8 in total</li>
<li><b>home position</b>: the beat 0 shows the initial position, some
people also call this the home position</li>
<li><b>transfer of weight</b>: the red color in the steps indicates where
your body weight is supposed to be</li>
<li>only the <b>ball of your feet</b> touch the ground: the footprints
without the heel mean that you are only stepping with the ball
of your feet</li>
<li><b>traveling foot</b>: an arrow instead of a step shows the direction
your foot is traveling and not touching the ground</li>
<li><b>step on the beat</b>: the X in the last row mean that foot touches
the ground on that beat</li>
<li><b>pause</b>: the Ps in the last row tell you where the pause is</li>
</ol>
</div>
</div>
</div>
<div id="outline-container-placing-the-pause" class="outline-2">
<h2 id="placing-the-pause"><span class="section-number-2">2.</span> Changing the timing of the Pause</h2>
<div class="outline-text-2" id="text-placing-the-pause">
<p>
For reference, in the On 1 Basic, the pause is on beats 4 and 8. The
goal is now to place the Pause in different beats, e.g., 1+5, 2+6,
or 3+7. 
</p>

<p>
I the following sections I will make the case that placing the
pauses on different beats allows you to get a better feel of
different instrumental rythms; for that I will be using the song
<a href="https://www.youtube.com/watch?v=Nd78Pt6nWb8" target="_blank">
Ay Mi Maria by Bloque53
</a>
as reference for the Tumba, Bass and Piano rythms.
</p>
</div>
<div id="outline-container-pause-on-1+5" class="outline-3">
<h3 id="pause-on-1+5"><span class="section-number-3">2.1.</span> Pause on beats 1 and 5: feel the Tumbao</h3>
<div class="outline-text-3" id="text-pause-on-1+5">
<div style="text-align: center">
  <a href="assets/svg/salsa-on1-basic.svg">
    <img src="assets/svg/salsa-on1-basic-pause-on-1-5.svg"
         alt="On 1 Basic step">
  </a>
</div>

<p>
When dancing in this style, the forward and backward motions align
well with the TUM TUM of the simple Tumba rythm.
</p>
</div>
</div>
<div id="outline-container-pause-on-2+6" class="outline-3">
<h3 id="pause-on-2+6"><span class="section-number-3">2.2.</span> Pause on beats 2 and 6: feel the Bass</h3>
<div class="outline-text-3" id="text-pause-on-2+6">
<div style="text-align: center">
  <a href="assets/svg/salsa-on1-basic.svg">
    <img src="assets/svg/salsa-on1-basic-pause-on-2-6.svg"
         alt="On 1 Basic step">
  </a>
</div>

<p>
You can hear the <i>doom</i> of the base on beats 1, 3, 5 and 7. When I
practice this style I imagine that I'm dancing on the fret of the
Bass; when the pause on beat 2/6 comes, it feels like it's me
sutaining the Bass <i>doom</i>.
</p>
</div>
</div>
<div id="outline-container-pause-on-3+7" class="outline-3">
<h3 id="pause-on-3+7"><span class="section-number-3">2.3.</span> Pause on beats 3 and 7: feel the slap</h3>
<div class="outline-text-3" id="text-pause-on-3+7">
<div style="text-align: center">
  <a href="assets/svg/salsa-on1-basic.svg">
    <img src="assets/svg/salsa-on1-basic-pause-on-3-7.svg"
         alt="On 1 Basic step">
  </a>
</div>

<p>
When dancing this variation, it feels like I need to emphasize the
Tumba slap (the PA on TUM TUM PA) on beats 2 and 6.
</p>
</div>
</div>
</div>
<div id="outline-container-other-variations" class="outline-2">
<h2 id="other-variations"><span class="section-number-2">3.</span> Other ways to change the location of the Pause</h2>
<div class="outline-text-2" id="text-other-variations">
<ol class="org-ol">
<li>you can use the same ideas of placing the pause on different
beats when dancing On 2 and try to feel which instrument is
emphasized for each given variation</li>
<li>two more ways to change the location of the pause is to step on
the Clave beats; for this I typcally need additional
technological aids to be able to hear the Clave, more info in
<a href="#practice-tools">Practice, practice, practice</a></li>
</ol>
</div>
</div>
<div id="outline-container-clave-beats" class="outline-2">
<h2 id="clave-beats"><span class="section-number-2">4.</span> <span class="todo TODO">TODO</span> Dancing on the Clave beats</h2>
<div class="outline-text-2" id="text-clave-beats">
</div>
<div id="outline-container-clave-2-3" class="outline-3">
<h3 id="clave-2-3"><span class="section-number-3">4.1.</span> <span class="todo TODO">TODO</span> Clave 2-3: Steps diagram</h3>
<div class="outline-text-3" id="text-clave-2-3">
</div>
</div>
<div id="outline-container-clave-3-2" class="outline-3">
<h3 id="clave-3-2"><span class="section-number-3">4.2.</span> <span class="todo TODO">TODO</span> Clave 3-2: Steps diagram</h3>
<div class="outline-text-3" id="text-clave-3-2">
</div>
</div>
</div>
<div id="outline-container-practice-tools" class="outline-2">
<h2 id="practice-tools"><span class="section-number-2">5.</span> Practice, practice, practice</h2>
<div class="outline-text-2" id="text-practice-tools">
<p>
You will need some good tunes to practice, I suggest you use music that is
not too fast and song on which the the piano, bass, and Tumba rythms
are easy to hear. I like to use Ay Mi Maria! by Bloque53.
</p>

<div style="text-align: center">
  <iframe width="560" height="315"
          src="https://www.youtube.com/embed/Nd78Pt6nWb8?si=q80DPZhByyAnjyhv"
          title="YouTube video player"
          frameborder="0"
          allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
          referrerpolicy="strict-origin-when-cross-origin"
          allowfullscreen></iframe>
</div>


<p>
For the Clave rythm I like to use an app like <a href="https://apps.apple.com/de/app/salsa-rhythm/id379868541">Salsa Rythm</a> or <a href="https://salsabeatmachine.org">The
Salsa Beat Machine</a>, you can control the speed and volume of each
instrument! That has helped me a lot connect each timing of the
pause to different instruments. 
</p>
</div>
</div>
<div id="outline-container-conclusion" class="outline-2">
<h2 id="conclusion"><span class="section-number-2">6.</span> Conclusion</h2>
<div class="outline-text-2" id="text-conclusion">
<p>
Now you have 6 ways to practice placing the pause:
</p>

<ol class="org-ol">
<li>4 positions of the pause on the basic and</li>
<li>2 positions when dancing on the clave beats (clave 2-3 and 3-2)</li>
</ol>
</div>
</div>
<div id="outline-container-refs" class="outline-2">
<h2 id="refs"><span class="section-number-2">7.</span> References</h2>
<div class="outline-text-2" id="text-refs">
<ol class="org-ol">
<li>The step icons were taken from <a href="https://www.onlinewebfonts.com/icon">svg icons</a> and are licensed by CC
BY 4.0</li>
</ol>
</div>
</div>]]></content><author><name></name></author><category term="salsa" /><category term="dancing" /><category term="salsa" /><category term="dancing" /><summary type="html"><![CDATA[Here are some ideas for salsa dance practice, the main goals are to train the ability to place the pause at different times deliberately. During the COVID pandemic I started to get bored of practicing only the On 1 basic step for inline Salsa. I was trying to come up with some ideas to spice up my practice sessions and also understand more about the different ways of dancing inline Salsa. One of the key concepts in Salsa is the pause. My goal was to see how placing the pause in different beats changes the feel of the dance. 1. The Basic step On 1 For the Basic steps On 1, start by taking a step forward with the left foot and stepping with the ball of your foot on beat 1 and the pause comes in beats 4 and 8. 1.1. Diagram notes the beat: the first row shows the beat, in Salsa music there are 2 sets of 4 beats, 8 in total home position: the beat 0 shows the initial position, some people also call this the home position transfer of weight: the red color in the steps indicates where your body weight is supposed to be only the ball of your feet touch the ground: the footprints without the heel mean that you are only stepping with the ball of your feet traveling foot: an arrow instead of a step shows the direction your foot is traveling and not touching the ground step on the beat: the X in the last row mean that foot touches the ground on that beat pause: the Ps in the last row tell you where the pause is 2. Changing the timing of the Pause For reference, in the On 1 Basic, the pause is on beats 4 and 8. The goal is now to place the Pause in different beats, e.g., 1+5, 2+6, or 3+7. I the following sections I will make the case that placing the pauses on different beats allows you to get a better feel of different instrumental rythms; for that I will be using the song Ay Mi Maria by Bloque53 as reference for the Tumba, Bass and Piano rythms. 2.1. Pause on beats 1 and 5: feel the Tumbao When dancing in this style, the forward and backward motions align well with the TUM TUM of the simple Tumba rythm. 2.2. Pause on beats 2 and 6: feel the Bass You can hear the doom of the base on beats 1, 3, 5 and 7. When I practice this style I imagine that I'm dancing on the fret of the Bass; when the pause on beat 2/6 comes, it feels like it's me sutaining the Bass doom. 2.3. Pause on beats 3 and 7: feel the slap When dancing this variation, it feels like I need to emphasize the Tumba slap (the PA on TUM TUM PA) on beats 2 and 6. 3. Other ways to change the location of the Pause you can use the same ideas of placing the pause on different beats when dancing On 2 and try to feel which instrument is emphasized for each given variation two more ways to change the location of the pause is to step on the Clave beats; for this I typcally need additional technological aids to be able to hear the Clave, more info in Practice, practice, practice 4. TODO Dancing on the Clave beats 4.1. TODO Clave 2-3: Steps diagram 4.2. TODO Clave 3-2: Steps diagram 5. Practice, practice, practice You will need some good tunes to practice, I suggest you use music that is not too fast and song on which the the piano, bass, and Tumba rythms are easy to hear. I like to use Ay Mi Maria! by Bloque53. For the Clave rythm I like to use an app like Salsa Rythm or The Salsa Beat Machine, you can control the speed and volume of each instrument! That has helped me a lot connect each timing of the pause to different instruments. 6. Conclusion Now you have 6 ways to practice placing the pause: 4 positions of the pause on the basic and 2 positions when dancing on the clave beats (clave 2-3 and 3-2) 7. References The step icons were taken from svg icons and are licensed by CC BY 4.0]]></summary></entry><entry><title type="html">Inherit the Ledger</title><link href="https://blog.pgpadilla.com/2025-04-06-inherit-the-ledger" rel="alternate" type="text/html" title="Inherit the Ledger" /><published>2025-04-05T00:00:00+02:00</published><updated>2025-04-05T00:00:00+02:00</updated><id>https://blog.pgpadilla.com/inherit-the-ledger</id><content type="html" xml:base="https://blog.pgpadilla.com/2025-04-06-inherit-the-ledger"><![CDATA[<p>
What happens when the truth becomes permanent?
In a world reborn from war, one vote embeds blockchain into the heart
of governance—changing how history is remembered, and how power is
held accountable.
</p>

<p>
<b>Disclaimer: this post was created with ChatGPT, an AI language
model.</b>
</p>

<div style="text-align: center">
  <img src="/assets/images/inherit-the-ledger.png" style="width: 50%">
</div>



<p>
In 2043, the world finally had peace—but no one could agree on what it
meant.
</p>

<p>
The Cantharan Conflict had ended just five years earlier, the last war
between sovereign states. Ten years of orbital skirmishes, proxy
rebellions, and resource seizures had scarred continents and left
trust fractured. When the Unification Accord was signed, it marked
more than a ceasefire—it was the birth of a new world governance.
</p>

<p>
But beneath that peace was a silence no one dared touch.
</p>

<p>
Until the chain.
</p>

<p>
Amendment Nine sat at the center of the Global Council's circular
hall, projected in sharp light above the assembled delegates:
</p>

<p>
“Mandate blockchain-based public records for all state functions,
retroactive to the year 2000.”
</p>

<p>
No deletions. No redactions. Every memo, briefing, and order would be
cryptographically verified, permanently stored on a decentralized,
publicly accessible blockchain. Interlinked and contextualized by
natural language models. Searchable by anyone, anywhere. Trust was no
longer a requirement—just math.
</p>

<p>
Outside the hall, protest signs floated like lanterns: No More Silent
Wars. Let Memory Speak.
</p>

<p>
Inside, silence waited for history to wake up.
</p>

<p>
Councilor Reza rose. His face was weathered, his voice calm, but his
words carried weight. He had been there—through every escalation,
every classified briefing, every rationalization.
</p>

<p>
“I don’t oppose the technology,” he said. “It’s flawless. Too
flawless.”
</p>

<p>
He gestured toward the projection—a visual blockchain mapping the
provenance of a drone strike: embargo memo to operational directive to
final execution.
</p>

<p>
“But if this passes, we won’t just record the present. We’ll expose
the past. Not all of us will survive what that reveals.”
</p>

<p>
A silence followed. Not of disagreement, but recognition.
</p>

<p>
Across the table, Councilor Omari stood. She didn’t look away from
Reza.
</p>

<p>
“We built peace on a shaky foundation,” she said. “If we pretend the
past didn’t happen, it will happen again.”
</p>

<p>
She activated a simulation. The blockchain interface replayed decades
of locked-away decisions. A natural language model narrated
connections: embargoes, falsified threat reports, unsanctioned
deployments. The chain was verifiable, immutable, and damning.
</p>

<p>
The final node blinked red: The war was preventable. The escalation
was artificial.
</p>

<p>
Then a younger voice joined them—Councilor Eliya, born after the first
orbital strike.
</p>

<p>
“We call this era peace,” she said. “But we’ve never been told how it
really started. What we inherited was an edited story.”
</p>

<p>
She looked around the chamber.
</p>

<p>
“If we want to pass on more than silence, we need to give them
something better. We need to give them memory—verified, unalterable,
shared.”
</p>

<p>
The vote passed. By two.
</p>

<p>
Six months later, the chain opened.
</p>

<p>
It didn’t shout. It illuminated. With full historical input, LLMs
began stitching fragmented decisions into clear, cohesive
narratives. Blockchain entries, once scattered and siloed, formed a
lattice of undeniable truth.
</p>

<p>
The Cantharan Conflict—long a cloud of speculation—was reconstructed
as a precise chain of intentional acts.
</p>

<p>
No more speculation. No more spin. Just patterns—clear, sobering,
precise.
</p>

<p>
Families of the fallen watched the reports not to accuse, but to
understand.
</p>

<p>
This is how it started. This is who turned away. This is why it
lasted.
</p>

<p>
A cascade of resignations followed. Some were prosecuted. Others
stepped forward before their blocks were even examined.
</p>

<p>
One morning, Reza received his summons.
</p>

<p>
He didn’t resist.
</p>

<p>
At his hearing, he stood tall, hands open.
</p>

<p>
“I thought we were defending stability,” he said. “But I see now—we
were protecting optics. I won’t hide from that. The future deserves
better than silence.”
</p>

<p>
He stepped down, not as a condemned man, but as someone who had chosen
to face what he helped create.
</p>

<p>
And those still in power?
</p>

<p>
They began to write differently.
</p>

<p>
Memos became clearer. Rationales were laid bare. The language of
governance shifted from bureaucratic defense to accountable prose. It
wasn’t policy by secrecy anymore. It was action knowing the future was
watching.
</p>

<p>
Ten years later, children learned to navigate the blockchain the way
they once studied maps—because it was a map. Not of land, but of
choices.
</p>

<p>
In her final address, Councilor Eliya, now Head of Council, spoke
simply:
</p>

<p>
“We do not inherit peace.  We inherit the memory of how we earned it.
And that memory is our greatest safeguard.”  No more sealed orders.
</p>

<p>
No more silent wars.
</p>

<p>
The future had inherited the ledger.
</p>]]></content><author><name></name></author><category term="shorts" /><category term="sci-fi" /><category term="rag" /><category term="ai" /><category term="llm" /><category term="law" /><category term="plato" /><category term="ledger" /><category term="blockchain" /><category term="shorts" /><category term="sci-fi" /><summary type="html"><![CDATA[What happens when the truth becomes permanent? In a world reborn from war, one vote embeds blockchain into the heart of governance—changing how history is remembered, and how power is held accountable. Disclaimer: this post was created with ChatGPT, an AI language model. In 2043, the world finally had peace—but no one could agree on what it meant. The Cantharan Conflict had ended just five years earlier, the last war between sovereign states. Ten years of orbital skirmishes, proxy rebellions, and resource seizures had scarred continents and left trust fractured. When the Unification Accord was signed, it marked more than a ceasefire—it was the birth of a new world governance. But beneath that peace was a silence no one dared touch. Until the chain. Amendment Nine sat at the center of the Global Council's circular hall, projected in sharp light above the assembled delegates: “Mandate blockchain-based public records for all state functions, retroactive to the year 2000.” No deletions. No redactions. Every memo, briefing, and order would be cryptographically verified, permanently stored on a decentralized, publicly accessible blockchain. Interlinked and contextualized by natural language models. Searchable by anyone, anywhere. Trust was no longer a requirement—just math. Outside the hall, protest signs floated like lanterns: No More Silent Wars. Let Memory Speak. Inside, silence waited for history to wake up. Councilor Reza rose. His face was weathered, his voice calm, but his words carried weight. He had been there—through every escalation, every classified briefing, every rationalization. “I don’t oppose the technology,” he said. “It’s flawless. Too flawless.” He gestured toward the projection—a visual blockchain mapping the provenance of a drone strike: embargo memo to operational directive to final execution. “But if this passes, we won’t just record the present. We’ll expose the past. Not all of us will survive what that reveals.” A silence followed. Not of disagreement, but recognition. Across the table, Councilor Omari stood. She didn’t look away from Reza. “We built peace on a shaky foundation,” she said. “If we pretend the past didn’t happen, it will happen again.” She activated a simulation. The blockchain interface replayed decades of locked-away decisions. A natural language model narrated connections: embargoes, falsified threat reports, unsanctioned deployments. The chain was verifiable, immutable, and damning. The final node blinked red: The war was preventable. The escalation was artificial. Then a younger voice joined them—Councilor Eliya, born after the first orbital strike. “We call this era peace,” she said. “But we’ve never been told how it really started. What we inherited was an edited story.” She looked around the chamber. “If we want to pass on more than silence, we need to give them something better. We need to give them memory—verified, unalterable, shared.” The vote passed. By two. Six months later, the chain opened. It didn’t shout. It illuminated. With full historical input, LLMs began stitching fragmented decisions into clear, cohesive narratives. Blockchain entries, once scattered and siloed, formed a lattice of undeniable truth. The Cantharan Conflict—long a cloud of speculation—was reconstructed as a precise chain of intentional acts. No more speculation. No more spin. Just patterns—clear, sobering, precise. Families of the fallen watched the reports not to accuse, but to understand. This is how it started. This is who turned away. This is why it lasted. A cascade of resignations followed. Some were prosecuted. Others stepped forward before their blocks were even examined. One morning, Reza received his summons. He didn’t resist. At his hearing, he stood tall, hands open. “I thought we were defending stability,” he said. “But I see now—we were protecting optics. I won’t hide from that. The future deserves better than silence.” He stepped down, not as a condemned man, but as someone who had chosen to face what he helped create. And those still in power? They began to write differently. Memos became clearer. Rationales were laid bare. The language of governance shifted from bureaucratic defense to accountable prose. It wasn’t policy by secrecy anymore. It was action knowing the future was watching. Ten years later, children learned to navigate the blockchain the way they once studied maps—because it was a map. Not of land, but of choices. In her final address, Councilor Eliya, now Head of Council, spoke simply: “We do not inherit peace. We inherit the memory of how we earned it. And that memory is our greatest safeguard.” No more sealed orders. No more silent wars. The future had inherited the ledger.]]></summary></entry><entry><title type="html">AI Career</title><link href="https://blog.pgpadilla.com/2024-10-02-ai-career" rel="alternate" type="text/html" title="AI Career" /><published>2024-10-02T00:00:00+02:00</published><updated>2024-10-02T00:00:00+02:00</updated><id>https://blog.pgpadilla.com/ai-career</id><content type="html" xml:base="https://blog.pgpadilla.com/2024-10-02-ai-career"><![CDATA[<p>
In 2022, after 14 years as a software engineer, I found myself
reconsidering my career path. The fast-paced software world was no
longer compatible with my preference for deep thinking and
exploration. This post outlines my journey, ultimately leading me to
choose IT infrastructure over AI roles, and how that decision aligned
better with my interests and work style.
</p>

<div class="amzn-disclaimer">
  <p>
    <strong>Disclosure:</strong> Some of the links below are affiliate
    links. This means that if you click through and make a purchase, I
    may earn a small commission at no extra cost to you.
  </p>
</div>

<div id="outline-container-intro" class="outline-2">
<h2 id="intro"><span class="section-number-2">1.</span> Act I: Can Thinkers tinker?</h2>
<div class="outline-text-2" id="text-intro">
<p>
Working as a software engineer can be stressful. The pace of
modern/agile software teams is fast, bi-weekly sprints, continuous
delivery, you build it &#x2026; you run it, etc.. On top of that, having
to learn the next programming tool/technique is very demanding.
</p>

<p>
I'm more of a thinker than a tinkerer; I like to look at topic from
different angles, do some research, try a few experiments, step back
and switch to something else while I let my brain process what I've
learned, I might or might not come back to the topic depending on my
level of interest or curiosity. My working preferences were not
compatible with my programming job.
</p>

<p>
During my vacation around the end of 2021 I was going over my career
prospects; I thought that I was ready to commit to a role long-term
but I needed to do some research to understand my options and
compare them somehow.
</p>
</div>
</div>
<div id="outline-container-middle" class="outline-2">
<h2 id="middle"><span class="section-number-2">2.</span> Act II: Educated Guessing</h2>
<div class="outline-text-2" id="text-middle">
<p>
The first half of my career has been writing network clients and
then writing application servers and release automation for the
other half. I felt that I had been doing the same over and over only
with different technologies and industry domains.
</p>

<p>
I didn't feel that I could make a drastic change like going out of
the software scene since writing software was my main activity in
the past 10 years. I am not a big risk taker so I only considered
alternative paths that could benefit from my experience as a
programmer. 
</p>

<p>
I had narrowed down my options to two: software architecture and
artificial intelligence.
</p>

<p>
In recent projects, my interest was often to get a glimpse of
the high-level architecture and I would approach it by studying
the delivery pipelines; when available, they describe the process
each code change goes through to make it to a production
environment.
</p>

<p>
Artificial Intelligence was interesting because it aligns well with
personal interest in the automation of knowledge organization and
discovery.
</p>

<p>
I found two resources that helped me Learn about what AI projects
might look like in the industry:
</p>

<ol class="org-ol">
<li>Chollet's book:
<a name="chollet-dlwp" href="https://amzn.to/3BsKjwK"
     target="_blank">Deep Learning with Python</a>:
the Universal Machine Learning workflow was exactly what I was
looking for at the time, a high-level overview of the life cycle
of an ML Project.</li>

<li>Andrew Ng's content at <a href="https://www.deeplearning.ai/">deeplearning.ai</a>: there I found
descriptions of the different roles required to execute AI
projects in the enterprise world. The site also has tools to
asses your readiness for specific roles.</li>
</ol>


<p>
I was disappointed but not very surprised to learn that machine
learning projects look very similar to other software projects.
</p>

<p>
AI/ML engineers bring their specialized skills to a project and were
I to join an AI project, I would end up in a role almost
indistinguishable to my current role, namely working on the delivery
of AI-powered software to production environments.
</p>
</div>
</div>
<div id="outline-container-conclusion" class="outline-2">
<h2 id="conclusion"><span class="section-number-2">3.</span> Act III: non-committal commitment</h2>
<div class="outline-text-2" id="text-conclusion">
<p>
During my vacation I made the resolution to double down and continue
working as a software engineer and become even more proficient
writing code for applications and release automation.
</p>

<p>
My resolution lasted about 4 hours after my return to work. On my
first day after vacation, all it took was to read my mailbox and
chat messages to remind me the many reasons why I was considering a
change in the first place.
</p>

<p>
I started looking for a new role and that lead me into the world of
IT infrastructure architecture. The company is large and for the
past 50 years has deployed pretty much every piece of technology
worth mentioning; my IT universe expanded and I felt quite good
about not pursing AI/ML.
</p>

<p>
If you are considering a career in AI/ML, I highly recommend
<a href="#chollet-dlwp">Chollet's book</a>; it's a
window into the world of machine learning engineering in the
industry, directly from a very influential software engineer and AI
researcher.
</p>
</div>
</div>
<div id="outline-container-links" class="outline-2">
<h2 id="links"><span class="section-number-2">4.</span> Related links</h2>
<div class="outline-text-2" id="text-links">
<ol class="org-ol">
<li><a href="https://amzn.to/3BsKjwK" target="_blank">
     Deep Learning with Python</a></li>

<li><a href="https://www.deeplearning.ai/">deeplearning.ai</a></li>

<li><a href="https://en.wikipedia.org/wiki/Fran%C3%A7ois_Chollet">François Chollet</a> (Wikipedia)</li>

<li>posts with labels

<ul class="org-ul">
<li><a href="/tag/ai">#ai</a></li>

<li><a href="/tag/chollet">#chollet</a></li>

<li><a href="/tag/software">#software</a></li>
</ul></li>
</ol>
</div>
</div>]]></content><author><name></name></author><category term="journal" /><category term="journal" /><category term="ai" /><category term="job" /><category term="career" /><category term="chollet" /><category term="software" /><summary type="html"><![CDATA[In 2022, after 14 years as a software engineer, I found myself reconsidering my career path. The fast-paced software world was no longer compatible with my preference for deep thinking and exploration. This post outlines my journey, ultimately leading me to choose IT infrastructure over AI roles, and how that decision aligned better with my interests and work style. Disclosure: Some of the links below are affiliate links. This means that if you click through and make a purchase, I may earn a small commission at no extra cost to you. 1. Act I: Can Thinkers tinker? Working as a software engineer can be stressful. The pace of modern/agile software teams is fast, bi-weekly sprints, continuous delivery, you build it &#x2026; you run it, etc.. On top of that, having to learn the next programming tool/technique is very demanding. I'm more of a thinker than a tinkerer; I like to look at topic from different angles, do some research, try a few experiments, step back and switch to something else while I let my brain process what I've learned, I might or might not come back to the topic depending on my level of interest or curiosity. My working preferences were not compatible with my programming job. During my vacation around the end of 2021 I was going over my career prospects; I thought that I was ready to commit to a role long-term but I needed to do some research to understand my options and compare them somehow. 2. Act II: Educated Guessing The first half of my career has been writing network clients and then writing application servers and release automation for the other half. I felt that I had been doing the same over and over only with different technologies and industry domains. I didn't feel that I could make a drastic change like going out of the software scene since writing software was my main activity in the past 10 years. I am not a big risk taker so I only considered alternative paths that could benefit from my experience as a programmer. I had narrowed down my options to two: software architecture and artificial intelligence. In recent projects, my interest was often to get a glimpse of the high-level architecture and I would approach it by studying the delivery pipelines; when available, they describe the process each code change goes through to make it to a production environment. Artificial Intelligence was interesting because it aligns well with personal interest in the automation of knowledge organization and discovery. I found two resources that helped me Learn about what AI projects might look like in the industry: Chollet's book: Deep Learning with Python: the Universal Machine Learning workflow was exactly what I was looking for at the time, a high-level overview of the life cycle of an ML Project. Andrew Ng's content at deeplearning.ai: there I found descriptions of the different roles required to execute AI projects in the enterprise world. The site also has tools to asses your readiness for specific roles. I was disappointed but not very surprised to learn that machine learning projects look very similar to other software projects. AI/ML engineers bring their specialized skills to a project and were I to join an AI project, I would end up in a role almost indistinguishable to my current role, namely working on the delivery of AI-powered software to production environments. 3. Act III: non-committal commitment During my vacation I made the resolution to double down and continue working as a software engineer and become even more proficient writing code for applications and release automation. My resolution lasted about 4 hours after my return to work. On my first day after vacation, all it took was to read my mailbox and chat messages to remind me the many reasons why I was considering a change in the first place. I started looking for a new role and that lead me into the world of IT infrastructure architecture. The company is large and for the past 50 years has deployed pretty much every piece of technology worth mentioning; my IT universe expanded and I felt quite good about not pursing AI/ML. If you are considering a career in AI/ML, I highly recommend Chollet's book; it's a window into the world of machine learning engineering in the industry, directly from a very influential software engineer and AI researcher. 4. Related links Deep Learning with Python deeplearning.ai François Chollet (Wikipedia) posts with labels #ai #chollet #software]]></summary></entry><entry><title type="html">Definitions of Intelligence</title><link href="https://blog.pgpadilla.com/2024-09-25-definition-intelligence" rel="alternate" type="text/html" title="Definitions of Intelligence" /><published>2024-09-25T00:00:00+02:00</published><updated>2024-09-25T00:00:00+02:00</updated><id>https://blog.pgpadilla.com/definition-intelligence</id><content type="html" xml:base="https://blog.pgpadilla.com/2024-09-25-definition-intelligence"><![CDATA[<p>
A reference card for definitions of intelligence.
</p>

<p>
This entry attempts to summarize the definitions of intelligence that
I am familiar with. It is the result of trying to organize my thoughts
on the subject. When reading multiple sources from various fields that
address the concept of intelligence, perspectives can
differ. Sometimes, it even seems as though they are discussing
entirely different topics.
</p>


<div class="amzn-disclaimer">
  <p>
    <strong>Disclosure:</strong> Some of the links below are affiliate
    links. This means that if you click through and make a purchase, I
    may earn a small commission at no extra cost to you.
  </p>
</div>

<div id="outline-container-chollet" class="outline-2">
<h2 id="chollet"><span class="section-number-2">1.</span> Chollet: Intelligence as learning efficiency</h2>
<div class="outline-text-2" id="text-chollet">
<p>
<b>Definition:</b> Intelligence is the efficiency with which a learning
system turns experience and priors into general skill at previously
unseen tasks
</p>

<p>
<b>Proponent</b>: François Chollet
</p>

<p>
<b>Proposed metrics</b>: Skill Acquisition Efficiency (SAE)
</p>

<p>
<b>Perspective</b>: Emphasizes generalization and the ability to learn
 new tasks quickly from limited data. 
</p>
</div>
<div id="outline-container-org4ad0dd3" class="outline-3">
<h3 id="org4ad0dd3"><span class="section-number-3">1.1.</span> References</h3>
<div class="outline-text-3" id="text-1-1">
<ol class="org-ol">
<li><a name="chollet"
      href="/tag/chollet.html"
      target="_blank">Chollet</a>:
      proposes a benchmark for intelligence, the ARC challenge</li>
</ol>
</div>
</div>
</div>
<div id="outline-container-hutter" class="outline-2">
<h2 id="hutter"><span class="section-number-2">2.</span> Hutter: Universal Artificial Intelligence</h2>
<div class="outline-text-2" id="text-hutter">
<p>
<b>Definition:</b> Intelligence measures the ability of an agent to
achieve goals in a wide range of environments
</p>

<p>
<b>Proponent:</b> Marcus Hutter
</p>

<p>
<b>Proposed metrics:</b> Universal Intelligence Measure (UIM); a formal
mathematical definition summing over all computable reward functions
weighted by their simplicity. 
</p>

<p>
<b>Perspective:</b> Provides a formal, mathematical framework based on
algorithmic information theory to define and measure intelligence. 
</p>
</div>
<div id="outline-container-org64b8319" class="outline-3">
<h3 id="org64b8319"><span class="section-number-3">2.1.</span> References</h3>
<div class="outline-text-3" id="text-2-1">
<ol class="org-ol">
<li><a name="hutter"
      target="_blank"
      href="/tag/hutter.html">AIXI</a>:
      Marcus Hutter's AIXI model for Universal Artificial Intelligence</li>
<li><a name="amzn-hutter-uai"
      target="_blank"
      href="https://amzn.to/3Y3Pa0l">Hutter</a>:
      Books by Marcus Hutter on Amazon</li>
</ol>
</div>
</div>
</div>
<div id="outline-container-schmidhuber" class="outline-2">
<h2 id="schmidhuber"><span class="section-number-2">3.</span> Schmidhuber: Compression progress</h2>
<div class="outline-text-2" id="text-schmidhuber">
<p>
<b>Definition:</b> Intelligence is the ability to generate novel,
interesting actions or data by maximizing future expected reward or
compression progress
</p>

<p>
<b>Proponent:</b> Jürgen Schmidhuber
</p>

<p>
<b>Proposed metrics:</b> Measures based on Compression Progress;
improvement in predictive models driven by intrinsic motivation and
curiosity
</p>

<p>
<b>Perspective:</b> Highlights the role of intrinsic motivation,
curiosity, and data compression in discovering new patterns and
behaviors.
</p>
</div>
<div id="outline-container-org731bc47" class="outline-3">
<h3 id="org731bc47"><span class="section-number-3">3.1.</span> References</h3>
<div class="outline-text-3" id="text-3-1">
<ol class="org-ol">
<li><a name="schmidhuber"
      target="_blank"
      href="https://youtu.be/q4fFuZgOZn8?si=Da1V2AUcpl5WorUH">Schmidhuber
      on consciousness</a>:
      intelligence [and conciousness] is a byproduct of data
      compression</li>
<li><a name="schmidhubber-blog"
      target="_blank"
      href="https://people.idsia.ch/~juergen/blog.html">AI Blog</a>:
      Schmidhuber's AI Blog</li>
</ol>
</div>
</div>
</div>
<div id="outline-container-mainstream" class="outline-2">
<h2 id="mainstream"><span class="section-number-2">4.</span> Mainstream AI: Task-specific metrics</h2>
<div class="outline-text-2" id="text-mainstream">
<p>
<b>Definition:</b> Intelligence is often operationally defined by
performance on specific tasks or benchmarks without a unified
overarching definition
</p>

<p>
<b>Proponent:</b> Various
</p>

<p>
<b>Proposed metrics:</b> Task-specific metrics such as Accuracy, F1
Score, BLEU Score, etc., depending on the task
</p>

<p>
<b>Perspective:</b> Focuses on empirical performance in narrow
domains, emphasizing results on established benchmarks over a
holistic definition of intelligence
</p>
</div>
<div id="outline-container-orgaf43184" class="outline-3">
<h3 id="orgaf43184"><span class="section-number-3">4.1.</span> References</h3>
<div class="outline-text-3" id="text-4-1">
<ol class="org-ol">
<li><a name="amzn-ai-russel-norvig"
      target="_blank"
      href="https://amzn.to/3Y1D9Z8">Russel, Norvig</a>:
      Artificial Intelligence: a modern approach</li>
</ol>
</div>
</div>
</div>
<div id="outline-container-psychometrics" class="outline-2">
<h2 id="psychometrics"><span class="section-number-2">5.</span> Psychometrics: Intelligence Quotient (IQ)</h2>
<div class="outline-text-2" id="text-psychometrics">
<p>
<b>Definition:</b> Intelligence is the capacity for reasoning,
problem-solving, planning, abstract thinking, understanding complex
ideas, and learning from experience
</p>

<p>
<b>Proponent:</b> Psychometrics
</p>

<p>
<b>Proposed metrics:</b> Intelligence Quotient (IQ); standardized tests
measuring various cognitive abilities
</p>

<p>
<b>Perspective:</b> Emphasizes quantifiable cognitive abilities and
compares individuals to population norms, focusing on human
intelligence assessment 
</p>
</div>
<div id="outline-container-org5dd92f7" class="outline-3">
<h3 id="org5dd92f7"><span class="section-number-3">5.1.</span> References</h3>
<div class="outline-text-3" id="text-5-1">
<ol class="org-ol">
<li><a name="g-factor"
      target="_blank"
      href="https://en.wikipedia.org/wiki/G_factor_(psychometrics)">g factor</a>:
      a variable that summarizes positive correlations among different cognitive tasks</li>
<li><a name="iq"
      target="_blank"
      href="https://en.wikipedia.org/wiki/Intelligence_quotient">IQ</a>:
      Intelligence Quotient</li>
</ol>
</div>
</div>
</div>
<div id="outline-container-superintelligence" class="outline-2">
<h2 id="superintelligence"><span class="section-number-2">6.</span> Bostrom: Superintelligence</h2>
<div class="outline-text-2" id="text-superintelligence">
<p>
<b>Definition:</b> Superintelligence refers to an intellect that greatly
surpasses the cognitive performance of humans in virtually all
domains of interest
</p>

<p>
<b>Proponent:</b> Nick Bostrom
</p>

<p>
<b>Proposed metrics:</b> No specific metric; concept explores potential
capabilities beyond human levels 
</p>

<p>
<b>Perspective:</b> Focuses on the implications, risks, and ethics
associated with creating intelligences that far exceed human
cognitive abilities 
</p>
</div>
<div id="outline-container-org862ec52" class="outline-3">
<h3 id="org862ec52"><span class="section-number-3">6.1.</span> References</h3>
<div class="outline-text-3" id="text-6-1">
<ol class="org-ol">
<li><a name="amzn-bostrom"
       target="_blank"
       href="https://amzn.to/4eJOB1d">Superintelligence</a>:
       Paths, Dangers, and Strategies</li>
</ol>
</div>
</div>
</div>
<div id="outline-container-ethology" class="outline-2">
<h2 id="ethology"><span class="section-number-2">7.</span> Ethology: Animal intelligence</h2>
<div class="outline-text-2" id="text-ethology">
<p>
<b>Definition:</b> Intelligence is the ability of an animal to adapt to
its environment, learn from experiences, solve problems, and use
tools 
</p>

<p>
<b>Proponent:</b> Ethology
</p>

<p>
<b>Proposed metrics:</b> Behavioral tests assessing problem-solving, tool
use, social learning, and communication abilities 
</p>

<p>
<b>Perspective:</b> Studies intelligence across different species,
emphasizing evolutionary adaptations and ecological contexts 
</p>
</div>
<div id="outline-container-orgcb869d4" class="outline-3">
<h3 id="orgcb869d4"><span class="section-number-3">7.1.</span> References</h3>
<div class="outline-text-3" id="text-7-1">
<ol class="org-ol">
<li><a name="wiki-animal-cog"
       target="_blank"
       href="https://en.wikipedia.org/wiki/Animal_cognition">Wikipedia</a>:
       Animal cognition</li>
</ol>
</div>
</div>
</div>
<div id="outline-container-agi" class="outline-2">
<h2 id="agi"><span class="section-number-2">8.</span> Human-like AI: Artificial General Intelligence (AGI)</h2>
<div class="outline-text-2" id="text-agi">
<p>
<b>Definition:</b> Intelligence is the ability of an artificial agent to
understand, learn, and apply knowledge in a general, human-like way
across a wide range of tasks and domains 
</p>

<p>
<b>Proponent:</b> Various
</p>

<p>
<b>Proposed metrics:</b> No standardized metric yet; Turing Test, general
AI benchmarks, and evaluations across diverse tasks are used 
</p>

<p>
<b>Perspective:</b> Aims to develop machines with general cognitive
abilities comparable to humans, capable of understanding and
reasoning across various contexts 
</p>
</div>
<div id="outline-container-org8d966ff" class="outline-3">
<h3 id="org8d966ff"><span class="section-number-3">8.1.</span> References</h3>
<div class="outline-text-3" id="text-8-1">
<ol class="org-ol">
<li><a name="wiki-agi"
       target="_blank"
       href="https://en.wikipedia.org/wiki/Artificial_general_intelligence">Wikipedia</a>:
       Artificial General Intelligence</li>
</ol>
</div>
</div>
</div>]]></content><author><name></name></author><category term="journal" /><category term="journal" /><category term="ai" /><category term="intelligence" /><category term="definition" /><summary type="html"><![CDATA[A reference card for definitions of intelligence. This entry attempts to summarize the definitions of intelligence that I am familiar with. It is the result of trying to organize my thoughts on the subject. When reading multiple sources from various fields that address the concept of intelligence, perspectives can differ. Sometimes, it even seems as though they are discussing entirely different topics. Disclosure: Some of the links below are affiliate links. This means that if you click through and make a purchase, I may earn a small commission at no extra cost to you. 1. Chollet: Intelligence as learning efficiency Definition: Intelligence is the efficiency with which a learning system turns experience and priors into general skill at previously unseen tasks Proponent: François Chollet Proposed metrics: Skill Acquisition Efficiency (SAE) Perspective: Emphasizes generalization and the ability to learn new tasks quickly from limited data. 1.1. References Chollet: proposes a benchmark for intelligence, the ARC challenge 2. Hutter: Universal Artificial Intelligence Definition: Intelligence measures the ability of an agent to achieve goals in a wide range of environments Proponent: Marcus Hutter Proposed metrics: Universal Intelligence Measure (UIM); a formal mathematical definition summing over all computable reward functions weighted by their simplicity. Perspective: Provides a formal, mathematical framework based on algorithmic information theory to define and measure intelligence. 2.1. References AIXI: Marcus Hutter's AIXI model for Universal Artificial Intelligence Hutter: Books by Marcus Hutter on Amazon 3. Schmidhuber: Compression progress Definition: Intelligence is the ability to generate novel, interesting actions or data by maximizing future expected reward or compression progress Proponent: Jürgen Schmidhuber Proposed metrics: Measures based on Compression Progress; improvement in predictive models driven by intrinsic motivation and curiosity Perspective: Highlights the role of intrinsic motivation, curiosity, and data compression in discovering new patterns and behaviors. 3.1. References Schmidhuber on consciousness: intelligence [and conciousness] is a byproduct of data compression AI Blog: Schmidhuber's AI Blog 4. Mainstream AI: Task-specific metrics Definition: Intelligence is often operationally defined by performance on specific tasks or benchmarks without a unified overarching definition Proponent: Various Proposed metrics: Task-specific metrics such as Accuracy, F1 Score, BLEU Score, etc., depending on the task Perspective: Focuses on empirical performance in narrow domains, emphasizing results on established benchmarks over a holistic definition of intelligence 4.1. References Russel, Norvig: Artificial Intelligence: a modern approach 5. Psychometrics: Intelligence Quotient (IQ) Definition: Intelligence is the capacity for reasoning, problem-solving, planning, abstract thinking, understanding complex ideas, and learning from experience Proponent: Psychometrics Proposed metrics: Intelligence Quotient (IQ); standardized tests measuring various cognitive abilities Perspective: Emphasizes quantifiable cognitive abilities and compares individuals to population norms, focusing on human intelligence assessment 5.1. References g factor: a variable that summarizes positive correlations among different cognitive tasks IQ: Intelligence Quotient 6. Bostrom: Superintelligence Definition: Superintelligence refers to an intellect that greatly surpasses the cognitive performance of humans in virtually all domains of interest Proponent: Nick Bostrom Proposed metrics: No specific metric; concept explores potential capabilities beyond human levels Perspective: Focuses on the implications, risks, and ethics associated with creating intelligences that far exceed human cognitive abilities 6.1. References Superintelligence: Paths, Dangers, and Strategies 7. Ethology: Animal intelligence Definition: Intelligence is the ability of an animal to adapt to its environment, learn from experiences, solve problems, and use tools Proponent: Ethology Proposed metrics: Behavioral tests assessing problem-solving, tool use, social learning, and communication abilities Perspective: Studies intelligence across different species, emphasizing evolutionary adaptations and ecological contexts 7.1. References Wikipedia: Animal cognition 8. Human-like AI: Artificial General Intelligence (AGI) Definition: Intelligence is the ability of an artificial agent to understand, learn, and apply knowledge in a general, human-like way across a wide range of tasks and domains Proponent: Various Proposed metrics: No standardized metric yet; Turing Test, general AI benchmarks, and evaluations across diverse tasks are used Perspective: Aims to develop machines with general cognitive abilities comparable to humans, capable of understanding and reasoning across various contexts 8.1. References Wikipedia: Artificial General Intelligence]]></summary></entry><entry><title type="html">Distributed agile teams</title><link href="https://blog.pgpadilla.com/2024-08-16-distributed-agile-teams" rel="alternate" type="text/html" title="Distributed agile teams" /><published>2024-08-16T00:00:00+02:00</published><updated>2024-08-16T00:00:00+02:00</updated><id>https://blog.pgpadilla.com/distributed-agile-teams</id><content type="html" xml:base="https://blog.pgpadilla.com/2024-08-16-distributed-agile-teams"><![CDATA[<p>
Can distributed teams be agile? Does Jira kill agility? 
</p>

<p>
I was scrolling LinkedIn when I saw a picture of Jira executing a
wrestling splash on Agility. It triggered a train of thought about the
place for tools like Jira in the context of distributed teams that
span different time zones and on which the team members often have to
split their attention into multiple projects.
</p>


<div style="text-align: center">
  <img src="/assets/images/jira-splash-agility.png" style="width: 50%">
</div>


<p>
In my experience as a software engineer, I have seen that the words
Agile, Scrum, and Kanban are often used interchangeably. One reason
for this is that the key ideas of each one fits really well with the
others. These ways of work share some assumptions:
</p>

<ol class="org-ol">
<li>Team co-location: everybody is in the same geographical location,
building, or room</li>
<li>Undivided attention: each person contributes to a single
team/project/product</li>
</ol>


<p>
How can distributed teams remain agile when these two assumptions are
broken? Before we go into the challenges that distributed teams face,
let's take a quick look at key differences between Agile, Scrum and
Kanban.
</p>

<ol class="org-ol">
<li>Agile: originated in software development with a focus on
delivery of value through close collaboration with customers and being
flexible in responding to change</li>
<li>SCRUM: originated in software development with a focus on time-boxed
delivery cycles (iterations) with a fixed scope</li>
<li>Kanban: originated in manufacturing with a focus on visualizing
work, managing flow, and reducing waste</li>
</ol>


<p>
The fact that the terms are used interchangeably it's a reminder of
how similar the philosophies are. These ways of working are
complementary and teams mix and match practices from all
of them without batting an eyelash.
</p>
<div id="outline-container-org7442306" class="outline-2">
<h2 id="org7442306"><span class="section-number-2">1.</span> Documentation as communication</h2>
<div class="outline-text-2" id="text-1">
<p>
The distinction between communication and documentation can be
blurry for distributed teams. Recorded communication can be seen as
extended documentation, at the same time, documentation is a form of
communication.
</p>

<p>
Distributed teams can use recorded communication like chat, email,
comments, etc. to bridge the gap created by geography. As long as
communication is given priority over the tools or processes, the use
of documentation as communication seems to maintain the spirit of
the agile manifesto.
</p>
</div>
</div>
<div id="outline-container-orgf1e217e" class="outline-2">
<h2 id="orgf1e217e"><span class="section-number-2">2.</span> Communication through a central channel</h2>
<div class="outline-text-2" id="text-2">
<p>
Some complex tasks require sharing context with multiple people.
Consolidating context in a central location such as Jira/Wiki, makes
it easier to onboard newcomers.
</p>
</div>
</div>
<div id="outline-container-org347eb2e" class="outline-2">
<h2 id="org347eb2e"><span class="section-number-2">3.</span> Documentation and context switching</h2>
<div class="outline-text-2" id="text-3">
<p>
Distributed teams are often composed of individuals that participate
in multiple projects simultaneously. Individuals who have to split
their attention into multiple projects reduce the impact created by
context switching by documenting useful details, such as the current
status, and planned next steps.
</p>
</div>
</div>
<div id="outline-container-orgd51e089" class="outline-2">
<h2 id="orgd51e089"><span class="section-number-2">4.</span> Tools don't kill agility, people do</h2>
<div class="outline-text-2" id="text-4">
<p>
For distributed teams, systems like Jira serve as a central place
for coordinating work. I find it intriguing that people with
technical IT skills often forget the value of systems like JIRA and
at the same time they can deliver complex systems. Jira is bloated
and could offer better user experience but it does not impose any
workflow or methodology.
</p>
</div>
</div>
<div id="outline-container-orgda612bc" class="outline-2">
<h2 id="orgda612bc"><span class="section-number-2">5.</span> Every project management tool wants to become like JIRA</h2>
<div class="outline-text-2" id="text-5">
<p>
In principle, e-mail is sufficient. However, once you get used to
the amenities of modern collaboration tools, it's hard to go back
and use only e-mail. Popular collaboration tools seem to be
converging in terms of features like creating a task from a chat
conversation, tracking status, assigning, visualizing tasks and
their relationships, linking to code or documentation, etc. Tools
that started with one of these features continue adding more
features until they cover all the basics of project management.
</p>

<p>
Companies arrive to systems like JIRA by taking a
holistic/integrated approach. It's not perfect, but the available
options are only a round of funding away from becoming like Jira.
</p>

<p>
Project management and collaboration is a complex domain, which
explains why most tools offer a terrible user experience. I always
remind myself that it could be worse, imagine doing project
management only with email and PowerPoint. 
</p>
</div>
</div>]]></content><author><name></name></author><category term="journal" /><category term="software" /><category term="journal" /><category term="agile" /><category term="teams" /><category term="software" /><category term="distributed" /><summary type="html"><![CDATA[Can distributed teams be agile? Does Jira kill agility? I was scrolling LinkedIn when I saw a picture of Jira executing a wrestling splash on Agility. It triggered a train of thought about the place for tools like Jira in the context of distributed teams that span different time zones and on which the team members often have to split their attention into multiple projects. In my experience as a software engineer, I have seen that the words Agile, Scrum, and Kanban are often used interchangeably. One reason for this is that the key ideas of each one fits really well with the others. These ways of work share some assumptions: Team co-location: everybody is in the same geographical location, building, or room Undivided attention: each person contributes to a single team/project/product How can distributed teams remain agile when these two assumptions are broken? Before we go into the challenges that distributed teams face, let's take a quick look at key differences between Agile, Scrum and Kanban. Agile: originated in software development with a focus on delivery of value through close collaboration with customers and being flexible in responding to change SCRUM: originated in software development with a focus on time-boxed delivery cycles (iterations) with a fixed scope Kanban: originated in manufacturing with a focus on visualizing work, managing flow, and reducing waste The fact that the terms are used interchangeably it's a reminder of how similar the philosophies are. These ways of working are complementary and teams mix and match practices from all of them without batting an eyelash. 1. Documentation as communication The distinction between communication and documentation can be blurry for distributed teams. Recorded communication can be seen as extended documentation, at the same time, documentation is a form of communication. Distributed teams can use recorded communication like chat, email, comments, etc. to bridge the gap created by geography. As long as communication is given priority over the tools or processes, the use of documentation as communication seems to maintain the spirit of the agile manifesto. 2. Communication through a central channel Some complex tasks require sharing context with multiple people. Consolidating context in a central location such as Jira/Wiki, makes it easier to onboard newcomers. 3. Documentation and context switching Distributed teams are often composed of individuals that participate in multiple projects simultaneously. Individuals who have to split their attention into multiple projects reduce the impact created by context switching by documenting useful details, such as the current status, and planned next steps. 4. Tools don't kill agility, people do For distributed teams, systems like Jira serve as a central place for coordinating work. I find it intriguing that people with technical IT skills often forget the value of systems like JIRA and at the same time they can deliver complex systems. Jira is bloated and could offer better user experience but it does not impose any workflow or methodology. 5. Every project management tool wants to become like JIRA In principle, e-mail is sufficient. However, once you get used to the amenities of modern collaboration tools, it's hard to go back and use only e-mail. Popular collaboration tools seem to be converging in terms of features like creating a task from a chat conversation, tracking status, assigning, visualizing tasks and their relationships, linking to code or documentation, etc. Tools that started with one of these features continue adding more features until they cover all the basics of project management. Companies arrive to systems like JIRA by taking a holistic/integrated approach. It's not perfect, but the available options are only a round of funding away from becoming like Jira. Project management and collaboration is a complex domain, which explains why most tools offer a terrible user experience. I always remind myself that it could be worse, imagine doing project management only with email and PowerPoint.]]></summary></entry><entry><title type="html">Illuminating the Mind: A Journey Toward Enlightenment</title><link href="https://blog.pgpadilla.com/2024-08-09-optocap" rel="alternate" type="text/html" title="Illuminating the Mind: A Journey Toward Enlightenment" /><published>2024-08-09T00:00:00+02:00</published><updated>2024-08-09T00:00:00+02:00</updated><id>https://blog.pgpadilla.com/optocap</id><content type="html" xml:base="https://blog.pgpadilla.com/2024-08-09-optocap"><![CDATA[<p>
In the near future, NeuroLight Corporation revolutionized neuroscience
with a procedure that replaced the top of the human skull with an
artificial cap. This "OptoCap" embedded with micro-scale light
emitters, allowed precise control over brain activity through
optogenetics—a technique that used light to manipulate neurons
engineered to be light-sensitive. 
</p>

<p>
<b>Disclaimer: this post was created with ChatGPT, an AI language
model.</b>
</p>

<div style="text-align: center">
  <img src="/assets/images/optocap.png" style="width: 50%">
</div>
<div id="outline-container-org99dbf7b" class="outline-2">
<h2 id="org99dbf7b"><span class="section-number-2">1.</span> The Decision</h2>
<div class="outline-text-2" id="text-1">
<p>
Lena sat in the waiting room of NeuroLight Corporation, surrounded
by holographic displays promoting the incredible achievements of
those enhanced by the OptoCap.
</p>

<p>
"Ms. Torres?" called Ethan, a consultant with a polished
demeanor. He ushered her into a futuristic office and gestured for
her to sit.
</p>

<p>
“You’re about to unlock your full potential,” Ethan began,
projecting an image of a brain onto the glass table between
them. “The OptoCap can amplify your confidence, intelligence,
creativity—whatever you need.”
</p>

<p>
Lena had always been cautious, but the promise of self-improvement
was enticing. “Can it really make me more decisive?”
</p>

<p>
“With optogenetic programming, you can reshape your neural pathways
to strengthen any trait you desire,” Ethan explained. “Imagine
eliminating self-doubt or boosting your cognitive speed.”
</p>

<p>
Lena’s resolve hardened. “Let’s do it.”
</p>
</div>
</div>
<div id="outline-container-org6dcce49" class="outline-2">
<h2 id="org6dcce49"><span class="section-number-2">2.</span> The Installation</h2>
<div class="outline-text-2" id="text-2">
<p>
The procedure was quick. Lena awoke feeling a slight weight on her
head, her cap glowing faintly.
</p>

<p>
“Welcome to your new life, Lena,” Dr. Harmon, the chief scientist,
said as he handed her a sleek control tablet. “With this, you can
select programs to modulate brain states.”
</p>

<p>
Lena marveled at the array of options. She felt powerful, like an
artist with an unlimited palette.
</p>
</div>
</div>
<div id="outline-container-org0dc0969" class="outline-2">
<h2 id="org0dc0969"><span class="section-number-2">3.</span> The Exploration</h2>
<div class="outline-text-2" id="text-3">
<p>
Within days, Lena transformed. Her confidence surged, making her an
instant leader at work. The OptoCap’s programs allowed her to adjust
her mood and cognition with a few taps.
</p>

<p>
At home, she selected the "Creative Boost" setting for an upcoming
project. Waves of inspiration washed over her, unlocking ideas she
never imagined.
</p>

<p>
One evening, as she explored deeper into her cap’s settings, Lena
found an unfamiliar program. When she opened it, memories of board
meetings and conversations she didn’t remember participating in
flooded her mind.
</p>
</div>
</div>
<div id="outline-container-org3ca6426" class="outline-2">
<h2 id="org3ca6426"><span class="section-number-2">4.</span> The Revelation</h2>
<div class="outline-text-2" id="text-4">
<p>
Alarmed, Lena contacted Ethan. He arrived quickly, his usual composure
replaced by nervousness.
</p>

<p>
“Lena, I assure you, everything is fine,” he began, but Lena cut him
off.
</p>

<p>
“I found a program logging my thoughts. What is NeuroLight doing?”
</p>

<p>
Ethan hesitated. “There are built-in data collection systems. The
company uses them to monitor user feedback&#x2026;and sometimes influence.”
</p>

<p>
“Influence?” Lena repeated, incredulous. “You mean control.”
</p>

<p>
Ethan nodded, cornered. “It’s part of ensuring compliance and
optimizing the system.”
</p>

<p>
Realization struck Lena—she was being manipulated. Her mind was not
her own.
</p>
</div>
</div>]]></content><author><name></name></author><category term="sci-fi" /><category term="shorts" /><category term="optogenetics" /><category term="sci-fi" /><category term="shorts" /><summary type="html"><![CDATA[In the near future, NeuroLight Corporation revolutionized neuroscience with a procedure that replaced the top of the human skull with an artificial cap. This "OptoCap" embedded with micro-scale light emitters, allowed precise control over brain activity through optogenetics—a technique that used light to manipulate neurons engineered to be light-sensitive. Disclaimer: this post was created with ChatGPT, an AI language model. 1. The Decision Lena sat in the waiting room of NeuroLight Corporation, surrounded by holographic displays promoting the incredible achievements of those enhanced by the OptoCap. "Ms. Torres?" called Ethan, a consultant with a polished demeanor. He ushered her into a futuristic office and gestured for her to sit. “You’re about to unlock your full potential,” Ethan began, projecting an image of a brain onto the glass table between them. “The OptoCap can amplify your confidence, intelligence, creativity—whatever you need.” Lena had always been cautious, but the promise of self-improvement was enticing. “Can it really make me more decisive?” “With optogenetic programming, you can reshape your neural pathways to strengthen any trait you desire,” Ethan explained. “Imagine eliminating self-doubt or boosting your cognitive speed.” Lena’s resolve hardened. “Let’s do it.” 2. The Installation The procedure was quick. Lena awoke feeling a slight weight on her head, her cap glowing faintly. “Welcome to your new life, Lena,” Dr. Harmon, the chief scientist, said as he handed her a sleek control tablet. “With this, you can select programs to modulate brain states.” Lena marveled at the array of options. She felt powerful, like an artist with an unlimited palette. 3. The Exploration Within days, Lena transformed. Her confidence surged, making her an instant leader at work. The OptoCap’s programs allowed her to adjust her mood and cognition with a few taps. At home, she selected the "Creative Boost" setting for an upcoming project. Waves of inspiration washed over her, unlocking ideas she never imagined. One evening, as she explored deeper into her cap’s settings, Lena found an unfamiliar program. When she opened it, memories of board meetings and conversations she didn’t remember participating in flooded her mind. 4. The Revelation Alarmed, Lena contacted Ethan. He arrived quickly, his usual composure replaced by nervousness. “Lena, I assure you, everything is fine,” he began, but Lena cut him off. “I found a program logging my thoughts. What is NeuroLight doing?” Ethan hesitated. “There are built-in data collection systems. The company uses them to monitor user feedback&#x2026;and sometimes influence.” “Influence?” Lena repeated, incredulous. “You mean control.” Ethan nodded, cornered. “It’s part of ensuring compliance and optimizing the system.” Realization struck Lena—she was being manipulated. Her mind was not her own.]]></summary></entry><entry><title type="html">The fork</title><link href="https://blog.pgpadilla.com/2024-08-08-the-fork" rel="alternate" type="text/html" title="The fork" /><published>2024-08-08T00:00:00+02:00</published><updated>2024-08-08T00:00:00+02:00</updated><id>https://blog.pgpadilla.com/the-fork</id><content type="html" xml:base="https://blog.pgpadilla.com/2024-08-08-the-fork"><![CDATA[<p>
Explore a world reshaped by guided evolution, where a privileged
class challenges traditional norms and steers humanity to unexpected
fates.   
</p>


<p>
<b>Disclaimer: this post was created with ChatGPT, an AI language model.</b>
</p>

<div style="text-align: center">
  <img src="/assets/images/the-fork.png" style="width: 50%">
</div>
<div id="outline-container-org8f5e253" class="outline-2">
<h2 id="org8f5e253"><span class="section-number-2">1.</span> Take 1: Endless forms</h2>
<div class="outline-text-2" id="text-1">
<p>
In the year 2160, the city of Aria stood as a beacon of progress and
unity. Here, the Selected, a privileged class born sterile due to
atypical sex differentiation, had risen to power. For centuries,
they had been marginalized due to their inability to reproduce
traditionally, but with advancements in genetic engineering, they
found a new purpose.
</p>

<p>
The Selected devised a system where offspring were created through a
combination of their original DNA and advanced genetic
engineering. This method allowed the creation of highly adaptive,
intelligent, and emotionally balanced humans who were celebrated as
the "Neo-Gens." The old societal emphasis on sexual reproduction
dwindled, as the Neo-Gens quickly demonstrated extraordinary talents
and harmonious temperaments.
</p>

<p>
With the Selected in leadership positions, they shifted governmental
incentives to focus on intellectual and creative contributions rather
than traditional family structures. Those who excelled in arts,
sciences, and community leadership were rewarded with resources and
opportunities, fostering a society driven by merit and innovation.
</p>

<p>
As decades passed, the city of Aria flourished. Conflicts over
resources diminished, as collaboration became the cornerstone of
society. With genetic diversity and innovation at the forefront,
diseases that plagued the human race for centuries were eradicated,
and the environment thrived under careful stewardship.
</p>

<p>
Elders sat in the serene Gardens of Aria, observing children playing—a
new generation that knew no prejudice or inequality. The Selected
watched with pride, knowing they had not only survived but had
reshaped humanity's fate.
</p>
</div>
</div>
<div id="outline-container-org1489047" class="outline-2">
<h2 id="org1489047"><span class="section-number-2">2.</span> Take 2: The future is sterile</h2>
<div class="outline-text-2" id="text-2">
<p>
By 2160, the Omega Line, once a marginalized class, defined by their
sterility, had seized control of the city of Aria. With
advancements in genetic engineering, they began creating offspring
not through traditional means but by combining their DNA with
engineered enhancements, producing the Neo-Gens.
</p>

<p>
The shift from sexual reproduction to engineered births led
to societal unrest. Traditional families, feeling threatened by the
new system, protested against what they saw as an erosion of human
nature. The government, now dominated by the Omega Line, responded
with strict laws that favored the Neo-Gens, marginalizing those who
clung to old ways.
</p>

<p>
The promise of progress gave way to control. Society split into two
classes: the genetically engineered Neo-Gens and the "Naturals," those
born through traditional reproduction. Naturals faced increasing
discrimination, relegated to menial jobs, and barred from leadership
roles.
</p>

<p>
As the divide deepened, Aria became a city under surveillance, where
dissenters were swiftly silenced. The Omega Line, in their bid to
maintain control, implemented a draconian regime, manipulating
genetics to create a generation of Neo-Gens devoid of free will.
</p>

<p>
Hope flickered among the Naturals, who formed underground resistance
groups, determined to restore the balance and ensure diversity in
human evolution. But the Omega Line's grip was strong, and for every
small victory, the resistance suffered great losses.
</p>

<p>
Life continues in the city as the Omega Line maintains a firm grip
on the government. Stories circulate about Normals walking
among the general population, though no one has had direct contact
with them since the fork.   
</p>
</div>
</div>]]></content><author><name></name></author><category term="sci-fi" /><category term="sci-fi" /><category term="shorts" /><category term="diversity" /><summary type="html"><![CDATA[Explore a world reshaped by guided evolution, where a privileged class challenges traditional norms and steers humanity to unexpected fates. Disclaimer: this post was created with ChatGPT, an AI language model. 1. Take 1: Endless forms In the year 2160, the city of Aria stood as a beacon of progress and unity. Here, the Selected, a privileged class born sterile due to atypical sex differentiation, had risen to power. For centuries, they had been marginalized due to their inability to reproduce traditionally, but with advancements in genetic engineering, they found a new purpose. The Selected devised a system where offspring were created through a combination of their original DNA and advanced genetic engineering. This method allowed the creation of highly adaptive, intelligent, and emotionally balanced humans who were celebrated as the "Neo-Gens." The old societal emphasis on sexual reproduction dwindled, as the Neo-Gens quickly demonstrated extraordinary talents and harmonious temperaments. With the Selected in leadership positions, they shifted governmental incentives to focus on intellectual and creative contributions rather than traditional family structures. Those who excelled in arts, sciences, and community leadership were rewarded with resources and opportunities, fostering a society driven by merit and innovation. As decades passed, the city of Aria flourished. Conflicts over resources diminished, as collaboration became the cornerstone of society. With genetic diversity and innovation at the forefront, diseases that plagued the human race for centuries were eradicated, and the environment thrived under careful stewardship. Elders sat in the serene Gardens of Aria, observing children playing—a new generation that knew no prejudice or inequality. The Selected watched with pride, knowing they had not only survived but had reshaped humanity's fate. 2. Take 2: The future is sterile By 2160, the Omega Line, once a marginalized class, defined by their sterility, had seized control of the city of Aria. With advancements in genetic engineering, they began creating offspring not through traditional means but by combining their DNA with engineered enhancements, producing the Neo-Gens. The shift from sexual reproduction to engineered births led to societal unrest. Traditional families, feeling threatened by the new system, protested against what they saw as an erosion of human nature. The government, now dominated by the Omega Line, responded with strict laws that favored the Neo-Gens, marginalizing those who clung to old ways. The promise of progress gave way to control. Society split into two classes: the genetically engineered Neo-Gens and the "Naturals," those born through traditional reproduction. Naturals faced increasing discrimination, relegated to menial jobs, and barred from leadership roles. As the divide deepened, Aria became a city under surveillance, where dissenters were swiftly silenced. The Omega Line, in their bid to maintain control, implemented a draconian regime, manipulating genetics to create a generation of Neo-Gens devoid of free will. Hope flickered among the Naturals, who formed underground resistance groups, determined to restore the balance and ensure diversity in human evolution. But the Omega Line's grip was strong, and for every small victory, the resistance suffered great losses. Life continues in the city as the Omega Line maintains a firm grip on the government. Stories circulate about Normals walking among the general population, though no one has had direct contact with them since the fork.]]></summary></entry><entry><title type="html">Vorherbestimmt von Robert Sapolsky</title><link href="https://blog.pgpadilla.com/2024-04-24-sapolsky-vorherbestimmt" rel="alternate" type="text/html" title="Vorherbestimmt von Robert Sapolsky" /><published>2024-04-24T18:20:00+02:00</published><updated>2024-04-24T18:20:00+02:00</updated><id>https://blog.pgpadilla.com/sapolsky-vorherbestimmt</id><content type="html" xml:base="https://blog.pgpadilla.com/2024-04-24-sapolsky-vorherbestimmt"><![CDATA[<p>
"Vorherbestimmt" ist ein Buch von Robert Sapolsky, in dem der Autor
für den Determinismus argumentiert. 
</p>

<div class="amzn-disclaimer">
  <p>
    <strong>Disclosure:</strong> Some of the links below are affiliate
    links. This means that if you click through and make a purchase, I
    may earn a small commission at no extra cost to you.
  </p>
</div>



<p>
Sapolsky erklärt, dass Freier Wille bedeutet, nicht nur seine eigenen
Handlungen, sondern auch seine eigene Absicht wählen zu können.
</p>

<p>
Eines der bekanntesten Experimente zum Thema Freier Wille sind die
Libet-Experimente, die zeigen, dass Handlungen ausgeführt werden,
bevor man sich ihrer eigenen Handlungen bewusst ist.
</p>

<div style="text-align: center">
  <iframe width="427"
          height="240"
          src="https://www.youtube.com/embed/OjCt-L0Ph5o"
          title="The Libet Experiment: Is Free Will Just an Illusion?"
          frameborder="0"
          allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
          referrerpolicy="strict-origin-when-cross-origin"
          allowfullscreen></iframe>
</div>


<p>
Im Libet-Experiment werden jedoch nur die kurzen Momente vor den
Handlungen analysiert, was Sapolsky als unzureichend empfindet. Laut
Sapolskys Definition von Freiem Willen können wir die entfernten
Ursachen des Verhaltens nicht ignorieren. Das bedeutet, wir müssen
nicht nur die Millisekunden, Minuten und Stunden vor der Handlung
analysieren, sondern auch die vorherigen Jahre, Jahrzehnte,
Jahrhunderte usw. Um etwas als Freien Willen zu bezeichnen, müssen wir
die unverursachte Ursache finden.
</p>

<p>
Nur die unmittelbare Vergangenheit der Handlungen zu betrachten, ist
laut Sapolsky, wie nur die letzten drei Minuten eines Films zu
sehen. Freiem Willen die Anerkennung für seine Handlungen zu geben,
ist ein Eingeständnis, die Ursachen nicht zu kennen.
</p>

<p>
<a href="https://amzn.to/3N1sBTF"
          target="_blank">
         Kauf das Buch bei Amazon
       </a>
</p>]]></content><author><name></name></author><category term="journal" /><category term="deutsch" /><category term="buch" /><category term="sapolsky" /><category term="free-will" /><category term="bio" /><category term="journal" /><category term="deutsch" /><summary type="html"><![CDATA["Vorherbestimmt" ist ein Buch von Robert Sapolsky, in dem der Autor für den Determinismus argumentiert. Disclosure: Some of the links below are affiliate links. This means that if you click through and make a purchase, I may earn a small commission at no extra cost to you. Sapolsky erklärt, dass Freier Wille bedeutet, nicht nur seine eigenen Handlungen, sondern auch seine eigene Absicht wählen zu können. Eines der bekanntesten Experimente zum Thema Freier Wille sind die Libet-Experimente, die zeigen, dass Handlungen ausgeführt werden, bevor man sich ihrer eigenen Handlungen bewusst ist. Im Libet-Experiment werden jedoch nur die kurzen Momente vor den Handlungen analysiert, was Sapolsky als unzureichend empfindet. Laut Sapolskys Definition von Freiem Willen können wir die entfernten Ursachen des Verhaltens nicht ignorieren. Das bedeutet, wir müssen nicht nur die Millisekunden, Minuten und Stunden vor der Handlung analysieren, sondern auch die vorherigen Jahre, Jahrzehnte, Jahrhunderte usw. Um etwas als Freien Willen zu bezeichnen, müssen wir die unverursachte Ursache finden. Nur die unmittelbare Vergangenheit der Handlungen zu betrachten, ist laut Sapolsky, wie nur die letzten drei Minuten eines Films zu sehen. Freiem Willen die Anerkennung für seine Handlungen zu geben, ist ein Eingeständnis, die Ursachen nicht zu kennen. Kauf das Buch bei Amazon]]></summary></entry></feed>