<?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>Forem: Christos Drogidis</title>
    <description>The latest articles on Forem by Christos Drogidis (@ascoos).</description>
    <link>https://forem.com/ascoos</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%2F3636215%2F87888087-6ab0-47ce-a5ba-43f8d1cd67d3.png</url>
      <title>Forem: Christos Drogidis</title>
      <link>https://forem.com/ascoos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ascoos"/>
    <language>en</language>
    <item>
      <title>DoBu — Documentation Builder for the Ascoos Ecosystem</title>
      <dc:creator>Christos Drogidis</dc:creator>
      <pubDate>Thu, 02 Apr 2026 07:33:57 +0000</pubDate>
      <link>https://forem.com/ascoos/dobu-documentation-builder-for-the-ascoos-ecosystem-1ip8</link>
      <guid>https://forem.com/ascoos/dobu-documentation-builder-for-the-ascoos-ecosystem-1ip8</guid>
      <description>&lt;h3&gt;
  
  
  &lt;em&gt;A JML‑inspired Documentation DSL for multilingual docblocks&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;DoBu&lt;/strong&gt; (DOcumentation BUilder) is a &lt;strong&gt;Documentation DSL&lt;/strong&gt; designed for the &lt;strong&gt;Ascoos OS&lt;/strong&gt; ecosystem.&lt;/p&gt;

&lt;p&gt;It is not PHPDoc.&lt;br&gt;&lt;br&gt;
It is not Doxygen.&lt;br&gt;&lt;br&gt;
It is not MkDocs or Docusaurus.&lt;/p&gt;

&lt;p&gt;DoBu is a &lt;strong&gt;semantic documentation layer&lt;/strong&gt; that lives inside simple docblocks such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* ... */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and transforms documentation structure into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;structured metadata
&lt;/li&gt;
&lt;li&gt;multilingual documentation
&lt;/li&gt;
&lt;li&gt;AST‑friendly nodes
&lt;/li&gt;
&lt;li&gt;exportable formats (Markdown, HTML, JSON, etc.)
&lt;/li&gt;
&lt;li&gt;documentation suitable for IDEs, tools, and Ascoos OS subsystems
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DoBu can generate documentation text for any programming language that supports block comments.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why DoBu Was Created
&lt;/h2&gt;

&lt;p&gt;Ascoos OS is a kernel containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hundreds of encrypted classes
&lt;/li&gt;
&lt;li&gt;a DSL/AST macro engine
&lt;/li&gt;
&lt;li&gt;CiC interpreters
&lt;/li&gt;
&lt;li&gt;JML markup
&lt;/li&gt;
&lt;li&gt;AI/NLP subsystems
&lt;/li&gt;
&lt;li&gt;IoT handlers
&lt;/li&gt;
&lt;li&gt;mathematical and scientific libraries
&lt;/li&gt;
&lt;li&gt;proprietary security layers
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No existing documentation tool could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;support multilingual metadata
&lt;/li&gt;
&lt;li&gt;embed mathematical formulas (LaTeX, MathML) with analysis
&lt;/li&gt;
&lt;li&gt;describe numerical behavior
&lt;/li&gt;
&lt;li&gt;include performance metrics
&lt;/li&gt;
&lt;li&gt;support cross‑references
&lt;/li&gt;
&lt;li&gt;generate documentation without exposing source code
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thus, &lt;strong&gt;DoBu&lt;/strong&gt; was created as the &lt;strong&gt;semantic documentation layer&lt;/strong&gt; of Ascoos OS.&lt;/p&gt;




&lt;h2&gt;
  
  
  What DoBu Is
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documentation DSL&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic metadata language&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AST‑friendly docblock interpreter&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multilingual documentation engine&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensible schema system&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JML‑inspired syntax&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language‑agnostic&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kernel‑level documentation layer&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Basic Syntax
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
dobu {
    class:id(`tmyclass`),name(`TMyClass`),extends(`TObject`),namespace(`ASCOOS\OS\Kernel\MyClass`) {
        summary:langs {
            en {`Creating a new Ascoos OS class.`}
            el {`Δημιουργία μιας νέας Ascoos OS κλάσης.`}
        }
    }
}
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Class Documentation Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
dobu {
    class:id(`tmyclass`),name(`TMyClass`),extends(`TObject`),version(`0.0.1`) {
        summary:langs {
            en {`Creating a new Ascoos OS class.`}
            el {`Δημιουργία μιας νέας Ascoos OS κλάσης.`}
        }
    }
}
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Method Example with Math &amp;amp; Behavioral Metadata
&lt;/h2&gt;

