<?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: Czax225</title>
    <description>The latest articles on DEV Community by Czax225 (@czax225).</description>
    <link>https://dev.to/czax225</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%2F3670708%2F5a5c6cd9-3d89-41be-bae2-22f717ecb3cd.png</url>
      <title>DEV Community: Czax225</title>
      <link>https://dev.to/czax225</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/czax225"/>
    <language>en</language>
    <item>
      <title>Why CGO?: Build Beautiful, Pure Go Desktop Apps with Proton</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Sat, 11 Jul 2026 14:54:34 +0000</pubDate>
      <link>https://dev.to/czax225/why-cgo-build-beautiful-pure-go-desktop-apps-with-proton-4d64</link>
      <guid>https://dev.to/czax225/why-cgo-build-beautiful-pure-go-desktop-apps-with-proton-4d64</guid>
      <description>&lt;p&gt;Hey everyone!&lt;/p&gt;

&lt;p&gt;If you've ever tried building a desktop application in Go, you probably know the drill. You either end up using Electron (and suddenly your simple utility app eats 500MB of RAM), or you try a native GUI framework only to get stuck in a nightmarish battle with CGO cross-compilation toolchains just to build a Windows binary from your Mac.&lt;/p&gt;

&lt;p&gt;I got tired of the friction, so I built Proton—a pure Go, immediate-mode GUI library that doesn't make you want to switch back to web development.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Proton?
&lt;/h2&gt;

&lt;p&gt;Proton is an ultra-lightweight, native GUI library built on top of Gio. It completely abstracts away complex underlying rendering types, giving you a clean, stacked immediate-mode API while preserving a 100% native Go experience.&lt;/p&gt;

&lt;p&gt;Here is the best part: Zero CGO is required. You can cross-compile to Windows and macOS flawlessly from any machine without installing external compilers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Quick Start
&lt;/h2&gt;

&lt;p&gt;Building a window with a header takes less than 15 lines of code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"github.com/CzaxStudio/proton"&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;New&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Window&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;H3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Hello from Proton!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Run&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;h2&gt;
  
  
  Key Features That Make Life Easier
&lt;/h2&gt;

&lt;p&gt;API Immunity: Every draw function takes a proton.Context interface. Zero raw Gio types pollute your codebase. If the underlying rendering engine updates, your code remains completely untouched.&lt;/p&gt;

&lt;p&gt;Immediate Mode Simplicity: No setState, no complex component trees, and absolutely no XML or HTML layout files. Your draw function runs every frame, stacking widgets vertically by default.&lt;/p&gt;

&lt;p&gt;Batteries Included: It comes packed with text styles, buttons, inputs, layouts, and advanced components right out of the box.&lt;/p&gt;

&lt;p&gt;Instant Theming: Includes 46 built-in palettes (like Nord, Dracula, Catppuccin, and Tokyo Night). You can change the entire look with a single line: a.ApplyPalette(proton.DraculaPalette). You can even use hex color codes or add a live runtime ThemePicker.&lt;/p&gt;

&lt;p&gt;Cross-Platform: The exact same codebase runs flawlessly on desktop and even supports Android deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rich Widget &amp;amp; Layout Ecosystem
&lt;/h2&gt;

&lt;p&gt;We've built out a robust toolkit so you don't have to reinvent the wheel:&lt;/p&gt;

&lt;p&gt;Layouts: Row, Column, GrowRow, ResizeSplit, Grid, and flexible padding configurations.&lt;/p&gt;

&lt;p&gt;Widgets: Custom inputs, text styles, sliders, check boxes, progress bars, and search inputs.&lt;/p&gt;

&lt;p&gt;Data &amp;amp; Feedback: Component helpers like Table, ProgressRing, Stepper, and easy Toast overlays.&lt;/p&gt;

&lt;p&gt;Utilities: Simple keyboard shortcut binding via proton.OnKey(ctx, proton.ModCtrl, "S", saveFunc).&lt;/p&gt;

&lt;h2&gt;
  
  
  I'd Love Your Feedback!
&lt;/h2&gt;

&lt;p&gt;Proton is actively maintained and evolving fast. Whether you want to build a quick system utility, a lightweight developer dashboard, or a complex standalone tool, Proton is built to keep your binary small and your development speed fast.&lt;/p&gt;

&lt;p&gt;Check out the repository, run the example kitchen sink app (go run ./examples/showcase), and let me know what you think!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Star the repo if you like it: &lt;a href="https://github.com/CzaxStudio/proton" rel="noopener noreferrer"&gt;Proton Repo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the documentation: &lt;a href="https://github.com/CzaxStudio/proton-documentation" rel="noopener noreferrer"&gt;Proton Docs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website: &lt;a href="https://protonlib.pages.dev/" rel="noopener noreferrer"&gt;Proton Website&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>gui</category>
      <category>appdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Proton: An industry standard Pure-Go GUI Library</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Wed, 01 Jul 2026 15:10:16 +0000</pubDate>
      <link>https://dev.to/czax225/proton-an-industry-standard-pure-go-gui-library-24cm</link>
      <guid>https://dev.to/czax225/proton-an-industry-standard-pure-go-gui-library-24cm</guid>
      <description>&lt;p&gt;After years of building desktop applications in Go, the one hurdle that consistently frustrated me was the dependency on CGO for GUI development. While Go excels at backend development, the desktop GUI landscape has been fragmented, often forcing developers to choose between complex bindings, heavy runtime dependencies, or compromising on platform support.&lt;/p&gt;

&lt;p&gt;Proton emerges as a compelling solution to this problem. It is a framework for building graphical user interfaces in Go without requiring CGO, making cross-platform compilation straightforward and eliminating the complexities of managing C dependencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with CGO in GUI Development
&lt;/h2&gt;

&lt;p&gt;CGO is Go's mechanism for calling C code, and while powerful, it introduces significant challenges. Cross-compilation becomes a complex task, build times increase, and you inherit the memory safety concerns of C. For GUI applications, this often meant relying on bindings to libraries like GTK or Qt, which are large, complex, and not always pleasant to work with in a Go environment.&lt;/p&gt;

&lt;p&gt;Proton sidesteps this entirely. By using a pure-Go rendering approach, it compiles to a single binary on any platform without the need for external C libraries or a C compiler during the build process. This alone is a major win for distribution and deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Immediate-Mode GUI in Go
&lt;/h3&gt;

&lt;p&gt;Proton adopts an immediate-mode GUI paradigm, which is refreshingly straightforward for Go developers. Unlike retained-mode frameworks where you maintain a persistent tree of widgets, immediate-mode interfaces are built from scratch every frame. This maps naturally to Go's procedural style and simplifies state management.&lt;/p&gt;

&lt;p&gt;The core pattern is simple: your draw function runs every frame, and you call widget functions in the order you want them to appear. They stack vertically by default, giving you a clean, predictable layout model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started is Minimal
&lt;/h3&gt;

&lt;p&gt;The library's API is designed for rapid prototyping. The most basic application is just a few lines of code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"github.com/CzaxStudio/proton"&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;New&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Window&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;H3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Hello from Proton!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Run&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;This simplicity extends to installation. On macOS and Windows, it works out of the box. On Linux, you only need to install Wayland and Vulkan development packages, reflecting its modern backend choices.&lt;/p&gt;

&lt;h2&gt;
  
  
  State Management Without Boilerplate
&lt;/h2&gt;

&lt;p&gt;A common challenge in immediate-mode UI is persisting state between frames. Proton handles this elegantly by encouraging you to store state in your own structs, using re-exported types from the library. This approach keeps your application logic clean and avoids the need for multiple imports.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;UI&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;btn&lt;/span&gt;     &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Clickable&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt;    &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Editor&lt;/span&gt;
    &lt;span class="n"&gt;checked&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Bool&lt;/span&gt;
    &lt;span class="n"&gt;choice&lt;/span&gt;  &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Enum&lt;/span&gt;
    &lt;span class="n"&gt;vol&lt;/span&gt;     &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Float&lt;/span&gt;
    &lt;span class="n"&gt;scroll&lt;/span&gt;  &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Scrollable&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The state types are lightweight handles that Proton uses to manage interactions like button clicks, text input, and slider values. You simply pass a pointer to your struct field to the corresponding widget function, and the library updates it as the user interacts.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Comprehensive Widget Toolkit
&lt;/h3&gt;

&lt;p&gt;Proton comes with a rich set of widgets that cover most common UI needs:&lt;/p&gt;

&lt;p&gt;Elements: Labels (H1-H6, Body2, Caption), buttons (standard, outline, icon), and links.&lt;/p&gt;

&lt;p&gt;Input Controls: Text inputs, text areas, checkboxes, toggles, radio buttons, sliders, number inputs, and select boxes.&lt;/p&gt;

&lt;p&gt;Layout Tools: Rows, columns, grids, split panes (with resize handles), padding, and spacer elements for fine-tuned layout control.&lt;/p&gt;

