<!--base_layout-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<!-- Enable responsiveness on mobile devices-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<!-- Twitter Card Support -->
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@bitshiftmask" />
<meta name="twitter:title" content="James Munns" />
<meta name="twitter:description" content="James Munns' Blog" />
<meta name="twitter:image" content="https://jamesmunns.com/james-sq.png" />
<title>James Munns</title>
<!-- CSS -->
<link rel="stylesheet" href="https://jamesmunns.com/print.css" media="print">
<link rel="stylesheet" href="https://jamesmunns.com/poole.css">
<link rel="stylesheet" href="https://jamesmunns.com/hyde.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700|Abril+Fatface">
<!-- TODO: Don't hardcode this link! -->
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://jamesmunns.com/rss.xml">
</head>
<body class="theme-base-1f ">
<div class="sidebar">
<div class="container sidebar-sticky">
<div class="sidebar-about">
<a href="https://jamesmunns.com"><h1>James Munns</h1></a>
<p class="lead">Chief Whiteboarding Engineer
</p>
</div>
<ul class="sidebar-nav">
<!-- Manual navigation content -->
<hr>
<li><a href="https://jamesmunns.com/contact">About + Contact</a></li>
<li><a href="https://jamesmunns.com/blog">Blog</a></li>
<li><a href="https://jamesmunns.com/resume">Curriculum Vitae</a></li>
<li><a href="https://jamesmunns.com/podcast">Chats with James Podcast</a></li>
<li><a href="https://lab.jamesmunns.com">Lab Notebook</a></li>
<li><a href="https://mnemos.jamesmunns.com">MnemOS</a></li>
<hr>
<!-- External link content -->
<li><a href="https://github.com/jamesmunns"><span class="icon icon--github"><svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/></svg></span><span class="username"> jamesmunns</span></a>
<li><a href="https://www.linkedin.com/in/james-munns-8a42b429/"><span class="icon icon--linkedin"><svg viewBox="0 50 512 512" width="16px" height="16px"><path fill="#828282" d="M150.65,100.682c0,27.992-22.508,50.683-50.273,50.683c-27.765,0-50.273-22.691-50.273-50.683 C50.104,72.691,72.612,50,100.377,50C128.143,50,150.65,72.691,150.65,100.682z M143.294,187.333H58.277V462h85.017V187.333z M279.195,187.333h-81.541V462h81.541c0,0,0-101.877,0-144.181c0-38.624,17.779-61.615,51.807-61.615 c31.268,0,46.289,22.071,46.289,61.615c0,39.545,0,144.181,0,144.181h84.605c0,0,0-100.344,0-173.915 s-41.689-109.131-99.934-109.131s-82.768,45.369-82.768,45.369V187.333z"/></svg></span><span class="username"> James Munns</span></a></li>
</ul>
</div>
</div>
<div class="content container">
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="https://jamesmunns.com/blog/postcard-1-0/">
Postcard 1.0.0 Release
</a>
</h1>
<span class="post-date">2022-06-21</span>
<hr>
<p>Quoting from the README:</p>
<blockquote>
<p>Postcard is a #![no_std] focused serializer and deserializer for Serde. Postcard aims to be convenient for developers in constrained environments, while allowing for flexibility to customize behavior as needed.</p>
</blockquote>
<p>I first published <a href="https://docs.rs/postcard"><code>postcard</code></a> back in 2019, as a way to get "all the good stuff from <a href="https://serde.rs">Serde</a>" in a format that would work for embedded systems. Since then, people all over Rust are using Postcard as a general purpose, <a href="https://github.com/djkoloski/rust_serialization_benchmark">compact</a>, and flexible Serde format, not just embedded folks! Now, 3 years later or so, <strong>it has reached 1.0.0</strong>!</p>
<p>As of yesterday, June 20th, <a href="https://docs.rs/postcard"><code>postcard</code></a> v1.0.0 has been released.</p>
<p>This blog post is an extended overview of the changes since the last stable release, v0.7.3.</p>
<p>This work was made possible thanks to <a href="https://jamesmunns.com/blog/postcard-1-0-run/#sponsorship">sponsorship</a> from the <a href="https://www.mozilla.org">Mozilla Corporation</a>, and I'd like to thank them again for their support!</p>
<b>
<a href="https://jamesmunns.com/blog/postcard-1-0/">
...read more
</a>
</b>
</div>
<div class="post">
<h1 class="post-title">
<a href="https://jamesmunns.com/blog/postcard-1-0-run/">
The run-up to v1.0 for Postcard
</a>
</h1>
<span class="post-date">2022-05-10</span>
<hr>
<p>Quoting from the README:</p>
<blockquote>
<p>Postcard is a #![no_std] focused serializer and deserializer for Serde. Postcard aims to be convenient for developers in constrained environments, while allowing for flexibility to customize behavior as needed.</p>
</blockquote>
<p>I first published <a href="https://docs.rs/postcard"><code>postcard</code></a> back in 2019, as a way to get "all the good stuff from <a href="https://serde.rs">Serde</a>" in a format that would work for embedded systems. Since then, people all over Rust are using Postcard as a general purpose, <a href="https://github.com/djkoloski/rust_serialization_benchmark">compact</a>, and flexible Serde format, not just embedded folks! Now, 3 years later or so, it's about time to take it to v1.0.</p>
<p>Thanks to a bunch of accumulated experience over the years, and a generous sponsor, I'll be releasing the 1.0 version of Postcard in June of 2022.</p>
<p>Read on for more details on what's planned!</p>
<b>
<a href="https://jamesmunns.com/blog/postcard-1-0-run/">
...read more
</a>
</b>
</div>
<div class="post">
<h1 class="post-title">
<a href="https://jamesmunns.com/blog/fixed-point-math/">
A little fixed point math for embedded audio
</a>
</h1>
<span class="post-date">2022-04-26</span>
<hr>
<p>Recently, I wanted to generate some sounds for <a href="/blog/mnemos-initial-release/">MnemOS</a>, and I wanted it to go fast.</p>
<p>This is a little mini-blog post describing how I did that using fixed point math, and reduced the total CPU usage to about 20% of the original amount.</p>
<b>
<a href="https://jamesmunns.com/blog/fixed-point-math/">
...read more
</a>
</b>
</div>
<div class="post">
<h1 class="post-title">
<a href="https://jamesmunns.com/blog/mnemos-initial-release/">
MnemOS Initial Release Announcement
</a>
</h1>
<span class="post-date">2022-04-19</span>
<hr>
<p><img src="/blog/images/pellegrino-rack.jpg" alt="Pellgrino Rack" /></p>
<p>Today I'm introducing <strong>MnemOS</strong> v0.1.0, a small, general purpose operating system, written in Rust. MnemOS is designed for constrained hardware, including microcontrollers.</p>
<p>This release includes the v0.1.0 versions of:</p>
<ul>
<li><a href="https://docs.rs/mnemos/latest/kernel">The MnemOS Kernel</a></li>
<li><a href="https://docs.rs/mnemos-userspace/latest/userspace/">The MnemOS Userspace Library</a></li>
<li><a href="https://docs.rs/mnemos-common/latest/mnemos_common/">The MnemOS Common Library</a>, which defines the System Call interface shared between userspace and kernel.</li>
</ul>
<p>Together with the Pellegrino hardware system (pictured above), which is a <a href="https://en.wikipedia.org/wiki/Eurorack">Eurorack modular synth</a> inspired rack system with LEGO mounting rails, it aims to support modular, home-built computer systems.</p>
<p>Although the capabilities are currently limited, it currently supports a number of features, including:</p>
<ul>
<li><a href="https://mnemos.jamesmunns.com/user-guide/serial.html">Multiplexed serial ports</a>, allowing for "TCP Port" like addressing of services</li>
<li>An <a href="https://mnemos.jamesmunns.com/components/kernel.html#system-calls">RPC-style System Call interface</a>, powered by <a href="https://serde.rs">serde</a> and <a href="https://docs.rs/postcard">postcard</a></li>
<li>A <a href="https://docs.rs/mnemos-common/latest/mnemos_common/porcelain/block_storage/index.html">block storage interface</a>, useful for loading, storing, and retrieving programs and program data from persistent QSPI flash</li>
</ul>
<p>For more information on what MnemOS is, and how to get started, you can refer to <a href="https://mnemos.jamesmunns.com">the MnemOS book</a>, or visit the <a href="https://github.com/jamesmunns/pellegrino">GitHub Repository</a>.</p>
<b>
<a href="https://jamesmunns.com/blog/mnemos-initial-release/">
...read more
</a>
</b>
</div>
<div class="post">
<h1 class="post-title">
<a href="https://jamesmunns.com/blog/nwsltr-2022-01-19/">
OneVariable Newsletter - 2022-01-19
</a>
</h1>
<span class="post-date">2022-01-19</span>
<hr>
<p>This article was originally featured on the OneVariable Applied Research newsletter. If you'd like to get early access to these reports, you can <a href="https://confirmsubscription.com/h/y/258F2744861ED5E1">sign up for the newsletter here</a>. Newsletter emails are sent every Wednesday.</p>
<p>Articles are posted on my blog one week after appearing on the newsletter.</p>
<h2 id="abstract-and-results">Abstract and Results</h2>
<p>The new year continues with more hardware-related distractions.</p>
<p>This week, I went back to an old project from about a year ago, my <a href="https://github.com/jamesmunns/lipo-stamp">Lipo Stamp hardware</a>, which is a small battery charging, management, and protection PCB. It was designed to handle all of the "battery hard stuff", so I didn't need to design that into every project.</p>
<p>As things go, I didn't end up ever testing or using these stamps at all, so they've been waiting in my drawer to be validated.</p>
<b>
<a href="https://jamesmunns.com/blog/nwsltr-2022-01-19/">
...read more
</a>
</b>
</div>
<a href="https://jamesmunns.com/blog/page/2/"><b>Next > ></b>
</div>
</div>
</body>
</html>