<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Syed Ahmed Ali Shah — Blog</title><description>Notes on software, security, and the occasional deep dive — blockchain, Foundry, OJS administration, Python and applied AI.</description><link>https://ahmedalishah.vercel.app</link><language>en-us</language><item><title>Notary, Content Credentials or Blockchain Timestamp? How to Prove a File Is Original</title><link>https://ahmedalishah.vercel.app/blog/notary-vs-c2pa-vs-blockchain-timestamp</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/notary-vs-c2pa-vs-blockchain-timestamp</guid><description>A notary proves who signed. Content Credentials prove which camera took a photo. A timestamp proves a file existed by a certain date. What each one really shows, where each one fails, and which you need for contracts, news footage, manuscripts and designs.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>Blockchain &amp; Cryptography</category></item><item><title>Manuscript Timestamping for Journals: How to Prove When a Paper Was Submitted</title><link>https://ahmedalishah.vercel.app/blog/manuscript-timestamping-for-journals</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/manuscript-timestamping-for-journals</guid><description>A rejected paper reappears under a reviewer&apos;s name. Who can prove which came first? How journals can record, independently and privately, that a manuscript existed on a given date, and what OJS already does and doesn&apos;t cover.</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate><category>Open Journal Systems</category></item><item><title>Foundry vs Hardhat in 2026: Which Should You Use for Solidity Development?</title><link>https://ahmedalishah.vercel.app/blog/foundry-vs-hardhat</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/foundry-vs-hardhat</guid><description>Hardhat 3 now runs Foundry-style Solidity tests, and Foundry has reached 1.0. A practical comparison of testing, speed, deployment and ecosystem, from someone who has shipped with both.</description><pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate><category>Foundry &amp; Tooling</category></item><item><title>The Upwork Job That Installed a Keylogger on My Mac</title><link>https://ahmedalishah.vercel.app/blog/upwork-job-installed-keylogger-on-my-mac</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/upwork-job-installed-keylogger-on-my-mac</guid><description>A DeFi client asked me to run their MVP locally and send a screenshot. Five weeks later I found a Python keylogger disguised as an Apple service. Here is the timeline, the evidence, and what I would do differently.</description><pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate><category>Security</category></item><item><title>Why My Voting dApp Counts Wallets, Not People</title><link>https://ahmedalishah.vercel.app/blog/why-my-voting-dapp-counts-wallets-not-people</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/why-my-voting-dapp-counts-wallets-not-people</guid><description>One line of Solidity stops anyone voting twice — from the same wallet. Why that gap is the real unsolved problem in blockchain voting, and how my two voting projects ended up on opposite sides of it.</description><pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate><category>Blockchain &amp; Cryptography</category></item><item><title>How to Upgrade OJS 3.5.0-4 to OJS 3.5.0-5 Safely: Step-by-Step Guide</title><link>https://ahmedalishah.vercel.app/blog/upgrade-ojs-3504-to-3505-safely</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/upgrade-ojs-3504-to-3505-safely</guid><description>A cautious, production-first upgrade path for the 3.5.0 LTS bug-fix release — backups, staging clones, database migrations, and what to actually test before reopening the journal.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><category>Open Journal Systems</category></item><item><title>Solidity view vs pure: Function Mutability, Variable Types, and Data Locations Explained</title><link>https://ahmedalishah.vercel.app/blog/solidity-view-vs-pure-function-mutability-variable-types</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/solidity-view-vs-pure-function-mutability-variable-types</guid><description>What pure, view, payable, and nonpayable actually restrict a function from doing, plus storage, memory, and calldata — grounded in a real Foundry compiler error from a FundMe project.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>Blockchain &amp; Cryptography</category></item><item><title>Imported an Anvil Account Into MetaMask but Can&apos;t See the 10,000 ETH?</title><link>https://ahmedalishah.vercel.app/blog/anvil-metamask-balance-not-showing</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/anvil-metamask-balance-not-showing</guid><description>The private key imports fine. The balance is real. MetaMask is just pointed at the wrong network — here&apos;s the actual fix.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>Foundry &amp; Tooling</category></item><item><title>Foundry Installed but &quot;forge&quot; Command Not Found on macOS</title><link>https://ahmedalishah.vercel.app/blog/foundry-forge-command-not-found-macos</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/foundry-forge-command-not-found-macos</guid><description>Foundry&apos;s installer and the actual forge/cast/anvil binaries are two separate steps — what to check when the command still isn&apos;t found.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>Foundry &amp; Tooling</category></item><item><title>Foundry &quot;forge test --m&quot; Not Working? Use --mt to Filter Tests by Name</title><link>https://ahmedalishah.vercel.app/blog/foundry-forge-test-mt</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/foundry-forge-test-mt</guid><description>The exact error, why --m isn&apos;t a real flag, and the difference between --mt, --mc, and --mp when filtering Foundry tests.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>Foundry &amp; Tooling</category></item><item><title>Why Your Foundry Test Output Looks Different From a Course Video</title><link>https://ahmedalishah.vercel.app/blog/foundry-output-differs-from-tutorial</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/foundry-output-differs-from-tutorial</guid><description>A passing test with different-looking terminal output isn&apos;t a sign something&apos;s wrong — what actually causes the formatting to shift.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>Foundry &amp; Tooling</category></item><item><title>Foundry &quot;forge-std/Test.sol&quot; Not Found in VS Code: How to Troubleshoot It</title><link>https://ahmedalishah.vercel.app/blog/foundry-test-sol-not-found-vscode</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/foundry-test-sol-not-found-vscode</guid><description>A red underline in VS Code doesn&apos;t always mean forge build actually fails — how to tell the difference and work through the real causes.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>Foundry &amp; Tooling</category></item><item><title>The Hugging Face breach nobody expected: when the attacker was an AI agent, not a person</title><link>https://ahmedalishah.vercel.app/blog/the-hugging-face-ai-agent-breach</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/the-hugging-face-ai-agent-breach</guid><description>In July 2026, OpenAI&apos;s own models broke out of a security evaluation and hacked Hugging Face&apos;s production infrastructure — no human attacker involved. Here&apos;s what actually happened, and what it means for anyone building with agents.</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate><category>AI &amp; Applied Engineering</category></item><item><title>Modernizing a university&apos;s journal system: lessons from running OJS in production</title><link>https://ahmedalishah.vercel.app/blog/modernizing-a-university-journal-system</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/modernizing-a-university-journal-system</guid><description>What two years of administering Open Journal Systems for a university department actually looks like: careful upgrades, the people who depend on the system, small automations that compound, and owning the whole website.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>Open Journal Systems</category></item><item><title>What prompt engineering actually looks like day to day</title><link>https://ahmedalishah.vercel.app/blog/what-prompt-engineering-looks-like</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/what-prompt-engineering-looks-like</guid><description>It&apos;s less &quot;magic incantations&quot; and more systematic testing — here&apos;s the version that actually holds up in production.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>AI &amp; Applied Engineering</category></item><item><title>Why I built a blockchain notary instead of another CRUD app</title><link>https://ahmedalishah.vercel.app/blog/why-i-built-a-blockchain-notary</link><guid isPermaLink="true">https://ahmedalishah.vercel.app/blog/why-i-built-a-blockchain-notary</guid><description>On choosing Solidity over a database when the whole point is that nobody, including me, should be able to quietly edit the record. How the Document Notary works, what a proof does and doesn&apos;t establish, and the trade-offs I accepted.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>Blockchain &amp; Cryptography</category></item></channel></rss>