<?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: STNDC</title>
    <description>The latest articles on DEV Community by STNDC (@stndc).</description>
    <link>https://dev.to/stndc</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F877280%2Ffecf1d27-66dc-4d6f-9294-bd666919fdbc.jpg</url>
      <title>DEV Community: STNDC</title>
      <link>https://dev.to/stndc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stndc"/>
    <language>en</language>
    <item>
      <title>Blackfros 3.0.0-pre.2 - part 2</title>
      <dc:creator>STNDC</dc:creator>
      <pubDate>Thu, 03 Sep 2026 15:11:35 +0000</pubDate>
      <link>https://dev.to/stndc/blackfros-300-pre2-part-2-cok</link>
      <guid>https://dev.to/stndc/blackfros-300-pre2-part-2-cok</guid>
      <description>&lt;h1&gt;
  
  
  Blackfros: a P2P shop network that doesn't trust anyone with your IP
&lt;/h1&gt;

&lt;p&gt;Most "anonymous marketplace" projects still lean on a central server somewhere — a domain, a company, a single point of failure and surveillance. Blackfros doesn't. It's a peer-to-peer network of shops where &lt;strong&gt;every seller is their own server&lt;/strong&gt;, and there's no central authority to shut down, subpoena, or trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core idea
&lt;/h2&gt;

&lt;p&gt;Blackfros is a Python client/server pair:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;server.py&lt;/code&gt; runs a shop. It handles commands like &lt;code&gt;ADD&lt;/code&gt;, &lt;code&gt;REMOVE&lt;/code&gt;, &lt;code&gt;BUY&lt;/code&gt;, &lt;code&gt;CHAT&lt;/code&gt;, and stores its catalog as plain Markdown on disk.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;client.py&lt;/code&gt; is a terminal UI (built with Textual) that connects to a shop and lets you browse, buy, or chat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of exposing that server on the open internet, it's published as a &lt;strong&gt;Tor hidden service&lt;/strong&gt;. No public IP, no domain, no VPN — just a &lt;code&gt;.onion&lt;/code&gt; address that Tor resolves without ever revealing where the machine actually is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every node is its own island
&lt;/h2&gt;

&lt;p&gt;Here's the part that trips people up at first (it tripped me up too): there is no single "Blackfros network." Every &lt;code&gt;.onion&lt;/code&gt; address is a completely separate, isolated shop with its own seller and its own buyers.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuuslb9ifom3ov6903y3l.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuuslb9ifom3ov6903y3l.jpg" alt="Blackfros Graph" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Each &lt;code&gt;.onion&lt;/code&gt; node is an independent shop network with its own seller and buyers — nodes don't share data or see each other. A single person can hold different roles across networks: the owner of Node A (Store A) can also be a buyer on Node C, while a buyer on Node A can be the seller running Node C.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Concretely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you run &lt;code&gt;server.py&lt;/code&gt;, you're the seller on &lt;strong&gt;your&lt;/strong&gt; node. Everyone who connects to your &lt;code&gt;.onion&lt;/code&gt; sees your shop and buys from you.&lt;/li&gt;
&lt;li&gt;If someone shares their &lt;code&gt;.onion&lt;/code&gt; with you, you connect to it as a buyer using &lt;code&gt;client.py&lt;/code&gt; — you don't bring your own shop with you. You're just a customer there.&lt;/li&gt;
&lt;li&gt;Nothing links these networks together. Your shop's data lives only on your machine, in the folder next to your own copy of &lt;code&gt;server.py&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last point matters more than it sounds: two people running the &lt;em&gt;same copy&lt;/em&gt; of the project on the &lt;em&gt;same machine&lt;/em&gt; would actually collide, because the shop data folder is tied to the script's location, not to the port or the instance. But two different people, on two different machines, never touch each other's data — even if they're buying and selling from each other constantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wearing two hats
&lt;/h2&gt;

&lt;p&gt;Because every node is independent, the same person can be a seller on one node and a buyer on ten others, simultaneously, with no overlap. Run your own &lt;code&gt;server.py&lt;/code&gt; to sell, and open as many &lt;code&gt;client.py&lt;/code&gt; sessions as you want to shop around on other people's nodes. Nobody sees your inventory unless they connect to &lt;em&gt;your&lt;/em&gt; address specifically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it's headed
&lt;/h2&gt;

