<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Juan Pablo Abadía Medina]]></title><description><![CDATA[Practical lessons in blockchain, AI, and full-stack development. Exploring technology entrepreneurship, public innovation, and citizen participation.]]></description><link>https://juanpabloabadiamedina.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 14 Nov 2026 21:49:43 GMT</lastBuildDate><atom:link href="https://juanpabloabadiamedina.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Before Adding Blockchain or AI, Define What Must Be Verified]]></title><description><![CDATA[A technology project becomes more reliable when its team can explain how a result will be checked. Before choosing an AI model, a smart contract, or a…]]></description><link>https://juanpabloabadiamedina.hashnode.dev/before-adding-blockchain-or-ai-define-what-must-be-verified</link><guid isPermaLink="true">https://juanpabloabadiamedina.hashnode.dev/before-adding-blockchain-or-ai-define-what-must-be-verified</guid><dc:creator><![CDATA[juan pablo abadia medina]]></dc:creator><pubDate>Thu, 12 Nov 2026 20:27:50 GMT</pubDate><content:encoded><![CDATA[<p>A technology project becomes more reliable when its team can explain how a result will be checked.</p>
<p>Before choosing an AI model, a smart contract, or a database, I recommend answering four questions:</p>
<ol>
<li><strong>Source:</strong> Where does the original information come from?</li>
<li><strong>Authority:</strong> Who can create or modify it?</li>
<li><strong>Verification:</strong> How can another person reproduce the result?</li>
<li><strong>Recovery:</strong> What happens when a service fails or the information is incorrect?</li>
</ol>
<p>Consider a hypothetical product-traceability application. A blockchain transaction can provide evidence that a record existed at a particular point in the system's history. It cannot independently prove that the physical product was correctly identified.</p>
<p>That requires trustworthy data capture, operational controls, and an auditable connection between the physical and digital worlds.</p>
<p>The same principle applies to AI. A generated answer is not evidence until its sources and assumptions can be examined.</p>
<p>My approach to software development is to begin with the problem, define verification criteria, and introduce technology only where it provides measurable value.</p>
<p><strong>Discussion:</strong> What is the most difficult part of verification in the systems you build?</p>
<p><em>Juan Pablo Abadía Medina — Full-stack development, blockchain and AI.</em></p>
<p>#Blockchain #ArtificialIntelligence #SoftwareArchitecture #Web3</p>
]]></content:encoded></item><item><title><![CDATA[Before Adding AI to a Reporting Workflow, Define the Failure Cases]]></title><description><![CDATA[A reporting assistant can produce a convincing summary while quietly missing a row, misreading a date or combining incompatible data sources. That is why…]]></description><link>https://juanpabloabadiamedina.hashnode.dev/before-adding-ai-to-a-reporting-workflow-define-the-failure-cases</link><guid isPermaLink="true">https://juanpabloabadiamedina.hashnode.dev/before-adding-ai-to-a-reporting-workflow-define-the-failure-cases</guid><dc:creator><![CDATA[juan pablo abadia medina]]></dc:creator><pubDate>Thu, 12 Nov 2026 20:24:14 GMT</pubDate><content:encoded><![CDATA[<p>A reporting assistant can produce a convincing summary while quietly missing a row, misreading a date or combining incompatible data sources. That is why the first engineering decision should not be which model to use. It should be how the application detects an incorrect result.</p>
<p>Consider a small business that consolidates weekly sales. Start with a documented input format and validation rules. Reject missing mandatory fields. Record which files contributed to each report. Separate deterministic calculations from language generation, and require human approval before distribution.</p>
<p>Measure preparation time, correction frequency and the number of reports requiring manual intervention. Compare the new workflow against the existing process. If a script solves the problem reliably, an AI component may not be necessary.</p>
<p>For developers, the real challenge is building a system that remains understandable when something goes wrong. Observability, reproducibility and clear responsibility matter more than an impressive demonstration.</p>
<p>Juan Pablo Abadía Medina — Full-stack development, blockchain, AI and practical technology education.</p>
]]></content:encoded></item><item><title><![CDATA[Before Writing a Smart Contract, Define What You Need to Verify]]></title><description><![CDATA[A practical way to think about blockchain architecture, using a certificate verification example. A training provider wants to issue digital certificates…]]></description><link>https://juanpabloabadiamedina.hashnode.dev/before-writing-a-smart-contract-define-what-you-need-to-verify</link><guid isPermaLink="true">https://juanpabloabadiamedina.hashnode.dev/before-writing-a-smart-contract-define-what-you-need-to-verify</guid><category><![CDATA[Blockchain]]></category><category><![CDATA[Web3]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[Smart Contracts]]></category><category><![CDATA[Security]]></category><dc:creator><![CDATA[juan pablo abadia medina]]></dc:creator><pubDate>Tue, 10 Nov 2026 19:52:39 GMT</pubDate><content:encoded><![CDATA[<p>A practical way to think about blockchain architecture, using a certificate verification example.</p>
<p>A training provider wants to issue digital certificates. The first request sounds straightforward:</p>
<p>“Let’s put the certificates on a blockchain.”</p>
<p>Before opening a Solidity editor, I would want to understand what a verifier needs to know.</p>
<p>Does the certificate exist? Was it issued by an authorized organization? Has it been revoked? Does it belong to the person presenting it?</p>
<p>These are different questions. A useful architecture needs to address each one.</p>
<p>I’m Juan Pablo Abadía Medina, a full-stack developer, founder of Blockchain Technology S.A.S., and creator of Ponwi and Ponwi Academy. In this first article, I want to share how I approach a design question before committing to an implementation.</p>
<p>The example below is a hypothetical design exercise, rather than a description of a deployed product.</p>
<h2>1. Describe the verification process</h2>
<p>Imagine three participants:</p>
<ul>
<li>An issuer creates a certificate.</li>
<li>A learner receives it.</li>
<li>An employer checks it.</li>
</ul>
<p>A minimal verification process might need to establish:</p>
<ul>
<li>The issuer’s identity and authority.</li>
<li>The integrity of the certificate’s contents.</li>
<li>Its current status.</li>
<li>Its association with the person presenting it.</li>
</ul>
<p>Recording a certificate hash on a blockchain addresses only part of that process.</p>
<p>It can help establish that the submitted data matches a previously recorded fingerprint. The application still needs a trustworthy way to identify the issuer, interpret the record, and check revocation.</p>
<h2>2. Consider a conventional implementation</h2>
<p>An initial design could use a database, an issuer dashboard, and a public verification page.</p>
<p>The issuer creates a record. The learner receives a certificate containing a verification link. An employer opens that link and checks the current status.</p>
<p>That approach may be sufficient when participants accept the provider as the authority and can rely on its service remaining available.</p>
<p>Its dependencies should be explicit: verification relies on the provider’s domain, application, database, and operational security.</p>
<p>Understanding those dependencies gives us something concrete to compare with other designs.</p>
<h2>3. Ask what an independent record would add</h2>
<p>A blockchain-based registry becomes worth investigating when there is a requirement for verification beyond a single provider’s database.</p>
<p>For example, several independent issuers might need to publish records under a shared set of rules. Verifiers might want to inspect those records using their own infrastructure.</p>
<p>Even then, the team needs to decide:</p>
<ul>
<li>Who can register an issuer?</li>
<li>Who can issue or revoke a credential?</li>
<li>Can those permissions change?</li>
<li>Who controls upgrades?</li>
<li>What happens if an issuer loses control of a key?</li>
<li>Which network will support the registry, and who will maintain access to it?</li>
</ul>
<p>These decisions define the trust model. The contract implements part of it.</p>
<h2>4. Specify exactly what gets hashed</h2>
<p>“Store the document hash” leaves an important detail unresolved: which representation of the document?</p>
<p>Hashing the exact bytes of a PDF makes verification sensitive to any byte-level change. A visually identical PDF exported by another tool may have a different hash.</p>
<p>Hashing structured certificate data introduces another requirement: deterministic encoding. Field order, whitespace, character encoding, and date formatting must be handled consistently.</p>
<p>The design should specify:</p>
<ul>
<li>The fields included in verification.</li>
<li>Their encoding and normalization rules.</li>
<li>A format version.</li>
<li>The hashing algorithm.</li>
<li>How verifiers obtain the original data.</li>
</ul>
<p>Without a shared specification, the issuer and verifier can produce different fingerprints for information that appears identical to a person.</p>
<h2>5. Keep personal information out of the registry design</h2>
<p>For this example, I would begin with a requirement to keep names, identification numbers, email addresses, and certificate documents off-chain.</p>
<p>A registry could reference a credential fingerprint and status while the certificate itself is shared through an appropriate off-chain process.</p>
<p>A hash should not automatically be treated as anonymous. If the underlying information is predictable, someone may be able to guess candidate values and compare their hashes.</p>
<p>Privacy therefore needs to be considered when designing the credential format and verification flow, before choosing storage fields.</p>
<h2>6. Test failure scenarios before building the interface</h2>
<p>A successful demonstration proves that one expected path works. Architecture review also needs to examine what happens when something fails.</p>
<p>For this certificate example, I would test questions such as:</p>
<ul>
<li>Can an unauthorized account issue a credential?</li>
<li>What happens when the same credential is submitted twice?</li>
<li>How does verification display a revoked certificate?</li>
<li>What happens if the frontend cannot reach its RPC provider?</li>
<li>Does the interface distinguish a pending transaction from a confirmed record?</li>
<li>Can a verifier inspect the record without relying on the issuer’s website?</li>
</ul>
<p>The answers should influence both the contract and the user interface.</p>
<p>A verification page should explain what it checked and what remains outside its scope. A matching hash, for example, does not establish that a learner attended a course or earned a qualification honestly.</p>
<h2>My starting point</h2>
<p>For this hypothetical project, I would write a short verification specification before implementing the registry.</p>
<p>It would describe the participants, the claims being checked, the credential format, permission management, revocation, and failure handling.</p>
<p>Only then would I compare a database-backed service, digitally signed credentials, and a blockchain registry against those requirements.</p>
<p>That comparison gives the implementation a purpose—and gives future reviewers a way to assess whether it serves that purpose.</p>
<p>What requirement would make independent verification valuable in a system you are building?</p>
<hr />
<p><strong>Juan Pablo Abadía Medina</strong><br />Full-stack developer and technology entrepreneur<br />Valle del Cauca, Colombia</p>
<p><a href="https://github.com/juanpabloabadiamedina">GitHub</a> · <a href="https://ponwi.app">Ponwi</a> · <a href="https://blockchaintechnologysas.com">Blockchain Technology S.A.S.</a></p>
]]></content:encoded></item></channel></rss>