<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Gutopro</title>
    <description>The latest articles on Forem by Gutopro (@gutopro).</description>
    <link>https://forem.com/gutopro</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1015830%2F01b8afca-b1b4-408b-b3d3-f52a66a818aa.jpg</url>
      <title>Forem: Gutopro</title>
      <link>https://forem.com/gutopro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gutopro"/>
    <language>en</language>
    <item>
      <title>Building on Midnight with Windows — A Real Developer's WSL2 Setup Guide</title>
      <dc:creator>Gutopro</dc:creator>
      <pubDate>Wed, 29 Apr 2026 23:30:33 +0000</pubDate>
      <link>https://forem.com/midnight-aliit/building-on-midnight-with-windows-a-real-developers-wsl2-setup-guide-om6</link>
      <guid>https://forem.com/midnight-aliit/building-on-midnight-with-windows-a-real-developers-wsl2-setup-guide-om6</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%2Ft87lesyo3ld9tw50ynd9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft87lesyo3ld9tw50ynd9.jpg" alt="midnight" width="310" height="163"&gt;&lt;/a&gt;&lt;br&gt;
If you're on Windows and you want to build on Midnight, the first thing you need to know is that Midnight's toolchain — the Compact compiler, proof server, and the rest — are Linux binaries. They won't run natively on Windows. Full stop.&lt;/p&gt;

&lt;p&gt;That doesn't mean you're locked out. Windows has a feature called WSL2 — Windows Subsystem for Linux — that gives you a real Linux environment running inside Windows. Once it's set up you get a proper Ubuntu terminal, access to all the Linux dev tools you need, and a stable foundation for Midnight development.&lt;/p&gt;

&lt;p&gt;I set up my entire Midnight development environment on WSL2. This guide documents exactly what I did — including the parts that aren't obvious and the parts that caught me off guard.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 1: Enable WSL2
&lt;/h2&gt;

&lt;p&gt;Microsoft has official documentation for enabling WSL2. Follow that guide to get WSL installed on your machine before continuing here.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://learn.microsoft.com/en-us/windows/wsl/install" rel="noopener noreferrer"&gt;Enable WSL2 on Windows — Official Microsoft Guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Come back here once WSL is enabled and you have Ubuntu running.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 2: Download Ubuntu from the Microsoft Store
&lt;/h2&gt;

&lt;p&gt;Open the Microsoft Store and search for &lt;strong&gt;Ubuntu&lt;/strong&gt;. Select &lt;strong&gt;Ubuntu 24.04 LTS&lt;/strong&gt; and click &lt;strong&gt;Get&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once it installs, launch it from the Start menu. The first launch will ask you to create a Linux username and password.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
When you type your password nothing shows on screen. That's intentional — Linux hides password input by default. Just type it and press Enter.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Verify WSL2 is active by opening PowerShell and running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows PowerShell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;wsl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--verbose&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see Ubuntu listed with &lt;strong&gt;Version 2&lt;/strong&gt;. If it shows Version 1, set WSL2 as the default with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows PowerShell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;wsl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--set-default-version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 3: Configure WSL2 Memory — Don't Skip This
&lt;/h2&gt;

&lt;p&gt;This is the step I wish someone had told me about before I started.&lt;/p&gt;

&lt;p&gt;By default WSL2 only gets 1GB of memory. The Midnight proof server needs at least 4GB to generate ZK proofs without crashing. If you skip this configuration your proof server will run but fail silently or crash mid-proof with no obvious error message. I learned this the hard way.&lt;/p&gt;

&lt;p&gt;Create a &lt;code&gt;.wslconfig&lt;/code&gt; file in your Windows user directory. Open PowerShell and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows PowerShell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;notepad&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$&lt;/span&gt;&lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;USERPROFILE&lt;/span&gt;&lt;span class="s2"&gt;\.wslconfig"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add this configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="c"&gt;# .wslconfig
&lt;/span&gt;&lt;span class="nn"&gt;[wsl2]&lt;/span&gt;
&lt;span class="py"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;8GB&lt;/span&gt;
&lt;span class="py"&gt;processors&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;4&lt;/span&gt;
&lt;span class="py"&gt;swap&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;3GB&lt;/span&gt;
&lt;span class="py"&gt;localhostForwarding&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your machine has less than 16GB RAM adjust accordingly. The minimum that works reliably for Midnight development is &lt;code&gt;memory=4GB&lt;/code&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Minimum&lt;/th&gt;
&lt;th&gt;Recommended&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;memory&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;processors&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;swap&lt;/td&gt;
&lt;td&gt;1GB&lt;/td&gt;
&lt;td&gt;3GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;localhostForwarding&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Save the file then restart WSL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows PowerShell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;wsl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--shutdown&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reopen Ubuntu from the Start menu.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Install curl
&lt;/h2&gt;

