<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged crossplatform</title>
<link>https://coderlegion.com/tag/crossplatform</link>
<description>Powered by Question2Answer</description>
<item>
<title>Embedding a web UI into a native desktop application comes with a price</title>
<link>https://coderlegion.com/27838/embedding-a-web-ui-into-a-native-desktop-application-comes-with-a-price</link>
<description>&lt;p&gt;I thought embedding a web UI into a native desktop application would be the easy part.&lt;br&gt;
After all... macOS has WebKit. Linux has GTK WebKit. Windows has WebView2.&lt;/p&gt;
&lt;p&gt;One API per platform, smaller installers, native look &amp;amp; feel. Sounds perfect.&lt;br&gt;
Then reality arrived.&lt;/p&gt;
&lt;h3 id=&quot;macos-&quot;&gt;macOS 🍎&lt;/h3&gt;
&lt;p&gt;Honestly, this was the easiest platform.&lt;br&gt;
System WebKit is there.&lt;br&gt;
It behaves consistently.&lt;br&gt;
No additional runtime.&lt;br&gt;
No installer surprises.&lt;br&gt;
Exactly what you'd expect from a platform component.&lt;br&gt;
10/10&lt;/p&gt;
&lt;h3 id=&quot;linux-&quot;&gt;Linux 🐧&lt;/h3&gt;
&lt;p&gt;Things became... more interesting.&lt;br&gt;
GTK WebKit works, but suddenly packaging starts to matter.&lt;br&gt;
An AppImage built on one distribution may refuse to start on another because some required WebKitGTK library isn't available.&lt;br&gt;
Your application itself is perfectly fine.&lt;br&gt;
The user's system just doesn't happen to provide exactly the version your build expects.&lt;br&gt;
You quickly discover that &quot;works on my machine&quot; has many regional dialects.&lt;br&gt;
7/10&lt;/p&gt;
&lt;h3 id=&quot;windows-&quot;&gt;Windows 🪟&lt;/h3&gt;
&lt;p&gt;This one surprised me the most.&lt;br&gt;
Unlike macOS, the web view isn't really just &quot;there.&quot;&lt;br&gt;
Using WebView2 means depending on the Edge WebView runtime.&lt;br&gt;
If the runtime isn't installed, congratulations—you now need another installer.&lt;br&gt;
So your installer may install something whose purpose is to allow your application to display HTML.&lt;br&gt;
Not exactly the dependency story I was hoping for.&lt;br&gt;
2/10&lt;/p&gt;
&lt;h3 id=&quot;meeting-in-the-middle&quot;&gt;Meeting in the middle&lt;/h3&gt;
&lt;p&gt;At some point I asked myself:&lt;br&gt;
Why am I spending time debugging operating-system packaging instead of building my application?&lt;/p&gt;
&lt;p&gt;So I tried CEF (Chromium Embedded Framework).&lt;br&gt;
Yes...&lt;br&gt;
The application becomes larger.&lt;br&gt;
Quite a bit larger.&lt;/p&gt;
&lt;p&gt;But in exchange:&lt;br&gt;
• Same rendering engine everywhere.&lt;br&gt;
• Same JavaScript engine everywhere.&lt;br&gt;
• Same debugging experience.&lt;br&gt;
• Same HTML/CSS behavior.&lt;br&gt;
• No Linux WebKit dependency lottery.&lt;br&gt;
• No separate WebView runtime installation on Windows.&lt;br&gt;
• One code path across all desktop platforms.&lt;br&gt;
Ironically, shipping your own browser turned out to be simpler than relying on the browser already &quot;provided&quot; by the operating system.&lt;br&gt;
It's one of those engineering decisions that looks wasteful on paper but ends up reducing complexity everywhere else.&lt;br&gt;
Sometimes carrying the extra megabytes is cheaper than carrying platform-specific surprises.&lt;/p&gt;
&lt;p&gt;Curious what others have settled on.&lt;/p&gt;
&lt;p&gt;Are you using native web views, CEF, or something else for cross-platform desktop applications?&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/27838/embedding-a-web-ui-into-a-native-desktop-application-comes-with-a-price</guid>
<pubDate>Sun, 20 Sep 2026 14:12:47 +0000</pubDate>
</item>
<item>
<title>ForgeZero: musl Cross-Compilation and Objective-C Support</title>
<link>https://coderlegion.com/19810/forgezero-musl-cross-compilation-and-objective-c-support</link>
<description>&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=10858898993970459087&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Recent changes to ForgeZero introduce two new build targets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;musl libc cross-compilation through the Zig toolchain&lt;/li&gt;
&lt;li&gt;Objective-C compilation support on Linux&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal is not to add another compiler frontend, but to keep a single command-line interface while selecting the appropriate backend automatically.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;musl-targets&quot;&gt;musl Targets&lt;/h3&gt;
&lt;p&gt;ForgeZero can now build statically linked musl binaries for supported architectures.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;fz -cc main.c -musl=riscv64 -toolchain zig
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Result:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;main: ELF 64-bit LSB executable, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), statically linked, with debug_info, not stripped
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The implementation uses the Zig toolchain as a cross compiler while exposing a consistent ForgeZero interface.&lt;/p&gt;
&lt;p&gt;Typical use cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;static deployment&lt;/li&gt;
&lt;li&gt;container images&lt;/li&gt;
&lt;li&gt;embedded systems&lt;/li&gt;
&lt;li&gt;cross-compilation without a dedicated sysroot&lt;/li&gt;
&lt;li&gt;portable binaries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No changes are required to existing build scripts besides selecting the musl target.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;objective-c-detection&quot;&gt;Objective-C Detection&lt;/h3&gt;
&lt;p&gt;ForgeZero now recognizes Objective-C source files (&lt;code&gt;.m&lt;/code&gt;) and automatically switches to the Clang frontend and Objective-C runtime linker.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;fz -cc main.m
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verbose output:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Objective-C detected!
Bypassing Zig linker to use Clang with -lobjc