&lt;p&gt;The project is still pre-release (currently working through &lt;code&gt;v3.0.0-pre.x&lt;/code&gt;), with the terminal UI being migrated to Textual and a handful of security/UX items being closed out before a wider feedback round. Contributors run it straight from source — no packaging yet, just clone and go, including testing it over Tor from a Tails USB.&lt;/p&gt;

&lt;p&gt;If the idea of a shop network with no central server, no IP leaks, and no single point of failure sounds interesting, the code is on GitLab — feedback and testers welcome.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>privacy</category>
      <category>python</category>
      <category>security</category>
    </item>
    <item>
      <title>Blackfros 3.0.0-pre.2 - part 1</title>
      <dc:creator>STNDC</dc:creator>
      <pubDate>Wed, 02 Sep 2026 13:29:19 +0000</pubDate>
      <link>https://dev.to/stndc/blackfros-300-pre2-5gon</link>
      <guid>https://dev.to/stndc/blackfros-300-pre2-5gon</guid>
      <description>&lt;p&gt;&lt;strong&gt;Blackfros is heading towards v3.0.0 🚀&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Blackfros is a minimal peer-to-peer shop network over TCP. Each connected node gets its own shop, stored as a Markdown file on the server, with simple chat commands to coordinate trades.&lt;/p&gt;

&lt;p&gt;We’re now working towards &lt;strong&gt;v3.0.0-pre.2&lt;/strong&gt;, focused on resolving five remaining points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🖼️ Images&lt;/li&gt;
&lt;li&gt;🐧 Linux focus&lt;/li&gt;
&lt;li&gt;🔐 Authentication&lt;/li&gt;
&lt;li&gt;🚦 Rate limiting&lt;/li&gt;
&lt;li&gt;🛡️ Input validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After that, &lt;strong&gt;v3.0.0-pre.3&lt;/strong&gt; will be a frozen build for broader contributor feedback, with no major changes while it’s being tested.&lt;/p&gt;

&lt;p&gt;If everything looks good, &lt;strong&gt;v3.0.0&lt;/strong&gt; will be the final release.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feedback is very welcome.&lt;/strong&gt; If you’ve tried Blackfros or have ideas, concerns, or things you think we should improve, let us know.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gitlab.com/stndc/blackfros" rel="noopener noreferrer"&gt;BLACKFROS ON GITLAB&lt;/a&gt;&lt;/p&gt;

</description>
      <category>feedback</category>
      <category>p2p</category>
      <category>tcp</category>
      <category>opensource</category>
    </item>
    <item>
      <title>PHP miniMarkdown</title>
      <dc:creator>STNDC</dc:creator>
      <pubDate>Thu, 18 May 2023 01:56:48 +0000</pubDate>
      <link>https://dev.to/stndc/php-minimarkdown-49bn</link>
      <guid>https://dev.to/stndc/php-minimarkdown-49bn</guid>
      <description>&lt;p&gt;miniMakdown is a library written in PHP. It's simple markup that makes it easy to add formatting, links, and images to plain text.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/stndc/minimarkdown" rel="noopener noreferrer"&gt;miniMarkdown&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use function &lt;code&gt;minimarkdown()&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

include 'miniMarkdown.php';

$h1 = '# h1 Text';
echo minimarkdown($h1);

?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Headings
&lt;/h2&gt;

&lt;p&gt;To create a heading, add &lt;code&gt;#&lt;/code&gt; symbols before your heading text. The number of &lt;code&gt;#&lt;/code&gt; you use will determine the hierarchy level and typeface size of the heading.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# H1
## H2
### H3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Styling text
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Style    |  Sintaxis    | Example
---------------------------------------------------
bold     | ** **        | `**This is bold text**`
italic   | _ _          | `_This is italic text_`
positive | ++ ++        | `++This is positive text++`
negative | -- --        | `--This is negative text--`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Code fromat
&lt;/h2&gt;

&lt;p&gt;To format &lt;code&gt;code&lt;/code&gt; or text into its own distinct block, use backticks.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`Code format`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Link
&lt;/h2&gt;