&lt;p&gt;Start with the fundamentals. &lt;code&gt;curl&lt;/code&gt; is needed to download everything else.&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 5: Install Git
&lt;/h2&gt;

&lt;p&gt;You'll need git for version control and cloning repositories.&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 6: Install Node.js 22
&lt;/h2&gt;

&lt;p&gt;Midnight requires &lt;strong&gt;Node.js 22 or higher&lt;/strong&gt;. Install it using nvm — don't use a Windows-native Node.js installation, as version conflicts will cause problems down the line.&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
curl &lt;span class="nt"&gt;-o-&lt;/span&gt; https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
nvm &lt;span class="nb"&gt;install &lt;/span&gt;22
nvm use 22
node &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;zsh users:&lt;/strong&gt; Replace &lt;code&gt;~/.bashrc&lt;/code&gt; with &lt;code&gt;~/.zshrc&lt;/code&gt; in the commands above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Why pin to 22?&lt;/strong&gt; &lt;code&gt;create-mn-app&lt;/code&gt; and the Midnight SDK have been validated against Node.js 22. Using a newer major version may work, but you could encounter unexpected compatibility issues. Check the &lt;a href="https://docs.midnight.network" rel="noopener noreferrer"&gt;Midnight documentation&lt;/a&gt; for the latest supported range&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;nvm version:&lt;/strong&gt; The installer URL above pins nvm to v0.40.3. Check the &lt;a href="https://github.com/nvm-sh/nvm/releases" rel="noopener noreferrer"&gt;nvm releases page&lt;/a&gt; before running to confirm it's still the latest stable version and update the URL if needed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Verify the installation before moving on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--version&lt;/span&gt;   &lt;span class="c"&gt;# should print v22.x.x&lt;/span&gt;
npm &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 7: Install Docker Engine
&lt;/h2&gt;

&lt;p&gt;The Midnight proof server runs as a Docker container. You need Docker Engine installed &lt;strong&gt;inside WSL&lt;/strong&gt; — not Docker Desktop.&lt;/p&gt;

&lt;p&gt;Set up Docker's apt repository:&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;ca-certificates curl
&lt;span class="nb"&gt;sudo install&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; 0755 &lt;span class="nt"&gt;-d&lt;/span&gt; /etc/apt/keyrings
&lt;span class="nb"&gt;sudo &lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://download.docker.com/linux/ubuntu/gpg &lt;span class="nt"&gt;-o&lt;/span&gt; /etc/apt/keyrings/docker.asc
&lt;span class="nb"&gt;sudo chmod &lt;/span&gt;a+r /etc/apt/keyrings/docker.asc

&lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/docker.sources &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; /etc/os-release &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;UBUNTU_CODENAME&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;$VERSION_CODENAME&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;
Components: stable
Architectures: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dpkg &lt;span class="nt"&gt;--print-architecture&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;
Signed-By: /etc/apt/keyrings/docker.asc
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install Docker packages:&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add your user to the docker group so you can run Docker without &lt;code&gt;sudo&lt;/code&gt;:&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; docker &lt;span class="nv"&gt;$USER&lt;/span&gt;
newgrp docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the Docker daemon:&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;service docker start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify Docker works:&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
docker run hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 8: Install the Compact Toolchain
&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;# WSL Ubuntu terminal&lt;/span&gt;
curl &lt;span class="nt"&gt;--proto&lt;/span&gt; &lt;span class="s1"&gt;'=https'&lt;/span&gt; &lt;span class="nt"&gt;--tlsv1&lt;/span&gt;.2 &lt;span class="nt"&gt;-LsSf&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  https://github.com/midnightntwrk/compact/releases/latest/download/compact-installer.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add to PATH:&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export PATH="$HOME/.local/bin:$PATH"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.bashrc
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;zsh users:&lt;/strong&gt; Replace &lt;code&gt;~/.bashrc&lt;/code&gt; with &lt;code&gt;~/.zshrc&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Verify:&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
compact &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 9: Scaffold Your Project with create-mn-app
&lt;/h2&gt;