&lt;p&gt;DoBu supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mathematical formulas (LaTeX, MathML)
&lt;/li&gt;
&lt;li&gt;numerical behavior
&lt;/li&gt;
&lt;li&gt;performance metrics
&lt;/li&gt;
&lt;li&gt;cross‑references
&lt;/li&gt;
&lt;li&gt;verification cases
&lt;/li&gt;
&lt;li&gt;multilingual descriptions
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
dobu {
    method:id(`blackscholesputdividend`),name(`blackScholesPutDividend`),return(`float`) {
        summary:langs {
            en {`Prices a European put option with continuous dividend yield.`}
            el {`Αποτιμά ένα ευρωπαϊκό put option με συνεχή μερισματική απόδοση.`}
        },
        formula:type(`latex`),value(`\[ P = K e^{-rT} N(-d_2) - S_0 e^{-qT} N(-d_1) \]`)
    }
}
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Full Class Example
&lt;/h2&gt;

&lt;p&gt;See the &lt;strong&gt;&lt;a href="https://github.com/ascoos/dobu/blob/main/examples/create-dobu-class.php" rel="noopener noreferrer"&gt;create-dobu-class.php&lt;/a&gt;&lt;/strong&gt; file for a full demonstration inside a PHP class.&lt;/p&gt;