&lt;p&gt;Visual Components: Dividers, cards, badges, status dots, code blocks, and color swatches.&lt;/p&gt;

&lt;p&gt;Feedback &amp;amp; Overlays: Alerts, toasts, tooltips, spinners, tabs, accordions, and context menus.&lt;/p&gt;

&lt;p&gt;The layout system is particularly well-thought-out. While widgets stack vertically by default, you can easily create horizontal layouts, growable items that fill remaining space, and fixed-size elements. The split pane functionality is a nice touch for creating IDE-like interfaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  Theming and Customization
&lt;/h3&gt;

&lt;p&gt;Out of the box, Proton includes several built-in palettes including Dark, Nord, Rose Pine, and Catppuccin. Applying a theme is as simple as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ApplyPalette&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DarkPalette&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For custom branding, you can define your own palette with colors and apply it. There is also a global font scale setting, making it easy to accommodate different display preferences.&lt;/p&gt;

&lt;h3&gt;
  
  
  Asynchronous Programming and Feedback
&lt;/h3&gt;

&lt;p&gt;Modern applications need to handle background tasks without freezing the UI. Proton provides a simple Invalidate() method on the window context, allowing you to request a redraw from any goroutine after updating your application state.&lt;/p&gt;

&lt;p&gt;This pattern is clean and idiomatic Go:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;go&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;fetchFromAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
    &lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Invalidate&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;User feedback is also well-supported with dismissable alerts and toast notifications that you can display for operations like saving or error conditions. Toasts are particularly convenient as they can be called from anywhere and will render on the next frame.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keyboard Shortcuts and Accessibility
&lt;/h3&gt;

&lt;p&gt;Keyboard shortcut support is built directly into the library. You can define global or context-specific shortcuts easily:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OnKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ModCtrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"S"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;save&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;This makes it simple to add professional-grade keyboard navigation to your applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples and Documentation
&lt;/h3&gt;

&lt;p&gt;The project includes several examples to get you started quickly:&lt;/p&gt;

&lt;p&gt;hello: A minimal application demonstrating the basic structure.&lt;/p&gt;

&lt;p&gt;todo: A classic to-do list application.&lt;/p&gt;

&lt;p&gt;calculator: An interactive calculator showcasing button handling.&lt;/p&gt;

&lt;p&gt;showcase: A comprehensive demonstration of layout and theming.&lt;/p&gt;

&lt;p&gt;kitchen: A reference implementation that displays every available widget.&lt;/p&gt;

&lt;p&gt;The documentation is well-organized and covers core topics such as text rendering, button handling, input controls, layout design, and theming.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Road Ahead
&lt;/h3&gt;

&lt;p&gt;Proton is under active development with a clear direction. The recent v0.8.0 release and consistent commit activity suggest a healthy project. The library already supports a wide range of widgets and layouts, making it suitable for many desktop applications.&lt;/p&gt;

&lt;p&gt;The community is growing, with early adopters providing feedback and contributing to the project. The MIT license makes it suitable for both open-source and commercial projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who Should Consider Proton?
&lt;/h3&gt;

&lt;p&gt;Proton is an excellent choice for Go developers who want to create desktop applications without the overhead of CGO. It is particularly well-suited for:&lt;/p&gt;

&lt;p&gt;Internal Tools: Quickly building internal utilities that need a GUI.&lt;/p&gt;

&lt;p&gt;Small/Medium-Sized/Mid to large Applications: Projects where a full-featured GUI toolkit is beneficial but you want to avoid the complexity of web technologies or CGO bindings.&lt;/p&gt;

&lt;p&gt;Cross-Platform Distribution: The pure-Go nature means compiling for Windows, macOS, and Linux is straightforward.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get Proton
&lt;/h3&gt;

&lt;p&gt;If you like it then please star the repo: &lt;a href="https://github.com/CzaxStudio/proton" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/proton&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or use it in your project using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;go&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;github&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;CzaxStudio&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Thanks for Reading
&lt;/h3&gt;

&lt;p&gt;If you have been looking for a way to build cross-platform GUI applications in Go without the headaches of C interop, Proton is definitely worth exploring. The project's commitment to simplicity and its growing set of features make it a promising addition to the Go ecosystem.&lt;/p&gt;

</description>
      <category>go</category>
      <category>software</category>
      <category>gui</category>
    </item>
    <item>
      <title>Stop Fighting Go GUIs: Build Sleek Desktop Apps in Pure Go with Proton</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Mon, 01 Jun 2026 12:12:34 +0000</pubDate>
      <link>https://dev.to/czax225/stop-fighting-go-guis-build-sleek-desktop-apps-in-pure-go-with-proton-4ph2</link>
      <guid>https://dev.to/czax225/stop-fighting-go-guis-build-sleek-desktop-apps-in-pure-go-with-proton-4ph2</guid>
      <description>&lt;p&gt;The state of GUI development in Go has always been a bit complicated.&lt;/p&gt;

&lt;p&gt;You either have to wrestle with heavy C-dependencies like GTK and Qt bindings that make cross-compiling a nightmare, or settle for web-view frameworks that turn a simple desktop utility into a 150MB RAM-hogging Electron clone.&lt;/p&gt;

&lt;p&gt;If you love Go for its simplicity, speed, and single-binary deployment, your GUI library should look and feel the same way.&lt;/p&gt;

&lt;p&gt;That is exactly why I built Proton.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Proton?
&lt;/h1&gt;

&lt;p&gt;Proton is a lightweight, pure-Go GUI framework built on top of the incredibly fast Gio engine. It utilizes an immediate-mode architecture, meaning your UI renders dynamically every single frame.&lt;/p&gt;

&lt;p&gt;The philosophy behind Proton is straightforward: Zero C-dependencies, ultra-fast performance, and a developer experience that does not make you want to pull your hair out.&lt;/p&gt;

&lt;h1&gt;
  
  
  Here is why it works so well:
&lt;/h1&gt;

&lt;p&gt;Pure Go: No cgo required. Cross-compiling actually works out of the box.&lt;/p&gt;

&lt;p&gt;Featherweight: Tiny binary sizes and low resource usage.&lt;/p&gt;

&lt;p&gt;Immediate Mode: Your state lives directly in your code. No complex data-binding boilerplate.&lt;/p&gt;

&lt;p&gt;Themeable: Comes with built-in palettes like Catppuccin, Nord, and Rose Pine.&lt;/p&gt;

&lt;h1&gt;
  
  
  See it in Action: The 5-Minute Setup
&lt;/h1&gt;

&lt;p&gt;Here is a complete, self-contained application with an input box, a button, and basic text handling in just a few lines of code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"github.com/CzaxStudio/proton"&lt;/span&gt;

&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;UI&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Editor&lt;/span&gt;
    &lt;span class="n"&gt;btn&lt;/span&gt;  &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Clickable&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;UI&lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;New&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"My First Proton App"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c"&gt;// Apply a theme instantly&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ApplyPalette&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CatppuccinPalette&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Window&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello Proton"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;480&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Win&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;H3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Welcome to Go GUIs done right"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Gap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c"&gt;// Interactive Input&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"What is your name?"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Gap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c"&gt;// Immediate-mode button handling&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;btn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Greet Me"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nb"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&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="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Run&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;h2&gt;
  
  
  Layouts Without the Headache
&lt;/h2&gt;

&lt;p&gt;If you have ever used Gio directly, you know that managing layouts and constraints can require a lot of nesting. Proton abstracts that complexity away into intuitive layout functions:&lt;/p&gt;

&lt;p&gt;Stacking: Arrange components cleanly using Row(win, ...) and Column(win, ...).&lt;/p&gt;

&lt;p&gt;Flexibility: Use GrowRow alongside GrowItem and FixedItem to create responsive sidebars and expanding content panes.&lt;/p&gt;

&lt;p&gt;Proportions: Instantly split screens using Split(win, 0.25, leftSide, rightSide) for instant dashboard layouts.&lt;/p&gt;

&lt;p&gt;Spacing: Fine-tune visuals cleanly with Pad(), PadH(), and Gap()&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// Example of a quick responsive layout split&lt;/span&gt;
&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Win&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Sidebar Navigation"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Win&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;H1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Main Content Dashboard"&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;h2&gt;
  
  
  Real Features for Real Apps
&lt;/h2&gt;

&lt;p&gt;Proton is not just a proof-of-concept for text and buttons. It includes the actual utilities you need to build functional software:&lt;/p&gt;

&lt;p&gt;Virtualized Lists: List() and HList() only render what is visible on screen, letting you scroll through thousands of rows smoothly without breaking a sweat.&lt;/p&gt;

&lt;p&gt;Keyboard Shortcuts: Global hotkeys are a first-class citizen. Fire events using proton.OnKey(win, key.ModCtrl, "S", saveFunc).&lt;/p&gt;

&lt;p&gt;Async Notifications: Show modern, non-blocking toast notifications safely from any background goroutine using u.toast.Show("Saved!", 2 * time.Second).&lt;/p&gt;