&lt;p&gt;This is where things get streamlined. The Midnight team ships &lt;code&gt;create-mn-app&lt;/code&gt; — a scaffolding tool that sets up your entire project structure including wallet scripts, contract source, compilation config, and deployment tooling.&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
npx create-mn-app my-app
&lt;span class="nb"&gt;cd &lt;/span&gt;my-app
npm run setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;npm run setup&lt;/code&gt; will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compile your Compact smart contract&lt;/li&gt;
&lt;li&gt;Check your Node.js, Docker, and Compact compiler versions for compatibility&lt;/li&gt;
&lt;li&gt;Start the proof server via Docker Compose&lt;/li&gt;
&lt;li&gt;Guide you interactively through wallet creation or restoration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Wallet creation is interactive.&lt;/strong&gt; When &lt;code&gt;npm run deploy&lt;/code&gt; runs as part of setup, it will prompt you to either create a new wallet or restore from an existing seed. If you're starting fresh, choose option 1. Your seed will be saved to &lt;code&gt;.midnight-seed&lt;/code&gt; (chmod 600) — back it up and never commit this file.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Version mismatch:&lt;/strong&gt; &lt;code&gt;create-mn-app&lt;/code&gt; checks that your &lt;code&gt;@midnight-ntwrk/compact-runtime&lt;/code&gt; version in &lt;code&gt;package.json&lt;/code&gt; matches your installed compiler version. A mismatch causes a &lt;code&gt;CompactError&lt;/code&gt; on compilation. If setup flags it, let it fix it automatically.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once setup completes, your wallet address is printed to the terminal. Copy it and head to the faucet to get tNight tokens.&lt;/p&gt;

&lt;p&gt;If you want a more complete starting point, the Counter DApp template gives you a real increment/decrement contract with ZK proofs already wired up:&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="c"&gt;# WSL Ubuntu terminal&lt;/span&gt;
npx create-mn-app my-app &lt;span class="nt"&gt;--template&lt;/span&gt; counter
&lt;span class="nb"&gt;cd &lt;/span&gt;my-app
npm run setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 10: Get tNight from the Faucet
&lt;/h2&gt;

&lt;p&gt;Every transaction on Midnight costs DUST as gas — and DUST is generated automatically once your wallet holds tNight. Your wallet address was printed during &lt;code&gt;npm run setup&lt;/code&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visit the &lt;a href="https://faucet.preprod.midnight.network/" rel="noopener noreferrer"&gt;preprod faucet&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Paste your wallet address&lt;/li&gt;
&lt;li&gt;Request tokens and wait ~2–5 minutes&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Important:&lt;/strong&gt; Always verify your wallet is configured for the &lt;strong&gt;preprod&lt;/strong&gt; network before copying your address. The preprod faucet only recognizes addresses registered on preprod — submitting an address from a differently-configured wallet will return an invalid address error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;DUST balance:&lt;/strong&gt; DUST accumulates over time based on the tNight in your wallet. If you attempt deployment immediately after funding and see a "Not enough DUST" error, wait a few minutes and retry with &lt;code&gt;npm run deploy&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What Doesn't Work
&lt;/h2&gt;