&lt;h2&gt;
  
  
  Multilingual Documentation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;langs {
    en {`English text`}
    el {`Ελληνικό κείμενο`}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Cross‑References
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;see:langs {
    all {`
       • blackScholesCallDividend() 
       • binomialPutEuropean()`
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Export Formats
&lt;/h2&gt;

&lt;p&gt;DoBu can export documentation to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML
&lt;/li&gt;
&lt;li&gt;INI
&lt;/li&gt;
&lt;li&gt;JSON
&lt;/li&gt;
&lt;li&gt;Markdown
&lt;/li&gt;
&lt;li&gt;TOML
&lt;/li&gt;
&lt;li&gt;YAML
&lt;/li&gt;
&lt;li&gt;XML
&lt;/li&gt;
&lt;li&gt;and many more formats
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ideal for Proprietary Kernels
&lt;/h2&gt;

&lt;p&gt;DoBu works even when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;source code is not available (stubs only)
&lt;/li&gt;
&lt;li&gt;documentation must not reveal internal logic
&lt;/li&gt;
&lt;li&gt;structured, machine‑readable documentation is required
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Relationship with Ascoos OS
&lt;/h2&gt;

&lt;p&gt;DoBu is built using Ascoos OS classes and is used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;documenting Ascoos OS itself
&lt;/li&gt;
&lt;li&gt;documenting generated code
&lt;/li&gt;
&lt;li&gt;producing documentation for other languages
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>documentation</category>
      <category>webdev</category>
      <category>php</category>
      <category>ascoos</category>
    </item>
    <item>
      <title>Why Developers Should Build Native AI Applications</title>
      <dc:creator>Christos Drogidis</dc:creator>
      <pubDate>Thu, 02 Apr 2026 06:13:29 +0000</pubDate>
      <link>https://forem.com/ascoos/why-developers-should-build-native-ai-applications-1gn0</link>
      <guid>https://forem.com/ascoos/why-developers-should-build-native-ai-applications-1gn0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;The Web5/WebAI Model of &lt;strong&gt;Ascoos OS&lt;/strong&gt;: A Self‑Sufficient, User‑First Approach to Artificial Intelligence on the Web&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Artificial Intelligence has become a core component of the modern web. However, the way it is integrated into most applications remains dependent on external services and remote systems, creating limitations in performance, privacy, cost, and independence.&lt;/p&gt;

&lt;p&gt;Ascoos OS proposes a different philosophy: a web where AI is not a service located somewhere else, but a capability owned by the user. A web where applications do not rely on third parties to function, and where data never leaves the user’s environment. This is the &lt;strong&gt;Web5/WebAI&lt;/strong&gt; model.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Need for Native AI Applications
&lt;/h2&gt;

&lt;p&gt;Traditional approaches to AI integration rely on external providers. While functional, these architectures have inherent limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    Data is transferred outside the user’s environment.&lt;/li&gt;
&lt;li&gt;    Performance depends on latency and connectivity.&lt;/li&gt;
&lt;li&gt;    Functionality is not available offline.&lt;/li&gt;
&lt;li&gt;    Costs increase as usage increases.&lt;/li&gt;
&lt;li&gt;    AI has no access to system‑level data and mechanisms.&lt;/li&gt;
&lt;li&gt;    The user lacks true ownership and self‑sufficiency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a world where privacy, autonomy, and independence are becoming essential values, this model is no longer adequate.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Ascoos OS Approach: AI as Infrastructure
&lt;/h2&gt;

&lt;p&gt;Ascoos OS integrates Artificial Intelligence directly into the core of the web kernel. It does not treat AI as an add‑on, but as a foundational component of the system’s architecture.&lt;/p&gt;

&lt;p&gt;This enables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    Local AI execution without external services.&lt;/li&gt;
&lt;li&gt;    Full ownership and control of data by the user.&lt;/li&gt;
&lt;li&gt;    Complete offline functionality.&lt;/li&gt;
&lt;li&gt;    Direct AI access to DSL, macros, events, files, and system data.&lt;/li&gt;
&lt;li&gt;    Applications that operate with true self‑sufficiency.&lt;/li&gt;
&lt;li&gt;    The ability for AI to influence system flow in real time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a web that does not depend on third parties, but is built around the user.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Examples of Native AI in Ascoos OS
&lt;/h2&gt;

&lt;p&gt;The following examples demonstrate how AI behaves when it is part of the kernel rather than an external service. Their value lies in the fact that they form unified, locally executed pipelines.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Neural Workflow Composer – Learning from the System and Executing Macros
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$composer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TNeuralNetworkHandler&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$composer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'input'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'output'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'activation'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'relu'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'input'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'output'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'activation'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'sigmoid'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="nv"&gt;$composer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;fit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$systemData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$actions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;epochs&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lr&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nv"&gt;$score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$composer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;predictNetwork&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nv"&gt;$currentState&lt;/span&gt;&lt;span class="p"&gt;])[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$macroHandler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TMacroHandler&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$macroHandler&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;addMacro&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Executing optimized macro"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="nv"&gt;$macroHandler&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;runNext&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI operates as part of the system, learns from its data, and influences its behavior in real time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://os.ascoos.com/docs/articles/native-ai-web5-webai.html" rel="noopener noreferrer"&gt;See Full Article&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>web5</category>
      <category>webai</category>
    </item>
    <item>
      <title>What is a Content Management System (CMS)</title>
      <dc:creator>Christos Drogidis</dc:creator>
      <pubDate>Thu, 02 Apr 2026 05:48:14 +0000</pubDate>
      <link>https://forem.com/ascoos/what-is-a-content-management-system-cms-1jin</link>
      <guid>https://forem.com/ascoos/what-is-a-content-management-system-cms-1jin</guid>
      <description>&lt;h2&gt;
  
  
  Theoretical Approach, Historical Evolution and Modern Architectures
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Introduction
&lt;/h3&gt;

&lt;p&gt;Digital content management is one of the most important areas of modern information technology.&lt;/p&gt;

&lt;p&gt;From the first static websites of the 1990s to today's multi-channel ecosystems, the need for organized, secure, and scalable information management has led to the development of Content Management Systems (CMS).&lt;/p&gt;

&lt;p&gt;CMS have evolved from simple website updating tools into comprehensive knowledge management platforms, now serving as critical infrastructure for businesses, organizations, and public sector entities.&lt;/p&gt;

&lt;p&gt;Their evolution is directly linked to the development of the internet, the increasing complexity of information systems, and the need for automation in content creation and delivery processes.&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%2Fn9w9svwwo1q8ve5zu386.webp" 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%2Fn9w9svwwo1q8ve5zu386.webp" alt=" " width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Definition and Theoretical Framework
&lt;/h3&gt;

&lt;p&gt;A Content Management System is defined as software that enables the creation, organization, editing, storage, and publication of digital content without requiring specialized programming knowledge. Its core principle is the separation of content from presentation. Content is stored in a structured format, independent of how it will be displayed, allowing reuse across multiple environments and devices.&lt;/p&gt;

&lt;p&gt;The theoretical foundation of CMS is connected to information science, knowledge management, and database theory. The concept of “content” is not limited to text but includes multimedia, metadata, structured entities, relationships, and semantic connections. Modern literature treats content as an information asset with value that must be organized, classified, and distributed in a way that maximizes its usefulness (Dublin Core Metadata Initiative, 2020).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://os.ascoos.com/docs/articles/what-is-a-content-management-system.html" rel="noopener noreferrer"&gt;See Full Article&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cms</category>
      <category>webdev</category>
      <category>programming</category>
      <category>ascoos</category>
    </item>
    <item>
      <title>Ascoos OS: A Different Logic in Programming</title>
      <dc:creator>Christos Drogidis</dc:creator>
      <pubDate>Fri, 19 Dec 2025 02:37:47 +0000</pubDate>
      <link>https://forem.com/ascoos/ascoos-os-a-different-logic-in-programming-3e9g</link>
      <guid>https://forem.com/ascoos/ascoos-os-a-different-logic-in-programming-3e9g</guid>
      <description>&lt;p&gt;In the world of software development, the “mainstream” is often presented as the only solution: PHPUnit for tests, CI/CD pipelines everywhere, frameworks that dictate your workflow. But &lt;strong&gt;Ascoos OS&lt;/strong&gt; follows a different philosophy — it integrates testing, logging, and profiling directly into the runtime.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Problem Does It Solve
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Traditional testing tools (e.g., PHPUnit) require separate setup, configuration, and integration.
&lt;/li&gt;
&lt;li&gt;Testing is often treated as something “external” to the runtime.
&lt;/li&gt;
&lt;li&gt;This leads to more complexity and overhead.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With the &lt;strong&gt;TTestHandler&lt;/strong&gt; class, Ascoos OS solves this problem: testing becomes part of the system itself, with a simple API that combines validation, logging, and execution timing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Is It For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developers&lt;/strong&gt; who want quick and easy tests without external frameworks.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teams&lt;/strong&gt; that need runtime diagnostics and profiling in real time.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-source contributors&lt;/strong&gt; who want to understand how Ascoos OS works and experiment with a different programming philosophy.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Example: &lt;code&gt;TTestHandler&lt;/code&gt; + &lt;code&gt;AscoosThrowException&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Instead of relying on PHPUnit, we use the &lt;code&gt;TTestHandler&lt;/code&gt; class to validate classes, objects, methods, and functions. At the same time, it logs results, measures execution time, and collects system statistics.  &lt;/p&gt;

&lt;p&gt;Additionally, &lt;strong&gt;Ascoos Exceptions&lt;/strong&gt; produce multilingual UTF8 exception messages via the &lt;code&gt;$AOS_ESTR&lt;/code&gt; table, ensuring error handling is localized and developer-friendly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;ASCOOS\OS\Kernel\Tests\TTestHandler&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;ASCOOS\OS\Kernel\Core\TObject&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;ASCOOS\OS\Kernel\Core\DebugLevel&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;global&lt;/span&gt; &lt;span class="nv"&gt;$AOS_LOGS_PATH&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Configure properties&lt;/span&gt;
&lt;span class="nv"&gt;$properties&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'logs'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'useLogger'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'dir'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$AOS_LOGS_PATH&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'file'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'test_handler.log'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'level'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;DebugLevel&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nc"&gt;Info&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="s1"&gt;'lang'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'en-US'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'debug'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'precision'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'log_threshold'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;DebugLevel&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nc"&gt;Info&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Initialize TTestHandler&lt;/span&gt;
&lt;span class="nv"&gt;$testHandler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TTestHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$properties&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Initialize TObject&lt;/span&gt;
&lt;span class="nv"&gt;$object&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TObject&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Check class existence&lt;/span&gt;
&lt;span class="nv"&gt;$testHandler&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;checkClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;TObject&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Check object validity&lt;/span&gt;
&lt;span class="nv"&gt;$testHandler&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;checkObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$object&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Check method availability&lt;/span&gt;
&lt;span class="nv"&gt;$testHandler&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;checkMethod&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$object&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'getClassMetadata'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Execute AscoosThrowException with timing&lt;/span&gt;
&lt;span class="nv"&gt;$result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$testHandler&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;executeWithTiming&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;AscoosThrowException&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;InvalidArgumentException&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb"&gt;print_r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// Logs exception, multilingual message, execution time, and system stats&lt;/span&gt;

&lt;span class="c1"&gt;// Free resources&lt;/span&gt;
&lt;span class="nv"&gt;$testHandler&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;Free&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$object&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;Free&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;This approach makes testing &lt;strong&gt;part of the system itself&lt;/strong&gt;. Instead of separating runtime and validation, Ascoos OS unifies them. The result: faster development, integrated diagnostics, and tools that reflect our philosophy of programming freedom.&lt;/p&gt;




&lt;p&gt;Learn more at the official &lt;a href="https://www.ascoos.com" rel="noopener noreferrer"&gt;Ascoos OS website&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Join the discussion: &lt;a href="https://www.reddit.com/r/ascoos" rel="noopener noreferrer"&gt;r/ascoos&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>testing</category>
      <category>tooling</category>
    </item>
    <item>
      <title>What Is a Software Version Number?</title>
      <dc:creator>Christos Drogidis</dc:creator>
      <pubDate>Sun, 07 Dec 2025 16:43:55 +0000</pubDate>
      <link>https://forem.com/ascoos/what-is-a-software-version-number-3jkh</link>
      <guid>https://forem.com/ascoos/what-is-a-software-version-number-3jkh</guid>
      <description>&lt;h2&gt;
  
  
  Understand in 5 minutes how to read every version correctly
&lt;/h2&gt;

&lt;p&gt;Have you ever seen versions like 26.0.0.10301, 17.4.1, 3.13.1, 1.28.4+exp.sha.41af286, 26.2.0-beta.3 or 2.0.0-alpha.7 and wondered what they actually mean?&lt;/p&gt;

&lt;p&gt;The version number is &lt;strong&gt;not decorative&lt;/strong&gt;. It is the identity of every release and, when properly structured, tells you at a glance whether the update is safe or requires caution.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you should ask your vendor or development team
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Do you strictly follow Semantic Versioning 2.0?&lt;/li&gt;
&lt;li&gt;How do you name your alpha/beta/rc versions?&lt;/li&gt;
&lt;li&gt;What build format do you use and why?&lt;/li&gt;
&lt;li&gt;Do you release patch updates at least once a month?&lt;/li&gt;
&lt;li&gt;Is there automated testing and a rollback plan?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://os.ascoos.com/docs/articles/software-version-number.html" rel="noopener noreferrer"&gt;See full article...&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>software</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>HTML is Dead, Long Live JML</title>
      <dc:creator>Christos Drogidis</dc:creator>
      <pubDate>Tue, 02 Dec 2025 12:49:15 +0000</pubDate>
      <link>https://forem.com/ascoos/html-is-dead-long-live-jml-5gi0</link>
      <guid>https://forem.com/ascoos/html-is-dead-long-live-jml-5gi0</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;HTML was the language that built the Web. But today it has become a &lt;strong&gt;burden&lt;/strong&gt;: full of legacy baggage, ambiguities, inconsistencies, and security gaps. Every browser has its own rendering engine, every framework tries to patch the problems, and developers spend countless hours debugging issues that should not exist.&lt;/p&gt;

&lt;p&gt;It’s time to say it clearly: &lt;strong&gt;HTML is dead.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The future of Web markup is &lt;strong&gt;JML (JSON Markup Language)&lt;/strong&gt;.&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%2Fvrcx1bcpnlmwp1lebqc0.webp" 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%2Fvrcx1bcpnlmwp1lebqc0.webp" alt="html-to-jml" width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why HTML Can’t Continue
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Legacy baggage&lt;/strong&gt;: Decades of backward compatibility.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambiguity&lt;/strong&gt;: Tags with unclear or context‑dependent behavior.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: Inline scripts, injection, parsing quirks.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inconsistency&lt;/strong&gt;: Different results across browsers.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What is JML
&lt;/h2&gt;

&lt;p&gt;JML is a new markup language that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uses &lt;strong&gt;JSON‑like syntax&lt;/strong&gt; for clarity and predictability.
&lt;/li&gt;
&lt;li&gt;Transforms into &lt;strong&gt;DSL&lt;/strong&gt; and &lt;strong&gt;AST&lt;/strong&gt; for safe parsing.
&lt;/li&gt;
&lt;li&gt;Produces HTML only when the structure is fully valid.
&lt;/li&gt;
&lt;li&gt;Provides &lt;strong&gt;warnings&lt;/strong&gt; for structural issues.
&lt;/li&gt;
&lt;li&gt;Supports &lt;strong&gt;HTML5, SVG, MathML, custom elements, ARIA&lt;/strong&gt;, and more without hacks.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  JML Example
&lt;/h2&gt;

&lt;h3&gt;
  
  
  HTML Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"utf-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Profile&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"description"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Basic profile page"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"preload"&lt;/span&gt; &lt;span class="na"&gt;as=&lt;/span&gt;&lt;span class="s"&gt;"style"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"./assets/css/style.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"icon"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"image/x-icon"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"./favicon.ico"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"canonical"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"./"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/javascript"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./assets/js/app.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
      &lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nc"&gt;.name&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;header&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"top"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"site-header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Welcome&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Jane Doe&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;data-info=&lt;/span&gt;&lt;span class="s"&gt;"safe"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Front-end developer&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"./contact.html"&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"noopener"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Contact&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./assets/img/avatar.png"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Profile photo"&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"120"&lt;/span&gt; &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"120"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  JML Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;html:lang('en') {
  head {
    meta:charset('utf-8')
    title {
      `Profile`
    }
    meta:name('description'),content('Basic profile page')
    meta:name('viewport'),content('width=device-width, initial-scale=1')
    link:rel('preload'),as('style'),href('./assets/css/style.css')
    link:rel('icon'),type('image/x-icon'),href('./favicon.ico')
    link:rel('canonical'),href('./')
    script:type('text/javascript'),src('./assets/js/app.js')
    style {
      `.card { border: 1px solid #ccc; padding: 16px; border-radius: 8px; }
      .name { font-weight: 600; }`
    }
  }
  body {
    header:id('top'),class('site-header') {
      h1 {
        `Welcome`
      }
    }
    main {
      section:class('card') {
        h2:class('name') {
          `Jane Doe`
        }
        p:data-info('safe') {
          `Front-end developer`
        }
        a:href('./contact.html'),rel('noopener') {
          `Contact`
        }
        img:src('./assets/img/avatar.png'),alt('Profile photo'),width('120'),height('120')
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  DSL Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TAG html LANG 'en'
  TAG head
    TAG meta CHARSET 'utf-8'
    TAG title
      TEXT 'Profile'
    TAG meta NAME 'description' CONTENT 'Basic profile page'
    TAG meta NAME 'viewport' CONTENT 'width=device-width, initial-scale=1'
    TAG link REL 'preload' AS 'style' HREF './assets/css/style.css'
    TAG link REL 'icon' TYPE 'image/x-icon' HREF './favicon.ico'
    TAG link REL 'canonical' HREF './'
    TAG script TYPE 'text/javascript' SRC './assets/js/app.js'
    TAG style
      TEXT '.card { border: 1px solid #ccc; padding: 16px; border-radius: 8px; }
      .name { font-weight: 600; }'
  TAG body
    TAG header ID 'top' CLASS 'site-header'
      TAG h1
        TEXT 'Welcome'
    TAG main
      TAG section CLASS 'card'
        TAG h2 CLASS 'name'
          TEXT 'Jane Doe'
        TAG p DATA-INFO 'safe'
          TEXT 'Front-end developer'
        TAG a HREF './contact.html' REL 'noopener'
          TEXT 'Contact'
        TAG img SRC './assets/img/avatar.png' ALT 'Profile photo' WIDTH '120' HEIGHT '120'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why JML is Safe
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Validator&lt;/strong&gt;: The &lt;code&gt;TJMLValidator&lt;/code&gt; class in &lt;strong&gt;Ascoos OS&lt;/strong&gt; halts transformations on syntax errors.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictable parsing&lt;/strong&gt;: No “undefined behavior.”
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual debugging&lt;/strong&gt;: Warnings for structural issues.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independence&lt;/strong&gt;: Not tied to browser DOM quirks.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  JML Studio
&lt;/h2&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%2Ftb0x49aqjisa2dwizb5u.webp" 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%2Ftb0x49aqjisa2dwizb5u.webp" alt="jml-to-dsl" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JML Studio&lt;/strong&gt; is the online tool for producing JML documents.&lt;br&gt;&lt;br&gt;
Just like Microsoft Word is the editor for &lt;code&gt;.docx&lt;/code&gt;, JML Studio is the &lt;strong&gt;editor&lt;/strong&gt; for &lt;code&gt;.jml&lt;/code&gt;.  &lt;/p&gt;

&lt;p&gt;It offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tabs: &lt;strong&gt;Editor&lt;/strong&gt;, &lt;strong&gt;HTML&lt;/strong&gt;, &lt;strong&gt;DSL&lt;/strong&gt;, &lt;strong&gt;AST&lt;/strong&gt;, &lt;strong&gt;HTML → JML&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Export to &lt;code&gt;.jml&lt;/code&gt; and &lt;code&gt;.html&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Online preview&lt;/strong&gt;: JML → HTML conversion for instant verification.
&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%2Fwnfsvx0zhev8g5o8ob0f.webp" 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%2Fwnfsvx0zhev8g5o8ob0f.webp" alt="jml-to-ast" width="800" height="885"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Vision
&lt;/h2&gt;

&lt;p&gt;JML is not just another language. It is the &lt;strong&gt;next markup standard&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean.
&lt;/li&gt;
&lt;li&gt;Secure.
&lt;/li&gt;
&lt;li&gt;Extensible.
&lt;/li&gt;
&lt;li&gt;Predictable.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With JML, developers won’t waste time debugging quirks. They’ll build on a language that &lt;strong&gt;doesn’t betray them&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;HTML is dead. JML is the future.&lt;br&gt;&lt;br&gt;
With JML Studio, you can start creating and testing JML documents today. But the essence lies in the &lt;strong&gt;JML language itself&lt;/strong&gt;: the new secure markup for the Web.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long live JML.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>jml</category>
      <category>programming</category>
    </item>
    <item>
      <title>Case Study: CiC (Cross‑Interpreter Communication) with WordPress &amp; Joomla in Ascoos OS</title>
      <dc:creator>Christos Drogidis</dc:creator>
      <pubDate>Mon, 01 Dec 2025 05:43:39 +0000</pubDate>
      <link>https://forem.com/ascoos/case-study-cic-cross-interpreter-communication-with-wordpress-joomla-in-ascoos-os-28f7</link>
      <guid>https://forem.com/ascoos/case-study-cic-cross-interpreter-communication-with-wordpress-joomla-in-ascoos-os-28f7</guid>
      <description>&lt;p&gt;We’ve released a new case study demonstrating how &lt;strong&gt;&lt;a href="https://github.com/ascoos/os" rel="noopener noreferrer"&gt;Ascoos OS&lt;/a&gt;&lt;/strong&gt; implements &lt;strong&gt;&lt;a href="https://os.ascoos.com/docs/articles/cic-technology.html" rel="noopener noreferrer"&gt;CiC&lt;/a&gt;&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Instead of connecting systems, CiC turns each CMS into an interpreter capable of executing, translating, and exchanging logic in real time.  &lt;/p&gt;

&lt;p&gt;In this example, WordPress hooks are interpreted and translated into macros, while Joomla APIs are bridged and executed. The results are combined seamlessly in a shared runtime.  &lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/ascoos/aos-SEC00080-wp_joomla_in_aos" rel="noopener noreferrer"&gt;Full code and documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a practical step toward Web5 interoperability and the foundation of &lt;a href="https://github.com/ascoos/WebAI" rel="noopener noreferrer"&gt;WebAI&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Would love to hear your thoughts on extending CiC to other interpreters (Drupal, Python APIs, etc.).  &lt;/p&gt;

</description>
      <category>php</category>
      <category>ascoosos</category>
      <category>cic</category>
      <category>web5</category>
    </item>
    <item>
      <title>Getting Started with Ascoos Web Extended Studio (AWES)</title>
      <dc:creator>Christos Drogidis</dc:creator>
      <pubDate>Sat, 29 Nov 2025 15:12:22 +0000</pubDate>
      <link>https://forem.com/ascoos/getting-started-with-ascoos-web-extended-studio-awes-4bae</link>
      <guid>https://forem.com/ascoos/getting-started-with-ascoos-web-extended-studio-awes-4bae</guid>
      <description>&lt;h2&gt;
  
  
  What is AWES?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ascoos Web Extended Studio (AWES)&lt;/strong&gt; is a &lt;strong&gt;portable web development suite&lt;/strong&gt; for Windows 64-bit.&lt;br&gt;&lt;br&gt;
It provides a complete stack for developers and designers who need flexibility, modularity, and the ability to test projects across multiple versions of PHP, databases, and web technologies — all without installation.&lt;/p&gt;

&lt;h2&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%2F2p1c7ib563z4mm27ycpn.PNG" alt="Select Language" width="800" height="497"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Portable environment&lt;/strong&gt;: Just unzip and run — no installation required.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-version PHP &amp;amp; MariaDB&lt;/strong&gt;: Run different versions side by side for legacy and modern projects.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full stack included&lt;/strong&gt;: Apache, PHP (5.6–8.x), Node.js, Python, MariaDB, MongoDB, FileZilla FTP, SVN repositories, phpMyAdmin, and more.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GUI with 600+ shortcuts&lt;/strong&gt;: Advanced toolbar with support for 40 languages.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrated tools&lt;/strong&gt;: Visual Studio Code, Notepad++, Firefox Developer Edition, Chromium Portable, Sniptool, FastStone Image Viewer.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CGI support&lt;/strong&gt;: Execute Python, Node.js, and Perl via Apache CGI.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-source friendly&lt;/strong&gt;: Free to use, with active community support.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&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%2F52xf3u3wj0xelxk9aw0h.webp" alt="Servers Tab" width="800" height="497"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Why Use AWES?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility&lt;/strong&gt;: Test applications in different environments without switching installations.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Education &amp;amp; Testing&lt;/strong&gt;: Perfect for experimenting with new versions or teaching web technologies.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;All-in-one solution&lt;/strong&gt;: Everything you need for web development in one portable package.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe coexistence&lt;/strong&gt;: Runs independently without interfering with other stacks like XAMPP or WAMP.
&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%2Fytmx281bevccu7ml42sp.webp" 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%2Fytmx281bevccu7ml42sp.webp" alt="Create User" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&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%2Fe8lqpd4f7z3bwhvvstcf.webp" alt="Create Domain" width="800" height="497"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  How to Get Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download AWES from &lt;a href="https://sourceforge.net/projects/ascoos-web-extended-studio/" rel="noopener noreferrer"&gt;SourceForge&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;Unzip the package (e.g., &lt;code&gt;C:\AWES&lt;/code&gt;).
&lt;/li&gt;
&lt;li&gt;Launch the GUI and choose your preferred stack (PHP, Node.js, Python, etc.).
&lt;/li&gt;
&lt;li&gt;Start building, testing, and deploying your projects locally.
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&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%2Furz42vkaxugkbbr26rmo.webp" alt="Set Disk Drive" width="800" height="497"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://awes.ascoos.com" rel="noopener noreferrer"&gt;Official AWES Website&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sourceforge.net/projects/ascoos-web-extended-studio/" rel="noopener noreferrer"&gt;SourceForge Project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ascoos/awes" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.softpedia.com/get/Internet/Servers/WEB-Servers/Ascoos-Web-Extended-Studio.shtml" rel="noopener noreferrer"&gt;Softpedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AWES&lt;/strong&gt; is more than just a local server — it’s a &lt;strong&gt;complete web development studio&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
If you’re a developer who values &lt;strong&gt;portability, interoperability, and open-source freedom&lt;/strong&gt;, AWES is a powerful tool to add to your workflow.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>software</category>
      <category>php</category>
      <category>python</category>
    </item>
  </channel>
</rss>
