<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: tHelloWorld</title>
    <description>The latest articles on DEV Community by tHelloWorld (@thelloworld).</description>
    <link>https://dev.to/thelloworld</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3889917%2F0189571b-d438-4a39-85ad-8f0f436a0942.png</url>
      <title>DEV Community: tHelloWorld</title>
      <link>https://dev.to/thelloworld</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thelloworld"/>
    <language>en</language>
    <item>
      <title>How to Export Any Web Table to CSV, Excel, Markdown or JSON (No Code)</title>
      <dc:creator>tHelloWorld</dc:creator>
      <pubDate>Mon, 15 Jun 2026 02:13:10 +0000</pubDate>
      <link>https://dev.to/thelloworld/how-to-export-any-web-table-to-csv-excel-markdown-or-json-no-code-4c54</link>
      <guid>https://dev.to/thelloworld/how-to-export-any-web-table-to-csv-excel-markdown-or-json-no-code-4c54</guid>
      <description>&lt;p&gt;You see a table on a web page. You want it in a spreadsheet. You select it, copy, paste into Excel — and the columns shatter into a single mangled cell. Numbers turn into text. Merged cells go everywhere. You end up re-typing it by hand.&lt;/p&gt;

&lt;p&gt;I hit this often enough that I built a small tool to never do it again. Sharing it here in case it saves you the same annoyance.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with copy-paste
&lt;/h2&gt;

&lt;p&gt;HTML tables and spreadsheet cells are two different worlds. When you copy a rendered table, the browser hands the spreadsheet a blob of text that &lt;em&gt;looks&lt;/em&gt; tabular but rarely maps cleanly — especially when the table uses &lt;code&gt;rowspan&lt;/code&gt; / &lt;code&gt;colspan&lt;/code&gt;, has nested markup inside cells, or is styled with &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s pretending to be a grid.&lt;/p&gt;

&lt;p&gt;The usual escape hatches all have a tax:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Write a scraper&lt;/strong&gt; — overkill for one table, and now you're maintaining Python and a CSS selector.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paste into a "paste special" dialog&lt;/strong&gt; — fiddly, and still breaks on merged cells.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a heavyweight extension&lt;/strong&gt; — most cap the free tier at a few hundred rows or push you to sign up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something that's one click, free, and doesn't send my data anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table Grab
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/table-grab-export-table/ialkjncelpfhhhlkibofjpgpcnmoecdf" rel="noopener noreferrer"&gt;Table Grab&lt;/a&gt; is a tiny Chrome extension that copies and downloads any HTML table on a page to &lt;strong&gt;CSV, Excel, Markdown or JSON&lt;/strong&gt; — in one click.&lt;/p&gt;

&lt;p&gt;No sign-up. No API key. No backend. Everything runs locally in your browser; nothing is uploaded.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4q9zy51y4yzzvwdj99wu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4q9zy51y4yzzvwdj99wu.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open any page that has a table.&lt;/li&gt;
&lt;li&gt;Click the Table Grab icon. It instantly lists &lt;em&gt;every&lt;/em&gt; table on the page — each with a smart title pulled from the surrounding content, not a useless "Table 1, Table 2, Table 3".&lt;/li&gt;
&lt;li&gt;Hover a table in the list to &lt;strong&gt;preview&lt;/strong&gt; it, and watch it get &lt;strong&gt;highlighted right on the page&lt;/strong&gt; so you know exactly which one you're grabbing.&lt;/li&gt;
&lt;li&gt;Pick a format — CSV, Excel, Markdown or JSON — and click &lt;strong&gt;Copy&lt;/strong&gt; or &lt;strong&gt;Download&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80ctdp79awedb18ex3vr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80ctdp79awedb18ex3vr.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's the whole loop. On a heavy page with dozens of tables it still opens instantly, because it only reads each table's structure up front and extracts the full cells lazily, when you actually pick one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four formats, and when to reach for each
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CSV&lt;/strong&gt; — opens directly in Excel, Google Sheets or Numbers. UTF-8 with a BOM, so accented characters and CJK text don't turn into garbage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Excel&lt;/strong&gt; — same data, spreadsheet-ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Markdown&lt;/strong&gt; — paste straight into Notion, Obsidian, GitHub issues, or your docs. This one is my favorite; turning a web table into a clean Markdown table used to be a manual chore.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqxlz3ucqx91exr4eyn2j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqxlz3ucqx91exr4eyn2j.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JSON&lt;/strong&gt; — structured rows for quick reuse: feed it to a script, a notebook, or an LLM without writing a parser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7yvs7lsbzq70had9mjk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7yvs7lsbzq70had9mjk.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The details that usually break
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merged cells&lt;/strong&gt; (&lt;code&gt;rowspan&lt;/code&gt; / &lt;code&gt;colspan&lt;/code&gt;) are expanded correctly instead of collapsing into the wrong columns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Excel-friendly CSV&lt;/strong&gt; — no more "why is my CSV one giant column" or garbled UTF-8.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lots of tables on one page?&lt;/strong&gt; A search box filters them by title or content, so you find the right one fast.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvu093szsv2qpv4sfm63o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvu093szsv2qpv4sfm63o.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why local-only
&lt;/h2&gt;

&lt;p&gt;The extension only reads the table on the page you're looking at, only when you click the icon. No login, no account, no analytics, nothing leaves the browser. The privacy practices are declared right on the Chrome Web Store listing: no data collected.&lt;/p&gt;