&lt;p&gt;Save yourself the debugging time — these approaches don't work:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Why it fails&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Running Compact compiler in PowerShell or CMD&lt;/td&gt;
&lt;td&gt;Linux binary — requires WSL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Running proof server natively on Windows&lt;/td&gt;
&lt;td&gt;Linux binary — requires WSL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Using Windows-native Node.js for Midnight projects&lt;/td&gt;
&lt;td&gt;Version and path conflicts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keeping projects in &lt;code&gt;/mnt/c/&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Severely degraded file I/O performance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Submitting a mainnet-configured wallet address to preprod faucet&lt;/td&gt;
&lt;td&gt;Address not registered on preprod&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Proof server crashes or produces no output&lt;/strong&gt; — Almost always a memory issue. Increase &lt;code&gt;memory&lt;/code&gt; in &lt;code&gt;.wslconfig&lt;/code&gt; to at least &lt;code&gt;4GB&lt;/code&gt;, run &lt;code&gt;wsl --shutdown&lt;/code&gt;, restart WSL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker not found&lt;/strong&gt; — Run &lt;code&gt;sudo service docker start&lt;/code&gt;. If that fails, verify Docker is installed with &lt;code&gt;docker --version&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;compact&lt;/code&gt; not found&lt;/strong&gt; — Add &lt;code&gt;export PATH="$HOME/.local/bin:$PATH"&lt;/code&gt; to &lt;code&gt;~/.bashrc&lt;/code&gt; and run &lt;code&gt;source ~/.bashrc&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Port 6300 not accessible&lt;/strong&gt; — Add &lt;code&gt;localhostForwarding=true&lt;/code&gt; to &lt;code&gt;.wslconfig&lt;/code&gt; and restart WSL with &lt;code&gt;wsl --shutdown&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slow file operations&lt;/strong&gt; — Move your project out of &lt;code&gt;/mnt/c/&lt;/code&gt; into your Linux home directory at &lt;code&gt;~/&lt;/code&gt;. The performance difference is significant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;CompactError&lt;/code&gt;: Version mismatch&lt;/strong&gt; — Your compiler version and &lt;code&gt;compact-runtime&lt;/code&gt; npm package version don't match. &lt;code&gt;create-mn-app&lt;/code&gt; will flag this during setup and offer to fix it. If you hit it mid-project, update &lt;code&gt;package.json&lt;/code&gt; to the matching runtime version and run &lt;code&gt;npm install&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Not enough DUST" during deployment&lt;/strong&gt; — Your wallet is new and DUST hasn't accumulated yet. Wait a few minutes and run &lt;code&gt;npm run deploy&lt;/code&gt; again. The deploy script retries automatically up to 8 times with a delay between attempts.&lt;/p&gt;




&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;Your environment is ready. Run &lt;code&gt;create-mn-app&lt;/code&gt; and let it scaffold your first project. The hello-world template compiles and deploys in minutes. Watch your transaction appear on chain in &lt;a href="https://midnight.a1.ventures" rel="noopener noreferrer"&gt;1AM Explorer&lt;/a&gt; — that's your proof it's working.&lt;/p&gt;

&lt;p&gt;If you hit issues not covered here, find me in the Midnight Discord as &lt;strong&gt;Guto&lt;/strong&gt; — I've been through most of them already.&lt;/p&gt;

</description>
      <category>midnightchallenge</category>
      <category>aliit</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Blockchain from the Ground Up: What It Is, Why It Exists, and Where It's Going</title>
      <dc:creator>Gutopro</dc:creator>
      <pubDate>Thu, 09 Apr 2026 20:10:16 +0000</pubDate>
      <link>https://forem.com/midnight-aliit/blockchain-from-the-ground-up-what-it-is-why-it-exists-and-where-its-going-466e</link>
      <guid>https://forem.com/midnight-aliit/blockchain-from-the-ground-up-what-it-is-why-it-exists-and-where-its-going-466e</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%2Fx5b7w873m2kj70kfe8wf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5b7w873m2kj70kfe8wf.jpg" alt="blockchain" width="480" height="320"&gt;&lt;/a&gt;&lt;em&gt;A plain-language breakdown for anyone who's ever been confused by the word "blockchain"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So What Is the Blockchain?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The blockchain is basically a group of computers agreeing upon a single truth. These computers all have copies of this truth, and a single alteration on one changes every copy.&lt;/p&gt;

&lt;p&gt;Think of it like a notebook that thousands of people have identical copies of. Every time something new is written in it, the entries are grouped together into a page — that page is what we call a block.&lt;/p&gt;

&lt;p&gt;Each new entry is mathematically locked to the one before it — like a chain — so you can't go back and alter a page without breaking every page that came after it. And here's the interesting part — no single person owns that notebook. No bank, no government, no tech company. It belongs to everyone and no one at the same time.&lt;/p&gt;

&lt;p&gt;This is what makes it powerful. Because there's no central authority controlling it, nobody can secretly alter the records, freeze your funds, or shut it down. The truth is just... out there, maintained by the network itself.&lt;/p&gt;

&lt;p&gt;That's the blockchain — a shared, tamper-resistant record that nobody owns but everybody can trust.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Was the Blockchain Created?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The blockchain was created to solve one problem: centralization.&lt;/p&gt;

&lt;p&gt;In the traditional financial system, banks and institutions have total control over every dime in circulation — they can freeze accounts, fail, or act in their own interest. &lt;/p&gt;

