[{"content":"Hermes on iPhone — a native SwiftUI client for a self-hosted agent server. Reopen live sessions, attach photos and files from the iOS share sheet, and send prompts with model/reasoning/workspace controls.\n","permalink":"https://fevnem.github.io/projects/hermes-mobile/","summary":"\u003cp\u003eHermes on iPhone — a native SwiftUI client for a self-hosted agent server.\nReopen live sessions, attach photos and files from the iOS share sheet, and\nsend prompts with model/reasoning/workspace controls.\u003c/p\u003e","title":"Hermes Agent Mobile"},{"content":"A pipeline that takes any YouTube video — podcast or interview — and produces structured markdown notes for Obsidian: full transcript, chapter markers, speaker labels, and a summary. Built for my personal knowledge base.\n","permalink":"https://fevnem.github.io/projects/youtube-ingest/","summary":"\u003cp\u003eA pipeline that takes any YouTube video — podcast or interview — and produces\nstructured markdown notes for Obsidian: full transcript, chapter markers,\nspeaker labels, and a summary. Built for my personal knowledge base.\u003c/p\u003e","title":"YouTube Ingest"},{"content":"A read-only skill that gives agents safe access to a Robinhood portfolio — positions, P\u0026amp;L, and holdings analysis — without write access. Built to pair with any agent framework that supports tool skills.\n","permalink":"https://fevnem.github.io/projects/robinhood-skill/","summary":"\u003cp\u003eA read-only skill that gives agents safe access to a Robinhood portfolio —\npositions, P\u0026amp;L, and holdings analysis — without write access. Built to pair\nwith any agent framework that supports tool skills.\u003c/p\u003e","title":"Robinhood Agent Skill"},{"content":"Introduction When the web was first conceived, it was primarily designed for document sharing, not for running complex applications. Yet, over time, we\u0026rsquo;ve pushed the boundaries of what\u0026rsquo;s possible in a browser, running everything from photo editors to video games. This evolution has been made possible by successive improvements in JavaScript engines and web APIs. However, even with these advancements, there remained a ceiling on what performance could be achieved.\nEnter WebAssembly (Wasm) – a revolutionary technology that\u0026rsquo;s changing the game for web performance. Introduced in 2017, WebAssembly provides a way to run code written in languages like C, C++, and Rust at near-native speed on the web. In this article, we\u0026rsquo;ll dive deep into what WebAssembly is, how it works, and why it\u0026rsquo;s poised to reshape the future of web development.\nWhat is WebAssembly? WebAssembly is a binary instruction format designed as a portable target for the compilation of high-level languages like C, C++, and Rust, enabling deployment on the web for client and server applications. It is not intended to be written by hand, but rather to be an effective compilation target for low-level source languages.\nUnlike JavaScript, which is interpreted or just-in-time compiled, WebAssembly is a low-level assembly-like language with a compact binary format that runs with near-native performance. It\u0026rsquo;s designed to complement JavaScript, not replace it, allowing developers to take advantage of both languages\u0026rsquo; strengths.\nKey features of WebAssembly include:\nSpeed: WebAssembly code executes at near-native speed, significantly faster than JavaScript for computationally intensive tasks. Security: It runs in a sandboxed execution environment, maintaining the web\u0026rsquo;s security model. Portability: WebAssembly is designed to be platform-independent, running on any modern web browser. Efficiency: Its binary format is compact, resulting in smaller download sizes compared to equivalent JavaScript code. Interoperability: WebAssembly can seamlessly interact with JavaScript and access browser APIs. The Technical Foundation WebAssembly is built on a solid technical foundation that enables its high performance. Let\u0026rsquo;s explore some key aspects:\nBinary Format WebAssembly modules are distributed in a binary format (.wasm files), which is both compact and efficient to parse. This format is designed to be:\nSize-efficient: The binary representation is much smaller than equivalent textual code. Load-time efficient: Browsers can decode and validate WebAssembly code faster than parsing JavaScript. Execution-efficient: The format is designed to be close to native machine code, requiring minimal translation. Here\u0026rsquo;s a simple example of how WebAssembly looks in its text format (wat):\n(module (func $add (param $a i32) (param $b i32) (result i32) local.get $a local.get $b i32.add) (export \u0026#34;add\u0026#34; (func $add)) ) This would be compiled to a binary format before being sent to the browser.\nExecution Model WebAssembly runs in the same sandboxed execution environment as JavaScript, which means it has the same security capabilities and limitations. It can\u0026rsquo;t directly access the DOM or other browser APIs - it must go through JavaScript for that.\nWebAssembly code runs in a stack-based virtual machine, with a set of instructions that operate on a virtual stack. This model makes it easy to validate that code cannot break out of its sandbox.\nMemory Model WebAssembly uses a linear memory model, where memory is represented as a contiguous array of bytes that can be read from and written to by WebAssembly code. This memory can be grown as needed, and can be shared with JavaScript, allowing for efficient data exchange between the two environments.\nWhy WebAssembly Matters Performance Breakthrough The primary advantage of WebAssembly is its exceptional performance. For computationally intensive tasks, WebAssembly can be orders of magnitude faster than JavaScript. This performance boost comes from several factors:\nPredictable Performance: WebAssembly\u0026rsquo;s low-level design means that it doesn\u0026rsquo;t have the same performance variability that JavaScript does due to JIT compilation and garbage collection.\nOptimization: Since WebAssembly code is compiled ahead of time, it can be highly optimized before it even reaches the browser.\nEfficiency: The binary format and execution model are designed to be efficiently decoded and executed by browsers.\nLet\u0026rsquo;s look at a performance comparison for a simple task - calculating the n-th Fibonacci number recursively:\n// JavaScript version function fibonacciJS(n) { if (n \u0026lt;= 1) return n; return fibonacciJS(n - 1) + fibonacciJS(n - 2); } // WebAssembly version (in C, compiled to Wasm) int fibonacci(int n) { if (n \u0026lt;= 1) return n; return fibonacci(n - 1) + fibonacci(n - 2); } For values of n around 40, the WebAssembly version typically runs 20-30 times faster than the JavaScript version.\nExpanding Web Capabilities WebAssembly is enabling new types of applications that were previously impractical or impossible on the web:\nGames: Complex 3D games can now run at near-native speed in the browser. Multimedia Processing: Video and audio editing applications can now handle real-time processing. Scientific Computing: Complex simulations and data analysis can be performed efficiently. Machine Learning: Machine learning models can be executed directly in the browser. Bringing Existing Codebases to the Web One of the most exciting aspects of WebAssembly is its ability to bring existing codebases to the web. Libraries and applications written in languages like C, C++, and Rust can now be compiled to WebAssembly and run in the browser.\nThis has led to projects like:\nAutoCAD Web: The full AutoCAD application running in the browser using WebAssembly. Figma: The collaborative design tool uses WebAssembly for its vector graphics engine. Google Earth: The web version utilizes WebAssembly for improved performance. WebAssembly in Action Let\u0026rsquo;s look at how WebAssembly is actually used in a real-world scenario:\nIntegrating WebAssembly with JavaScript Here\u0026rsquo;s a simple example of how to load and use a WebAssembly module from JavaScript:\nasync function loadWasmModule() { // Fetch the WebAssembly module const response = await fetch(\u0026#39;simple.wasm\u0026#39;); const buffer = await response.arrayBuffer(); // Compile and instantiate the module const module = await WebAssembly.instantiate(buffer); // Get the exported function const add = module.instance.exports.add; // Call the function console.log(add(40, 2)); // Output: 42 } loadWasmModule(); In this example, we\u0026rsquo;re loading a WebAssembly module that exports an add function, then calling it from JavaScript.\nCreating WebAssembly Modules Most developers won\u0026rsquo;t write WebAssembly directly, but will instead use tools to compile code from languages like C, C++, or Rust to WebAssembly.\nHere\u0026rsquo;s an example of compiling C code to WebAssembly using Emscripten:\nemcc -O3 -s WASM=1 -s EXPORTED_FUNCTIONS=\u0026#34;[\u0026#39;_add\u0026#39;]\u0026#34; -o simple.js simple.c And here\u0026rsquo;s the C code:\nint add(int a, int b) { return a + b; } This compilation process produces both a WebAssembly binary (simple.wasm) and a JavaScript file (simple.js) that handles loading and instantiating the WebAssembly module.\nThe WebAssembly Ecosystem The WebAssembly ecosystem is rapidly growing and evolving. Here are some key components:\nLanguages and Compilers Several languages can be compiled to WebAssembly:\nC/C++: Using tools like Emscripten or LLVM directly. Rust: With the wasm-pack tool. AssemblyScript: A TypeScript-like language designed for WebAssembly. Go: With the WebAssembly target. Kotlin: Using Kotlin/Native with the WebAssembly target. Tools and Frameworks The WebAssembly ecosystem includes various tools and frameworks:\nEmscripten: A complete compiler toolchain for WebAssembly. wasm-bindgen: A tool for facilitating high-level interactions between Wasm modules and JavaScript. Wasmtime: A standalone WebAssembly runtime. WASI: The WebAssembly System Interface, a standard for system interactions. Libraries and Applications Many libraries and applications are now available in WebAssembly:\nOpenCV: Computer vision library. TensorFlow: Machine learning framework. SQLite: SQL database engine. FFmpeg: Multimedia processing library. Challenges and Limitations Despite its advantages, WebAssembly still faces some challenges:\nDOM Access WebAssembly cannot directly access the DOM or other browser APIs. It must go through JavaScript for these interactions, which can be a performance bottleneck.\nGarbage Collection WebAssembly currently doesn\u0026rsquo;t have built-in garbage collection, which makes it challenging to efficiently compile languages like Java or C# to WebAssembly.\nDevelopment Workflow The tooling for WebAssembly is still evolving, and the development workflow can be complex compared to pure JavaScript development.\nThe Future of WebAssembly WebAssembly is evolving rapidly, with several exciting developments on the horizon:\nWebAssembly System Interface (WASI) WASI is an emerging standard for system interactions in WebAssembly, allowing WebAssembly modules to interact with the system outside the browser in a standardized way. This will enable WebAssembly to be used for server-side applications, command-line tools, and more.\nGarbage Collection The WebAssembly Garbage Collection (GC) proposal aims to add garbage collection to WebAssembly, making it easier to compile languages like Java, C#, and JavaScript to WebAssembly.\nThreading The WebAssembly Threads proposal aims to add support for threading to WebAssembly, enabling more efficient parallel processing.\nComponent Model The Component Model proposal aims to define a standard way for WebAssembly modules to interact with each other, making it easier to build modular applications.\nConclusion WebAssembly represents a significant leap forward in web technology, enabling performance and capabilities that were previously unimaginable on the web. As the technology matures and the ecosystem grows, we can expect to see even more innovative applications and use cases.\nThe future of web performance is here, and it\u0026rsquo;s powered by WebAssembly. Whether you\u0026rsquo;re a web developer, a systems programmer, or somewhere in between, now is an excellent time to start exploring this exciting technology.\nGetting Started with WebAssembly If you\u0026rsquo;re interested in getting started with WebAssembly, here are some resources to help you:\nMDN WebAssembly Documentation: A comprehensive guide to WebAssembly fundamentals. WebAssembly.org: The official WebAssembly website with specifications and documentation. Emscripten Documentation: Learn how to compile C and C++ to WebAssembly. Rust and WebAssembly Book: A guide to using Rust and WebAssembly together. WebAssembly Studio: An online IDE for WebAssembly development. WebAssembly is still evolving, but it\u0026rsquo;s already changing the way we think about performance and capabilities on the web. By understanding and adopting WebAssembly now, you\u0026rsquo;ll be well-positioned to take advantage of this powerful technology as it continues to grow and mature.\nHappy coding!\n","permalink":"https://fevnem.github.io/posts/webassembly/","summary":"\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eWhen the web was first conceived, it was primarily designed for document sharing, not for running complex applications. Yet, over time, we\u0026rsquo;ve pushed the boundaries of what\u0026rsquo;s possible in a browser, running everything from photo editors to video games. This evolution has been made possible by successive improvements in JavaScript engines and web APIs. However, even with these advancements, there remained a ceiling on what performance could be achieved.\u003c/p\u003e","title":"WebAssembly: The Future of Web Performance"},{"content":"Welcome to my digital garden! This space serves as a personal wiki where I cultivate and share knowledge, ideas, and discoveries. The concept of digital gardens has evolved significantly over the years1, becoming a unique form of personal knowledge management.\nWhat is a Digital Garden? Unlike traditional blogs that are organized chronologically, a digital garden is a collection of interconnected notes and articles that grow and evolve over time. Think of it as a personal wiki where thoughts are allowed to develop naturally. This approach, inspired by the work of Mike Caulfield2, emphasizes the organic growth of ideas over time.\nCore Principles Non-linear Growth Digital gardens don\u0026rsquo;t follow the traditional chronological format of blogs. Instead, they:\nAllow ideas to evolve naturally Encourage frequent updates and revisions Support interconnected thinking Living Documents Each piece of content here is treated as a living document that:\nGrows over time Gets refined through new insights Connects with other related topics How to Navigate The content here is organized in several ways:\nTopics\nBrowse content by theme Explore interconnected ideas Follow concept clusters Articles\nChronological view of posts Latest updates and additions Featured content Tags\nFind related content Discover connections Track themes across posts Writing Style The content here follows a wiki-style format:\nClear headings and structure Internal links to related topics Regular updates and revisions Comprehensive references Feel free to explore and watch this garden grow! Start with the topics that interest you most, and don\u0026rsquo;t hesitate to follow the various connections between articles.\nSee \u0026ldquo;Digital Gardens: A Brief History\u0026rdquo; for a comprehensive overview of how this concept has evolved.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nThe Garden and the Stream metaphor has been influential in shaping how we think about digital gardens and knowledge management.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://fevnem.github.io/posts/welcome/","summary":"\u003cp\u003eWelcome to my digital garden! This space serves as a personal wiki where I cultivate and share knowledge, ideas, and discoveries. The concept of digital gardens has evolved significantly over the years\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e, becoming a unique form of personal knowledge management.\u003c/p\u003e\n\u003ch2 id=\"what-is-a-digital-garden\"\u003eWhat is a Digital Garden?\u003c/h2\u003e\n\u003cp\u003eUnlike traditional blogs that are organized chronologically, a digital garden is a collection of interconnected notes and articles that grow and evolve over time. Think of it as a personal wiki where thoughts are allowed to develop naturally. This approach, inspired by the work of Mike Caulfield\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e, emphasizes the organic growth of ideas over time.\u003c/p\u003e","title":"Welcome to My Digital Garden"},{"content":"About the Author Hi, I\u0026rsquo;m Rakib Hasan — a software engineer. This space serves as a personal knowledge repository where I document my journey through software development, system design, and technical exploration. Unlike traditional blogs, this digital garden grows organically, with content that evolves and matures over time.\nAreas of Focus Technical Expertise Software Architecture \u0026amp; System Design Web Development \u0026amp; Modern Frameworks Performance Optimization DevOps \u0026amp; Cloud Infrastructure Content Categories In-depth Technical Guides Best Practices \u0026amp; Patterns Tool Comparisons \u0026amp; Reviews Industry Insights Writing Philosophy Each article aims to provide clear, practical insights backed by real-world experience. The content here evolves alongside my professional journey, reflecting new learnings and changing perspectives in the tech landscape.\nFocus on practical, actionable knowledge Regular updates to keep content relevant Clear examples and detailed explanations Open to feedback and discussions Stay Connected Keep up with the latest content and updates:\nSubscribe to the RSS feed for new articles Follow me on GitHub ","permalink":"https://fevnem.github.io/about/","summary":"\u003ch2 id=\"about-the-author\"\u003eAbout the Author\u003c/h2\u003e\n\u003cp\u003eHi, I\u0026rsquo;m \u003cstrong\u003eRakib Hasan\u003c/strong\u003e — a software engineer. This space serves as a personal knowledge repository where I document my journey through software development, system design, and technical exploration. Unlike traditional blogs, this digital garden grows organically, with content that evolves and matures over time.\u003c/p\u003e\n\u003ch2 id=\"areas-of-focus\"\u003eAreas of Focus\u003c/h2\u003e\n\u003ch3 id=\"technical-expertise\"\u003eTechnical Expertise\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSoftware Architecture \u0026amp; System Design\u003c/li\u003e\n\u003cli\u003eWeb Development \u0026amp; Modern Frameworks\u003c/li\u003e\n\u003cli\u003ePerformance Optimization\u003c/li\u003e\n\u003cli\u003eDevOps \u0026amp; Cloud Infrastructure\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"content-categories\"\u003eContent Categories\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIn-depth Technical Guides\u003c/li\u003e\n\u003cli\u003eBest Practices \u0026amp; Patterns\u003c/li\u003e\n\u003cli\u003eTool Comparisons \u0026amp; Reviews\u003c/li\u003e\n\u003cli\u003eIndustry Insights\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"writing-philosophy\"\u003eWriting Philosophy\u003c/h2\u003e\n\u003cp\u003eEach article aims to provide clear, practical insights backed by real-world experience. The content here evolves alongside my professional journey, reflecting new learnings and changing perspectives in the tech landscape.\u003c/p\u003e","title":"About"}]