<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Mettā</title>
      <link>https://metta.systems</link>
      <description>decentralized internets</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://metta.systems/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Resumé</title>
          <pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/misc/resume/</link>
          <guid>https://metta.systems/misc/resume/</guid>
          <description xml:base="https://metta.systems/misc/resume/">&lt;h1 id=&quot;brief&quot;&gt;Brief&lt;&#x2F;h1&gt;
&lt;ul&gt;
&lt;li&gt;Name: &lt;strong&gt;Berkus Karchebnyi&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Current position: &lt;strong&gt;Principal Software Engineer, Microsoft M365 Core&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Seeking position: &lt;strong&gt;(Principal) Rust Software Engineer, Rust Technology Lead&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Email: &lt;a href=&quot;mailto:berkus+jobs@madfire.net&quot;&gt;berkus+jobs@madfire.net&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;skills&quot;&gt;Skills&lt;&#x2F;h1&gt;
&lt;ul&gt;
&lt;li&gt;Strong &lt;strong&gt;collaborative leadership&lt;&#x2F;strong&gt; (good at organizing people and keeping them involved).&lt;&#x2F;li&gt;
&lt;li&gt;Strong &lt;strong&gt;technical documentation and communication&lt;&#x2F;strong&gt; (&quot;write it down&quot;, ELI5).&lt;&#x2F;li&gt;
&lt;li&gt;Excellent knowledge of &lt;strong&gt;Rust&lt;&#x2F;strong&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;berkus&quot;&gt;own projects&lt;&#x2F;a&gt;), over 8 years programming experience, including no_std environments.&lt;&#x2F;li&gt;
&lt;li&gt;Also a member of &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rust-embedded&quot;&gt;Rust Embedded WG&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Excellent knowledge of &lt;strong&gt;C++&lt;&#x2F;strong&gt; (templates, exceptions, standard library, bughunting), over 20 years programming experience.&lt;&#x2F;li&gt;
&lt;li&gt;Experienced in various &lt;strong&gt;infrastructure&lt;&#x2F;strong&gt; tools (source control systems - &lt;strong&gt;Git&lt;&#x2F;strong&gt;, &lt;strong&gt;Pijul&lt;&#x2F;strong&gt;, &lt;strong&gt;jj&lt;&#x2F;strong&gt;; scripting in &lt;strong&gt;Ruby&lt;&#x2F;strong&gt;, &lt;strong&gt;Python&lt;&#x2F;strong&gt;, &lt;strong&gt;shells&lt;&#x2F;strong&gt;; build pipelines - &lt;strong&gt;GitHub&lt;&#x2F;strong&gt;, &lt;strong&gt;CircleCI&lt;&#x2F;strong&gt;, &lt;strong&gt;Jenkins&lt;&#x2F;strong&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;Experienced software localiser to other languages (Russian&#x2F;English).&lt;&#x2F;li&gt;
&lt;li&gt;Some experience in SwiftUI.&lt;&#x2F;li&gt;
&lt;li&gt;Some experience in Android development, mostly Java- and JNI-based.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;previous-jobs&quot;&gt;Previous jobs&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;microsoft-microsoft-com&quot;&gt;Microsoft &lt;a href=&quot;https:&#x2F;&#x2F;www.microsoft.com&#x2F;&quot;&gt;microsoft.com&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Principal Software Engineer.&lt;&#x2F;strong&gt;
&lt;em&gt;June 2024 — Present time.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Developing a suite of SDKs to accelerate migration of core C# services to Rust. My focus areas include open-telemetry and C# interop areas. Working on the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ralfbiedert&#x2F;interoptopus&quot;&gt;interoptopus&lt;&#x2F;a&gt; project in OSS to improve C#-Rust interop.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;twilio-twilio-com&quot;&gt;Twilio &lt;a href=&quot;https:&#x2F;&#x2F;www.twilio.com&#x2F;&quot;&gt;twilio.com&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Principal Software Engineer, Engineering Team Lead.&lt;&#x2F;strong&gt;
&lt;em&gt;April 2016 — May 2024.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Initially maintained an Android Chat SDK, improving JNI layer and fixing bugs. Grew to lead the Conversations SDK team, which included Android, iOS and JavaScript developers producing corresponding platform SDKs.&lt;&#x2F;p&gt;
&lt;p&gt;Led C++ libraries upgrade for SDKs, and led migration from C++ to native implementations (Swift and Kotlin). One of the Kotlin native SDKs has been published to OSS - &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;twilio&#x2F;twilio-sync-sdk&quot;&gt;twilio-sync-sdk&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Led the effort to document the largely undocumented body of SDK code and converted it into &quot;specs first&quot; approach, which then let the SDK team parallelise writing three platform implementations.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;exquance-exquance-com&quot;&gt;Exquance &lt;a href=&quot;https:&#x2F;&#x2F;www.exquance.com&#x2F;&quot;&gt;exquance.com&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Co-founder, CTO, developer.&lt;&#x2F;strong&gt;
&lt;em&gt;June 2012 — April 2016.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Managed teams of outsource developers, set up CI&#x2F;CD infrastructure, developed iOS (UIKit) and Windows (WPF, Visual Basic) applications.&lt;&#x2F;p&gt;
&lt;p&gt;Implemented a mandatory CI pipeline for all components of the software, speeding up the development cycle; removed the &quot;works on my machine&quot; development mentality.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;skype-skype-com&quot;&gt;Skype &lt;a href=&quot;https:&#x2F;&#x2F;www.skype.com&#x2F;&quot;&gt;skype.com&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Software Engineer.&lt;&#x2F;strong&gt;
&lt;em&gt;November 2004 — April 2013.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Worked on Linux version of Skype UI using Qt library. Then worked on Linux audio support for Skype on consumer electronics devices (TVs, MIDs, etc).&lt;&#x2F;p&gt;
&lt;p&gt;Implemented from the grounds up full audio stack support in Linux Skype UI, including ALSA, PulseAudio, and OSS4. Integrated with pre-existing audio library infrastructure. Implemented Android audio support using OpenCORE.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;infinet-wireless-inc-infinet-ru&quot;&gt;Infinet Wireless, Inc. &lt;a href=&quot;https:&#x2F;&#x2F;www.infinet.ru&#x2F;&quot;&gt;infinet.ru&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Software Engineer.&lt;&#x2F;strong&gt;
&lt;em&gt;June 2004 — July 2004.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;details&gt;
    &lt;summary&gt;Read more&lt;&#x2F;summary&gt;
Implemented wireless router monitoring interface using native Infinet libraries and Qt.&lt;br&#x2F;&gt;
&lt;br&#x2F;&gt;
Implemented Qt3 version of monitoring software. Integrated with existing framework libraries.
&lt;&#x2F;details&gt;
&lt;br&#x2F;&gt;
&lt;h2 id=&quot;ia-neftegaz-ru-neftegaz-ru&quot;&gt;IA Neftegaz.RU &lt;a href=&quot;https:&#x2F;&#x2F;www.neftegaz.ru&#x2F;&quot;&gt;neftegaz.ru&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Web Developer.&lt;&#x2F;strong&gt;
&lt;em&gt;July 2003 — May 2004.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;details&gt;
    &lt;summary&gt;Read more&lt;&#x2F;summary&gt;
Maintained a large Oil &amp;amp; Gas industry portal web site acting as both a web-programmer (writing PHP and Ruby code) and as a server administrator. Wrote a speed-optimized website statistics analyzer in Ruby. Implemented a big system upgrade by installing a new Linux system with fresh software and greatly optimized it for speed.&lt;br&#x2F;&gt;
&lt;br&#x2F;&gt;
Achieved better performance of the system by integrating better log files analysis. Improved site visitors log detail level compared to the previous implementation.&lt;br&#x2F;&gt;
&lt;&#x2F;details&gt;
&lt;br&#x2F;&gt;
&lt;h2 id=&quot;visual-mechanics-vismech-ru&quot;&gt;Visual Mechanics &lt;a href=&quot;https:&#x2F;&#x2F;www.rusprofile.ru&#x2F;id&#x2F;4230162&quot;&gt;vismech.ru&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Web Developer.&lt;&#x2F;strong&gt;
&lt;em&gt;September 2001 — July 2003.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;details&gt;
    &lt;summary&gt;Read more&lt;&#x2F;summary&gt;
Coded PHP for a lot of websites including several web shops. Took part in a big web-based document flow software project.&lt;br&#x2F;&gt;
&lt;br&#x2F;&gt;
Implemented web shop framework in PHP, which was used for several further projects. Created a &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;berkus&#x2F;negine&quot;&gt;visual table constructor&lt;&#x2F;a&gt; tool for a website backoffice.&lt;br&#x2F;&gt;
&lt;&#x2F;details&gt;
&lt;br&#x2F;&gt;
&lt;h2 id=&quot;ag-courier-zauralmedia-ru&quot;&gt;AG Courier &lt;a href=&quot;https:&#x2F;&#x2F;spravkaru.info&#x2F;kurgan&#x2F;company&#x2F;kurer&quot;&gt;zauralmedia.ru&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Systems administrator, Developer.&lt;&#x2F;strong&gt;
&lt;em&gt;June 2000 — July 2001.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;details&gt;
    &lt;summary&gt;Read more&lt;&#x2F;summary&gt;