&lt;p&gt;In 2008, during the global financial crisis, Satoshi Nakamoto asked: how do we give everybody direct ownership over their assets, without needing to trust a middleman? The answer was decentralization — and that's what blockchain makes possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Blockchain Financial Economy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For centuries, if you wanted to send money, save, invest, or borrow — you needed a middleman. A bank, a broker, an institution. They held the keys to the financial world, and you played by their rules.&lt;br&gt;
The blockchain changed that.&lt;/p&gt;

&lt;p&gt;By creating a system where value can be stored and transferred without a middleman, blockchain opened the door to an entirely new financial economy — one that runs on code instead of institutions.&lt;/p&gt;

&lt;p&gt;At the heart of this economy is cryptocurrency. Just like the naira or the dollar, crypto is money — except no central bank prints it or controls it. It lives on the blockchain, and its rules are written in code that nobody can secretly change.&lt;br&gt;
But it goes deeper than just currency.&lt;/p&gt;

&lt;p&gt;The blockchain financial economy introduced something called DeFi — Decentralized Finance. Think of everything a bank does: savings, loans, investments, payments. DeFi does all of that, but without the bank. Just open protocols that anybody with an internet connection can access, anywhere in the world.&lt;/p&gt;

&lt;p&gt;This matters especially for the billions of people who have been locked out of the traditional financial system — no bank account, no credit history, no access. The blockchain doesn't ask for any of that. If you have a wallet, you're in.&lt;/p&gt;

&lt;p&gt;It's not a perfect system — it has its risks and its chaos. Crypto prices can be wildly volatile — an asset worth a lot today can lose half its value by tomorrow.&lt;/p&gt;

&lt;p&gt;Scams and fraud are rampant because there's no central authority to report to or reverse a bad transaction. If you send money to the wrong address or lose access to your wallet, it's gone. No customer service, no refund.&lt;/p&gt;

&lt;p&gt;DeFi protocols have also been exploited for hundreds of millions of dollars through smart contract bugs and loopholes.&lt;/p&gt;

&lt;p&gt;The code is the law — which is great when it works, and brutal when it doesn't. But for the first time in history, we have a financial economy that doesn't require you to trust anyone. Just the math.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Midnight — The Blockchain Built for the Real World&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The blockchain financial economy opened up a lot of possibilities. But it came with a problem nobody fully solved — privacy.&lt;/p&gt;

&lt;p&gt;Every transaction on most blockchains is public. Anyone can look up your wallet, see your balance, trace your history. For individuals that's uncomfortable. For businesses, it's a deal breaker. You can't run a company on a system where your competitors can see every payment you make.&lt;/p&gt;

&lt;p&gt;That's the problem Midnight was built to solve.&lt;br&gt;
Midnight is a blockchain that puts privacy at its core — not as an afterthought, but as the foundation. It's built by Input Output, the same team behind Cardano, and it introduces a new idea: you should be able to prove something is true without revealing everything behind it.&lt;/p&gt;

&lt;p&gt;Imagine proving you're old enough to buy something without showing your date of birth. Or proving you have enough funds for a transaction without exposing your full balance. That's the kind of thing Midnight makes possible, through a technology called zero-knowledge proofs.&lt;br&gt;
But Midnight doesn't throw away accountability entirely.&lt;/p&gt;

&lt;p&gt;It's designed to balance privacy with compliance — so individuals and businesses can protect their sensitive data while still operating within legal and regulatory boundaries.&lt;/p&gt;

&lt;p&gt;This is what makes Midnight different. Not just another blockchain, but an attempt to build the infrastructure for a world where people and businesses can participate in the decentralized economy on their own terms — without sacrificing privacy to do it.&lt;/p&gt;

&lt;p&gt;The blockchain gave us financial freedom. Midnight is trying to give us financial freedom with dignity.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks for reading. If this series helped you understand blockchain a little better, follow along — there's more coming.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>midnightchallenge</category>
      <category>aliit</category>
      <category>web3</category>
    </item>
    <item>
      <title>Troubleshooting Midnight Pre-Prod: A Week in the Trenches</title>
      <dc:creator>Gutopro</dc:creator>
      <pubDate>Wed, 08 Apr 2026 08:30:29 +0000</pubDate>
      <link>https://forem.com/midnight-aliit/troubleshooting-midnight-pre-prod-a-week-in-the-trenches-2g4d</link>
      <guid>https://forem.com/midnight-aliit/troubleshooting-midnight-pre-prod-a-week-in-the-trenches-2g4d</guid>
      <description>&lt;p&gt;Building on Midnight feels like being on the frontier of Web3. Between the Zero-Knowledge (ZK) primitives and the unique dual-token model, there is a lot to love—but being an early adopter means running into some undocumented "features."&lt;/p&gt;