Running:
clang main.o -o main -lobjc -Wl,--build-id=none

Built: main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The language detection is automatic.&lt;/p&gt;
&lt;p&gt;There is no separate Objective-C mode or dedicated command. Source type determines the compilation pipeline.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;unified-build-interface&quot;&gt;Unified Build Interface&lt;/h3&gt;
&lt;p&gt;The same interface can now be used for multiple languages:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;fz -cc hello.c
fz -cc hello.m
fz -asm boot.asm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ForgeZero selects the compiler, linker and runtime based on the source file and requested target instead of requiring the user to manage toolchain details manually.&lt;/p&gt;
&lt;p&gt;This behavior will be extended to additional languages and targets in future releases.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;repository&quot;&gt;Repository&lt;/h3&gt;
&lt;p&gt;GitHub: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/forgezero-cli/forgezero&quot;&gt;https://github.com/forgezero-cli/forgezero&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Author: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/alexvoste&quot;&gt;https://github.com/alexvoste&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/19810/forgezero-musl-cross-compilation-and-objective-c-support</guid>
<pubDate>Sat, 06 Jun 2026 09:04:12 +0000</pubDate>
</item>
<item>
<title>ForgeZero v4.2.0: 2.84x Faster Than Ninja. Zero CGO. Zero Compromise.</title>
<link>https://coderlegion.com/19090/forgezero-v4-2-0-2-84x-faster-than-ninja-zero-cgo-zero-compromise</link>
<description>&lt;p&gt;We shipped v4.1.0 with a clear mandate: eliminate heap allocations from every critical path,&lt;br&gt;
harden the syscall layer, and make the build engine deterministic at hardware limits.&lt;br&gt;
v4.2.0 delivers on that — and then goes further.&lt;/p&gt;
&lt;p&gt;This release drops CGO entirely, ships a native Windows syscall driver, and pushes&lt;br&gt;
the assembler hot-path through SIMD rewrites and sync.Pool recycling. The result is a&lt;br&gt;
build orchestrator that runs at 637 ms mean against Ninja's 1.813 s on a 1000-module&lt;br&gt;
C project. That is a 2.84x lead, sustained across 10 runs with sub-35 ms range variance.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;benchmark-forgezero-vs-ninja-1000-c-modules&quot;&gt;Benchmark: ForgeZero vs Ninja, 1000 C Modules&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Tool &lt;/th&gt;&lt;th&gt;Mean &lt;/th&gt;&lt;th&gt;Range &lt;/th&gt;&lt;th&gt;Runs&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;fz (ForgeZero) &lt;/td&gt;&lt;td&gt;637.3 ms &lt;/td&gt;&lt;td&gt;626.6 ms — 685.5 ms &lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ninja &lt;/td&gt;&lt;td&gt;1.813 s &lt;/td&gt;&lt;td&gt;1.800 s — 1.834 s &lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;2.84x faster. Consistent. Reproducible.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hardware: Intel i5-10310U. Cold filesystem cache. No artificial throttling.&lt;br&gt;
The variance on fz is 58.9 ms peak-to-peak. On ninja it is 34 ms — but starting from&lt;br&gt;
nearly three times higher. ForgeZero is not only faster, it is stable.&lt;/p&gt;
&lt;p&gt;The previous release already showed 3.25x against &lt;code&gt;make -j4&lt;/code&gt; at 100 modules. This holds&lt;br&gt;
as the module count scales to 1000 against a purpose-built parallel tool. That is not a&lt;br&gt;
benchmark trick. That is architecture.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-big-change-cgo-is-gone&quot;&gt;The Big Change: CGO is Gone&lt;/h3&gt;
&lt;p&gt;v4.1.0 still carried CGO at the entrypoint and in the C plugin loader. Every build that&lt;br&gt;
touched cplugin dragged in the C toolchain, broke cross-compilation, and introduced&lt;br&gt;
non-determinism in the binary ABI.&lt;/p&gt;
&lt;p&gt;v4.2.0 removes it completely.&lt;/p&gt;
&lt;p&gt;The mechanism is &lt;code&gt;GoContext&lt;/code&gt; — a pure Go struct that replaces the old C-coupled parameter&lt;br&gt;
passing interface in cplugin. Platform-specific loaders are now split by build tag:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;//go:build linux&lt;/code&gt; — Unix dynamic loader via CGO (for users who opt in)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;//go:build windows&lt;/code&gt; — Native DLL loader via &lt;code&gt;syscall&lt;/code&gt; and &lt;code&gt;golang.org/x/sys/windows&lt;/code&gt;,&lt;br&gt;
zero CGO dependency&lt;/li&gt;
&lt;li&gt;fallback — no-op loader for non-CGO builds, compiles clean on any target&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The entrypoint (&lt;code&gt;cmd/fz&lt;/code&gt;) no longer imports &lt;code&gt;&quot;C&quot;&lt;/code&gt; at all. The binary is now fully&lt;br&gt;
cross-compilable from any host to any target without a C toolchain present.&lt;/p&gt;
&lt;p&gt;C module structs were also aligned to 64-byte cache lines to eliminate false sharing&lt;br&gt;
on multi-core dispatch.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;assembler-simd-sync-pool-and-one-allocation-budget&quot;&gt;Assembler: SIMD, sync.Pool, and One Allocation Budget&lt;/h3&gt;
&lt;p&gt;The assembler hot-path in v4.1.0 was fast. In v4.2.0 it operates under a strict&lt;br&gt;
zero-allocation budget on every repeated call.&lt;/p&gt;
&lt;p&gt;Three changes made this possible:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SIMD + branchless lookups for whitespace and comment stripping.&lt;/strong&gt;&lt;br&gt;
The previous implementation used range loops with conditional branches. The rewrite&lt;br&gt;
uses branchless lookup tables and SIMD-width processing to strip comments and normalize&lt;br&gt;
whitespace without a single branch misprediction in the common case.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parser recycling via sync.Pool.&lt;/strong&gt;&lt;br&gt;
Each parse call previously allocated a new parser struct. The pool holds pre-warmed&lt;br&gt;
parser instances and recycles them across goroutines. Allocation churn in the assembler&lt;br&gt;
is now flat under sustained parallel load.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;splitArgs as a parser method with pre-allocated slice recycling.&lt;/strong&gt;&lt;br&gt;
The argument splitter was a free function that allocated a new slice on every call.&lt;br&gt;
It is now a method on the pooled parser, reusing the backing array across invocations.&lt;br&gt;
The slice is reset, not reallocated.&lt;/p&gt;
&lt;p&gt;Compiler flags are parsed once via &lt;code&gt;sync.Once&lt;/code&gt; lazy initialization. Repeated calls&lt;br&gt;
to the flag parser cost a single atomic read.&lt;/p&gt;
&lt;p&gt;FastCopy — the inner loop for instruction stream copying — was rewritten as a&lt;br&gt;
branchless unrolled function using &lt;code&gt;unsafe.Pointer&lt;/code&gt; arithmetic. No bounds checks.&lt;br&gt;
No interface dispatch. Direct memory throughput.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;linker-on-disk-symbol-cache-no-nm&quot;&gt;Linker: On-Disk Symbol Cache, No nm&lt;/h3&gt;
&lt;p&gt;The linker previously invoked the &lt;code&gt;nm&lt;/code&gt; utility to resolve symbol tables. &lt;code&gt;nm&lt;/code&gt; is a&lt;br&gt;
process fork per object file. At 1000 modules that is 1000 forks, each with exec&lt;br&gt;
overhead, pipe setup, and string parsing.&lt;/p&gt;
&lt;p&gt;v4.2.0 introduces a co-located on-disk symbol cache. Symbol data is written alongside&lt;br&gt;
the object file on first build and read directly on subsequent builds. The &lt;code&gt;nm&lt;/code&gt; binary&lt;br&gt;
is never invoked in the hot path.&lt;/p&gt;
&lt;p&gt;Object deduplication was simplified from a custom mmap-based structure to a native&lt;br&gt;
Go map. The mmap routines are gone. The map is faster for the deduplication workload&lt;br&gt;
and eliminates an entire category of platform-specific edge cases.&lt;/p&gt;
&lt;p&gt;Response file generation was refactored to use &lt;code&gt;bufio.Writer&lt;/code&gt; with &lt;code&gt;f.Sync&lt;/code&gt; removed.&lt;br&gt;
The sync was a correctness hedge that was never needed — the linker already operates&lt;br&gt;
under an ordering guarantee from the task graph.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;builder-and-utils-walkdir-zero-copy-loops-raw-syscalls&quot;&gt;Builder and Utils: WalkDir, Zero-Copy Loops, Raw Syscalls&lt;/h3&gt;
&lt;p&gt;The builder's source discovery was rewritten around &lt;code&gt;WalkDir&lt;/code&gt; with explicit&lt;br&gt;
&lt;code&gt;filepath.SkipDir&lt;/code&gt; support in the custom &lt;code&gt;SYS_GETDENTS64&lt;/code&gt; walker. Directory subtrees&lt;br&gt;
that cannot contain build targets are pruned at the kernel boundary, not in userspace.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CleanDir&lt;/code&gt; was deduplicated — it was being called multiple times per build target in&lt;br&gt;
the previous implementation. Slice allocations in the task dispatch worker were&lt;br&gt;
eliminated; the dispatch loop now operates on pre-allocated task structs with&lt;br&gt;
zero heap writes in the hot path.&lt;/p&gt;
&lt;p&gt;Platform-specific file hashing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux: Direct &lt;code&gt;SYS_OPENAT&lt;/code&gt; loops with defer-based cleanup and no &lt;code&gt;os.File&lt;/code&gt; allocation&lt;/li&gt;
&lt;li&gt;macOS: Low-level &lt;code&gt;mmap&lt;/code&gt; write interfaces, resource management tuned to Darwin's&lt;br&gt;
unified buffer cache behavior&lt;/li&gt;
&lt;li&gt;Windows / non-UNIX: Updated fallback stubs that compile clean and behave correctly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unused pools were purged. Digest-to-string conversions were rewritten to use&lt;br&gt;
stack-allocated byte slices instead of &lt;code&gt;fmt.Sprintf&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-v4-1-0-established&quot;&gt;What v4.1.0 Established&lt;/h3&gt;
&lt;p&gt;For context: v4.1.0 shipped the HADES ELF emitter with correct &lt;code&gt;.symtab&lt;/code&gt; ordering&lt;br&gt;
(local symbols before global, strict linker compliance), deterministic relocation&lt;br&gt;
calculation for &lt;code&gt;call&lt;/code&gt; and &lt;code&gt;jmp&lt;/code&gt; offsets, and the AEGIS security layer with TOCTOU&lt;br&gt;
mitigation, atomic SBOM generation, and &lt;code&gt;secureVendorPath&lt;/code&gt; symlink validation.&lt;/p&gt;
&lt;p&gt;The allocation regression suite and &lt;code&gt;golangci-lint&lt;/code&gt; enforcement were introduced in&lt;br&gt;
that release and remain green.&lt;/p&gt;
&lt;p&gt;v4.2.0 builds on that foundation without breaking it.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;numbers-that-matter&quot;&gt;Numbers That Matter&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2.84x&lt;/strong&gt; faster than Ninja at 1000 C modules&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3.25x&lt;/strong&gt; faster than &lt;code&gt;make -j4&lt;/code&gt; at 100 modules (v4.1.0, still holds)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;~1.18 GB/s&lt;/strong&gt; sustained copy throughput on i5-10310U, zero GC interference&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0 allocs/op, 0 B/op&lt;/strong&gt; in &lt;code&gt;copyFileHot&lt;/code&gt; micro-benchmark&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0 CGO dependencies&lt;/strong&gt; in the default build path&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;100%&lt;/strong&gt; &lt;code&gt;golangci-lint&lt;/code&gt; compliance, strict config&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;get-it&quot;&gt;Get It&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/forgezero-cli/forgezero
cd forgezero
go build -o fz ./cmd/fz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No C toolchain required. No network calls at build time. Reproducible output on&lt;br&gt;
amd64 and arm64 across Linux, Windows, and macOS.&lt;/p&gt;
&lt;p&gt;Source, benchmarks, and the full commit log are in the repository.&lt;br&gt;
If you are running large C projects and measuring build latency, the numbers are&lt;br&gt;
worth verifying on your own hardware.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;ForgeZero is a low-level build orchestrator written in Go. It targets deterministic,&lt;br&gt;
zero-allocation execution for large-scale C and assembly projects.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/19090/forgezero-v4-2-0-2-84x-faster-than-ninja-zero-cgo-zero-compromise</guid>
<pubDate>Wed, 27 May 2026 17:09:17 +0000</pubDate>
</item>
<item>
<title>I Build Apps and Trade NSE — Systems Over Noise</title>
<link>https://coderlegion.com/8775/i-build-apps-and-trade-nse-systems-over-noise</link>
<description>&lt;p&gt;&lt;strong&gt; Project: tradeos_phoenix&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;tradeos_phoenix is an early-stage trading-focused mobile application built with Flutter, powered by Firebase and Supabase, designed with a clear philosophy:&lt;br&gt;
&lt;strong&gt;start simple, build strong, then scale smart&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Right now, we’re intentionally keeping the scope tight.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Current Focus&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We are starting with only 6 core instruments, split across Commodity and Crypto:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Commodities:&lt;/strong&gt;&lt;br&gt;
Gold&lt;br&gt;
Silver&lt;br&gt;
Copper&lt;br&gt;
Crude Oil&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Crypto:&lt;/strong&gt;&lt;br&gt;
Bitcoin (BTC)&lt;br&gt;
Ethereum (ETH)&lt;/p&gt;
&lt;p&gt;Instead of chasing “everything for everyone,” we’re focusing on depth, reliability, and clean execution for these segments first.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Why Not “Smart” Yet?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The app is not heavily automated or AI-driven at this stage, and that’s intentional.&lt;/p&gt;
&lt;p&gt;Our priorities right now:&lt;br&gt;
Stable architecture&lt;br&gt;
Clean data flow&lt;br&gt;
Low-latency performance&lt;br&gt;
Scalable backend design&lt;/p&gt;
&lt;p&gt;A foundation that won’t break when features grow&lt;/p&gt;
&lt;p&gt;In trading (just like in tech), bad foundations destroy good ideas.&lt;br&gt;
We’re building tradeos_phoenix the same way a serious trader builds a system — step by step, with risk control.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;️ Tech Stack&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flutter&lt;/strong&gt; for cross-platform performance&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Firebase&lt;/strong&gt; for auth, notifications, and real-time needs&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Supabase&lt;/strong&gt; for scalable backend, database, and APIs&lt;/p&gt;
&lt;p&gt;The goal is a &lt;strong&gt;modern, lightweight, and extensible trading-tech product&lt;/strong&gt; that can later support analytics, automation, alerts, and strategy tools without rework.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; India-Centric Vision&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Our focus is India-first:&lt;br&gt;
Indian commodity traders&lt;br&gt;
Crypto participants operating from India&lt;br&gt;
Founders, developers, and traders who understand the local market reality&lt;/p&gt;
&lt;p&gt;We’re actively open to India-based tie-ups and long-term collaborations, especially with:&lt;br&gt;
Traders or trading communities&lt;br&gt;
Fintech builders&lt;br&gt;
Market data providers&lt;br&gt;
Founders exploring commodity/crypto tech&lt;br&gt;
Anyone serious about building real products, not hype demos&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Let’s Build, Not Rush&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;tradeos_phoenix is not a “l&lt;strong&gt;aunch-and-forget&lt;/strong&gt;” app.&lt;br&gt;
It’s a long-term build where tech discipline meets trading discipline.&lt;/p&gt;
&lt;p&gt;If you’re interested in collaborating, contributing ideas, or exploring a long-term India-based setup, let’s connect and build this the right way — &lt;strong&gt;calmly, correctly, and with intent&lt;/strong&gt;.&lt;br&gt;
&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=11018732356454180268&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
</description>
<category>Personal Branding</category>
<guid isPermaLink="true">https://coderlegion.com/8775/i-build-apps-and-trade-nse-systems-over-noise</guid>
<pubDate>Tue, 23 Dec 2025 09:44:31 +0000</pubDate>
</item>
<item>
<title>ImagePickerKMP support extentions now and Web</title>
<link>https://coderlegion.com/6451/imagepickerkmp-support-extentions-now-and-web</link>
<description>&lt;h2 id=&quot;imagepickerkmp-new-extensions-amp-image-compression&quot;&gt;ImagePickerKMP — New Extensions &amp;amp; Image Compression&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/ismoy/ImagePickerKMP&quot;&gt;ismoy/ImagePickerKMP&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ImagePickerKMP&lt;/strong&gt; now introduces powerful new &lt;strong&gt;extension functions&lt;/strong&gt; and &lt;strong&gt;image compression&lt;/strong&gt; features for more flexible image handling across Android, iOS  and Web platforms.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;available-extension-functions&quot;&gt;Available Extension Functions&lt;/h3&gt;
&lt;p&gt;These new extensions allow you to easily convert captured or selected images into different formats — perfect for storage, UI display, graphics, or network use.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Function &lt;/th&gt;&lt;th&gt;Returns &lt;/th&gt;&lt;th&gt;Usage&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;loadBytes()&lt;/code&gt; &lt;/td&gt;&lt;td&gt;&lt;code&gt;ByteArray&lt;/code&gt; &lt;/td&gt;&lt;td&gt;For file operations and storage&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;loadPainter()&lt;/code&gt; &lt;/td&gt;&lt;td&gt;&lt;code&gt;Painter&lt;/code&gt; &lt;/td&gt;&lt;td&gt;For direct display in Compose UI&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;loadImageBitmap()&lt;/code&gt; &lt;/td&gt;&lt;td&gt;&lt;code&gt;ImageBitmap&lt;/code&gt; &lt;/td&gt;&lt;td&gt;For Compose graphics operations&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;loadBase64()&lt;/code&gt; &lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt; &lt;/td&gt;&lt;td&gt;For API calls and network transmission&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id=&quot;example-usage&quot;&gt;Example Usage&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-kotlin&quot;&gt;// State variables
var showCamera by remember { mutableStateOf(false) }
var showGallery by remember { mutableStateOf(false) }
var capturedImage by remember { mutableStateOf&amp;lt;Painter?&amp;gt;(null) }
var selectedPhotos by remember { mutableStateOf&amp;lt;List&amp;lt;GalleryPhotoHandler.PhotoResult&amp;gt;&amp;gt;(emptyList()) }