Maintained a small network of &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Non-linear_editing#DV&quot;&gt;non-linear video editing&lt;&#x2F;a&gt; PC stations. Wrote assorted in-house software.&lt;br&#x2F;&gt;
&lt;br&#x2F;&gt;
&lt;ul&gt;
&lt;li&gt;Designed and implemented a small CRM tool in PHP.&lt;&#x2F;li&gt;
&lt;li&gt;Reverse-engineered binary storage format used by the broadcasting hardware.&lt;&#x2F;li&gt;
&lt;li&gt;Designed and implemented a news ticker (crawl) text input editor application for TV broadcasting in C++. The editor allows a human operator to enter multiple entries, enable and disable them based on a given schedule, and generate dumps for a set of calendar dates in a format supported by the video broadcasting hardware. It was used to organize and simplify maintenance of crawling texts by keeping an archive, automatically expiring entries, allowing quick search and replace within an archive. Usability (UX in particular) was of utmost concern during design phase - operator has to enter as many as 500 entries in one run, hence things like keyboard shortcuts, dictionary-based autocompletion, quick search and replace were implemented. The system was implemented using Borland C++ Builder.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;details&gt;
&lt;br&#x2F;&gt;
&lt;h1 id=&quot;open-source-software-projects&quot;&gt;Open Source Software projects&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;metta-os-metta-systems&quot;&gt;Metta OS &lt;a href=&quot;https:&#x2F;&#x2F;metta.systems&#x2F;&quot;&gt;metta.systems&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Author, overall design, Rust and asm programming.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Metta is a novel operating system for creative nomads with hi-tech devices and ubiquitous Internet access. I&#x27;m exploring the future of Human-Machine interaction using augmented reality, associative data storage, data ownership, publishing and filtering facilities.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;vesper-metta-systems-vesper&quot;&gt;Vesper &lt;i class=&quot;lni lni-github&quot;&gt;&lt;&#x2F;i&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;metta-systems&#x2F;vesper&quot;&gt;metta-systems&#x2F;vesper&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Author, overall design, Rust and asm programming.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Vesper is a single-address-space nanokernel for Metta. I am exploring a way to make minimalistic kernel where policy decisions will be mostly outside the privileged core while still performing decently. This is also an exercise in low-level no_std Rust.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;aarch64-cpu-rust-embedded-aarch64-cpu&quot;&gt;aarch64-cpu &lt;i class=&quot;lni lni-github&quot;&gt;&lt;&#x2F;i&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rust-embedded&#x2F;aarch64-cpu&quot;&gt;rust-embedded&#x2F;aarch64-cpu&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Maintainer, Rust programming.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Co-maintaining ARM cpu crate as part of Rust Embedded WG. The crate provides essential low-level ARM abstractions for embedded systems and is widely used in the Rust Embedded ecosystem (55 official dependent crates on crates.io).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;interoptopus-ralfbiedert-interoptopus&quot;&gt;Interoptopus &lt;i class=&quot;lni lni-github&quot;&gt;&lt;&#x2F;i&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ralfbiedert&#x2F;interoptopus&quot;&gt;ralfbiedert&#x2F;interoptopus&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Maintainer, Rust and C# programming.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Contributing support for C#-Rust ffi interop, implemented &lt;code&gt;Wire&amp;lt;T&amp;gt;&lt;&#x2F;code&gt; serialization format to support passing more complex types through the ffi boundary.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;criterion-criterion-rs-criterion-rs&quot;&gt;Criterion &lt;i class=&quot;lni lni-github&quot;&gt;&lt;&#x2F;i&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;criterion-rs&#x2F;criterion.rs&#x2F;&quot;&gt;criterion-rs&#x2F;criterion.rs&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Maintainer, Rust programming.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Revitalizing criterion through community efforts after it has been in neglect for a long while. Started a new org with the intent of allowing wider community contributions.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;gg-metta-systems-gg&quot;&gt;GG &lt;i class=&quot;lni lni-github&quot;&gt;&lt;&#x2F;i&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;metta-systems&#x2F;gg&quot;&gt;metta-systems&#x2F;gg&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Maintainer, Rust and Svelte programming.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Contributing to GG (a GUI for Jujutsu VCS) by consolidating and staging multiple community PRs in repository while @gulbanana is busy or away. This is mostly a testing playground, with the hope that PRs get merged back into the main repository over time.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;pijul-nest-pijul-pijul&quot;&gt;Pijul &lt;i class=&quot;lni lni-pijul&quot;&gt;&lt;&#x2F;i&gt;&lt;a href=&quot;https:&#x2F;&#x2F;nest.pijul.com&#x2F;pijul&#x2F;pijul&quot;&gt;nest:pijul&#x2F;pijul&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Maintainer, Rust programming.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Contributing to a powerful distributed VCS based on theory of patches. I work on improving the user experience, command-line interface and adding a GUI.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;amarok-amarok-kde-org&quot;&gt;Amarok &lt;a href=&quot;https:&#x2F;&#x2F;amarok.kde.org&#x2F;&quot;&gt;amarok.kde.org&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Co-auther, C++ programming.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Amarok is the KDE audio player. I have joined the team at version 0.6. I took part in localization effort, visual and user interaction design, system architecture design. I am no longer an active part of the development team.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;akregator-kde-akregator&quot;&gt;Akregator &lt;i class=&quot;lni lni-github&quot;&gt;&lt;&#x2F;i&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;KDE&#x2F;akregator&#x2F;&quot;&gt;KDE&#x2F;akregator&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Author, overall design, C++ programming.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;A KDE RSS aggregator. I wrote Akregator in the time KDE had no RSS aggregator software. Akregator is highly appreciated by many users. It has earned &lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20070608163325&#x2F;https:&#x2F;&#x2F;dot.kde.org&#x2F;1105456661&#x2F;&quot;&gt;Application of the Month&lt;&#x2F;a&gt; status in January 2005 (&lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20050306090912&#x2F;http:&#x2F;&#x2F;www.kde.org.uk&#x2F;apps&#x2F;akregator&#x2F;interview.html&quot;&gt;interview&lt;&#x2F;a&gt;). It is now included in main KDE packages. I am no longer an active part of the development team, the version of Akregator you see on GitHub is a new rewrite without my contributions (over 20 years have passed).&lt;&#x2F;p&gt;
&lt;h1 id=&quot;hobbies&quot;&gt;Hobbies&lt;&#x2F;h1&gt;
&lt;p&gt;I am interested in competitive multiplayer games (ARC Raiders ftw!), 3D printing and embedded electronics and software.&lt;&#x2F;p&gt;
&lt;p&gt;I love making open source projects easier to maintain - by providing CI pipelines and release-plz publishing, so if you want to be able to easily publish your crates and have them continuously tested and well, give me a shout!&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Premature generalization</title>
          <pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/premature-generalization/</link>
          <guid>https://metta.systems/blog/premature-generalization/</guid>
          <description xml:base="https://metta.systems/blog/premature-generalization/">&lt;blockquote&gt;
&lt;p&gt;It is hard for less experienced developers to appreciate how rarely architecting for future requirements &#x2F; applications turns out net-positive.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;John Carmack&lt;&#x2F;strong&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;x.com&#x2F;id_aa_carmack&#x2F;status&#x2F;1405932642005041153&quot;&gt;18 June 2021&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Treacherous Metaphors</title>
          <pubDate>Mon, 21 Jul 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/treacherous-metaphors/</link>
          <guid>https://metta.systems/blog/treacherous-metaphors/</guid>
          <description xml:base="https://metta.systems/blog/treacherous-metaphors/">&lt;blockquote&gt;
&lt;p&gt;The most treacherous metaphors are the ones that seem to work for a time, because they can keep more powerful insights from bubbling up.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Alan Kay&lt;&#x2F;strong&gt;, 1984&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;wo84LFzx5nI?t=6542&quot;&gt;related video&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Web Design Museum</title>
          <pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/web-design-museum/</link>
          <guid>https://metta.systems/blog/web-design-museum/</guid>
          <description xml:base="https://metta.systems/blog/web-design-museum/">&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.webdesignmuseum.org&#x2F;golden-age-of-web-design&quot;&gt;Web Design Museum - Golden Age of Web Design&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Some nostalgic vibes!&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Prototyping in Rust</title>
          <pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/prototyping-in-rust/</link>
          <guid>https://metta.systems/blog/prototyping-in-rust/</guid>
          <description xml:base="https://metta.systems/blog/prototyping-in-rust/">&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;corrode.dev&#x2F;blog&#x2F;prototyping&#x2F;&quot;&gt;Prototyping in Rust&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Approaches to make Rust prototypes easier than in any other language, even Python.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Replace app icon automatically</title>
          <pubDate>Fri, 27 Dec 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/replace-app-icon-automatically/</link>
          <guid>https://metta.systems/blog/replace-app-icon-automatically/</guid>
          <description xml:base="https://metta.systems/blog/replace-app-icon-automatically/">&lt;p&gt;Want to have your own custom app icon in the dock, but it always gets replaced by an app update?&lt;&#x2F;p&gt;