&lt;p&gt;I spent this week building on the Midnight pre-prod network from scratch. While the documentation is improving, I encountered several blockers that weren't immediately obvious. I also spent a lot of time in the Discord monitoring common pitfalls other devs are hitting.&lt;/p&gt;

&lt;p&gt;If you are setting up your Midnight environment today, bookmark this. Here is how to fix the most common environment issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The "Invalid Address" Faucet Trap&lt;/strong&gt;&lt;br&gt;
The Issue: You try to fund your wallet using the Lace faucet, but it returns an "Address provided was invalid" error, even after you confirm you are on the pre-prod network.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Fix&lt;/em&gt;: Switch to the 1AM wallet.&lt;/p&gt;

&lt;p&gt;Crucial Step: You must set the wallet to the pre-prod network BEFORE you copy your address. A mainnet address string—even if generated by the same seed—will not be recognized by the pre-prod faucet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Set network to preprod&lt;/span&gt;
&lt;span class="nf"&gt;setNetworkId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;preprod&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Deployment Failures (deploy.ts)&lt;/strong&gt;&lt;br&gt;
The Issue: Your deploy.ts script fails to create or connect to a wallet. This usually happens because the default configuration in many boilerplate templates doesn't align with the 1AM wallet's requirements.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Fix&lt;/em&gt;: This is a two-step process that is currently undocumented:&lt;/p&gt;

&lt;p&gt;Replace your pre-prod configuration file with the specific 1AM network config.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Preprod network configuration&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;CONFIG&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;indexer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://indexer.preprod.midnight.network/api/v4/graphql&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;indexerWS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;wss://indexer.preprod.midnight.network/api/v4/graphql/ws&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;node&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://rpc.preprod.midnight.network&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;proofServer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://127.0.0.1:6300&lt;/span&gt;&lt;span class="dl"&gt;'&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;Use the CLI to create your wallet after you have integrated that new config.&lt;br&gt;
Doing only one of these will result in a hang. You need both to bridge the gap between the script and the network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. DUST Registration Timing Out&lt;/strong&gt;&lt;br&gt;
The Issue: You attempt to register for DUST, but the process hangs or fails repeatedly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Fix&lt;/em&gt;: This shares the same root cause as the deployment issue. If your config is pointing even slightly off-target, the registration handshake won't complete. Ensure you are using the 1AM network configuration before you even attempt the registration command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The "Ghost DUST" Bug&lt;/strong&gt;&lt;br&gt;
The Issue: Several devs in Discord reported getting a green "Success" checkmark on the faucet, but no tDUST arrives, even after 48 hours.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Fix&lt;/em&gt;: Currently, the most reliable workaround is to use the 1AM wallet specifically. In most cases, DUST credits immediately there, whereas Lace is seeing intermittent sync issues with the faucet during this pre-prod phase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Unexpected Gas Drainage&lt;/strong&gt;&lt;br&gt;
The Issue: You’re building, and suddenly everything stops working because your tDUST balance is zero.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Fix&lt;/em&gt;: Remember that every write operation consumes tDUST as gas. Because we are in a ZK environment, these costs can add up during heavy testing.&lt;/p&gt;

&lt;p&gt;Pro-Tip: Use the 1AM Explorer to track your transaction history and gas per interaction. Refuel from the faucet proactively rather than waiting for a failure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Contract Interaction "De-sync"&lt;/strong&gt;&lt;br&gt;
The Issue: Your contract interactions work for a while, then suddenly start failing mid-session without code changes.&lt;br&gt;
_&lt;br&gt;
The Fix_: The wallet (specifically Lace) sometimes loses sync with the chain or suffers an authentication timeout.&lt;/p&gt;