&lt;p&gt;Asset Embedding: Includes a simple built-in CLI tool (Proton logo path/to/img.png) that caches and bakes assets directly into your binary.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try it out
&lt;/h2&gt;

&lt;p&gt;Ready to ditch the heavy web frameworks and complex C bindings? Getting started takes seconds. Just initialize your Go module and pull the library:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;myapp &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;myapp
go mod init myapp
go get github.com/CzaxStudio/proton
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If you are on Linux, just grab your standard graphics drivers (libwayland-dev, libxkbcommon-dev, libvulkan-dev). Windows and macOS users need zero extra system dependencies.&lt;/p&gt;

&lt;p&gt;The project is completely open-source and moving fast. Check out the example applications, including a fully functional Calculator and a CyberTool showcase, directly in the repository.&lt;/p&gt;

&lt;p&gt;Take a look at the Proton GitHub Repository, try out the examples, and let me know what you think in the comments. I am curious to see what you build with it.&lt;/p&gt;

&lt;p&gt;If you like it then please star the Repo &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/CzaxStudio" rel="noopener noreferrer"&gt;
        CzaxStudio
      &lt;/a&gt; / &lt;a href="https://github.com/CzaxStudio/proton" rel="noopener noreferrer"&gt;
        proton
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A framework for building GUI applications in Go, Stay positive :)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Proton&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;A GUI library for Go. Built on &lt;a href="https://gioui.org" rel="nofollow noopener noreferrer"&gt;Gio&lt;/a&gt;. No C deps, pure Go.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Example apps (made using Proton)&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Note: These are very basic, you can make even better apps.&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/251837336/600829447-c8e48374-7e98-41c5-9d46-4427a007b02b.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwODI5NDQ3LWM4ZTQ4Mzc0LTdlOTgtNDFjNS05ZDQ2LTQ0MjdhMDA3YjAyYi5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lMzZiNDQyYjJkOWNiODUwM2ZhMDIyYzUyNjMzNDY3YWQ5ZjM3NTQxNWZiMWNhNGJlOGM5ZjE2OWU2NmJmM2Y5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZnaWYifQ.qXpbUSnEE4g7lOd4K6FRqxK9zjO7rhW8Ac5mDiXuy8M"&gt;&lt;img width="813" height="508" alt="GUI demo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F251837336%2F600829447-c8e48374-7e98-41c5-9d46-4427a007b02b.gif%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwODI5NDQ3LWM4ZTQ4Mzc0LTdlOTgtNDFjNS05ZDQ2LTQ0MjdhMDA3YjAyYi5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lMzZiNDQyYjJkOWNiODUwM2ZhMDIyYzUyNjMzNDY3YWQ5ZjM3NTQxNWZiMWNhNGJlOGM5ZjE2OWU2NmJmM2Y5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZnaWYifQ.qXpbUSnEE4g7lOd4K6FRqxK9zjO7rhW8Ac5mDiXuy8M" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/251837336/600732901-d536a863-d010-4dc4-b223-b790b00c8478.PNG?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwNzMyOTAxLWQ1MzZhODYzLWQwMTAtNGRjNC1iMjIzLWI3OTBiMDBjODQ3OC5QTkc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wNjk2ODI2ZDkwNWYwNzBjZWY1YTc1Y2MxM2Q3MmU5OTFhMGNlMTgwNmJjMWMwOGYzMDEzODIzYmYzYzE0NTMwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.ULZ26cQRSMJSB1l1rKqVRfl0CwKhY0ReYc5q4CEF7aU"&gt;&lt;img width="683" height="360" alt="Example app 2" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F251837336%2F600732901-d536a863-d010-4dc4-b223-b790b00c8478.PNG%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwNzMyOTAxLWQ1MzZhODYzLWQwMTAtNGRjNC1iMjIzLWI3OTBiMDBjODQ3OC5QTkc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wNjk2ODI2ZDkwNWYwNzBjZWY1YTc1Y2MxM2Q3MmU5OTFhMGNlMTgwNmJjMWMwOGYzMDEzODIzYmYzYzE0NTMwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.ULZ26cQRSMJSB1l1rKqVRfl0CwKhY0ReYc5q4CEF7aU" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Logo&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/251837336/600733778-e044d0b8-a96f-4bc2-9df9-725a41a99ed2.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwNzMzNzc4LWUwNDRkMGI4LWE5NmYtNGJjMi05ZGY5LTcyNWE0MWE5OWVkMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iZDFlYTA5YTVmN2JkN2QwYjlhYThiYmVjNWFiODFiN2VjZmVkZWQwM2FkNDY1ZTg3NzgyYTgzMDc4YWEwYjU3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.0mB4F3saHj8FIq-su1uRUgJoE-KzMsUBg24X8nme32I"&gt;&lt;img width="1254" height="1254" alt="Proton" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F251837336%2F600733778-e044d0b8-a96f-4bc2-9df9-725a41a99ed2.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwNzMzNzc4LWUwNDRkMGI4LWE5NmYtNGJjMi05ZGY5LTcyNWE0MWE5OWVkMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iZDFlYTA5YTVmN2JkN2QwYjlhYThiYmVjNWFiODFiN2VjZmVkZWQwM2FkNDY1ZTg3NzgyYTgzMDc4YWEwYjU3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.0mB4F3saHj8FIq-su1uRUgJoE-KzMsUBg24X8nme32I" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Getting started&lt;/h1&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-go notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;package&lt;/span&gt; main
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;"github.com/CzaxStudio/proton"&lt;/span&gt;

&lt;span class="pl-k"&gt;type&lt;/span&gt; &lt;span class="pl-smi"&gt;UI&lt;/span&gt; &lt;span class="pl-k"&gt;struct&lt;/span&gt; {
    &lt;span class="pl-c1"&gt;name&lt;/span&gt; proton.&lt;span class="pl-smi"&gt;Editor&lt;/span&gt;
    &lt;span class="pl-c1"&gt;btn&lt;/span&gt;  proton.&lt;span class="pl-smi"&gt;Clickable&lt;/span&gt;
}