&lt;p&gt;Inspired by the talks to replace Warp.app icon (in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;warpdotdev&#x2F;Warp&#x2F;issues&#x2F;2703&quot;&gt;multiple&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;warpdotdev&#x2F;Warp&#x2F;issues&#x2F;5418&quot;&gt;issues&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;warpdotdev&#x2F;Warp&#x2F;issues&#x2F;5408&quot;&gt;on GH&lt;&#x2F;a&gt;), I&#x27;ve made a simple tool to automatically replace the icon after the app update.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Learning JTAG</title>
          <pubDate>Fri, 08 Nov 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/jtag/</link>
          <guid>https://metta.systems/blog/jtag/</guid>
          <description xml:base="https://metta.systems/blog/jtag/">&lt;p&gt;To understand how JTAG works I recommend a series of articles by Aliaksandr Kavalchuk. He describes details of the protocol and accompanies the text with amazing illustrations. Check it out:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;medium.com&#x2F;@aliaksandr.kavalchuk&#x2F;diving-into-jtag-protocol-part-1-overview-fbdc428d3a16&quot;&gt;Part 1: Overview&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;medium.com&#x2F;@aliaksandr.kavalchuk&#x2F;diving-into-jtag-protocol-part-2-debugging-56a566db3cf8&quot;&gt;Part 2: Debugging&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;medium.com&#x2F;@aliaksandr.kavalchuk&#x2F;diving-into-jtag-part-3-boundary-scan-17f9975ecc59&quot;&gt;Part 3: Boundary Scan&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;medium.com&#x2F;@aliaksandr.kavalchuk&#x2F;diving-into-jtag-protocol-part-4-bsdl-29fc4081502c&quot;&gt;Part 4: BSDL&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;medium.com&#x2F;@aliaksandr.kavalchuk&#x2F;diving-into-jtag-part-5-usage-scenarios-6fd8eda00e08&quot;&gt;Part 5: Usage Scenarios&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;medium.com&#x2F;@aliaksandr.kavalchuk&#x2F;diving-into-jtag-part-6-security-d40f1e84e6ba&quot;&gt;Part 6: Security&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Also, there are a few articles from other authors, describing JTAG in a more practical way:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;voidstarsec.com&#x2F;blog&#x2F;jtag-pifex&quot;&gt;JTAG Hacking unknown SSD drive controller&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;wrongbaud.github.io&#x2F;posts&#x2F;jtag-hdd&#x2F;&quot;&gt;JTAG, SSDs and Firmware Extraction&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Half-knowledge</title>
          <pubDate>Fri, 11 Oct 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/half-knowledge/</link>
          <guid>https://metta.systems/blog/half-knowledge/</guid>
          <description xml:base="https://metta.systems/blog/half-knowledge/">&lt;blockquote&gt;
&lt;p&gt;Half-knowledge is very communicable; not so knowledge.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Mary Coleridge&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>OSdev tooling finished</title>
          <pubDate>Tue, 03 May 2022 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/osdev-tooling-3/</link>
          <guid>https://metta.systems/blog/osdev-tooling-3/</guid>
          <description xml:base="https://metta.systems/blog/osdev-tooling-3/">&lt;p&gt;January through May I was on and off on the project, fixing chainofcommand to work with the chain loading, in particular fighting the UNIX console and the TTY operations. Now the entire thing works, finished and merged into the main &lt;code&gt;develop&lt;&#x2F;code&gt;ment branch. After that I started prodding the MMU setup and DTB (DeviceTree) parsing.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>OSdev tooling continued</title>
          <pubDate>Tue, 28 Dec 2021 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/osdev-tooling-2/</link>
          <guid>https://metta.systems/blog/osdev-tooling-2/</guid>
          <description xml:base="https://metta.systems/blog/osdev-tooling-2/">&lt;p&gt;This month I spent honing the tooling story. Partially it was driven by the desire to Rewrite All the Things in Rust, and partially by my attempt to integrate all the tooling in a convenient for me way to do things.&lt;&#x2F;p&gt;
&lt;p&gt;Along the way I&#x27;ve done some refactoring and added support for Raspberry Pi 4-specific code.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>OSdev tooling</title>
          <pubDate>Thu, 11 Nov 2021 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/osdev-tooling/</link>
          <guid>https://metta.systems/blog/osdev-tooling/</guid>
          <description xml:base="https://metta.systems/blog/osdev-tooling/">&lt;p&gt;Since my first attempt at OSdev in x86 assembly I&#x27;ve constantly strived to make my setup comfortable. With rust I finally achieved a nearly zero-configuration flow. There are still some tools to install but they are either a &lt;code&gt;cargo install just&lt;&#x2F;code&gt; away or entirely optional.&lt;&#x2F;p&gt;
&lt;p&gt;Developing an OS in Rust gives an opportunity to apply the benefits of the entire Rust ecosystem, so I&#x27;ve decided to maximally utilise what it has to offer.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Complex Systems</title>
          <pubDate>Wed, 15 Apr 2020 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/complex-systems/</link>
          <guid>https://metta.systems/blog/complex-systems/</guid>
          <description xml:base="https://metta.systems/blog/complex-systems/">&lt;blockquote&gt;
&lt;p&gt;A simple system may or may not work. A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;John Gall&lt;&#x2F;strong&gt;&#x27;s &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;John_Gall_(author)#Gall&amp;#x27;s_law&quot;&gt;Systemantics&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Rust on Sipeed Longan Nano board</title>
          <pubDate>Sun, 17 Nov 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/rust-on-longan-nano/</link>
          <guid>https://metta.systems/blog/rust-on-longan-nano/</guid>
          <description xml:base="https://metta.systems/blog/rust-on-longan-nano/">&lt;p&gt;My &lt;a href=&quot;https:&#x2F;&#x2F;www.seeedstudio.com&#x2F;Sipeed-Longan-Nano-RISC-V-GD32VF103CBT6-Development-Board-p-4205.html&quot;&gt;Longan Nano board&lt;&#x2F;a&gt; has arrived and I tried to run Rust on it. It&#x27;s a great success and here&#x27;s how.&lt;&#x2F;p&gt;
&lt;p&gt;Nano is a RISC-V microcontroller (GD32VF103) with impressive GPIO capabilities and connectivity - it has a serial, JTAG and USB Type-C ports plus numerous GPIO pins on breakout connectors. It is also very well documented: there are board schematics, CPU and Peripheral datasheets, and numerous programming examples.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Escaping from old ideas</title>
          <pubDate>Sun, 03 Nov 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/escaping-from-old-ideas/</link>
          <guid>https://metta.systems/blog/escaping-from-old-ideas/</guid>
          <description xml:base="https://metta.systems/blog/escaping-from-old-ideas/">&lt;blockquote&gt;
&lt;p&gt;The difficulty lies not so much in developing new ideas as in escaping from old ones.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;John_Maynard_Keynes&quot;&gt;John Maynard Keynes&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Building WASM with Rust</title>
          <pubDate>Mon, 07 Oct 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/building-wasm-with-rust/</link>
          <guid>https://metta.systems/blog/building-wasm-with-rust/</guid>
          <description xml:base="https://metta.systems/blog/building-wasm-with-rust/">&lt;p&gt;There are several options to build Rust into WebAssembly. 📦 &lt;a href=&quot;https:&#x2F;&#x2F;lib.rs&#x2F;crates&#x2F;cargo-web&quot;&gt;cargo-web&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;cargo-web&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;crates&#x2F;v&#x2F;cargo-web?labelColor=blue&amp;amp;color=darkblue&quot; alt=&quot;crates.io&quot; &#x2F;&gt;&lt;&#x2F;a&gt;
was the preferred way for 📦 &lt;a href=&quot;https:&#x2F;&#x2F;lib.rs&#x2F;crates&#x2F;yew&quot;&gt;yew&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;yew&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;crates&#x2F;v&#x2F;yew?labelColor=blue&amp;amp;color=darkblue&quot; alt=&quot;crates.io&quot; &#x2F;&gt;&lt;&#x2F;a&gt;
, but nowadays yew also supports 📦 &lt;a href=&quot;https:&#x2F;&#x2F;lib.rs&#x2F;crates&#x2F;wasm-bindgen&quot;&gt;wasm-bindgen&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;wasm-bindgen&quot;&gt;&lt;img src=&quot;https:&#x2F;&#x2F;img.shields.io&#x2F;crates&#x2F;v&#x2F;wasm-bindgen?labelColor=blue&amp;amp;color=darkblue&quot; alt=&quot;crates.io&quot; &#x2F;&gt;&lt;&#x2F;a&gt;
and this opens up some possibilities for javascript interop.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Useful cargo commands</title>
          <pubDate>Mon, 30 Apr 2018 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/useful-cargo-commands/</link>
          <guid>https://metta.systems/blog/useful-cargo-commands/</guid>
          <description xml:base="https://metta.systems/blog/useful-cargo-commands/">&lt;p&gt;Some additional cargo commands exist to provide unprecedented level of support and extensibility
to regular cargo. Here&#x27;s a list of commands I use (will be updated over time, last update 2025-01-12):&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Reboot to Rust</title>
          <pubDate>Fri, 09 Mar 2018 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/reboot-to-rust/</link>
          <guid>https://metta.systems/blog/reboot-to-rust/</guid>
          <description xml:base="https://metta.systems/blog/reboot-to-rust/">&lt;h3 id=&quot;fast-forward-four-years&quot;&gt;Fast forward four years...&lt;&#x2F;h3&gt;
&lt;p&gt;And the landscape is changed again. The idea to write a secure robust kernel and then build a secure robust operating system on it is still there. However, there are new tools, technologies as well as new &lt;a href=&quot;https:&#x2F;&#x2F;spectreattack.com&#x2F;&quot;&gt;hazards&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;One of the new tools is Rust language. The tenets of Rust are speed, safety and &lt;a href=&quot;https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;book&#x2F;second-edition&#x2F;ch16-00-concurrency.html&quot;&gt;fearless concurrency&lt;&#x2F;a&gt;. This makes it nearly ideal language for writing new secure software, including kernels. Robigalia project is also looking towards &lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20170316053649&#x2F;https:&#x2F;&#x2F;robigalia.org&#x2F;blog&#x2F;2016&#x2F;11&#x2F;15&#x2F;verfication.html&quot;&gt;semi-automatic assurance of Rust-based software&lt;&#x2F;a&gt; by leveraging the MIR intermediate representation as containing the semantic information about the program, which we can reason about. Looking forward to seeing what this brings, meanwhile I set out to write an equivalent of seL4 kernel in Rust for 64-bit systems.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;ve intentionally dropped support for 32-bit systems at the moment, it should be possible to retrofit 32-bit support into the kernel APIs - they will just become either slower or more limited. Just don&#x27;t focus on these now.&lt;&#x2F;p&gt;
&lt;p&gt;So the primary targets are &lt;code&gt;x86_64&lt;&#x2F;code&gt; and &lt;code&gt;aarch64&lt;&#x2F;code&gt;. And I&#x27;m going to start by collecting the Embedded Rust community knowledge and using it to build a baremetal Rust &quot;kernel&quot; that could speak to some UART device, starting with Raspberry Pi 3 board - since I have that one and have JTAG debugger for it.&lt;&#x2F;p&gt;
&lt;p&gt;Let&#x27;s go.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Xargo Build with Sublime</title>
          <pubDate>Mon, 19 Feb 2018 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/xargo-build-with-sublime/</link>
          <guid>https://metta.systems/blog/xargo-build-with-sublime/</guid>
          <description xml:base="https://metta.systems/blog/xargo-build-with-sublime/">&lt;h3 id=&quot;how-to-build-your-xargo-package-in-sublime&quot;&gt;How to build your xargo package in Sublime&lt;&#x2F;h3&gt;
&lt;p&gt;Imagine you have a special OSdev project in Rust that you want to build from within Sublime Text. So you fire up the editor, choose the &lt;code&gt;Tools&lt;&#x2F;code&gt;&amp;gt;&lt;code&gt;Build System&lt;&#x2F;code&gt;&amp;gt;&lt;code&gt;New Build System…&lt;&#x2F;code&gt; and write a little simple configuration file:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;json&quot; class=&quot;language-json z-code&quot;&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span class=&quot;z-source z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-mapping z-begin z-json&quot;&gt;{&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-json&quot;&gt;    &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-key z-json&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;shell_cmd&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-key-value z-json&quot;&gt;:&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;xargo run --target aarch64-vesper-metta&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-pair z-json&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;    &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-key z-json&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;keyfiles&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-key-value z-json&quot;&gt;:&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-meta z-sequence z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-sequence z-begin z-json&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;Xargo.toml&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-sequence z-end z-json&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-pair z-json&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;    &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-key z-json&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;working_dir&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-key-value z-json&quot;&gt;:&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;$project_path&#x2F;vesper&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-pair z-json&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;    &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-key z-json&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;env&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-key-value z-json&quot;&gt;:&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-mapping z-begin z-json&quot;&gt;{&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-json&quot;&gt;        &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-key z-json&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;RUST_TARGET_PATH&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-key-value z-json&quot;&gt;:&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;$project_path&#x2F;vesper&#x2F;targets&#x2F;&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;    &lt;span class=&quot;z-punctuation z-section z-mapping z-end z-json&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-pair z-json&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;    &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-key z-json&quot;&gt;&lt;span class=&quot;z-string z-quoted z-double z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;quiet&lt;span class=&quot;z-punctuation z-definition z-string z-end z-json&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-separator z-mapping z-key-value z-json&quot;&gt;:&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-constant z-language z-json&quot;&gt;false&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-json&quot;&gt;&lt;span class=&quot;z-meta z-mapping z-value z-json&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-mapping z-end z-json&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You save it and hit Cmd+B.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Kotlin</title>
          <pubDate>Fri, 19 May 2017 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/kotlin/</link>
          <guid>https://metta.systems/blog/kotlin/</guid>
          <description xml:base="https://metta.systems/blog/kotlin/">&lt;p&gt;Kotlin is the new Java with the announced Google support, and here is how it compares to other languages:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;agilewombat.com&#x2F;2016&#x2F;02&#x2F;01&#x2F;scala-vs-kotlin&#x2F;&quot;&gt;Scala vs Kotlin&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;nilhcem.com&#x2F;swift-is-like-kotlin&#x2F;&quot;&gt;Swift vs Kotlin&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;medium.com&#x2F;@magnus.chatt&#x2F;why-you-should-totally-switch-to-kotlin-c7bbde9e10d5&quot;&gt;Why you should totally switch to Kotlin&lt;&#x2F;a&gt; - contains more comparisons and highlights&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>License</title>
          <pubDate>Wed, 18 Jan 2017 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/misc/license/</link>
          <guid>https://metta.systems/misc/license/</guid>
          <description xml:base="https://metta.systems/misc/license/">&lt;h3 id=&quot;content-license&quot;&gt;Content license&lt;&#x2F;h3&gt;
&lt;p&gt;All non-code blog content is licensed under &lt;a href=&quot;http:&#x2F;&#x2F;creativecommons.org&#x2F;licenses&#x2F;by-nc-sa&#x2F;3.0&#x2F;&quot;&gt;Creative Commons BY-NC-SA&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;code-license&quot;&gt;Code license&lt;&#x2F;h3&gt;
&lt;p&gt;All source code files and snippets found on this blog, unless otherwise explicitly noted, are licensed under the terms of Blue Oak Model license below.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;blue-oak-model-license&quot;&gt;Blue Oak Model License&lt;&#x2F;h4&gt;
&lt;p&gt;Version 1.0.0&lt;&#x2F;p&gt;
&lt;h5 id=&quot;purpose&quot;&gt;Purpose&lt;&#x2F;h5&gt;
&lt;p&gt;This license gives everyone as much permission to work with
this software as possible, while protecting contributors
from liability.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;acceptance&quot;&gt;Acceptance&lt;&#x2F;h5&gt;
&lt;p&gt;In order to receive this license, you must agree to its
rules.  The rules of this license are both obligations
under that agreement and conditions to your license.
You must not do anything with this software that triggers
a rule that you cannot or will not follow.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;copyright&quot;&gt;Copyright&lt;&#x2F;h5&gt;
&lt;p&gt;Each contributor licenses you to do everything with this
software that would otherwise infringe that contributor&#x27;s
copyright in it.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;notices&quot;&gt;Notices&lt;&#x2F;h5&gt;
&lt;p&gt;You must ensure that everyone who gets a copy of
any part of this software from you, with or without
changes, also gets the text of this license or a link to
&lt;a href=&quot;https:&#x2F;&#x2F;blueoakcouncil.org&#x2F;license&#x2F;1.0.0&quot;&gt;https:&#x2F;&#x2F;blueoakcouncil.org&#x2F;license&#x2F;1.0.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;excuse&quot;&gt;Excuse&lt;&#x2F;h5&gt;
&lt;p&gt;If anyone notifies you in writing that you have not
complied with &lt;a href=&quot;https:&#x2F;&#x2F;metta.systems&#x2F;misc&#x2F;license&#x2F;#notices&quot;&gt;Notices&lt;&#x2F;a&gt;, you can keep your
license by taking all practical steps to comply within 30
days after the notice.  If you do not do so, your license
ends immediately.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;patent&quot;&gt;Patent&lt;&#x2F;h5&gt;
&lt;p&gt;Each contributor licenses you to do everything with this
software that would otherwise infringe any patent claims
they can license or become able to license.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;reliability&quot;&gt;Reliability&lt;&#x2F;h5&gt;
&lt;p&gt;No contributor can revoke this license.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;no-liability&quot;&gt;No Liability&lt;&#x2F;h5&gt;
&lt;p&gt;&lt;em&gt;As far as the law allows, this software comes as is,
without any warranty or condition, and no contributor
will be liable to anyone for any damages related to this
software or this license, under any kind of legal claim.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Слои интернетов</title>
          <pubDate>Mon, 07 Mar 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/notes/internet-layers/</link>
          <guid>https://metta.systems/notes/internet-layers/</guid>
          <description xml:base="https://metta.systems/notes/internet-layers/">&lt;p&gt;(беркус: я болдом выделяю понравившуюся терминологию, чтобы было за что зацепиться)&lt;&#x2F;p&gt;
&lt;p&gt;Я пока не знаю, с чего начать, поэтому попробую начать с чего-нибудь.
Вот как бы я объяснял текущее положение вещей самому себе лет десять-пятнадцать назад?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;chto-stalo-s-set-iu&quot;&gt;Что стало с Сетью?&lt;&#x2F;h2&gt;</description>
      </item>
      <item>
          <title>Metta architecture</title>
          <pubDate>Mon, 07 Mar 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/notes/metta-architecture/</link>
          <guid>https://metta.systems/notes/metta-architecture/</guid>
          <description xml:base="https://metta.systems/notes/metta-architecture/">&lt;p&gt;System works as a federation of autonomous services distributed onto different machines across the network.&lt;&#x2F;p&gt;
&lt;p&gt;The API between these services are described using interfaces. Each interface has a certain specific semantic. Interfaces also specify points at which separation of work could happen, where one service could delegate the work to another without bothering too much about where this service is located and how this work will be arranged.&lt;&#x2F;p&gt;
&lt;p&gt;There are storage and computation services. They have some common properties, like latency (time between sending a request and receiving a result), and some specific ones, like capacity (the amount of data which can be stored onto the storage device). These values become the basis for QoS - quality of service control, which manages latency and bandwidth constraints to keep services useful, but not let less important services interrupt more important ones. For example, you wouldn’t want your audio-video conference to be interrupted by background file-sharing activity.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Metta grabber (uvvy)</title>
          <pubDate>Mon, 07 Mar 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/notes/metta-grabber/</link>
          <guid>https://metta.systems/notes/metta-grabber/</guid>
          <description xml:base="https://metta.systems/notes/metta-grabber/">&lt;p&gt;(Disclaimer: здесь и далее читать как «для меня», «в моём сегодняшнем понимании» и т.п.)&lt;&#x2F;p&gt;
&lt;h2 id=&quot;metta-is-about-belongings&quot;&gt;Metta is about belongings.&lt;&#x2F;h2&gt;
&lt;p&gt;Метта в её текущем описании мной понимается как новый способ подходить к своему скарбу: к нажитому непосильным умственным трудом, приобретённому за презренные деньги, подаренному ближними людьми или ухваченному где-то по пиратскому случаю.&lt;&#x2F;p&gt;
&lt;p&gt;Метта для меня выглядит не как новый способ «работать» — взаимодействовать — с материалом. Метта для меня — новый способ не терять нажитое, держать его под рукой, не заботиться о бренном. (Это ни плохо, ни хорошо, а product boundaries)&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Omnia metta mecum porto.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Поэтому, когда вопрос стоит о том, какой же должен быть конкретный недалёкий инструмент, построенный на metta-идеях, я в первую очередь думаю о граббере.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Metta - mashable techdemo storyboard</title>
          <pubDate>Mon, 07 Mar 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/notes/metta-mashable-techdemo-storyboard/</link>
          <guid>https://metta.systems/notes/metta-mashable-techdemo-storyboard/</guid>
          <description xml:base="https://metta.systems/notes/metta-mashable-techdemo-storyboard/">&lt;p&gt;Fire up a console, we&#x27;ll use two consoles for this demo - one will run the streaming video server, another will be our client. The&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;$
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;prompt denotes a command line where you enter your commands.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Metta outbound access framework</title>
          <pubDate>Mon, 07 Mar 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/notes/metta-outbound-access-framework/</link>
          <guid>https://metta.systems/notes/metta-outbound-access-framework/</guid>
          <description xml:base="https://metta.systems/notes/metta-outbound-access-framework/">&lt;h2 id=&quot;postanovka-voprosa&quot;&gt;Постановка вопроса&lt;&#x2F;h2&gt;
&lt;p&gt;Смотри, у нас все ноды связаны друг с другом зашифрованными каналами. но это в идеале и если считать что нынешнего WWW нету. но он на самом деле есть и к нему надо как-то достукиваться. разрешать незашифрованный коннект? только для определенных нод или для всех? если для всех, чем это отличается от андроида с браузером?
если не для всех, то какой added value - должны быть агентi, сортирующие и фильтрующие всё.
в общем вопрос достукиваться пока звучит так: для получения информации из существующей инфраструктуры (зачем) тебе надо ее как-то оттуда вытаскивать. (кому) это может быть какой-то общий аггрегатор, но учитывая всякие разные настройки приватности они все равно привязываются к каким-то твоим логинам там и тут.&lt;&#x2F;p&gt;
&lt;p&gt;&quot;кому&quot; это абстрактный юзер в вакууме у которого друзяки в фейсбуке и жожо.
у него нужда болтать с друзяками&lt;&#x2F;p&gt;
&lt;p&gt;Как было в свое время со скайпом, все друзья разом не пересядут на новую платформу, поэтому шлюзы очень важны.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Anti-Mac Interface quote</title>
          <pubDate>Tue, 21 Jan 2014 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/anti-mac/</link>
          <guid>https://metta.systems/blog/anti-mac/</guid>
          <description xml:base="https://metta.systems/blog/anti-mac/">&lt;blockquote&gt;
&lt;p&gt;A computer environment in which both humans and computer-based agents have active roles implies a mixed locus of control. The user&#x27;s environment will no longer be completely stable, and the user will no longer be totally in control. For general sanity, users still need to determine the balance of control in the different parts of their environment, they need the means to find out what their agents have been up to, and they need mechanisms for navigating in the wider networked world;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Anti-Mac Interface&lt;&#x2F;strong&gt; &lt;a href=&quot;http:&#x2F;&#x2F;www.nngroup.com&#x2F;articles&#x2F;anti-mac-interface&#x2F;&quot;&gt;site&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Manifesto</title>
          <pubDate>Wed, 15 Jan 2014 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/misc/manifesto/</link>
          <guid>https://metta.systems/misc/manifesto/</guid>
          <description xml:base="https://metta.systems/misc/manifesto/">&lt;h3 id=&quot;metta&quot;&gt;Metta&lt;&#x2F;h3&gt;
&lt;p&gt;Rewind and replay.&lt;&#x2F;p&gt;
&lt;p&gt;Go back to the roots of the Internet: decentralised, self-maintained and self-healing. No policies, no political correctness and no overwhelming commercial interest.&lt;&#x2F;p&gt;
&lt;p&gt;Own your data again. Take it back from Facebook or Google, Microsoft or Apple. Take it back from the government.&lt;&#x2F;p&gt;
&lt;p&gt;Distributed across many nodes, resilient to server failures, agencies peeking, unsolicited censorship - we go all the way back to what Internet used to mean.&lt;&#x2F;p&gt;
&lt;p&gt;We are working on a technology stack, enabling re-decentralisation of the Internet. We build humane, adaptive and affective computing environment. Yours, again.&lt;&#x2F;p&gt;
&lt;p&gt;We call it Metta.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;circles-of-trust-and-attention&quot;&gt;Circles of Trust and Attention&lt;&#x2F;h3&gt;
&lt;p&gt;Heads or tails, attention or trust.&lt;&#x2F;p&gt;
&lt;p&gt;There&#x27;s so much noise in the world, we&#x27;re broke on our attention. We have none left. Good thing the unlimited credit line is open for trust, right? Never mind the fine print.&lt;&#x2F;p&gt;
&lt;p&gt;We gave all our trust (and then some) to the wrong people. We are now locked in a status quo with most private parts of our lives used for profit, to maximise shareholders returns - or worse.&lt;&#x2F;p&gt;
&lt;p&gt;Big fish with long tails of our content in behemoth datacenters. Suggested pages, products, places and friends.&lt;&#x2F;p&gt;
&lt;p&gt;Living a suggested life.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;metta-out&quot;&gt;Metta out&lt;&#x2F;h3&gt;
&lt;p&gt;You still can be what you choose to be.&lt;&#x2F;p&gt;
&lt;p&gt;Egocentric internet is not technically worse to what we have now - and the upsides are huge:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;No realistic way to impose data lock-in on you.&lt;&#x2F;li&gt;
&lt;li&gt;Nigh impossible personal data centralisation (for monetization, analysis, targeting).&lt;&#x2F;li&gt;
&lt;li&gt;Extremely complicated censorship, control over your free speech.&lt;&#x2F;li&gt;
&lt;li&gt;Pseudonymous-friendly environment.&lt;&#x2F;li&gt;
&lt;li&gt;No administration, no policies - boiling soup of ideas and possibilities, fully autonomous small &quot;clubs of interest&quot; bubbles, with their own rules and self-governance.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Built on top of conventional Internet, building from within it, Metta strives to build The Net of the future.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;join-metta-development&quot;&gt;Join Metta development&lt;&#x2F;h3&gt;
&lt;p&gt;It won&#x27;t get any better - unless we work it to be. You can observe the trend, the way things are going: corporate and government control over your data and over your life are not going away anytime soon.&lt;&#x2F;p&gt;
&lt;p&gt;Metta works right now.&lt;&#x2F;p&gt;
&lt;p&gt;Join us on &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;metta-systems&#x2F;metta&quot;&gt;github&lt;&#x2F;a&gt;. Bring in your ideas and thoughts, help us re-decentralise the internet, take our data back, break out from all forms of control by design. Be free!&lt;&#x2F;p&gt;
&lt;p&gt;मेता&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Progress report: Audio services, congestion control</title>
          <pubDate>Sat, 28 Dec 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/progress-report-audio-services/</link>
          <guid>https://metta.systems/blog/progress-report-audio-services/</guid>
          <description xml:base="https://metta.systems/blog/progress-report-audio-services/">&lt;h3 id=&quot;progress-report&quot;&gt;Progress report&lt;&#x2F;h3&gt;
&lt;p&gt;It&#x27;s been a while since last update, so I wanted to show a little bit of what&#x27;s happening in the repositories.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Derived intelligence</title>
          <pubDate>Fri, 13 Dec 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/derived-intelligence/</link>
          <guid>https://metta.systems/blog/derived-intelligence/</guid>
          <description xml:base="https://metta.systems/blog/derived-intelligence/">&lt;blockquote&gt;
&lt;p&gt;Our lives are increasingly mediated by, filtered through, and experienced via technology. A plethora of mechanisms capture, store, examine, manipulate, derive intelligence from, and share our information. This happens either with our knowledge, consent, and intent or without.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aral Balkan&lt;&#x2F;strong&gt; &lt;a href=&quot;http:&#x2F;&#x2F;aralbalkan.com&#x2F;notes&#x2F;indie-data&#x2F;&quot;&gt;site&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Using libsss for communication</title>
          <pubDate>Wed, 30 Oct 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/using-libssu-for-communication/</link>
          <guid>https://metta.systems/blog/using-libssu-for-communication/</guid>
          <description xml:base="https://metta.systems/blog/using-libssu-for-communication/">&lt;h3 id=&quot;introduction&quot;&gt;Introduction&lt;&#x2F;h3&gt;
&lt;p&gt;Structured Secure Streams provide secure encrypted and authenticated data connection between endpoints. It&#x27;s a simple userspace library written in c++14 and boost. It uses standard UDP to provide reliable delivery, multiple streams, quick connection setup, end-to-end connection encryption and authentication.&lt;&#x2F;p&gt;
&lt;p&gt;SSS is based on experimental, unfinished project under UIA - &lt;a href=&quot;http:&#x2F;&#x2F;pdos.csail.mit.edu&#x2F;uia&#x2F;sst&#x2F;&quot;&gt;SST&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;SSS is an experimental transport protocol designed to address the needs of modern applications that need to juggle many asynchronous communication activities in parallel, such as downloading different parts of a web page simultaneously and playing multiple audio and video streams at once.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Bootstrapping node problem</title>
          <pubDate>Fri, 25 Oct 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/bootstrapping-node-problem/</link>
          <guid>https://metta.systems/blog/bootstrapping-node-problem/</guid>
          <description xml:base="https://metta.systems/blog/bootstrapping-node-problem/">&lt;h3 id=&quot;the-problem&quot;&gt;The problem&lt;&#x2F;h3&gt;
&lt;p&gt;Absolutely every network needs a way to find a node&#x27;s peers, for establishing connections, propagating updates and maintaining network integrity this is essential.&lt;&#x2F;p&gt;
&lt;p&gt;Overlay networks based on DHT or similar mechanisms (&lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Kademlia&quot; title=&quot;Kademlia&quot;&gt;Kademlia&lt;&#x2F;a&gt;, &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Chord_(peer-to-peer)&quot; title=&quot;Chord&quot;&gt;Chord&lt;&#x2F;a&gt;) use peer nodes to figure this information out. Usually in such network you have a node ID, 128 or 160 bits in length, which uniquely identifies the node and node&#x27;s position in routing tables. Based on this ID you simply look up the IP address. But wait, look it up from where?&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>libSSS progress</title>
          <pubDate>Mon, 07 Oct 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/libsss-progress/</link>
          <guid>https://metta.systems/blog/libsss-progress/</guid>
          <description xml:base="https://metta.systems/blog/libsss-progress/">&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;berkus&#x2F;libsss&quot;&gt;Structured Secure Streams&lt;&#x2F;a&gt; library is getting in shape. With C++11 and Boost it&#x27;s relatively simple to write even without the tremendous help of Qt. Although I had to write some helpers which are factored into a separate library - grab &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;berkus&#x2F;libarsenal&quot;&gt;arsenal&lt;&#x2F;a&gt; if you want - some nice things there are &lt;code&gt;byte_array&lt;&#x2F;code&gt;, &lt;code&gt;settings_provider&lt;&#x2F;code&gt;, binary literals, &lt;code&gt;hash_combine&lt;&#x2F;code&gt;, &lt;code&gt;make_unique&lt;&#x2F;code&gt;, &lt;code&gt;contains()&lt;&#x2F;code&gt; predicate, base32 encoder-decoder and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;berkus&#x2F;libarsenal&#x2F;blob&#x2F;master&#x2F;include&#x2F;arsenal&#x2F;opaque_endian.h&quot;&gt;opaque big&#x2F;little endian integer&lt;&#x2F;a&gt; types.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Flurry</title>
          <pubDate>Sun, 08 Sep 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/flurry/</link>
          <guid>https://metta.systems/blog/flurry/</guid>
          <description xml:base="https://metta.systems/blog/flurry/">&lt;p&gt;To continue work on the structured streams transport I decided to get rid of the XDR data representation, as well as slightly awkward &lt;code&gt;boost.serialization&lt;&#x2F;code&gt; library.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Compiling LLVM trunk</title>
          <pubDate>Thu, 23 May 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/compiling-llvm-trunk/</link>
          <guid>https://metta.systems/blog/compiling-llvm-trunk/</guid>
          <description xml:base="https://metta.systems/blog/compiling-llvm-trunk/">&lt;p&gt;Just a very simple thing to try and build Clang with polly, LLVM, libcxx, lldb and lld from trunk. Isn&#x27;t it?&lt;&#x2F;p&gt;
&lt;p&gt;Using git, because cloning a git repo with full history is still faster than checking out svn repo with serf. Yay!&lt;&#x2F;p&gt;
&lt;p&gt;These instructions are not for copy-paste, they show general idea and should work with minor changes.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>btsync</title>
          <pubDate>Thu, 25 Apr 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/btsync/</link>
          <guid>https://metta.systems/blog/btsync/</guid>
          <description xml:base="https://metta.systems/blog/btsync/">&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20130430131930&#x2F;http:&#x2F;&#x2F;labs.bittorrent.com&#x2F;experiments&#x2F;sync.html&quot;&gt;Here&#x27;s a new technology from BitTorrent&lt;&#x2F;a&gt; that might be bad news because I&#x27;m working on about the same features in MettaNode and at the same time might be good news because my implementation is going to be open source from the start, and I still plan to use less of so-called servers in the infrastructure. But for the much loved p2p world it&#x27;s absolutely awesome, &lt;em&gt;gone to install and play with it&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;PS. OSX client is pretty unstable, crashes, loses added folders, but that&#x27;s apparently a beta.&lt;&#x2F;p&gt;
&lt;p&gt;PPS. It quickly went into proprietary no-sources-available mode, not relevant for me anymore.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>libsss or where to go from SST?</title>
          <pubDate>Wed, 24 Apr 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/libsss/</link>
          <guid>https://metta.systems/blog/libsss/</guid>
          <description xml:base="https://metta.systems/blog/libsss/">&lt;p&gt;In the mean time, I&#x27;m slowly rewriting Bryan Ford&#x27;s SST (Structured Streams Transport) library, using modern C++ and boost.asio, in the hopes that it will be easier to port to Metta. I called it libsss (Structured Secure Streams).&lt;&#x2F;p&gt;
&lt;p&gt;As this work progresses I also plan to enter the description of this protocol into an RFC document, so there will be some reference point for alternative implementations. Current specification progress is available in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;berkus&#x2F;libsss&#x2F;blob&#x2F;master&#x2F;doc&#x2F;spec.md&quot;&gt;libsss repo&lt;&#x2F;a&gt; on github.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;d like to take the chance to thank Aldrin D&#x27;Souza for his excellent &lt;a href=&quot;http:&#x2F;&#x2F;aldrin.co&#x2F;crypto-primitives.html&quot;&gt;C++ wrapper around openssl crypto functions&lt;&#x2F;a&gt;. He kindly licensed it for free use under BSD License.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;update:&lt;&#x2F;strong&gt; Oct 2014 repository moved.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>File sharing design considerations</title>
          <pubDate>Thu, 21 Mar 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/fileshare/</link>
          <guid>https://metta.systems/blog/fileshare/</guid>
          <description xml:base="https://metta.systems/blog/fileshare/">&lt;p&gt;Some issues that need tackling in design of file sharing (see &lt;a href=&quot;http:&#x2F;&#x2F;forum.osdev.org&#x2F;viewtopic.php?p=220878#p220878&quot;&gt;Brendan&#x27;s post here&lt;&#x2F;a&gt;):&lt;&#x2F;p&gt;
&lt;p&gt;The issue of trust: right now, the file is only distributed across a range of devices you manually allow to access your data. This doesn&#x27;t solve the problem per se, but just makes it easier to tackle for the initial implementation. The data and metadata could be encrypted with asymmetric schemes (private keys), but that doesn&#x27;t give full security.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>assocfs note</title>
          <pubDate>Mon, 24 Dec 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/assocfs-note/</link>
          <guid>https://metta.systems/blog/assocfs-note/</guid>
          <description xml:base="https://metta.systems/blog/assocfs-note/">&lt;p&gt;While I&#x27;m still dabbling with fixing some SSS issues here and there I thought I&#x27;d post an old excerpt from assocfs design document.&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s a non-hierarchical filesystem - in other words, associative filesystem. It&#x27;s basically a huge graph database. Every object is addressed by its hash (content addressable, like git), knowing the hash you can find it on disk. For more conventional searches (for those who does not know or does not care about the hash) there is metadata - attributes, drawn from an ontology and associated with a particular hashed blob.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>NAT update</title>
          <pubDate>Sun, 09 Dec 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/nat-update/</link>
          <guid>https://metta.systems/blog/nat-update/</guid>
          <description xml:base="https://metta.systems/blog/nat-update/">&lt;p&gt;Turns out the problem was on the server side setup. After moving the server to Amazon EC2 cloud and setting up UDP firewall rules punching started working. At least that takes some burden off my shoulders. The regserver connection is not very robust, that should probably be modified to force-reconnect the session once you open the search window again.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>NAT woes</title>
          <pubDate>Sat, 01 Dec 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/nat-woes/</link>
          <guid>https://metta.systems/blog/nat-woes/</guid>
          <description xml:base="https://metta.systems/blog/nat-woes/">&lt;p&gt;There&#x27;s a slight fault with uvvy not quite punching through home routers&#x27; NAT. While the UDP punching technique described by Bryan Ford should generally work, it doesn&#x27;t account for the port change hence the announced endpoint addresses as seen by the regserver are invalid. Responses don&#x27;t go back because the reply port number is different from what router&#x27;s NAT assigns.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>On patents</title>
          <pubDate>Mon, 12 Nov 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/on-patents/</link>
          <guid>https://metta.systems/blog/on-patents/</guid>
          <description xml:base="https://metta.systems/blog/on-patents/">&lt;blockquote&gt;
&lt;p&gt;Over time I’ve come to believe that software should not be patentable; most any idea in software is something that a moderately experienced programmer could invent, and the definition of patents requires that patents be non-obvious. Nuff said.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.codeofhonor.com&#x2F;blog&#x2F;the-making-of-warcraft-part-3&quot;&gt;Patrick Wyatt&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; of Blizzard&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Events interface</title>
          <pubDate>Wed, 15 Aug 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/events-interface/</link>
          <guid>https://metta.systems/blog/events-interface/</guid>
          <description xml:base="https://metta.systems/blog/events-interface/">&lt;p&gt;I&#x27;ve ported events, sequencers and event-based communication primitives from Nemesis. It&#x27;s a little bit messy at the moment (mostly because of mixing C and C++ concepts in one place), but I&#x27;m going to spend the autumn time on cleaning it up and finishing the dreaded &lt;code&gt;needs_boot.dot&lt;&#x2F;code&gt; dependencies to finally bootstrap some domains and perform communication between them. Obviously, the shortest term plan is timer interrupt, primitive kernel scheduler which activates domains and events to move domains between blocked and runnable queues.&lt;&#x2F;p&gt;
&lt;p&gt;There&#x27;s some interesting theory behind using events as the main synchronization mechanism, described &lt;a href=&quot;https:&#x2F;&#x2F;www.microsoft.com&#x2F;en-us&#x2F;research&#x2F;wp-content&#x2F;uploads&#x2F;2016&#x2F;02&#x2F;UCAM-CL-TR-361.pdf&quot;&gt;here&lt;&#x2F;a&gt; in more detail.&lt;&#x2F;p&gt;
&lt;p&gt;For the vacation time I&#x27;ve printed some ANSA documents, which define architectural specifications for distributed computation systems and is very invaluable source of information for designing such systems. The full list of available ANSA documents can be found &lt;a href=&quot;https:&#x2F;&#x2F;www.computerconservationsociety.org&#x2F;ansa&#x2F;&quot;&gt;here&lt;&#x2F;a&gt;. A System Designer&#x27;s Introduction to ANSA is available &lt;a href=&quot;https:&#x2F;&#x2F;www.computerconservationsociety.org&#x2F;ansa&#x2F;91&#x2F;RC25300.pdf&quot;&gt;here&lt;&#x2F;a&gt;. Good reading.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Meddle Grammar</title>
          <pubDate>Tue, 07 Aug 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/notes/meddlegrammar/</link>
          <guid>https://metta.systems/notes/meddlegrammar/</guid>
          <description xml:base="https://metta.systems/notes/meddlegrammar/">&lt;h2 id=&quot;types&quot;&gt;Types&lt;&#x2F;h2&gt;
&lt;p&gt;Built-in types include &lt;code&gt;int8&lt;&#x2F;code&gt;, &lt;code&gt;int16&lt;&#x2F;code&gt;, &lt;code&gt;int32&lt;&#x2F;code&gt;, &lt;code&gt;int64&lt;&#x2F;code&gt; for signed integer types of given bit size, &lt;code&gt;card16&lt;&#x2F;code&gt;, &lt;code&gt;card32&lt;&#x2F;code&gt;, &lt;code&gt;card64&lt;&#x2F;code&gt; for unsigned integer types with given size, &lt;code&gt;octet&lt;&#x2F;code&gt; for 8-bit bytes, &lt;code&gt;float&lt;&#x2F;code&gt; and &lt;code&gt;double&lt;&#x2F;code&gt; for single and double precision floating point numbers, &lt;code&gt;boolean&lt;&#x2F;code&gt; for true and false, and types &lt;code&gt;integer&lt;&#x2F;code&gt; and &lt;code&gt;cardinal&lt;&#x2F;code&gt; with generic unspecified bit size for use in non-local interfaces, these two types will be marshalled to a transport type of necessary size to represent the value.&lt;&#x2F;p&gt;
&lt;p&gt;The types &lt;code&gt;int8&lt;&#x2F;code&gt;, &lt;code&gt;int16&lt;&#x2F;code&gt;, &lt;code&gt;int32&lt;&#x2F;code&gt;, &lt;code&gt;int64&lt;&#x2F;code&gt;, &lt;code&gt;card16&lt;&#x2F;code&gt;, &lt;code&gt;card32&lt;&#x2F;code&gt;, &lt;code&gt;card64&lt;&#x2F;code&gt; are considered &quot;unsafe&quot; or &quot;dangerous&quot; types and can be used only in local interfaces (or should they be convertible to integer&#x2F;cardinal for network communication?). &lt;code&gt;octet&lt;&#x2F;code&gt; is considered safe and could be used to represent arbitrary sequences of bytes (&lt;code&gt;sequence&amp;lt;octet&amp;gt; binary;&lt;&#x2F;code&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;Custom types can be &lt;code&gt;enum&lt;&#x2F;code&gt;, &lt;code&gt;set&lt;&#x2F;code&gt;, &lt;code&gt;range&lt;&#x2F;code&gt;, &lt;code&gt;type&lt;&#x2F;code&gt; alias, &lt;code&gt;sequence&lt;&#x2F;code&gt;, &lt;code&gt;array&lt;&#x2F;code&gt; and &lt;code&gt;record&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Graphic dependency resolution</title>
          <pubDate>Mon, 16 Jul 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/graphic-dependency-resolution/</link>
          <guid>https://metta.systems/blog/graphic-dependency-resolution/</guid>
          <description xml:base="https://metta.systems/blog/graphic-dependency-resolution/">&lt;p&gt;I needed to quickly check how much of Nemesis support has to be ported over before I can start launching some basic domains.&lt;&#x2F;p&gt;
&lt;p&gt;I used a simple shell one-liner to extract NEEDS dependencies from the interface files. It&#x27;s easy to do in Nemesis because of explicit NEEDS clause in each interface (would be nice to add this functionality to meddler, it also has the dependency information available).&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s the shell one-liner:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;sh&quot; class=&quot;language-sh z-code&quot;&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-support z-function z-echo z-shell&quot;&gt;echo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; &lt;span class=&quot;z-string z-quoted z-double z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;digraph {&lt;span class=&quot;z-punctuation z-definition z-string z-end z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-logical z-continue z-shell&quot;&gt;;&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;find&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; .&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;name&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-regexp z-quantifier z-shell&quot;&gt;*&lt;&#x2F;span&gt;.if&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;exec&lt;&#x2F;span&gt; grep&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;H&lt;&#x2F;span&gt; NEEDS &lt;span class=&quot;z-meta z-group z-expansion z-brace z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-expansion z-brace z-begin z-shell&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-expansion z-brace z-end z-shell&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-character z-escape z-shell&quot;&gt;\;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-logical z-pipe z-shell&quot;&gt;|&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;grep&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;v&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;\-\-&lt;span class=&quot;z-punctuation z-definition z-string z-end z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-logical z-pipe z-shell&quot;&gt;|&lt;&#x2F;span&gt; 
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;  &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sed&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; s&#x2F; &lt;span class=&quot;z-keyword z-operator z-regexp z-quantifier z-shell&quot;&gt;*&lt;&#x2F;span&gt;NEEDS &#x2F;&#x2F;g&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-logical z-pipe z-shell&quot;&gt;|&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sed&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; s@^&lt;span class=&quot;z-constant z-character z-escape z-shell&quot;&gt;\.&lt;&#x2F;span&gt;&#x2F;@@&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-logical z-pipe z-shell&quot;&gt;|&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sed&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; s&#x2F;&lt;span class=&quot;z-constant z-character z-escape z-shell&quot;&gt;\.&lt;&#x2F;span&gt;if&#x2F;&#x2F;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-logical z-pipe z-shell&quot;&gt;|&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;awk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;F&lt;&#x2F;span&gt;: &lt;span class=&quot;z-meta z-group z-expansion z-brace z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-expansion z-brace z-begin z-shell&quot;&gt;{&lt;&#x2F;span&gt;print &lt;span class=&quot;z-meta z-group z-expansion z-parameter z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-variable z-shell&quot;&gt;$&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-other z-readwrite z-shell&quot;&gt;1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-shell&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;-&amp;gt;&lt;span class=&quot;z-punctuation z-definition z-string z-end z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-shell&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-group z-expansion z-parameter z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-variable z-shell&quot;&gt;$&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-other z-readwrite z-shell&quot;&gt;2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-expansion z-brace z-end z-shell&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-logical z-continue z-shell&quot;&gt;;&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-support z-function z-echo z-shell&quot;&gt;echo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; &lt;span class=&quot;z-string z-quoted z-double z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;}&lt;span class=&quot;z-punctuation z-definition z-string z-end z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This generated a huge &lt;a href=&quot;&#x2F;images&#x2F;needs_full.png&quot;&gt;graphic&lt;&#x2F;a&gt; with all dependencies, which I then filtered a bit by removing unreferenced entities and culling iteration after iteration.&lt;&#x2F;p&gt;
&lt;p&gt;The resulting graphic is much smaller and additionally has a hand-crafted legend (green - leaf nodes, yellow - direct dependencies of DomainMgr and VP, my two interfaces of interest). This shows I need to work on about 10-12 interface implementations to be able to run domains.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;needs_boot.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;And my ticket tracker of choice, bugs-everywhere now has an entry 7df&#x2F;0fe &#x27;Generate dot files with dependency information in meddler&#x27;. Time to sleep.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Brief update on Metta</title>
          <pubDate>Fri, 13 Jul 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/brief-update-on-metta/</link>
          <guid>https://metta.systems/blog/brief-update-on-metta/</guid>
          <description xml:base="https://metta.systems/blog/brief-update-on-metta/">&lt;p&gt;I&#x27;ve been working on toolchain building script, now at least on Macs it&#x27;s possible to build a standalone toolchain for building Metta and you can download it and try to build it yourself. All necessary details are descibed on &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;berkus&#x2F;metta&#x2F;blob&#x2F;master&#x2F;README.md&quot;&gt;SourceCheckout wiki page&lt;&#x2F;a&gt;. There is followup work to remove dependency on binutils and gcc (gcc will probably go first, then once lld is mature enough I could get rid of ld&#x2F;gold).&lt;&#x2F;p&gt;
&lt;p&gt;Another update is about type system. The operations on type system are implemented now, I can successfully register type information and query it - some examples of that are in the recently released iso image &lt;code&gt;R925&lt;&#x2F;code&gt;. Next up is fixing some of naming context operations so I can actually create and operate hierarchical naming contexts.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>The real romance is out ahead</title>
          <pubDate>Fri, 13 Jul 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/the-real-romance-is-out-ahead/</link>
          <guid>https://metta.systems/blog/the-real-romance-is-out-ahead/</guid>
          <description xml:base="https://metta.systems/blog/the-real-romance-is-out-ahead/">&lt;blockquote&gt;
&lt;p&gt;The real romance is out ahead and yet to come. The computer revolution hasn&#x27;t started yet. Don&#x27;t be misled by the enormous flow of money into bad defacto standards for unsophisticated buyers using poor adaptations of incomplete ideas.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Alan Kay&lt;&#x2F;strong&gt; via folklore.org&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Type systems and introspection</title>
          <pubDate>Thu, 14 Jun 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/type-systems-and-introspection/</link>
          <guid>https://metta.systems/blog/type-systems-and-introspection/</guid>
          <description xml:base="https://metta.systems/blog/type-systems-and-introspection/">&lt;p&gt;Since I&#x27;ve decided to approach the system development from both low-level and high-level perspectives, one of the applications I have in mind for demo purposes is a little console tool which lets you activate various parts of the system, list available services and call operations on available interfaces.&lt;&#x2F;p&gt;
&lt;p&gt;Imagine a little tool that allows you to pick a video file, seek it to a particular time and play it frame by frame, then run face recognition on each frame and make a database of recognized faces. Being able to make such applications &quot;mashup style&quot; by just fiddling with text and pictures in the command line should enable people to create more and more interesting tools from the basic building blocks presented by the system.&lt;&#x2F;p&gt;
&lt;p&gt;This tool would need to inspect installed interfaces and types of the running components and be able to construct calls to these components directly from the command line. This requires introspection, or the ability to describe structure of objects in the system.&lt;&#x2F;p&gt;
&lt;p&gt;At the moment I&#x27;m working on the extension of meddler that allows to generate introspection data from the interface IDL. It is generally simple and then the next step would be to somehow register this information in the system when a new interface type is introduced. This is harder and requires some design effort. In the first approach of course only boot image is loaded, so registering types is very simple.&lt;&#x2F;p&gt;
&lt;p&gt;Next up is actual introspection interface - how to know what format a particular data type is and how to marshal&#x2F;unmarshal it for the purpose of interchange and operations calls on interfaces.&lt;&#x2F;p&gt;
&lt;p&gt;See &lt;a href=&quot;https:&#x2F;&#x2F;metta.systems&#x2F;notes&#x2F;metta-mashable-techdemo-storyboard&#x2F;&quot;&gt;this little script&lt;&#x2F;a&gt; for the possible demo storyboard.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Museum of Endangered Sounds</title>
          <pubDate>Sun, 03 Jun 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/museum-of-endangered-sounds/</link>
          <guid>https://metta.systems/blog/museum-of-endangered-sounds/</guid>
          <description xml:base="https://metta.systems/blog/museum-of-endangered-sounds/">&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;savethesounds.info&#x2F;&quot;&gt;Museum of Endangered Sounds&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Hehe, this is a truly amazing museum!&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Sending network packets</title>
          <pubDate>Fri, 11 May 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/sending-network-packets/</link>
          <guid>https://metta.systems/blog/sending-network-packets/</guid>
          <description xml:base="https://metta.systems/blog/sending-network-packets/">&lt;p&gt;A little sidetrack into the world of PCI probing and NE2000 network card emulation.&lt;&#x2F;p&gt;
&lt;p&gt;Wanted to have a taste of sending and receiving network packets inside my little OS, so I went and implemented PCI scanning (extremely simple) and NE2000 card driver (fairly simple too, their doc is quite good although misses some crucial points).&lt;&#x2F;p&gt;
&lt;p&gt;So, after some fiddling I was able to send a packet and receive it through the bochs virtual network card. I&#x27;ve then connected bochs to the host network card and stared at network packets for a while. Cool stuff.&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s the screen dump of the sent and then received broadcast packet.&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;IRQ11 enabled.
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Finished initializing NE2000 with MAC b0:c4:20:00:00:00.
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Received irq: 0x0000000b
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Packet transmitted.
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Packet received.
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Received packet with status 33 of length 68, next packet at 82
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;0x004f0064  ff ff ff ff ff ff 28 cf  da 00 99 f5 00 10 48 65  ......(.......He
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;0x004f0074  6c 6c 6f 20 6e 65 74 20  77 6f 72 6c 64 21 00 00  llo net world!..
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;0x004f0094  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>sjlj and exception handling</title>
          <pubDate>Sun, 08 Apr 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/sjlj-and-exception-handling/</link>
          <guid>https://metta.systems/blog/sjlj-and-exception-handling/</guid>
          <description xml:base="https://metta.systems/blog/sjlj-and-exception-handling/">&lt;p&gt;Of course, the clang&#x27;s implementation of &lt;code&gt;setjmp&lt;&#x2F;code&gt; is very generic and uses quite an abstraction of program state, which makes it hardly suitable for the ad-hoc local exception support I&#x27;m using. Since my requirements for setjmp were quite simple (just give me back my damn registers and stack frame), I went and implemented a very custom-tailored versions &lt;code&gt;__sjljeh_setjmp&lt;&#x2F;code&gt; and &lt;code&gt;__sjljeh_longjmp&lt;&#x2F;code&gt; which do just what I need.&lt;&#x2F;p&gt;
&lt;p&gt;With &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;berkus&#x2F;metta&#x2F;blob&#x2F;master&#x2F;src&#x2F;runtime&#x2F;setjmp.s&quot;&gt;that stuff&lt;&#x2F;a&gt; out of the way, my entire boot sequence now works and I can finally fiddle with more interesting stuff. Type system and introspection, here we go.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Bret Victor&#x27;s Kill Math</title>
          <pubDate>Mon, 02 Apr 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/bret-victors-kill-math/</link>
          <guid>https://metta.systems/blog/bret-victors-kill-math/</guid>
          <description xml:base="https://metta.systems/blog/bret-victors-kill-math/">&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;worrydream.com&#x2F;KillMath&#x2F;&quot;&gt;Bret Victors Kill Math&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;How to stop worrying and love your visualization tools.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Optimizations</title>
          <pubDate>Sun, 25 Mar 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/optimizations/</link>
          <guid>https://metta.systems/blog/optimizations/</guid>
          <description xml:base="https://metta.systems/blog/optimizations/">&lt;p&gt;The reason for not booting was simple - Clang, seeing that target is Pentium 4 and above, optimized some memmoves into SSE operations. Bochs didn&#x27;t expect that.&lt;&#x2F;p&gt;
&lt;p&gt;Now everything boots up until exceptions, at which point I believe the &lt;code&gt;__builtin_longjmp&lt;&#x2F;code&gt; primitive fails. Debugging it.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Clanged now</title>
          <pubDate>Sat, 24 Mar 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/clanged-now/</link>
          <guid>https://metta.systems/blog/clanged-now/</guid>
          <description xml:base="https://metta.systems/blog/clanged-now/">&lt;p&gt;Anyway, I&#x27;ve done doing the craziest port of recent times - at the same time GCC to Clang &lt;em&gt;and&lt;&#x2F;em&gt; from waf 1.5 to 1.6.&lt;&#x2F;p&gt;
&lt;p&gt;Quite a bit of quirks to work around.&lt;&#x2F;p&gt;
&lt;p&gt;waf has changed a lot internally, and from occasional backtraces I still see that I&#x27;m using compatibility mode somewhere. Oh well, one day when I&#x27;m bored…&lt;&#x2F;p&gt;
&lt;p&gt;Clang is also full of quirks. First, I had to build a cross-gcc for it anyway, because otherwise it totally refuses to link or assemble anything. Second, the freestanding standard C headers are not quite finished it seems - stdint.h for example spits out about 20-30 warnings about redefined macros, so I had to disable &lt;code&gt;-Werror&lt;&#x2F;code&gt; for now just to get it to compile. Third, the generated code, obviously, doesn&#x27;t run. I got only first couple functions of kickstart bootloader to work in bochs, after that it just GPFs. Now if it keeps raining tomorrow like today, I&#x27;ll certainly will go and look what happens there, otherwise it might have to wait until next weekend (actually, in two weeks).&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Magic Ink</title>
          <pubDate>Sun, 05 Feb 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/magic-ink/</link>
          <guid>https://metta.systems/blog/magic-ink/</guid>
          <description xml:base="https://metta.systems/blog/magic-ink/">&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;worrydream.com&#x2F;MagicInk&#x2F;&quot;&gt;Magic Ink&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Highly recommend this read to all programmers and designers. Very inspirational.&lt;&#x2F;p&gt;
&lt;p&gt;It intersects with Metta&#x27;s ideas of supporting creativity freedom, and is written a lot better than I could ever dream to write myself.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Font rasterization theory and techniques</title>
          <pubDate>Mon, 03 Oct 2011 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/font-rasterization-theory-and-techniques/</link>
          <guid>https://metta.systems/blog/font-rasterization-theory-and-techniques/</guid>
          <description xml:base="https://metta.systems/blog/font-rasterization-theory-and-techniques/">&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;freddie.witherden.org&#x2F;pages&#x2F;font-rasterisation&#x2F;&quot;&gt;Font rasterization theory and techniques&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Metta MMU module init</title>
          <pubDate>Tue, 07 Jun 2011 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/metta-mmu-module-init/</link>
          <guid>https://metta.systems/blog/metta-mmu-module-init/</guid>
          <description xml:base="https://metta.systems/blog/metta-mmu-module-init/">&lt;h3 id=&quot;mmu-initialisation&quot;&gt;MMU initialisation&lt;&#x2F;h3&gt;
&lt;p&gt;First off, we start by loading the needed modules - &lt;code&gt;mmu_mod&lt;&#x2F;code&gt;, &lt;code&gt;frames_mod&lt;&#x2F;code&gt; and &lt;code&gt;heap_mod&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;mmu_mod&lt;&#x2F;code&gt; will allocate and map the first chunk of memory to use. It does so without knowing much about memory allocation - just takes a first fit chunk from the physical memory map, passed to us by the bootloader. Parts of this memory will be used by &lt;code&gt;frames_mod&lt;&#x2F;code&gt; and &lt;code&gt;heap_mod&lt;&#x2F;code&gt; as well, so we need a way to know how much memory they would need.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>A historical moment</title>
          <pubDate>Sat, 23 Apr 2011 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/a-historical-moment/</link>
          <guid>https://metta.systems/blog/a-historical-moment/</guid>
          <description xml:base="https://metta.systems/blog/a-historical-moment/">&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;OMAP3 beagleboard.org # mmcinit
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;OMAP3 beagleboard.org # fatload mmc 0 0x82000000 kernel.bin
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;reading kernel.bin
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;640 bytes read
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;OMAP3 beagleboard.org # go 0x8200024c
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;## Starting application at 0x8200024C ...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;hello, world!
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;## Application terminated, rc = 0x0
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Apple&#x27;s Attention to Detail</title>
          <pubDate>Tue, 31 Aug 2010 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/apples-attention-to-detail/</link>
          <guid>https://metta.systems/blog/apples-attention-to-detail/</guid>
          <description xml:base="https://metta.systems/blog/apples-attention-to-detail/">&lt;blockquote&gt;
&lt;p&gt;In July 2002, Apple filed a patent for a “Breathing Status LED Indicator”
(&lt;a href=&quot;http:&#x2F;&#x2F;www.freepatentsonline.com&#x2F;6658577.html&quot;&gt;No. US 6,658,577 B2&lt;&#x2F;a&gt;).
They described it as a “blinking effect of the sleep-mode indicator in accordance
with the present invention &lt;strong&gt;mimics the rhythm of breathing&lt;&#x2F;strong&gt; which is psychologically appealing.”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;apple-patent-breathing-led.jpg&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Apple&#x27;s attention to detail is legendary.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Metta progress report one</title>
          <pubDate>Fri, 23 Jul 2010 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/metta-progress-report-one/</link>
          <guid>https://metta.systems/blog/metta-progress-report-one/</guid>
          <description xml:base="https://metta.systems/blog/metta-progress-report-one/">&lt;p&gt;I have cleaned up the booting mess more or less and now my loader is able to enter the &lt;strong&gt;root domain&lt;&#x2F;strong&gt; - the startup component, which initialises all other components in order and passes control on to userspace loader component, which is supposed to finish system initialisation by starting up all user interface services.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>It is better to live alone</title>
          <pubDate>Thu, 31 Dec 2009 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/it-is-better-to-live-alone/</link>
          <guid>https://metta.systems/blog/it-is-better-to-live-alone/</guid>
          <description xml:base="https://metta.systems/blog/it-is-better-to-live-alone/">&lt;blockquote&gt;
&lt;p&gt;&quot;330. It is better to live alone, there is no companionship with a fool; let a man walk alone, let him commit no sin, with few wishes, like an elephant in the forest.&quot;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Dhammapada&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>To remain the web weavers</title>
          <pubDate>Wed, 30 Dec 2009 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/blog/to-remain-the-webs-weavers/</link>
          <guid>https://metta.systems/blog/to-remain-the-webs-weavers/</guid>
          <description xml:base="https://metta.systems/blog/to-remain-the-webs-weavers/">&lt;blockquote&gt;
&lt;p&gt;To remain the web’s weavers and not its ensnared victims, we must merge with our electronic exocortex, wiring greater memory, thought processing and communication abilities directly into our brains.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;James Hughen&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>About</title>
          <pubDate>Wed, 30 Dec 2009 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://metta.systems/misc/about/</link>
          <guid>https://metta.systems/misc/about/</guid>
          <description xml:base="https://metta.systems/misc/about/">&lt;blockquote&gt;
&lt;p&gt;To dream a dream as big&lt;br &#x2F;&gt;
As big could ever dream to be&lt;br &#x2F;&gt;
Then dream a dream ten times as big&lt;br &#x2F;&gt;
As that one dream you see.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;hi-and-welcome-to-metta-hub&quot;&gt;Hi and welcome to Metta hub!&lt;&#x2F;h2&gt;
&lt;p&gt;Here I develop decentralised communication systems for the future, called Metta nodes or uvvies. You can join in by helping us develop, document, promote and use the software.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;what-i-m-working-on-and-why&quot;&gt;What I&#x27;m working on and why&lt;&#x2F;h3&gt;
&lt;p&gt;My biggest project so far is Metta - a humane, social and multimedia OS. While multimedia and social are pretty much all over the place, humane part is still unexplored widely.&lt;&#x2F;p&gt;
&lt;p&gt;Bits and pieces are appearing in different systems from different vendors, but they still haven&#x27;t integrated enough.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;A user interface that helps and optimizes workflows, rather than gets in the way.&lt;&#x2F;li&gt;
&lt;li&gt;A scalable system that works across all your devices - laptops, smartphones, TVs - without the need to explicitly manage every single file, address book record or configuration setting.&lt;&#x2F;li&gt;
&lt;li&gt;An environment that doesn&#x27;t only passively executes your direct commands, but a living federation of agents working on your behalf to bring you the best and most interesting things you wouldn&#x27;t even find yourself - something much more useful than idly browsing through 9gag.&lt;&#x2F;li&gt;
&lt;li&gt;Something that could become your actual exocortex device, after some sufficient advances in neural interfacing development.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This is a huge undertaking and given that neither Apple nor Microsoft is near achieving it yet, chances are I won&#x27;t make it alone either. But I have to try anyway.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;ongoing-projects&quot;&gt;Ongoing Projects&lt;&#x2F;h3&gt;
&lt;p&gt;One side - the low-level platform, which supports secure, distributed, federated, peer-to-peer systems - is being developed at &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;metta-systems&#x2F;metta&quot;&gt;metta&lt;&#x2F;a&gt;. It supports an entirely different programming paradigm of component-based composable system, where interfaces between components make it possible to remote parts of the system without ever changing the application itself; and introspection facilities allow to build mashable applications out of existing components without ever needing anything else. A fast, portable, peer-to-peer foundation platform.&lt;&#x2F;p&gt;
&lt;p&gt;Another side - the user-space interaction and social facilities - developed at &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;metta-systems&#x2F;uvvy&quot;&gt;uvvy&lt;&#x2F;a&gt;. Uvvy is a tool for fully decentralized communications - grab data you like and store it forever, share data with your friends, start chats, voice or video calls, form groups by interest, transparently keep all your notes between all of your devices; all based on a simple ideas of
&lt;a href=&quot;http:&#x2F;&#x2F;pdos.csail.mit.edu&#x2F;uia&#x2F;&quot;&gt;UIA&lt;&#x2F;a&gt;. It is still in its infancy and only base transport protocol is done, work is now going on on overlay routing network. This project is no less ambitious, but better progress is being made here, since it is a simple application ran on regular off-the-shelf operating systems.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;grabbing-the-data&quot;&gt;Grabbing the data&lt;&#x2F;h3&gt;
&lt;p&gt;The grabber comes from Latin saying &quot;Omnia mea mecum porto&quot; - grab, snapshot things I need and forever keep them available to me. This is one of the current research topics in the humane part. How much data do I need? Where do I need it? How my life changes if I always can find what I need, wherever I am?&lt;&#x2F;p&gt;
&lt;p&gt;Final target is to have a bunch of clients for desktop and mobile platforms (Win, Mac, Linux, Android, iOS) as well as own operating system implementation (Metta) running together.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;support-or-contact&quot;&gt;Support or contact&lt;&#x2F;h3&gt;
&lt;p&gt;Ping &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;berkus&quot;&gt;@berkus&lt;&#x2F;a&gt; if you have any questions or ideas.&lt;&#x2F;p&gt;
&lt;p&gt;Be free!&lt;&#x2F;p&gt;
&lt;p&gt;मेता&lt;&#x2F;p&gt;
</description>
      </item>
    </channel>
</rss>