&lt;p&gt;The Workflow: Manually click Sync in your wallet before every contract interaction. It feels redundant, but it prevents the "ghost failures" that catch most devs off guard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My "Golden" Setup&lt;/strong&gt;&lt;br&gt;
If you want a stable environment to actually write code, here is the stack I currently have running successfully:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runtime: Node 22&lt;/li&gt;
&lt;li&gt;Compiler: Latest Compact compiler&lt;/li&gt;
&lt;li&gt;Wallet: 1AM wallet (on pre-prod)&lt;/li&gt;
&lt;li&gt;Workflow: Wallet created via CLI using 1AM config&lt;/li&gt;
&lt;li&gt;Infrastructure: Proof server running locally via Docker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verification: Contracts deployed and verified via 1AM Explorer&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ferdnhl6ymb2q5bluzs3e.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%2Ferdnhl6ymb2q5bluzs3e.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvm395awebh21ebzze3ca.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%2Fvm395awebh21ebzze3ca.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s Next?&lt;/strong&gt;&lt;br&gt;
I’m currently working through Midnight 301 (Advanced ZK DApp Development), building a privacy-preserving bulletin board. I’ll be documenting the full build-out as I go.&lt;/p&gt;

&lt;p&gt;If you're stuck on a specific error, drop a comment or find me in the Midnight Discord. Let's build.&lt;/p&gt;

&lt;h1&gt;
  
  
  midnight #zkproofs #blockchain #web3 #tutorial
&lt;/h1&gt;

</description>
      <category>midnightchallenge</category>
      <category>web3</category>
      <category>aliit</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Django developer for hire</title>
      <dc:creator>Gutopro</dc:creator>
      <pubDate>Thu, 26 Sep 2024 13:42:44 +0000</pubDate>
      <link>https://forem.com/gutopro/django-developer-for-hire-3fc7</link>
      <guid>https://forem.com/gutopro/django-developer-for-hire-3fc7</guid>
      <description>&lt;p&gt;Hi Guys, I'm Nicholas a software developer with 3 years of experience in building robust web applications, leveraging Python, JavaScript and Ruby to provide business solutions using up-to-date industry technologies such as Django, Nodejs, Nextjs, Reactstrap, Ruby on Rails, Git and Redis etc. I'm currently looking for fulltime opportunities to learn and develop my skills while also offering my unique abilities such as grit, teamwork, effective communication, followership and so on. I hope to meet and network with the best minds of our generation and leave the world a better place. If you have any opportunities that you think i might be a good fit for, feel free to reach me on &lt;a href="mailto:nickigber@gmail.com"&gt;nickigber@gmail.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
      <category>career</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Tech Pilgrimage: A Beginners Journey In The World Of Tech.</title>
      <dc:creator>Gutopro</dc:creator>
      <pubDate>Tue, 03 Oct 2023 05:37:31 +0000</pubDate>
      <link>https://forem.com/gutopro/tech-pilgrimage-a-beginners-journey-in-the-world-of-tech-bd7</link>
      <guid>https://forem.com/gutopro/tech-pilgrimage-a-beginners-journey-in-the-world-of-tech-bd7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OSeTKBDJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lm1rsfu6cmu5u042k6eh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OSeTKBDJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lm1rsfu6cmu5u042k6eh.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;I want to learn Python; do you want to learn about Snakes?? A conversation between me and David. Everyone thinks programming is about fancy names like Python, JavaScript and Ruby, at least that’s what the outside world of “Everyday Ordinary People” my past self-included thought, however things changed when I was asked to research about Software Engineering, Data Science and UI/UX design. Coming from a non-tech background, it felt like career day all over again. From engineering to design, I decided to be Bob the Builder. I was going to build my dreams and software engineering was going to help me achieve that, more like the Robin to my Batman. My journey started like most tech pilgrims, at Harvard’s CS50, with Scratch as my first lingo… I still remember with nostalgia, my first “Hello world”; program, I was finally there, every programmer's dream.&lt;br&gt;
