<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Coni on NicoLabs</title>
		<link>http://blog.hellonico.info/tags/coni/</link>
		<description>Recent content in Coni on NicoLabs</description>
		<generator>Hugo</generator>
		<language>ja-JP</language>
		
		
		
		
			<lastBuildDate>Sun, 28 Jun 2026 11:30:00 +0900</lastBuildDate>
		
			<atom:link href="http://blog.hellonico.info/tags/coni/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Hardcore Chaos Testing for Coni&#39;s Native Float32 Arrays</title>
				<link>http://blog.hellonico.info/posts/coni/float32-chaos-testing/</link>
				<pubDate>Sun, 28 Jun 2026 11:30:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/posts/coni/float32-chaos-testing/</guid>
				<description>&lt;p&gt;When you&amp;rsquo;re building high-performance applications in the browser, JavaScript&amp;rsquo;s generic &lt;code&gt;Number&lt;/code&gt; type often isn&amp;rsquo;t enough. You need raw, contiguous memory arrays. In Coni WASM, we rely heavily on native WebAssembly &lt;code&gt;float32&lt;/code&gt; arrays for our most mathematically intensive applications.&lt;/p&gt;&#xA;&lt;h3 id=&#34;where-is-float32-actually-used-in-coni&#34;&gt;Where is Float32 actually used in Coni?&lt;/h3&gt;&#xA;&lt;p&gt;Native &lt;code&gt;float32&lt;/code&gt; arrays (&lt;code&gt;make-float32-array&lt;/code&gt;, &lt;code&gt;f32-set!&lt;/code&gt;, &lt;code&gt;f32-get&lt;/code&gt;) are the absolute backbone of Coni&amp;rsquo;s performance layer. You&amp;rsquo;ll find them powering:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;WebGL Geometry:&lt;/strong&gt; In our &lt;code&gt;deep-focus-webgl&lt;/code&gt; app, we use &lt;code&gt;float32&lt;/code&gt; arrays to mathematically sculpt an 80,000-vertex brain matrix (240,000 floats!) natively, before shipping it to the GPU in a single shot via &lt;code&gt;js/float32-buffer&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Game Engine Particle Systems:&lt;/strong&gt; For games like &lt;code&gt;flappy-bird&lt;/code&gt; or &lt;code&gt;neon-boids&lt;/code&gt;, parallel &lt;code&gt;float32&lt;/code&gt; arrays keep track of thousands of X/Y coordinates, velocities, and lifetimes without garbage collection pauses.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Raw DSP Audio:&lt;/strong&gt; Our &lt;code&gt;sound-nodes&lt;/code&gt; synthesizer calculates complex impulse responses and noise waveforms natively using &lt;code&gt;float32&lt;/code&gt; arrays before mapping them into WebAudio channels.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;the-bug-type-coercion-and-f64reinterpret_i64&#34;&gt;The Bug: Type Coercion and &lt;code&gt;f64.reinterpret_i64&lt;/code&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Because of how critical these arrays are, any bug in them is catastrophic. Recently, we discovered an issue where passing an exact integer (like &lt;code&gt;150&lt;/code&gt;) into &lt;code&gt;f32-set!&lt;/code&gt; would mysteriously yield &lt;code&gt;0.0&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Building 40Hz Cognitive Focus Apps in Coni WASM</title>
				<link>http://blog.hellonico.info/posts/coni/brain-waves-wasm/</link>
				<pubDate>Sun, 28 Jun 2026 07:30:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/posts/coni/brain-waves-wasm/</guid>
				<description>&lt;p&gt;WebAssembly in the browser has always promised incredible performance, but bridging it smoothly with Web APIs like WebAudio and WebGL can sometimes feel like solving a puzzle. Today, we&amp;rsquo;re thrilled to showcase how the Coni ecosystem elegantly solves this by introducing two brand-new web apps designed for cognitive focus.&lt;/p&gt;&#xA;&lt;p&gt;These two applications generate a &lt;strong&gt;40Hz gamma frequency&lt;/strong&gt;—a specific brain wave frequency associated with deep focus, memory recall, and cognitive enhancement—using binaural beats. But the real magic lies under the hood: they are both written entirely in &lt;strong&gt;Coni WASM&lt;/strong&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Writing WebGL Shaders in Pure Coni Lisp!</title>
				<link>http://blog.hellonico.info/posts/coni/coni-webgl-shaders/</link>
				<pubDate>Sun, 28 Jun 2026 07:30:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/posts/coni/coni-webgl-shaders/</guid>
				<description>&lt;p&gt;In our previous post, we showcased the raw power of Coni WASM by orchestrating an 80,000 particle WebGL matrix. But there was always one lingering annoyance in the WebGL pipeline: &lt;strong&gt;the shaders themselves.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;ve ever written WebGL code, you know the drill. You end up writing your Vertex and Fragment shaders as massive, messy string literals concatenated across your codebase. You lose syntax highlighting, formatting, and—most tragically for Lisp hackers—you lose structural editing (Paredit/Slurp/Barf).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Building a Multi-City Flight Search App in WebAssembly with Coni and re-frame</title>
				<link>http://blog.hellonico.info/posts/coni/flight-search/</link>
				<pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate>
				<guid>http://blog.hellonico.info/posts/coni/flight-search/</guid>
				<description>&lt;h1 id=&#34;the-coni-wasm-revolution&#34;&gt;The Coni WASM Revolution&lt;/h1&gt;&#xA;&lt;p&gt;One of the most exciting aspects of the &lt;strong&gt;Coni&lt;/strong&gt; language is its seamless compilation to WebAssembly (WASM). To put this capability to the ultimate test, I recently built a &lt;strong&gt;Multi-City Flight Search App&lt;/strong&gt; entirely in Coni.&lt;/p&gt;&#xA;&lt;p&gt;Instead of writing vanilla JavaScript or pulling in massive NPM frameworks, this app uses a custom, lightweight port of the famous &lt;code&gt;re-frame&lt;/code&gt; state management pattern—written purely in Coni!&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-re-frame-in-coni&#34;&gt;Why re-frame in Coni?&lt;/h2&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re familiar with ClojureScript, you already know the elegance of &lt;code&gt;re-frame&lt;/code&gt;. It provides a unidirectional data flow and highly predictable state management. Bringing this pattern to Coni means we can write UI applications using:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Building Native Parallel Downloads in Coni</title>
				<link>http://blog.hellonico.info/posts/coni/parallel-downloads/</link>
				<pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate>
				<guid>http://blog.hellonico.info/posts/coni/parallel-downloads/</guid>
				<description>&lt;p&gt;One of the great things about building your own language and tooling is the ability to rethink how operations are performed. In our latest commits, we decided to tackle a major bottleneck in our build process: downloading Maven dependencies.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem-with-platform-specific-scripts&#34;&gt;The Problem with Platform-Specific Scripts&lt;/h2&gt;&#xA;&lt;p&gt;Previously, the &lt;code&gt;download-url-to-file&lt;/code&gt; function in Coni relied on shelling out to platform-specific tools:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;On Linux/macOS, it spawned a &lt;code&gt;curl&lt;/code&gt; process.&lt;/li&gt;&#xA;&lt;li&gt;On Windows, it invoked a massive &lt;code&gt;powershell&lt;/code&gt; command using &lt;code&gt;System.Net.WebClient&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;While this worked, it had several drawbacks. First, shelling out to external processes is slow and resource-intensive. Second, the dependency on external tools meant that subtle differences in &lt;code&gt;curl&lt;/code&gt; versions or Windows security protocols could cause unexpected failures. Most importantly, downloading artifacts sequentially using these shell commands meant that resolving a large Maven project would take entirely too long.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Supercharging the Coni CLI with Embedded Subcommands</title>
				<link>http://blog.hellonico.info/posts/coni/embedded-subcommands/</link>
				<pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate>
				<guid>http://blog.hellonico.info/posts/coni/embedded-subcommands/</guid>
				<description>&lt;p&gt;One of the greatest strengths of the Coni language is its portability. We designed it so that the core interpreter and standard libraries are shipped as a single, static binary. You don&amp;rsquo;t need a bloated installation process; you just download the executable and you&amp;rsquo;re good to go.&lt;/p&gt;&#xA;&lt;p&gt;However, as the ecosystem grew—like the addition of our Android build pipeline—we found ourselves with a minor workflow annoyance. To invoke the Android APK builder, you had to run the script via its absolute path:&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