&lt;span class="pl-k"&gt;func&lt;/span&gt; &lt;span class="pl-s1"&gt;main&lt;/span&gt;() {
    &lt;span class="pl-s1"&gt;u&lt;/span&gt; &lt;span class="pl-c1"&gt;:=&lt;/span&gt; &lt;span class="pl-c1"&gt;&amp;amp;&lt;/span&gt;&lt;span class="pl-smi"&gt;UI&lt;/span&gt;{}
    &lt;span class="pl-s1"&gt;a&lt;/span&gt; &lt;span class="pl-c1"&gt;:=&lt;/span&gt; &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;New&lt;/span&gt;(&lt;span class="pl-s"&gt;"my app"&lt;/span&gt;)
    &lt;span class="pl-s1"&gt;a&lt;/span&gt;.&lt;span class="pl-c1"&gt;Window&lt;/span&gt;(&lt;span class="pl-s"&gt;"Hello"&lt;/span&gt;, &lt;span class="pl-c1"&gt;480&lt;/span&gt;, &lt;span class="pl-c1"&gt;300&lt;/span&gt;, &lt;span class="pl-k"&gt;func&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt; &lt;span class="pl-c1"&gt;*&lt;/span&gt;proton.&lt;span class="pl-smi"&gt;Win&lt;/span&gt;) {
        &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;H3&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-s"&gt;"Hello from Proton!"&lt;/span&gt;)
        &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;Gap&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-c1"&gt;8&lt;/span&gt;)
        &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;Input&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-c1"&gt;&amp;amp;&lt;/span&gt;&lt;span class="pl-s1"&gt;u&lt;/span&gt;.&lt;span class="pl-c1"&gt;name&lt;/span&gt;, &lt;span class="pl-s"&gt;"Your name"&lt;/span&gt;)
        &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;Gap&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-c1"&gt;8&lt;/span&gt;)
        &lt;span class="pl-k"&gt;if&lt;/span&gt; &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;Button&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-c1"&gt;&amp;amp;&lt;/span&gt;&lt;span class="pl-s1"&gt;u&lt;/span&gt;.&lt;span class="pl-c1"&gt;btn&lt;/span&gt;, &lt;span class="pl-s"&gt;"Go"&lt;/span&gt;) {
            &lt;span class="pl-s1"&gt;println&lt;/span&gt;(&lt;span class="pl-s"&gt;"Hello,"&lt;/span&gt;, &lt;span class="pl-s1"&gt;u&lt;/span&gt;.&lt;span class="pl-c1"&gt;name&lt;/span&gt;.&lt;span class="pl-c1"&gt;Text&lt;/span&gt;())&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/CzaxStudio/proton" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>go</category>
      <category>showdev</category>
      <category>tooling</category>
      <category>ui</category>
    </item>
    <item>
      <title>Just Built a Cybersecurity Scripting Language – Here's Why</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Thu, 14 May 2026 07:07:05 +0000</pubDate>
      <link>https://dev.to/czax225/just-built-a-cybersecurity-scripting-language-heres-why-bc8</link>
      <guid>https://dev.to/czax225/just-built-a-cybersecurity-scripting-language-heres-why-bc8</guid>
      <description>&lt;p&gt;Spectator v2.0 is out. No Python. No Electron. Just one binary.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;
&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"scanme.nmap.org"&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nf"&gt;PortScan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nf"&gt;SSLInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nf"&gt;HeaderAudit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What makes it different:&lt;/p&gt;

&lt;p&gt;Security primitives built-in – PortScan, SQLiTest, PayloadGen, SubTakeover. No pip install rabbit holes.&lt;/p&gt;

&lt;p&gt;Native GUI – Real desktop tools without Electron's 100MB overhead. Windows/Linux/Mac.&lt;/p&gt;

&lt;p&gt;Space package manager – SHA-256 verified libraries. Supply-chain attacks? Blocked.&lt;/p&gt;

&lt;p&gt;Standalone builds – spectator build tool.str to scanner.exe for windows. No runtime needed.&lt;/p&gt;

&lt;p&gt;Example – Build a GUI scanner in 15 lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;Import&lt;/span&gt; &lt;span class="n"&gt;Spec&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GUI&lt;/span&gt;
&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;window&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Recon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"bg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#070b14"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Enter IP or domain"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Scan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"run"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#00d4aa"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"out"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"run"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;ips&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"out"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"→ "&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ips&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;", "&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Try it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;spectator&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;scan&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;
&lt;span class="n"&gt;spectator&lt;/span&gt; &lt;span class="n"&gt;space&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="n"&gt;coffee&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Built for pentesters, red teamers, and security researchers who are tired of gluing tools together.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/CzaxStudio/Spectator" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/Spectator&lt;/a&gt;&lt;br&gt;
Website: &lt;a href="https://spectatorcyber.pages.dev/" rel="noopener noreferrer"&gt;https://spectatorcyber.pages.dev/&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://github.com/CzaxStudio/SpectatorDocs/" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/SpectatorDocs/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See Everything. Miss Nothing. &lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>programming</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I wrote a .NET library for syscalls and process injection</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Wed, 13 May 2026 15:52:21 +0000</pubDate>
      <link>https://dev.to/czax225/i-wrote-a-net-library-for-syscalls-and-process-injection-19ja</link>
      <guid>https://dev.to/czax225/i-wrote-a-net-library-for-syscalls-and-process-injection-19ja</guid>
      <description>&lt;p&gt;Been doing red team work in C# for a while. Kept rewriting the same P/Invoke blocks and syscall wrappers for every project. Got tired of it so I bundled everything into one library.&lt;/p&gt;

&lt;p&gt;SharpKit is a .NET 8 library for offensive operations. No external NuGet dependencies. Just System.Net.Http, System.Runtime.InteropServices, and System.Net.Sockets.&lt;/p&gt;

&lt;p&gt;What it does:&lt;/p&gt;

&lt;p&gt;Syscalls with runtime SSN extraction (parses ntdll in memory, no hardcoded numbers)&lt;/p&gt;

&lt;p&gt;Indirect syscall stubs with custom gadgets&lt;/p&gt;

&lt;p&gt;Process injection: CreateRemoteThread, NtCreateThreadEx, QueueUserAPC, process hollowing&lt;/p&gt;

&lt;p&gt;Win32 P/Invoke for kernel32, advapi32, ntdll&lt;/p&gt;

&lt;p&gt;Kerberos builders: AS-REQ, TGS-REQ, AP-REQ, S4U2Self, S4U2Proxy, kerberoast hash formatter&lt;/p&gt;

&lt;p&gt;HttpAgent with NTLM/Basic/Bearer auth and proxy support&lt;/p&gt;

&lt;p&gt;PacketCrafter for raw ARP, DNS, TCP, UDP&lt;/p&gt;

&lt;p&gt;Example for syscalls:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;Syscalls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Initialize&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Syscalls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;NtAllocateVirtualMemory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;procHandle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;ref&lt;/span&gt; &lt;span class="n"&gt;baseAddr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Zero&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;ref&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0x3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0x04&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The syscall module extracts SSNs at runtime so you don't need to hardcode them per Windows version. It also supports indirect dispatch via jmp r11 if you have a gadget.&lt;/p&gt;

&lt;p&gt;NuGet: SharpKit.Offensive&lt;br&gt;
Docs: github.com/CzaxStudio/SharpKit-Docs&lt;br&gt;
Repo: github.com/CzaxStudio/SharpKit&lt;/p&gt;

&lt;p&gt;Built for legal red teaming and research. Feedback welcome.&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>cybersecurity</category>
      <category>redteaming</category>
      <category>nuget</category>
    </item>
    <item>
      <title>Title: Ferrum Studio: A Native IDE Built Exclusively for Nim (No Electron, ~12MB)</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Sat, 02 May 2026 13:02:56 +0000</pubDate>
      <link>https://dev.to/czax225/title-ferrum-studio-a-native-ide-built-exclusively-for-nim-no-electron-12mb-294n</link>
      <guid>https://dev.to/czax225/title-ferrum-studio-a-native-ide-built-exclusively-for-nim-no-electron-12mb-294n</guid>
      <description>&lt;p&gt;Every IDE that supports Nim does it as an afterthought. You install a language server plugin, bolt it onto VS Code or Sublime, and hope the latest update didn't break something.&lt;/p&gt;

&lt;p&gt;I wanted something different.&lt;/p&gt;

&lt;p&gt;So I built Ferrum Studio — a lightweight, native desktop IDE built from the ground up exclusively for Nim.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/user-attachments/assets/621bf84f-a3b5-4f1c-a7d4-85e3b3e83247" rel="noopener noreferrer"&gt;https://github.com/user-attachments/assets/621bf84f-a3b5-4f1c-a7d4-85e3b3e83247&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No Electron. No bundled Chromium. No 300MB of RAM just to open a file.&lt;/p&gt;

&lt;p&gt;Cold start: &amp;lt; 1 second&lt;/p&gt;

&lt;p&gt;RAM usage (idle): ~35 MB&lt;/p&gt;

&lt;p&gt;Binary size: ~12 MB (Windows)&lt;/p&gt;

&lt;p&gt;Built with Go + Wails, not JavaScript + Node. The backend is compiled Go, the frontend is a native WebView, and the whole thing talks across an auto-generated bridge.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Makes Ferrum Different?
&lt;/h1&gt;

&lt;p&gt;Most editors treat Nim as a plugin. Ferrum treats Nim as the only thing that matters.&lt;/p&gt;

&lt;p&gt;Every feature — snippets, error messages, templates, shortcuts — is designed around how Nim developers actually work.&lt;/p&gt;

&lt;p&gt;Editor Features&lt;br&gt;
Nim syntax highlighting (kept current with new keywords)&lt;/p&gt;

&lt;p&gt;Smart indentation (whitespace-aware)&lt;/p&gt;

&lt;p&gt;Dot-aware autocomplete&lt;/p&gt;

&lt;p&gt;Snippets support&lt;/p&gt;

&lt;p&gt;Inline error squiggles&lt;/p&gt;

&lt;p&gt;Multi-tab editing&lt;/p&gt;

&lt;p&gt;Quick open (Ctrl+P)&lt;/p&gt;

&lt;h1&gt;
  
  
  Nim Integration
&lt;/h1&gt;

&lt;p&gt;F5 → Run (nim c -r)&lt;/p&gt;

&lt;p&gt;F6 → Run with arguments&lt;/p&gt;

&lt;p&gt;F7 → Build&lt;/p&gt;

&lt;p&gt;F8 → Test&lt;/p&gt;

&lt;p&gt;Format via nim pretty&lt;/p&gt;

&lt;p&gt;Fast diagnostics via nim check&lt;/p&gt;

&lt;p&gt;Interactive stdin support&lt;/p&gt;

&lt;p&gt;Problems Panel&lt;br&gt;
Clean error explanations with fix suggestions. Click any error to jump directly to the line. No more cryptic compiler output — Ferrum translates common errors into plain English.&lt;/p&gt;

&lt;h1&gt;
  
  
  Templates
&lt;/h1&gt;

&lt;p&gt;One-click project templates for:&lt;/p&gt;

&lt;p&gt;CLI App&lt;/p&gt;

&lt;p&gt;Library&lt;/p&gt;

&lt;p&gt;Web App&lt;/p&gt;

&lt;p&gt;Async App&lt;/p&gt;

&lt;p&gt;Metaprogramming examples&lt;/p&gt;

&lt;h1&gt;
  
  
  Terminal
&lt;/h1&gt;

&lt;p&gt;Integrated terminal with ANSI colors, command history, and full interactive input support. Plus a "Nim Treasure Map" sidebar with curated code gems for common patterns.&lt;/p&gt;

&lt;h1&gt;
  
  
  Contributing
&lt;/h1&gt;

&lt;p&gt;Contributions are welcome. The best places to help:&lt;/p&gt;

&lt;p&gt;Add more error explanations in enhancements.js&lt;/p&gt;

&lt;p&gt;Keep the syntax highlighter updated with new Nim keywords&lt;/p&gt;

&lt;p&gt;Test on macOS/Linux&lt;/p&gt;

&lt;p&gt;Build a light theme&lt;/p&gt;

&lt;p&gt;Note on AI usage: The frontend UI was partially assisted by AI tools. The core backend and architecture were implemented manually.&lt;/p&gt;

&lt;h1&gt;
  
  
  Links
&lt;/h1&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/CzaxStudio/Ferrum-Studio" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/Ferrum-Studio&lt;/a&gt;&lt;br&gt;
Website: &lt;a href="https://czaxstudio.github.io/Ferrum-Studio/" rel="noopener noreferrer"&gt;https://czaxstudio.github.io/Ferrum-Studio/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>performance</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Building Your First Cybersecurity Tool with Spectator: A New Language for Pentesters</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Wed, 29 Apr 2026 05:39:14 +0000</pubDate>
      <link>https://dev.to/czax225/building-your-first-cybersecurity-tool-with-spectator-a-new-language-for-pentesters-2fm9</link>
      <guid>https://dev.to/czax225/building-your-first-cybersecurity-tool-with-spectator-a-new-language-for-pentesters-2fm9</guid>
      <description>&lt;p&gt;The Problem We All Face&lt;br&gt;
Let's be honest: when you're in the middle of a penetration test or red team engagement, the last thing you want to do is wrestle with boilerplate code. You need to scan, exploit, and report — fast.&lt;/p&gt;

&lt;p&gt;Python is great, but:&lt;/p&gt;

&lt;p&gt;You need to install dependencies&lt;/p&gt;

&lt;p&gt;Virtual environments everywhere&lt;/p&gt;

&lt;p&gt;"It works on my machine" syndrome&lt;/p&gt;

&lt;p&gt;GUI tools? That means Electron (hello, 200MB hello world)&lt;/p&gt;

&lt;p&gt;Bash is powerful but... let's not talk about parsing JSON.&lt;/p&gt;

&lt;p&gt;Enter Spectator — a new programming language built from the ground up for cybersecurity work.&lt;/p&gt;

&lt;p&gt;What Is Spectator?&lt;br&gt;
Spectator is an interpreted scripting language (written in Go) that puts security operations front and center.&lt;/p&gt;
&lt;h1&gt;
  
  
  Example
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;# This is all it takes to recon a target
&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"scanme.nmap.org"&lt;/span&gt;
&lt;span class="n"&gt;ips&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"IPs: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ips&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;", "&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;PortScan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;SSLInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Your First Spectator Tool: A Smart Port Scanner
&lt;/h2&gt;

&lt;p&gt;Step 1: Installation&lt;br&gt;
Download the binary from releases:&lt;/p&gt;
&lt;h1&gt;
  
  
  Linux/macOS
&lt;/h1&gt;

&lt;p&gt;chmod +x spectator&lt;br&gt;
./spectator version&lt;/p&gt;
&lt;h1&gt;
  
  
  Windows
&lt;/h1&gt;

&lt;p&gt;Spectator.exe version&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2: Create Your First Script
&lt;/h2&gt;

&lt;p&gt;Save this as smart_scan.str&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Capture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Target IP or domain: "&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Scanning: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="cp"&gt;## Define common ports and their services
&lt;/span&gt;&lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;445&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3306&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5432&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;27017&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;svcs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="s"&gt;"21"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"FTP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"22"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"SSH"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"23"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Telnet"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"25"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"SMTP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"80"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"HTTP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"443"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"HTTPS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"445"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"SMB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"3306"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"MySQL"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"3389"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"RDP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"5432"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"PostgreSQL"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"8080"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"HTTP-Alt"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"8443"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"HTTPS-Alt"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"27017"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"MongoDB"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;open_ports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Scanning ports...&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hasPort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;svcs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"   OPEN     "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"  ("&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;")"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="cp"&gt;## Store results
&lt;/span&gt;    &lt;span class="n"&gt;open_ports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;open_ports&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;

    &lt;span class="cp"&gt;## Grab banner if it's HTTP/HTTPS
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;8443&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;proto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https"&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;proto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"http"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;proto&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"://"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;":"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"      → Grabbing banner from "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

      &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"timeout"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"follow"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;httpHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"server"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"      → Server: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"_banner"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;server&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="p"&gt;}&lt;/span&gt;

&lt;span class="cp"&gt;## Generate report
&lt;/span&gt;&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Summary:"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"    Open ports found: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;open_ports&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"    Results saved to scan_results.json and scan_report.html"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="cp"&gt;## Save JSON output
&lt;/span&gt;&lt;span class="n"&gt;json_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;jsonStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;writeFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"scan_results.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="cp"&gt;## Create HTML report
&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Scan Report - "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/title&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;style&amp;gt;body{font-family:monospace;background:#0a0f1a;color:#e2e8f0;padding:20px}"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"h1{color:#00d4aa} table{border-collapse:collapse;width:100%}"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"th,td{border:1px solid #334155;padding:8px;text-align:left}"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"th{background:#1e293b}&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;h1&amp;gt; Spectator Scan Report&amp;lt;/h1&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Target:&amp;lt;/strong&amp;gt; "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/p&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Timestamp:&amp;lt;/strong&amp;gt; "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/p&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;h2&amp;gt; Open Ports&amp;lt;/h2&amp;gt;&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Port&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Service&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Banner&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;"&lt;/span&gt;

&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;open_ports&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;port_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port_str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;banner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hasKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port_str&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"_banner"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;banner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port_str&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"_banner"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;banner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"-"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;port_str&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;banner&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/table&amp;gt;&amp;lt;hr&amp;gt;&amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Generated by Spectator - See Everything. Miss Nothing.&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;writeFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"scan_report.html"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Done! Open scan_report.html in your browser."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Run Your Tool&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spectator run smart_scan.str
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No dependencies, no virtual environments, no "pip install requests." Just run.&lt;/p&gt;

&lt;p&gt;Level Up: Adding a GUI&lt;br&gt;
Here's where Spectator gets really interesting. Let's wrap that scanner in a native GUI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#Import Spec.GUI
&lt;/span&gt;
&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;window&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Spectator Port Scanner"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"width"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;900&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"height"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;700&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"bg"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#0a0f1a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"accent"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#00d4aa"&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Spectator Port Scanner"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Enter target (IP or domain)..."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Start Scan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"scan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#00d4aa"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"height"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"scan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Please enter a target"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"[+] Scanning: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"[+] Checking common ports..."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;445&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3306&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5432&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8443&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

  &lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hasPort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"  ✓ Port "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;" is OPEN"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"  ✗ Port "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;" is closed"&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="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Scan complete!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Build
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows executable&lt;/span&gt;
spectator build scanner.str to PortScanner.exe &lt;span class="k"&gt;for &lt;/span&gt;windows

&lt;span class="c"&gt;# Linux binary&lt;/span&gt;
spectator build scanner.str to portscanner &lt;span class="k"&gt;for &lt;/span&gt;linux

&lt;span class="c"&gt;# macOS (Intel)&lt;/span&gt;
spectator build scanner.str to PortScanner &lt;span class="k"&gt;for &lt;/span&gt;mac
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your users don't need Spectator installed. The binary is completely self-contained.&lt;/p&gt;

&lt;p&gt;*GUI available only for windows.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Built-in Modules That Shine
&lt;/h1&gt;

&lt;p&gt;After playing with Spectator, here are the modules I found most useful:&lt;/p&gt;

&lt;h2&gt;
  
  
  Recon
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;ips&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;whois&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;WHOIs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;geo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GeoIP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"8.8.8.8"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;subs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SubdomainEnum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"wordlist.txt"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Web Testing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HeaderAudit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;tech&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;TechDetect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;sqli_test&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SQLiTest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://target.com/page?id=1"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Mission Reporting
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;missionStart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Web App Pentest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionStage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Recon"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionFind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"HIGH"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Missing CSP header"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"XSS possible"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionFind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"CRITICAL"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"SQLi in login form"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Auth bypass"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionEnd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionReport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"pentest_report.html"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  The Package Manager: Space
&lt;/h1&gt;

&lt;p&gt;Installing community libraries is straightforward and secure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;spectator&lt;/span&gt; &lt;span class="n"&gt;space&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;ghost&lt;/span&gt;

&lt;span class="n"&gt;spectator&lt;/span&gt; &lt;span class="n"&gt;space&lt;/span&gt; &lt;span class="n"&gt;verify&lt;/span&gt; &lt;span class="n"&gt;ghost&lt;/span&gt;

&lt;span class="cp"&gt;#Import ghost
&lt;/span&gt;&lt;span class="n"&gt;ghost_full&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;Full&lt;/span&gt; &lt;span class="n"&gt;OSINT&lt;/span&gt; &lt;span class="n"&gt;sweep&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Who Is This For?
&lt;/h1&gt;

&lt;p&gt;Penetration testers who want to automate repetitive tasks without fighting tooling.&lt;/p&gt;

&lt;p&gt;Red teamers who need quick, reliable scripts that work everywhere (thanks to standalone binaries).&lt;/p&gt;

&lt;p&gt;Bug bounty hunters who want to build custom scanners without dependency hell.&lt;/p&gt;

&lt;p&gt;Security researchers who need to prototype attack techniques rapidly.&lt;/p&gt;

&lt;p&gt;Tool builders who want to distribute GUI security tools without Electron bloat.&lt;/p&gt;

&lt;h1&gt;
  
  
  Getting Started Today
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Download&lt;/span&gt;
wget https://github.com/CzaxStudio/Spectator/releases/latest/download/spectator-linux
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x spectator-linux

&lt;span class="c"&gt;# 2. Run REPL&lt;/span&gt;
./spectator-linux repl

&lt;span class="c"&gt;# 3. Try hello world&lt;/span&gt;
Trace&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Hello, Spectator!"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# 4. Install a library&lt;/span&gt;
./spectator-linux space get coffee

&lt;span class="c"&gt;# 5. Build something&lt;/span&gt;
./spectator-linux build mytool.str to scanner
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Documentation: spectatorlang.pages.dev&lt;br&gt;
GitHub: github.com/CzaxStudio/Spectator&lt;br&gt;
Examples: Check the examples/ directory in the repo&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Is Spectator going to replace Python for security work? Not tomorrow. But it's solving real problems that Python has ignored for years — dependency management, cross-platform GUI apps, and built-in security primitives.&lt;/p&gt;

&lt;p&gt;For pentesters tired of the "pip install → version conflict → break everything" cycle, Spectator is a breath of fresh air. And at 7 stars on GitHub (as of writing), you can get in on the ground floor.&lt;/p&gt;

&lt;p&gt;Try it on your next CTF or internal tool. You might be surprised how fast you can go from idea to working executable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thanks
&lt;/h2&gt;

&lt;p&gt;What tools would you build with a language like this? Drop a comment below!&lt;/p&gt;

&lt;p&gt;Follow for more: I'll be posting Spectator tutorials, security tools, and red team automation scripts in the coming weeks.&lt;/p&gt;

&lt;p&gt;Spectator v2.0.0 — "See Everything. Miss Nothing."&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>go</category>
      <category>spectator</category>
      <category>programming</category>
    </item>
    <item>
      <title>Introducing Mamba: A Powerful Python OSINT Library for Security Researchers</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Wed, 29 Apr 2026 05:09:08 +0000</pubDate>
      <link>https://dev.to/czax225/introducing-mamba-a-powerful-python-osint-library-for-security-researchers-1fa6</link>
      <guid>https://dev.to/czax225/introducing-mamba-a-powerful-python-osint-library-for-security-researchers-1fa6</guid>
      <description>&lt;p&gt;What is Mamba?&lt;br&gt;
Mamba is a production-ready OSINT (Open Source Intelligence) library that makes security research and reconnaissance simple in Python. With just a few lines of code, you can investigate emails, domains, usernames, phone numbers, and IP addresses.&lt;/p&gt;

&lt;p&gt;GitHub: CzaxStudio/Mamba&lt;br&gt;
PyPI: pip install mamba-security&lt;/p&gt;

&lt;p&gt;Why I Built Mamba&lt;br&gt;
As a security researcher, I found myself writing the same code repeatedly for OSINT investigations. Each project needed:&lt;/p&gt;

&lt;p&gt;Email breach checking&lt;/p&gt;

&lt;p&gt;WHOIS lookups&lt;/p&gt;

&lt;p&gt;Username enumeration&lt;/p&gt;

&lt;p&gt;Phone validation&lt;/p&gt;

&lt;p&gt;IP geolocation&lt;/p&gt;

&lt;p&gt;I built Mamba to solve this. It's designed to be:&lt;/p&gt;

&lt;p&gt;Easy to use - One line of code for complex OSINT tasks&lt;/p&gt;

&lt;p&gt;Production ready - Rate limiting, caching, and error handling built-in&lt;/p&gt;

&lt;p&gt;Well tested - Comprehensive test suite&lt;/p&gt;

&lt;p&gt;Industry standard - Type hints, proper documentation&lt;/p&gt;

&lt;h1&gt;
  
  
  Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;mamba&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MambaClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EmailReputation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DomainIntel&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nc"&gt;MambaClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Check email
&lt;/span&gt;    &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;EmailReputation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;validate_format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;researcher@example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Valid email: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;valid_format&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Domain WHOIS
&lt;/span&gt;    &lt;span class="n"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DomainIntel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;whois_lookup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Registrar: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;registrar&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Requirements&lt;br&gt;
Python 3.8+&lt;/p&gt;

&lt;p&gt;Internet connection for API calls&lt;/p&gt;

&lt;h1&gt;
  
  
  Documentation &amp;amp; Learning
&lt;/h1&gt;

&lt;p&gt;Complete Mamba Documentation: GitHub - MambaDocumentation&lt;/p&gt;

&lt;p&gt;The documentation repository includes:&lt;/p&gt;

&lt;p&gt;Step-by-step tutorials&lt;/p&gt;

&lt;p&gt;Complete API reference&lt;/p&gt;

&lt;p&gt;Real-world examples&lt;/p&gt;

&lt;p&gt;Best practices for OSINT&lt;/p&gt;

&lt;p&gt;Roadmap&lt;br&gt;
Add more breach databases&lt;/p&gt;

&lt;p&gt;Support for Dark Web monitoring&lt;/p&gt;

&lt;p&gt;Social media API integration&lt;/p&gt;

&lt;p&gt;Machine learning for threat detection&lt;/p&gt;

&lt;p&gt;Plugin system for custom sources&lt;/p&gt;

&lt;p&gt;Contributing&lt;br&gt;
Contributions are welcome! Open issues, submit PRs, or suggest features.&lt;/p&gt;

&lt;p&gt;License&lt;br&gt;
MIT License - Free for commercial and personal use&lt;/p&gt;

&lt;p&gt;Connect With Me&lt;br&gt;
GitHub: CzaxStudio&lt;/p&gt;

&lt;p&gt;Star the Repo ⭐&lt;br&gt;
If Mamba helps you, please star the repository on GitHub. It helps others discover the project!&lt;/p&gt;

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

&lt;p&gt;Happy OSINT investigations!&lt;/p&gt;

</description>
      <category>python</category>
      <category>osint</category>
      <category>cybersecurity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built a lightweight IDE for Nim — focused, fast, and simple</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Thu, 23 Apr 2026 08:36:44 +0000</pubDate>
      <link>https://dev.to/czax225/i-built-a-lightweight-ide-for-zig-focused-fast-and-simple-40m7</link>
      <guid>https://dev.to/czax225/i-built-a-lightweight-ide-for-zig-focused-fast-and-simple-40m7</guid>
      <description>&lt;p&gt;Most Nim developers today use tools like Visual Studio Code with extensions.&lt;/p&gt;

&lt;p&gt;It works — but I kept wondering:&lt;/p&gt;

&lt;p&gt;What would a Nim-first IDE feel like if it was designed around simplicity and speed?&lt;/p&gt;

&lt;p&gt;So I built one.&lt;/p&gt;

&lt;p&gt;Ferrum Studio.&lt;/p&gt;

&lt;p&gt;Why I built this&lt;/p&gt;

&lt;p&gt;While learning and working with Nim, I noticed the workflow often feels adapted rather than designed for the language.&lt;/p&gt;

&lt;p&gt;You install an editor, configure extensions, tweak settings… and eventually it works.&lt;/p&gt;

&lt;p&gt;But I wanted something simpler:&lt;/p&gt;

&lt;p&gt;Open a Nim file&lt;br&gt;
Press run&lt;br&gt;
See output immediately&lt;/p&gt;

&lt;p&gt;No friction. No setup overhead.&lt;/p&gt;

&lt;p&gt;What Ferrum Studio does&lt;/p&gt;

&lt;p&gt;Ferrum Studio is a lightweight IDE focused specifically on Nim.&lt;/p&gt;

&lt;p&gt;A few things upfront:&lt;/p&gt;

&lt;p&gt;Built with Go + Wails (uses a system webview — no bundled Chromium)&lt;br&gt;
Frontend parts were built with help from AI tools (I’m still learning JavaScript)&lt;br&gt;
Backend, Nim integration, and overall structure are written by me&lt;br&gt;
Features (current)&lt;br&gt;
Run Nim files with live output&lt;br&gt;
Build (nim build), test, and ast-check integration&lt;br&gt;
Inline error display with simplified explanations&lt;br&gt;
Basic autocomplete and snippets&lt;br&gt;
Project templates (CLI, library, TCP server, embedded)&lt;br&gt;
Integrated terminal with stdin support&lt;br&gt;
Nim auto-detection&lt;br&gt;
The main goal: a smooth workflow&lt;/p&gt;

&lt;p&gt;The focus is on making this loop fast and simple:&lt;/p&gt;

&lt;p&gt;open → run → see output → interact → fix errors&lt;/p&gt;

&lt;p&gt;Handling things like:&lt;/p&gt;

&lt;p&gt;real-time output streaming&lt;br&gt;
stdin interaction&lt;br&gt;
process control&lt;/p&gt;

&lt;p&gt;…took more work than expected, but this is the part I’m most proud of.&lt;/p&gt;

&lt;p&gt;Who should use this (right now)&lt;/p&gt;

&lt;p&gt;Ferrum Studio is still early, but it’s already useful for:&lt;/p&gt;

&lt;p&gt;Developers learning Nim who want a simple environment&lt;br&gt;
People who prefer lightweight tools over heavier setups&lt;br&gt;
Anyone who wants a fast “open → run → test” workflow&lt;/p&gt;

&lt;p&gt;If you rely heavily on advanced IDE features (full LSP, deep refactoring, debugging), tools like Visual Studio Code are still better today.&lt;/p&gt;

&lt;p&gt;But if you want a focused, minimal Nim workflow — this already works well.&lt;/p&gt;

&lt;p&gt;What I learned&lt;/p&gt;

&lt;p&gt;This project taught me a lot:&lt;/p&gt;

&lt;p&gt;How Nim tooling works in practice (run, build, test, ast-check)&lt;br&gt;
Managing subprocesses and terminal interaction&lt;br&gt;
Designing an editor around a single language&lt;br&gt;
Using AI tools effectively for parts I’m less experienced in&lt;br&gt;
What’s next&lt;br&gt;
Deciding between lightweight autocomplete vs full LSP (ZLS)&lt;br&gt;
Improving error explanations&lt;br&gt;
Exploring debugging support&lt;br&gt;
Cleaning up and improving the codebase&lt;br&gt;
Feedback?&lt;/p&gt;

&lt;p&gt;I’d really appreciate input:&lt;/p&gt;

&lt;p&gt;What do you expect from a Nim-focused IDE?&lt;br&gt;
What slows you down in your current workflow?&lt;br&gt;
What would make this genuinely useful for you?&lt;br&gt;
Project&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/CzaxStudio/Ferrum-Studio" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/Ferrum-Studio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Final thoughts&lt;/p&gt;

&lt;p&gt;This started as an experiment — but it’s already shaping how I think about developer tools.&lt;/p&gt;

&lt;p&gt;Simple, fast, and focused.&lt;/p&gt;

&lt;p&gt;Thanks for reading 🙂&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ide</category>
      <category>nim</category>
    </item>
    <item>
      <title>Spectator - A programming language for cybersecurity(GUI, CLI, TUI built in)</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Sat, 04 Apr 2026 06:51:30 +0000</pubDate>
      <link>https://dev.to/czax225/spectator-a-programming-language-for-cybersecuritygui-cli-tui-built-in-1moe</link>
      <guid>https://dev.to/czax225/spectator-a-programming-language-for-cybersecuritygui-cli-tui-built-in-1moe</guid>
      <description>&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%2Fhbaebplzipyfxb87hicw.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%2Fhbaebplzipyfxb87hicw.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Spectator — A Cybersecurity Language That Actually Gets Work Done
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;███████╗██████╗ ███████╗ ██████╗████████╗ █████╗ ████████╗ ██████╗ ██████╗
██╔════╝██╔══██╗██╔════╝██╔════╝╚══██╔══╝██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗
███████╗██████╔╝█████╗  ██║        ██║   ███████║   ██║   ██║   ██║██████╔╝
╚════██║██╔═══╝ ██╔══╝  ██║        ██║   ██╔══██║   ██║   ██║   ██║██╔══██╗
███████║██║     ███████╗╚██████╗   ██║   ██║  ██║   ██║   ╚██████╔╝██║  ██║
╚══════╝╚═╝     ╚══════╝ ╚═════╝   ╚═╝   ╚═╝  ╚═╝   ╚═╝    ╚═════╝ ╚═╝  ╚═╝
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;See Everything. Miss Nothing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What if your entire cybersecurity workflow lived inside one language?&lt;/p&gt;

&lt;p&gt;No switching between Python, Bash, and dozens of disconnected tools.&lt;br&gt;
No glue scripts. No messy pipelines.&lt;/p&gt;

&lt;p&gt;Just one clean, purpose-built system.&lt;/p&gt;

&lt;p&gt;That’s Spectator.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Modern security workflows are fragmented by design.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python for scripting&lt;/li&gt;
&lt;li&gt;Bash for automation&lt;/li&gt;
&lt;li&gt;Standalone tools for scanning and fuzzing&lt;/li&gt;
&lt;li&gt;Separate stacks for GUI tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything works — but nothing works together.&lt;/p&gt;

&lt;p&gt;You spend more time connecting tools than actually testing systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Idea Behind Spectator
&lt;/h2&gt;

&lt;p&gt;Spectator is a cybersecurity-first scripting language designed to unify your workflow.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Simple, readable syntax&lt;/li&gt;
&lt;li&gt;Built-in security modules&lt;/li&gt;
&lt;li&gt;Native GUI framework&lt;/li&gt;
&lt;li&gt;Integrated package manager&lt;/li&gt;
&lt;li&gt;Standalone binary compilation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All inside a single runtime.&lt;/p&gt;




&lt;h2&gt;
  
  
  Recon in 5 Lines
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;target = "scanme.nmap.org"
ips = resolve(target)
Trace("IPs: " --&amp;gt; join(ips, ", "))
do --&amp;gt; PortScan(target, 1, 1024)
do --&amp;gt; SSLInfo(target)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No imports. No external dependencies. No setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Build a Real GUI Tool
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Import Spec.GUI

open.window({"title": "Ghost Recon", "bg": "#070b14", "accent": "#00d4aa"})
GUI.input("target", "Enter target...")
GUI.button("Scan", "run", {"color": "#00d4aa"})
GUI.output("out", {"height": 400})

GUI.on("run", func() {
  t = GUI.get("target")
  ips = resolve(t)
  each ip : ips {
    GUI.print("out", "IP: " --&amp;gt; ip)
  }
})
end()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No Electron. No web stack. No Python GUI frameworks.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built-in Security Modules
&lt;/h2&gt;

&lt;p&gt;Spectator includes native support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recon: PortScan, DNSLookup, CIDRScan&lt;/li&gt;
&lt;li&gt;OSINT: WHOIS, GeoIP, Subdomain Enumeration&lt;/li&gt;
&lt;li&gt;Web: HTTP probing, header analysis, SSL inspection&lt;/li&gt;
&lt;li&gt;Exploitation: SQLi, CORS, Open Redirect testing&lt;/li&gt;
&lt;li&gt;Fuzzing: Directory busting, URL fuzzing&lt;/li&gt;
&lt;li&gt;Payload generation for multiple attack vectors&lt;/li&gt;
&lt;li&gt;Encoding, hashing, and cryptographic utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is directly accessible from the language.&lt;/p&gt;




&lt;h2&gt;
  
  
  HTTP Engine Included
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resp = http("GET", "https://target.com", {"timeout": 5000})
Trace(httpStatus(resp))
Trace(extractTitle(httpBody(resp)))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No external libraries required.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mission Engine for Structured Testing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;m = missionStart("Web App Pentest", "target.com")

missionStage(m, "Recon")
missionFind(m, "CRITICAL", ".env exposed", "Credentials leaked")

missionEnd(m)
missionReport(m, "report.html")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generate structured reports automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Space Package Manager
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spectator space get coffee
spectator space verify coffee
spectator space registry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All packages are SHA-256 verified by default.&lt;/p&gt;




&lt;h2&gt;
  
  
  Build Standalone Tools
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spectator build tool.str to Tool.exe for windows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No runtime required for end users.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Spectator Exists
&lt;/h2&gt;

&lt;p&gt;Because cybersecurity tooling is unnecessarily complex.&lt;/p&gt;

&lt;p&gt;Because developers keep rebuilding the same pipelines.&lt;/p&gt;

&lt;p&gt;Because switching between tools breaks flow.&lt;/p&gt;

&lt;p&gt;Spectator removes that friction.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://spectatorlang.pages.dev/" rel="noopener noreferrer"&gt;https://spectatorlang.pages.dev/&lt;/a&gt;&lt;br&gt;
Documentation: &lt;a href="https://github.com/CzaxStudio/SpectatorDocs/" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/SpectatorDocs/&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/CzaxStudio/Spectator" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/Spectator&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Spectator is not trying to replace existing tools.&lt;/p&gt;

&lt;p&gt;It is trying to replace the need to glue them together.&lt;/p&gt;

&lt;p&gt;If you build tools, automate testing, or work in offensive security — this is for you.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>cybersecurity</category>
      <category>opensource</category>
      <category>go</category>
    </item>
    <item>
      <title>I Built a Cybersecurity-Only Programming Language (So You Don’t Need 200 Lines of Python)</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Sat, 03 Jan 2026 05:54:23 +0000</pubDate>
      <link>https://dev.to/czax225/i-built-a-cybersecurity-only-programming-language-so-you-dont-need-200-lines-of-python-1ime</link>
      <guid>https://dev.to/czax225/i-built-a-cybersecurity-only-programming-language-so-you-dont-need-200-lines-of-python-1ime</guid>
      <description>&lt;p&gt;Cybersecurity scripting today mostly relies on general-purpose languages like Python, Bash, or Go.&lt;/p&gt;

&lt;p&gt;They work — but they come with problems:&lt;/p&gt;

&lt;p&gt;Too many libraries&lt;/p&gt;

&lt;p&gt;Long scripts for simple tasks&lt;/p&gt;

&lt;p&gt;Environment setup issues&lt;/p&gt;

&lt;p&gt;Slower execution for small utilities&lt;/p&gt;

&lt;p&gt;So I asked a simple question:&lt;/p&gt;

&lt;p&gt;Why isn’t there a programming language made only for cybersecurity?&lt;/p&gt;

&lt;p&gt;That’s how Cyber+ was born.&lt;/p&gt;

&lt;p&gt;What is Cyber+?&lt;/p&gt;

&lt;p&gt;Cyber+ is a domain-specific programming language (DSL) built exclusively for cybersecurity tasks.&lt;/p&gt;

&lt;p&gt;It is not a replacement for Python or Go.&lt;br&gt;
It is a workflow language for security operations.&lt;/p&gt;

&lt;p&gt;Instead of writing long scripts and importing heavy libraries, Cyber+ provides built-in security commands.&lt;/p&gt;

&lt;p&gt;And because it’s implemented in Go, it’s fast and distributed as a single binary.&lt;/p&gt;

&lt;p&gt;The Problem with Current Approaches&lt;/p&gt;

&lt;p&gt;Let’s take a very common task: hashing.&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
import hashlib&lt;/p&gt;

&lt;p&gt;data = "password".encode()&lt;br&gt;
hash_value = hashlib.sha256(data).hexdigest()&lt;br&gt;
print(hash_value)&lt;/p&gt;

&lt;p&gt;That’s fine — but this is a simple example.&lt;/p&gt;

&lt;p&gt;Now imagine:&lt;/p&gt;

&lt;p&gt;Encoding / decoding&lt;/p&gt;

&lt;p&gt;Password generation&lt;/p&gt;

&lt;p&gt;Port scanning&lt;/p&gt;

&lt;p&gt;File integrity checks&lt;/p&gt;

&lt;p&gt;Repetitive CTF automation&lt;/p&gt;

&lt;p&gt;Scripts quickly become long and repetitive.&lt;/p&gt;

&lt;p&gt;The Cyber+ Approach&lt;/p&gt;

&lt;p&gt;In Cyber+, the same task looks like this:&lt;/p&gt;

&lt;p&gt;Hash_Compute("password", "sha256")&lt;/p&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;No imports.&lt;br&gt;
No setup.&lt;br&gt;
No boilerplate.&lt;/p&gt;

&lt;p&gt;Why a DSL?&lt;/p&gt;

&lt;p&gt;Cybersecurity already uses DSLs successfully:&lt;/p&gt;

&lt;p&gt;SQL for databases&lt;/p&gt;

&lt;p&gt;Bash for automation&lt;/p&gt;

&lt;p&gt;YARA for malware detection&lt;/p&gt;

&lt;p&gt;Cyber+ follows the same idea:&lt;/p&gt;

&lt;p&gt;One language, one domain, maximum clarity.&lt;/p&gt;

&lt;p&gt;Each Cyber+ command directly represents a security action, not a programming construct.&lt;/p&gt;

&lt;p&gt;Core Design Goals&lt;/p&gt;

&lt;p&gt;Cyber+ is designed to be:&lt;/p&gt;

&lt;p&gt;Security-first (only cybersecurity features)&lt;/p&gt;

&lt;p&gt;Fast (Go-powered execution)&lt;/p&gt;

&lt;p&gt;Beginner-friendly&lt;/p&gt;

&lt;p&gt;Minimal syntax&lt;/p&gt;

&lt;p&gt;Single binary (no runtime hell)&lt;/p&gt;

&lt;p&gt;Who is Cyber+ For?&lt;/p&gt;

&lt;p&gt;Cyber+ is especially useful for:&lt;/p&gt;

&lt;p&gt;Cybersecurity students&lt;/p&gt;

&lt;p&gt;CTF players&lt;/p&gt;

&lt;p&gt;Security automation&lt;/p&gt;

&lt;p&gt;Learning-focused environments&lt;/p&gt;

&lt;p&gt;Quick scripting tasks&lt;/p&gt;

&lt;p&gt;It’s not meant to replace full frameworks — it’s meant to remove friction.&lt;/p&gt;

&lt;p&gt;Real Use Cases&lt;/p&gt;

&lt;p&gt;Automating CTF challenges&lt;/p&gt;

&lt;p&gt;Quick hashing / encoding utilities&lt;/p&gt;

&lt;p&gt;Password and wordlist operations&lt;/p&gt;

&lt;p&gt;Lightweight recon scripts&lt;/p&gt;

&lt;p&gt;Teaching cybersecurity fundamentals&lt;/p&gt;

&lt;p&gt;Why It’s Written in Go&lt;/p&gt;

&lt;p&gt;Using Go allows Cyber+ to:&lt;/p&gt;

&lt;p&gt;Run fast&lt;/p&gt;

&lt;p&gt;Compile to static binaries&lt;/p&gt;

&lt;p&gt;Avoid dependency issues&lt;/p&gt;

&lt;p&gt;Work across platforms easily&lt;/p&gt;

&lt;p&gt;This matters a lot in security workflows.&lt;/p&gt;

&lt;p&gt;Open Source &amp;amp; Early Stage&lt;/p&gt;

&lt;p&gt;Cyber+ is open source and still evolving.&lt;/p&gt;

&lt;p&gt;Feedback, ideas, and contributions are welcome — especially from:&lt;/p&gt;

&lt;p&gt;Security professionals&lt;/p&gt;

&lt;p&gt;Students&lt;/p&gt;

&lt;p&gt;Educators&lt;/p&gt;

&lt;p&gt;Tool builders&lt;/p&gt;

&lt;p&gt;GitHub&lt;/p&gt;

&lt;p&gt;Project repository:&lt;br&gt;
 &lt;a href="https://github.com/TanmayCzax/Cyber-Programming-language-Alpha" rel="noopener noreferrer"&gt;https://github.com/TanmayCzax/Cyber-Programming-language-Alpha&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;Cyber+ isn’t trying to be the next Python.&lt;/p&gt;

&lt;p&gt;It’s trying to be something simpler:&lt;/p&gt;

&lt;p&gt;A language that lets you focus on cybersecurity, not code overhead.&lt;/p&gt;

&lt;p&gt;If you’ve ever thought “this script shouldn’t be this long” — Cyber+ might be for you.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>programming</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I Built a Cybersecurity Programming Language in Go (Cyber+)</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Fri, 19 Dec 2025 12:41:56 +0000</pubDate>
      <link>https://dev.to/czax225/i-built-a-cybersecurity-programming-language-in-go-cyber-1jdo</link>
      <guid>https://dev.to/czax225/i-built-a-cybersecurity-programming-language-in-go-cyber-1jdo</guid>
      <description>&lt;p&gt;I’m experimenting with a small domain-specific language for ethical cyber security tasks&lt;br&gt;
(recon, DNS, OSINT, HTTP inspection).&lt;/p&gt;

&lt;p&gt;The idea is to reduce reliance on Bash scripts and multiple tools&lt;br&gt;
by offering a minimal, command-based syntax.&lt;/p&gt;

&lt;p&gt;Example usage:&lt;br&gt;
Recon("example.com");&lt;br&gt;
Phone_Info("+91XXXXXXXXXX");&lt;br&gt;
Scan_Port("8.8.8.8", 53);&lt;/p&gt;

&lt;p&gt;I’m mainly looking for feedback on:&lt;br&gt;
• Syntax readability&lt;br&gt;
• Whether this feels more like a language or a wrapper&lt;br&gt;
• What features you’d expect in a security DSL&lt;/p&gt;

&lt;p&gt;Here is the repo link -- &lt;a href="https://github.com/TanmayCzax/Cyber-Programming-language" rel="noopener noreferrer"&gt;https://github.com/TanmayCzax/Cyber-Programming-language&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>discuss</category>
      <category>showdev</category>
      <category>go</category>
    </item>
  </channel>
</rss>