Congratulations you have been promoted to the rank of low-level programming, and I could hear the cheers and applause, when David Malan introduced the class to ‘C’, this was real computer gibberish, stuff I saw in the Matrix! “The aim of this class is not to compare yourself with your mates but rather with yourself, when you began”, those words have been lamps to my feet, noble words for a noble journey. A few weeks later, I dropped out of the class, however, little did I know my pilgrimage was only beginning. It’s been a wonderful journey, truly exciting. &lt;br&gt;
Join me as I take you on a rollercoaster of emotions, insights and best practices. I have unlocked in this Holy pilgrimage called Tech!!! &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
      <category>python</category>
    </item>
    <item>
      <title>Recieving 404 page not found and 400 bad request</title>
      <dc:creator>Gutopro</dc:creator>
      <pubDate>Sun, 01 Oct 2023 21:41:00 +0000</pubDate>
      <link>https://forem.com/gutopro/recieving-404-page-not-found-and-400-bad-request-1470</link>
      <guid>https://forem.com/gutopro/recieving-404-page-not-found-and-400-bad-request-1470</guid>
      <description>&lt;p&gt;Hello guys i'm Nicholas a software developer from Nigeria, who's new to react. I am trying to create and admin signup page for a react app with django as  backend. when i make a POST request i get these errors &lt;br&gt;
&lt;a href="https://media.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%2F3dch9v8e6zjmzy54ejv3.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F3dch9v8e6zjmzy54ejv3.PNG" alt="Image description"&gt;&lt;/a&gt;. CORS has been enabled, when i test the api endpoints using Postman, it works but when i make the api call from my code it doesnt. here is the code snippet&lt;/p&gt;

&lt;p&gt;import React, { useState } from 'react';&lt;br&gt;
import axios from 'axios';&lt;/p&gt;

&lt;p&gt;const AdminSignup = () =&amp;gt; {&lt;br&gt;
    const [email, setEmail] = useState('');&lt;br&gt;
    const [password, setPassword] = useState('');&lt;br&gt;
    const [firstName, setFirstName] = useState('');&lt;br&gt;
    const [lastName, setLastName] = useState('');&lt;br&gt;
    const [phoneNumber, setPhoneNumber] = useState('');&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const handleSubmit = async (event) =&amp;gt; {
    event.preventDefault();

    try {
        const response = await axios.post('http://127.0.0.1:8000/admins', {
            email,
            password,
            firstName,
            lastName,
            phoneNumber,
        });

        // Handle successful signup here
        console.log('Sign-up successful!', response.data);
    } catch (error) {
        console.error('There was an error!', error);
    }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>react</category>
      <category>django</category>
      <category>help</category>
    </item>
    <item>
      <title>what i've learnt so far using Reactjs</title>
      <dc:creator>Gutopro</dc:creator>
      <pubDate>Mon, 01 May 2023 10:59:29 +0000</pubDate>
      <link>https://forem.com/gutopro/what-ive-learnt-so-far-using-reactjs-b70</link>
      <guid>https://forem.com/gutopro/what-ive-learnt-so-far-using-reactjs-b70</guid>
      <description>&lt;p&gt;I've been around webdev for a while now and I've learnt to approach each day as a newbie. First day using react and i was so astonished at how wonderful it was, from being stuck at the React default src web page to creating components and importing them into your App.js folder. it's marvelous I tell you!!! well I'm still learning; I haven't completed a website yet but I'm working on it plus this is my first post and I'm super excited!! P.S tell me what you think, thank you!!!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JhmfbZz5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ex5wq7nytme2pohuu9yt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JhmfbZz5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ex5wq7nytme2pohuu9yt.png" alt="Image description" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>beginners</category>
    </item>
    <item>
      <title>goldminers find gold, Techies find?</title>
      <dc:creator>Gutopro</dc:creator>
      <pubDate>Fri, 27 Jan 2023 21:35:34 +0000</pubDate>
      <link>https://forem.com/gutopro/goldminers-find-gold-techies-find-8mb</link>
      <guid>https://forem.com/gutopro/goldminers-find-gold-techies-find-8mb</guid>
      <description>&lt;p&gt;what's the coolest thing you found out about programming? &lt;/p&gt;

</description>
      <category>programming</category>
      <category>python</category>
      <category>discuss</category>
      <category>help</category>
    </item>
    <item>
      <title>Python 101</title>
      <dc:creator>Gutopro</dc:creator>
      <pubDate>Fri, 27 Jan 2023 19:48:13 +0000</pubDate>
      <link>https://forem.com/gutopro/python-101-100d</link>
      <guid>https://forem.com/gutopro/python-101-100d</guid>
      <description>&lt;p&gt;Hey guys, I was doing a bit of pondering and came to a conclusion that I'd grind myself in python, and in order to that I need your help, so if you'd kindly leave a tip or clue on something you think I should know or wish you knew on your journey please feel free to drop it on your way. thank you and Hala Tech!!!&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>plugin</category>
      <category>development</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