// Camera with extension functions
if (showCamera) {
    ImagePickerLauncher(
        config = ImagePickerConfig(
            onPhotoCaptured = { result -&amp;gt;
                // Use extension functions to get different formats
                val imageBytes = result.loadBytes()        // For file operations
                val imagePainter = result.loadPainter()    // For UI display
                val imageBitmap = result.loadImageBitmap() // For graphics operations
                val imageBase64 = result.loadBase64()      // For API calls
                
                // Store the painter to display later
                capturedImage = imagePainter
                showCamera = false
            },
            onError = { showCamera = false },
            onDismiss = { showCamera = false },
            directCameraLaunch = true
        )
    )
}

// Gallery with extension functions
if (showGallery) {
    GalleryPickerLauncher(
        onPhotosSelected = { photos -&amp;gt;
            selectedPhotos = photos
            showGallery = false
        },
        onError = { showGallery = false },
        onDismiss = { showGallery = false },
        allowMultiple = true
    )
}

// Display captured image
capturedImage?.let { painter -&amp;gt;
    Image(
        painter = painter,
        contentDescription = &quot;Captured photo&quot;,
        modifier = Modifier.size(200.dp)
    )
}

// Display selected photos
LazyColumn {
    items(selectedPhotos) { photo -&amp;gt;
        photo.loadPainter()?.let { painter -&amp;gt;
            Image(
                painter = painter,
                contentDescription = &quot;Selected photo&quot;,
                modifier = Modifier
                    .fillMaxWidth()
                    .height(200.dp)
            )
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;gist: &lt;a rel=&quot;nofollow&quot; href=&quot;https://gist.github.com/ismoy/c4b71401821c995031416f88eb0b40f8&quot;&gt;read More&lt;/a&gt;&lt;/p&gt;
</description>
<category>Open Source Tools</category>
<guid isPermaLink="true">https://coderlegion.com/6451/imagepickerkmp-support-extentions-now-and-web</guid>
<pubDate>Tue, 14 Oct 2025 23:03:02 +0000</pubDate>
</item>
<item>
<title>Reelora Now Available on Indus Appstore – A New Era of Movie Discovery!</title>
<link>https://coderlegion.com/5775/reelora-now-available-on-indus-appstore-a-new-era-of-movie-discovery</link>
<description>&lt;p&gt;We’re thrilled to announce that Reelora, your ultimate destination for movie trailers and entertainment discovery, is now officially published on the Indus Appstore!  This marks a new milestone in making Reelora more accessible to millions of users across India who are looking for smarter, faster, and more personalized ways to enjoy global cinema content.&lt;/p&gt;
&lt;p&gt; What is Reelora?&lt;/p&gt;
&lt;p&gt;Reelora is more than just a trailer app—it’s your personalized gateway to the world of movies. With a sleek interface and curated content, Reelora allows you to:&lt;/p&gt;
&lt;p&gt;Watch Trailers Instantly: Get access to trending, popular, and upcoming movie trailers.&lt;/p&gt;
&lt;p&gt;Discover Movies Worldwide: Explore films across languages, genres, and countries.&lt;/p&gt;
&lt;p&gt;Smart Filters: Tailor your experience with filters for language, genre, and even adult content.&lt;/p&gt;
&lt;p&gt;Favorites List: Bookmark up to 10 movies in your collection and expand as you go.&lt;/p&gt;
&lt;p&gt;Location-based Content: Get recommendations that match your region and preferences.&lt;/p&gt;
&lt;p&gt; Why Indus Appstore?&lt;/p&gt;
&lt;p&gt;By launching on Indus Appstore, Reelora becomes part of one of India’s fastest-growing app ecosystems. This gives millions of users—many beyond the Google Play ecosystem—direct access to a unique platform built for Indian audiences.&lt;/p&gt;
&lt;p&gt;For users, this means easier downloads, localized app discovery, and more choice. For Reelora, it means reaching wider audiences who love cinema and entertainment but want more control over how they discover and engage with movies.&lt;/p&gt;
&lt;p&gt; Why You’ll Love Reelora&lt;/p&gt;
&lt;p&gt;If you’re a movie lover, Reelora puts the global film industry at your fingertips. Whether you’re into Hollywood blockbusters, Bollywood hits, or indie gems from across the world, Reelora ensures you never miss out on the latest buzz.&lt;/p&gt;
&lt;p&gt;The app’s personalization features make it stand out—you can follow your favorite genres, explore recommendations based on your tastes, and stay updated with real-time trending trailers.&lt;/p&gt;
&lt;p&gt; Download Now&lt;/p&gt;
&lt;p&gt;Be part of this exciting journey and experience the future of movie discovery. Download Reelora today on the Indus Appstore and unlock a world of entertainment.&lt;/p&gt;
&lt;p&gt; Get it here: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.indusappstore.com/apps/entertainment/reelora/com.dk.reelora&quot;&gt;https://www.indusappstore.com/apps/entertainment/reelora/com.dk.reelora&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; With Reelora on Indus Appstore, movie magic is just one tap away. Stay entertained. Stay inspired. Stay Reel!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=13842160842356643743&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
</description>
<category>Mobile Dev</category>
<guid isPermaLink="true">https://coderlegion.com/5775/reelora-now-available-on-indus-appstore-a-new-era-of-movie-discovery</guid>
<pubDate>Mon, 29 Sep 2025 14:17:53 +0000</pubDate>
</item>
</channel>
</rss>