&lt;p&gt;You can create an inline link by wrapping link text in brackets &lt;code&gt;[ ]&lt;/code&gt;, and then wrapping the URL in parentheses &lt;code&gt;( )&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Google](https://www.google.com)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Image
&lt;/h2&gt;

&lt;p&gt;You can display an image by adding &lt;code&gt;!&lt;/code&gt; and wrapping the alt text in &lt;code&gt;[ ]&lt;/code&gt;. Alt text is a short text equivalent of the information in the image. Then, wrap the link for the image in parentheses &lt;code&gt;()&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![Alt](https://www.google.com/intl/en_ALL/images/logo.gif)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>php</category>
      <category>markdown</category>
    </item>
    <item>
      <title>Colors in PHP command line output</title>
      <dc:creator>STNDC</dc:creator>
      <pubDate>Wed, 15 Jun 2022 17:50:32 +0000</pubDate>
      <link>https://dev.to/stndc/colors-in-php-command-line-output-4ela</link>
      <guid>https://dev.to/stndc/colors-in-php-command-line-output-4ela</guid>
      <description>&lt;p&gt;It's always good to colorize the output of the command line. Give a custom style. In this case, you can use color codes on strings to color the output. One very important thing to note is that these colors will only work on the command line and not in your browser.&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%2Fttayrhxl3hfyseofyjhn.jpg" 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%2Fttayrhxl3hfyseofyjhn.jpg" alt=" " width="640" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's see the syntax:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo "\e[1;37;42mHello World\e[0m\n";&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The above command returns "Hello World" in white font and green background. You can see that the first part of the string, &lt;strong&gt;\e&lt;/strong&gt;, is the escape character to open and close the string.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[0;31;42m&lt;/strong&gt;, this is what sets the color (0;31) and background (42). This should be followed by the text that we are coloring.&lt;/p&gt;

&lt;p&gt;In Skater I use it to style when the &lt;code&gt;-help&lt;/code&gt; command is required.&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%2Fpjrp4hecobdn3fyjiblz.JPG" 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%2Fpjrp4hecobdn3fyjiblz.JPG" alt=" " width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are few colors, but enough to give style to outings. I share the list of colors. See you soon!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Text Colors           Code
# ---------------------------
# Black                 0;30
# White                 1;37
# Dark Grey             1;30
# Red                   0;31
# Green                 0;32
# Brown                 0;33
# Yellow                1;33
# Blue                  0;34
# Magenta               0;35
# Cyan                  0;36
# Light Cyan            1;36
# Light Grey            0;37
# Light Red             1;31
# Light Green           1;32
# Light Blue            1;34
# Light Magenta         1;35

# Background Colors     Code
# ---------------------------
# Black                 40
# Red                   41
# Green                 42
# Yellow                43
# Blue                  44
# Magenta               45
# Cyan                  46
# Light Grey            47
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>php</category>
      <category>productivity</category>
      <category>terminal</category>
      <category>cmd</category>
    </item>
    <item>
      <title>CodeSkate</title>
      <dc:creator>STNDC</dc:creator>
      <pubDate>Wed, 15 Jun 2022 01:38:05 +0000</pubDate>
      <link>https://dev.to/stndc/codeskate-3k0o</link>
      <guid>https://dev.to/stndc/codeskate-3k0o</guid>
      <description>&lt;p&gt;After a lot of time and work with PHP, I never felt comfortable with frameworks.&lt;br&gt;
It was the reason I made mine. My little minimalist framework.&lt;br&gt;
I went against the MVC model&lt;br&gt;
&lt;strong&gt;CodeSkate&lt;/strong&gt; is based on a model of classes that interact with themes. And the connection to the database is instantiated from the class in the library container.&lt;br&gt;
For each class that is created, its theme must be created and that's it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skater&lt;/strong&gt; in the command client which at the moment allows you to create the files from the terminal.&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%2Fe5ou162iw7znb92r64ft.JPG" 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%2Fe5ou162iw7znb92r64ft.JPG" alt=" " width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: &lt;code&gt;php skater -class classname&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I don't know if anyone wants to use it, I don't care about that for now, but I'm going to share my work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/stndc/codeskate" rel="noopener noreferrer"&gt;https://github.com/stndc/codeskate&lt;/a&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