&lt;p&gt;For something that touches whatever page you happen to be on, that felt like the only honest default.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;It's free, with no row limit: &lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/table-grab-export-table/ialkjncelpfhhhlkibofjpgpcnmoecdf" rel="noopener noreferrer"&gt;Table Grab on the Chrome Web Store&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you try it, I'd genuinely like to hear about any table it &lt;em&gt;fails&lt;/em&gt; to parse — drop the URL in the comments and I'll dig into it. That feedback is what shapes the next version.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>tools</category>
      <category>chrome</category>
    </item>
    <item>
      <title>Life after MythX: A Drop-in Solidity Security API</title>
      <dc:creator>tHelloWorld</dc:creator>
      <pubDate>Tue, 21 Apr 2026 03:19:41 +0000</pubDate>
      <link>https://dev.to/thelloworld/life-after-mythx-a-drop-in-solidity-security-api-c0h</link>
      <guid>https://dev.to/thelloworld/life-after-mythx-a-drop-in-solidity-security-api-c0h</guid>
      <description>&lt;p&gt;On March 31, 2026, Consensys shut down &lt;strong&gt;MythX&lt;/strong&gt; — the Solidity security API that had quietly sat inside many teams' CI for 6+ years.&lt;/p&gt;

&lt;p&gt;I was one of those devs. My side-project Hardhat repo had a &lt;code&gt;yarn security&lt;/code&gt; script pointing at MythX. One day it 500'd, and that's how I found out.&lt;/p&gt;

&lt;p&gt;I looked around for a replacement. The options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Run Slither locally&lt;/strong&gt; — powerful, but compiler pinning, Docker, and false-positive triage eat an afternoon per project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SolidityScan&lt;/strong&gt; — $29.99 per 1,000 LOC per month, which scales weirdly if you're scanning the same small contract often.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CertiK / OpenZeppelin Defender&lt;/strong&gt; — enterprise audit pricing ($10k+), not built for "I just want to sanity-check my DAO's treasury contract before a weekend upgrade."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built &lt;strong&gt;SmartScan&lt;/strong&gt;. One POST request, structured audit JSON back, Solidity 0.8.x today, more EVM languages on the roadmap.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a scan looks like
&lt;/h2&gt;

&lt;p&gt;Here's a classic reentrancy vulnerability to scan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pragma solidity ^0.8.0;
contract VulnerableBank {
    mapping(address =&amp;gt; uint) public balances;
    function deposit() external payable {
        balances[msg.sender] += msg.value;
    }
    function withdraw() external {
        uint amount = balances[msg.sender];
        require(amount &amp;gt; 0);
        (bool success,) = msg.sender.call{value: amount}("");
        require(success);
        balances[msg.sender] = 0;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save it as &lt;code&gt;VulnerableBank.sol&lt;/code&gt;, then scan it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://smart-contract-security-scan.p.rapidapi.com/api/v1/scan/sync"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-RapidAPI-Key: YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-RapidAPI-Host: smart-contract-security-scan.p.rapidapi.com"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;jq &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="nt"&gt;--rawfile&lt;/span&gt; src VulnerableBank.sol &lt;span class="s1"&gt;'{source_code:$src, contract_name:"VulnerableBank"}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get back structured findings:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zfxn1fb034hf49plgpk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zfxn1fb034hf49plgpk.png" alt="SmartScan audit result: reentrancy vulnerability detected with severity, location, and fix recommendation" width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LLM-reasoned triage means you don't drown in warnings you'd have to filter by hand. A risk score 0–100 gives you a single number to gate CI on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing (no per-LOC weirdness)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free&lt;/strong&gt; — 1 scan / month, entry-tier model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Starter&lt;/strong&gt; — $48.9 / 100 scans&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro&lt;/strong&gt; — $134.9 / 300 scans&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business&lt;/strong&gt; — $399 / 1,000 scans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or one-off &lt;code&gt;$9.9 / scan&lt;/code&gt; on our API.market listing if you don't want a subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Indie Solidity devs with 2–10 repos who can't justify $5k+ per audit&lt;/li&gt;
&lt;li&gt;Hackathon teams needing a quick sanity check before demo day&lt;/li&gt;
&lt;li&gt;Small DAOs doing routine upgrades&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're an enterprise with a $100k/year security budget, this isn't for you — CertiK and Trail of Bits serve that market. SmartScan fills the MythX-shaped hole: API-first, cheap enough to not think about, accurate enough to trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Landing page: 👉 &lt;strong&gt;&lt;a href="https://smartscan.dev" rel="noopener noreferrer"&gt;smartscan.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or go straight to the free tier on RapidAPI (no credit card, 1 scan/month): &lt;strong&gt;&lt;a href="https://rapidapi.com/mypine/api/smart-contract-security-scan" rel="noopener noreferrer"&gt;SmartScan listing&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you try it, DM me on Twitter &lt;a href="https://twitter.com/smartscan_dev" rel="noopener noreferrer"&gt;@smartscan_dev&lt;/a&gt; — I'm collecting feedback from the first 10 real users and giving 3 months of Pro free in exchange for 3 sentences: what worked, what didn't, what you'd pay.&lt;/p&gt;

</description>
      <category>solidity</category>
      <category>security</category>
      <category>web3</category>
      <category>ethereum</category>
    </item>
  </channel>
</rss>
