Deser: Rethinking Rust Serialization | Armin Ronacher’s Ideas and Writings


written on September 29, 2026

Serde is a tremendous serialization library for Rust and it
has been an enormous cause why I felt productive with it for years. However already
whereas at Sentry I received fairly annoyed with among the limitations with it however
truly changing Serde is hard due to the would possibly that it has within the
ecosystem. Also as a result of it’s fairly exhausting to really do higher with out additionally
making some probably painful compromises.

Here are three examples of Serde nook instances that present poor interactions of
Serde options or surprising limitations:

A quantity that could be a map

An internally tagged enum, with serde_json‘s arbitrary_precision function
turned on:

#[derive(Deserialize)]
#[serde(tag = "type")]
enum Shape {
    Circle { radius: f64 },
}

serde_json::from_str::<Shape>(r#"{"sort": "Circle", "radius": 1.5}"#)
// error: invalid sort: map, anticipated f64

Serde’s information mannequin has no place for arbitrary precision numbers, so serde_json
makes use of in-band signalling with a map with a magic key. The enum has to buffer the
fields till it has seen the tag, and the buffer doesn’t know concerning the magic
key. Because Cargo options are unified, it’s sufficient for any crate in your
dependency graph to show the function on.

Flattening breaks integer keys
#[derive(Deserialize)]
struct Stats {
    scores: HashMap<u32, u32>,
}

#[derive(Deserialize)]
struct Report {
    identify: String,
    #[serde(flatten)]
    stats: Stats,
}

serde_json::from_str::<Report>(r#"{"identify": "x", "scores": {"42": 23}}"#)
// error: invalid sort: string "42", anticipated u32 at line 1 column 35

Stats by itself parses {"scores": {"42": 23}} simply high-quality. JSON keys are
at all times strings, and serde_json solely turns them into integers if the kind asks
for one. However as soon as flatten buffers the worth, "42" is only a string.
The error additionally factors on the finish of the doc reasonably than on the key.

Adapters don’t compose
fn from_hex<'de, D: Deserializer<'de>>(d: D) -> Result<u32, D::Error> { ... }

#[derive(Deserialize)]
struct Theme {
    #[serde(deserialize_with = "from_hex")]
    main: u32,
    #[serde(deserialize_with = "from_hex")]
    accent: Option<u32>,
}

//error[E0308]: `?` operator has incompatible sorts
//  |
//  |     #[serde(deserialize_with = "from_hex")]
//  |                                ^^^^^^^^^^ anticipated `Option`, discovered `u32`
//  |
//assist: attempt wrapping the expression in `Some`
//  |
//  |     #[serde(deserialize_with = Some("from_hex"))]
//  |                                +++++          +

A perform can’t be handed as a sort parameter, so there isn’t any strategy to apply
from_hex to the within of an Option, a Vec or a map. You write one other
perform for each wrapper, and upon getting from_opt_hex the sphere isn’t any
longer non-compulsory until you additionally bear in mind so as to add #[serde(default)].

None of those are bugs which can be straightforward to repair in Serde. They fall out of its
design, and that design is protected by Serde’s stability ensures.

Back in 2022 I began an experiment referred to as
Deser. It’s a serialization library for
Rust that takes the consumer expertise of Serde and places it on
prime of a totally completely different structure impressed by
miniserde. I by no means actually completed it
and it sat round for a couple of years. I picked it again up, and it has now reached
some extent the place I feel it’s price taking a look at. Even simply to encourage others to
see in the event that they need to discover the area.

The Name And Idea

The identify is Serde with its two halves swapped. Deser is Serde however the different manner
round. In Serde, a sort drives the deserialization course of: a Deserialize
impl asks the deserializer for the type of worth it expects, the format calls
again right into a customer. Every nested worth is dealt with by recursion which makes
Serde deserialization inherently develop the stack with every degree of nesting.

Deser then again turns this round and the format tells the kind of the
subsequent worth and pushes occasions right into a sink. When a sink hits the beginning of a
nested worth, it doesn’t name into it however fingers again a brand new sink to a driver,
which retains all state on the heap (in reality, in an area). On the way in which out,
emitters return their nested values as an alternative of recursing into them.

That additionally implies that Deser can not help codecs like protobuf that aren’t
self describing. They are in reality fairly deliberately neglected of the design
totally. Which is one strategy to say: if you wish to “repair” Serde, you might want to
make another compromises.

Most of the explanations for Deser’s concepts return to Sentry
Relay
, which processes monumental quantities of
untrusted JSON. Over the years once I was at Sentry we bumped into the identical set of
issues many times, and plenty of of them usually are not actually bugs in Serde however
penalties of its design. Serde’s stability ensures imply that a variety of
them can’t be mounted with out breaking each format and each hand written
implementation. Most of those issues come from three selections:

  1. One set of traits for all codecs. Serde serves each self describing
    codecs (JSON, YAML, TOML, …) and codecs the place the reader has to know the
    sort upfront (postcard, bincode, protobuf, …). That is extremely helpful,
    nevertheless it implies that some options solely work with some codecs, and you discover out
    at runtime. In case of Serde it additionally has some odd wrinkles the place a derived
    struct quietly accepts an array instead of an object in JSON for example.

  2. A hard and fast information mannequin that loses data when buffering. Internally
    tagged enums, untagged enums and flatten have to buffer values earlier than
    they know what to do with them. The buffer can’t maintain every part the format
    knew, errors lose their location and extensions to the ecosystem depend on
    in-band signalling to precise issues similar to arbitrary precision numbers.

  3. Recursion on the decision stack. Every degree of nesting makes use of stack area.
    Formats defend towards this with a recursion restrict, however the second you go
    by a code path that doesn’t have one (writing, dynamic values), deeply
    nested information can take down your course of. It additionally implies that a
    deserialization can’t be paused whilst you watch for extra enter.

Many of the corresponding Serde points have been open for years, and I wrote
about abusing Serde earlier than. People have tried
completely different angles on this over time. Some went minimal and dropped most
options to get quick compiles and no recursion. dtolnay’s personal
miniserde is the very best instance of that,
and deser’s trait design was initially modelled after it. Other current
makes an attempt went for runtime reflection, or for a brand new information mannequin with a concentrate on
binary codecs.

If you need to learn up on the entire collected challenges with Serde’s design,
I preserve a lengthy list here.

Dethroning Serde

First of all I don’t suppose it’s doubtless that one can substitute Serde. The orphan
rule

entrenches Serde extremely properly within the ecosystem. But some issues are inside
the attain of a crate writer’s management. In case of Deser it’s completeness.

Deser right now implements all essential self describing codecs from YAML, JSON,
TOML, CBOR, JSON5 and the likes, but additionally XML and plist to actually shut the hole.
XML specifically is one thing Serde has declined to help, and it reveals
(extra on that under). At the very least format help shouldn’t be the
cause to not use Deser.

The second drawback often is that truly fixing Serde’s points comes at a
important price in compile time and/or runtime efficiency. Deser isn’t any
completely different. While Deser’s compile instances are a bit higher than Serde’s, the
binary bloat is kind of a bit worse and the runtime efficiency is blended. It’s
roughly comparable for those who have a look at the numbers however relying on the format
construction you might be shedding considerably from among the tradeoffs.

That mentioned, it’s now in a state the place it’s not less than in precept a drop-in
substitute the place the tradeoffs would possibly work properly for customers.

Deser’s Design

Deser doesn’t attempt to be considerably completely different than Serde on the floor
degree. For most makes use of you derive Serialize and Deserialize after which begin
utilizing it together with your format implementing crate of selection. Most attributes are
very related, although they’re taking Rust expressions as an alternative of strings.

use deser::{Serialize, Deserialize};

#[derive(Debug, Serialize, Deserialize)]
#[deser(rename_all = "camelCase")]
pub struct Account {
    id: u64,
    account_holder: String,
    #[deser(default)]
    is_deactivated: bool,
}

let account: Account = deser_json::from_str(json)?;

The distinction within the design would change into extra obvious for those who implement a
serializer or deserializer your self. Instead of holiday makers that decision into every
different recursively, deserializing a sort creates a
sink which receives occasions which can be immediately emitted by the parser, and
serializing produces emitters that hand out values. Nested sinks and emitters
are handed again to a driver, which retains them on the heap. This design, which is
totally stolen from miniserde, offers some attention-grabbing penalties:

  • No stack overflows. You can arbitrarily nest constructions with out points.
    For untrusted enter you set limits with a layer, and also you decide the quantity
    that you’re snug with, which is unbiased of your stack area.
  • Suspendable. Because the state lives within the driver, a deserialization
    could be fed enter because it arrives. It’s additionally Send, so it might transfer between
    threads whilst you wait on IO which makes it a lot nicer to make use of with tokio.
    Formats like JSON, CBOR and MessagePack could be parsed as a stream for those who
    so want.
  • An extensible information mannequin. The core information mannequin is small and product of atoms,
    maps and sequences. For all else, there are extension values (DateTime,
    Uuid, and many others.) that additionally all carry a fallback for codecs that don’t perceive
    them. Unlike Serde this implies it doesn’t depend on in-band signalling of
    objects with magic keys to smuggle values by.
  • Lossless buffering. When a worth must be buffered (for example as a result of
    the tag of an internally tagged enum comes final), Deser information the occasions
    along with every part the format knew about them. Protocol particular
    extension sorts or error places all survive.
  • Layers are a middleware system that sit between the format and your sorts
    and might observe issues like paths, implement security limits, rename keys or redact
    values with out having to the touch particular code paths.
  • Native flattening that doesn’t buffer in any respect.

On prime of which can be a variety of issues that I simply needed to have:

  • Allow enum tags to be of any sort, not simply strings
  • Adapters that compose (as = Option>)
  • Enabling validation as an adapter
  • derive attributes which can be actual Rust expressions as an alternative of strings
  • bytes as a core performance within the information mannequin
  • duplicate keys rejected by default and errors that time on the drawback

Here is a small configuration sort that reveals a couple of of those collectively:

use deser::adapters::DisplayFromStr;
use deser::de::Recording;
use deser::{Deserialize, Serialize};
use deser_encoding::Hex;
use deser_validate::{Check, NonEmpty, Range};
use ipnet::IpNet;

#[derive(Debug, Serialize, Deserialize)]
pub struct Config {
    // not less than one 256-bit key, every written as hex
    #[deser(as = Check>)]
    secret_keys: Vec<[u8; 32]>,
    // `IpNet` is aware of nothing about deser, however has `FromStr` and `Display`
    #[deser(as = Option>)]
    allowed_networks: Option<Vec<IpNet>>,
    listeners: Vec<Listener>,
}

#[derive(Debug, Serialize, Deserialize)]
#[deser(tag = "type", rename_all = "snake_case")]
pub enum Listener {
    Unix { path: PathBuf },
    Tcp {
        host: IpAddr,
        #[deser(as = Check>)]
        port: u16,
    },
    // sorts this model doesn't know are saved and written again
    #[deser(other)]
    Other(#[deser(tag)] String, Recording),
}

Adapters are sorts, so Hex can go inside a Vec, and DisplayFromStr inside
a Vec inside an Option. Validators are adapters too, so
Check> decodes the keys after which checks that there’s at
least one. The catch-all variant retains the tag and a recording of every part
else in case somebody desires to course of it later.

Errors are one thing I care quite a bit about, so here’s what occurs when a worth
is improper:

secret_keys = ["9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"]
allowed_networks = ["10.0.0.0/8", "fd00::/8"]

[[listeners]]
sort = "unix"
path = "/run/app.sock"

[[listeners]]
host = "127.0.0.1"
port = 0
sort = "tcp"

[[listeners]]
sort = "quic"
host = "::1"
alpn = ["h3"]
let config: Config = deser_toml::Deserializer::from_str(enter)
    .deserialize_with(|driver| driver.push_layer(PathLayer::new()))?;

Note that right here the tag of the internally tagged enum comes final which implies that
the values should be buffered till the tag is thought. In Serde that is difficult
and we’d lose the placement if we used some tips so as to add it. With Deser
nevertheless, with the trail layer enabled Deser you the place within the construction the
drawback is:

Unexpected: invalid worth: should be between 1 and 65535 at line 10 column 8 (path: listeners[1].port)

Deser Meta Data

Deser actually desires to be extensible, and XML is a extra excessive instance of the
variations between Deser and Serde. Here is an Atom entry that mixes in Dublin
Core for the authors:

use chrono::{DateTime, Utc};
use deser::Deserialize;
use deser_value::Value;
use deser_xml::DeserializerConfig;

deser_xml::namespace!(
    atom = "http://www.w3.org/2005/Atom",
    dc = "http://purl.org/dc/elements/1.1/",
);

#[derive(Debug, Deserialize)]
struct Entry {
    #[deser(rename = atom!("title"))]
    title: String,
    #[deser(rename = dc!("creator"))]
    creators: Vec<String>,
    #[deser(rename = atom!("updated"))]
    up to date: DateTime<Utc>,
}

// entries we perceive, and every part else is saved as it's
#[derive(Debug, Deserialize)]
#[deser(untagged)]
enum Item {
    Entry(Entry),
    Other(Value),
}

let merchandise: Item = DeserializerConfig::new()
    .resolve_namespaces(true)
    .from_str(r#"
        
               xmlns:d="http://purl.org/dc/elements/1.1/">
          Deser
          John
          2026-09-29T21:00:00Z
          Jane
        
    "#)?;

XML makes use of namespaces which implies that names must be matched by their namespace,
not by the prefix the doc occurs to make use of. Here the doc says d: and
the kind says dc!. atom!("title") is simply the string
{http://www.w3.org/2005/Atom}title, which works as a result of attributes are
expressions. The two creators are collected into one Vec though there’s
one other aspect between them, and the textual content of up to date goes straight right into a
chrono datetime. Because the enum is untagged, the entry must be buffered
earlier than a variant is picked, and deser’s buffer retains each creators. So the
result’s an Entry with John and Jane.

quick-xml, the most well-liked XML crate for Serde, drops the prefixes and ignores
namespaces totally, so a </code> from another namespace is fortunately<br /> accepted because the title of the entry. The cut up listing half although is significantly<br /> worse. A plain <code>Entry</code> fails with a replica subject error for <code>creator</code>, until<br /> you activate the <code>overlapped-lists</code> function (which, bear in mind, is a worldwide<br /> additive flag that any crate might set). That function makes quick-xml learn<br /> forward to the top of the aspect and buffer every part in between, with no<br /> restrict until you set one.</p> <p>But the function solely helps when quick-xml is attached to the struct immediately<br /> and no buffering is happening. Wrap the struct within the untagged enum and<br /> Serde buffers the entry itself. Read from that buffer, <code>Entry</code> sees <code>creator</code><br /> twice and fails once more. The fallback is a map, which retains solely the final<br /> <code>creator</code>, and there’s no error. With or with out the function you get this:</p> <div class="highlight" wp_automatic_readability="9"> <pre><span/><span class="n">Other</span><span class="p">({</span><span class="s">"creator"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="s">"$textual content"</span><span class="p">:</span><span class="w"> </span><span class="s">"Jane"</span><span class="p">},</span><span class="w"> </span><span class="s">"title"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="s">"$textual content"</span><span class="p">:</span><span class="w"> </span><span class="s">"Deser"</span><span class="p">},</span><span class="w"> </span><span class="o">..</span><span class="p">.})</span> </pre> </div> <p>Notice how John is gone.</p> <p>Format particular extension sorts similar to TOML datetimes are one other case. TOML<br /> has them natively, Serde’s information mannequin doesn’t, so the <code>toml</code> crate passes them<br /> on as a map with a magic key. In Deser a datetime is an extension worth, which<br /> codecs that understand it preserve and all others write as a string:</p> <div class="highlight" wp_automatic_readability="9"> <pre><span/><span class="kd">let</span><span class="w"> </span><span class="n">worth</span><span class="p">:</span><span class="w"> </span><span class="nc">Value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">deser_toml</span><span class="p">::</span><span class="n">from_str</span><span class="p">(</span><span class="s">"launched = 2026-09-29T21:00:00+02:00"</span><span class="p">)</span><span class="o">?</span><span class="p">;</span> <span class="n">deser_json</span><span class="p">::</span><span class="n">to_string</span><span class="p">(</span><span class="o">&</span><span class="n">worth</span><span class="p">)</span><span class="o">?</span><span class="p">;</span> <span class="c1">// {"launched":"2026-09-29T21:00:00+02:00"}</span> <span class="n">deser_toml</span><span class="p">::</span><span class="n">to_string</span><span class="p">(</span><span class="o">&</span><span class="n">worth</span><span class="p">)</span><span class="o">?</span><span class="p">;</span> <span class="c1">// launched = 2026-09-29T21:00:00+02:00</span> </pre> </div> <p>The identical with <code>serde_json::Value</code> offers you<br /> <code>{"launched":{"$__toml_private_datetime":"2026-09-29T21:00:00+02:00"}}</code>, and<br /> studying the worth right into a <code>chrono::DateTime</code> fails outright with <code>invalid sort: map, anticipated an RFC 3339 formatted date and time string</code>.</p> <h2>The Cost</h2> <p>So now that you already know Deser is not less than in idea cool, at what price?</p> <p>It will not be free. The design depends on dynamic dispatch and on sinks and emitters<br /> that stay on the heap, and that has appreciable runtime overhead. In my very own<br /> measurements for JSON, Deser reads someplace between 33% sooner and 60% slower<br /> than <code>serde_json relying</code> on the information. On common it’s about 10% slower for<br /> studying. Writes are between 3 times as quick and 70% slower and a wash on<br /> common. For YAML and TOML it’s noticeably sooner than the Serde based mostly crates,<br /> however that’s extra concerning the format implementations than the structure.</p> <p>Compile instances barely are higher, however not dramatically so. Because it doesn’t<br /> monomorphize every part, launch builds of derived code are about 2.3 instances as<br /> quick as with Serde and that get a tiny bit higher in follow to your personal code<br /> as much less recompilation is important.</p> <p>To make Deser’s design work in any respect, it additionally makes use of <code>unsafe</code> internally. Most of<br /> that is to maintain the chain of borrowed sinks on the heap. I really feel like that is<br /> high-quality within the days of Miri and brokers, however I do know it makes some of us uneasy.</p> <p>And properly, the largest price is that it’s simply not Serde.</p> <h2>How Much Is There?</h2> <p>Quite quite a bit truly which is perhaps stunning. In addition to the core<br /> there’s help for <a href="https://github.com/mitsuhiko/deser/tree/main/deser-derive">derive</a>.</p> <p>It helps all flavorts of JSON you’ll be able to consider:<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-json">JSON</a>,<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-jsonc">JSONC</a>,<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-json5">JSON5</a> and<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-hj">HJSON</a>. (Fun truth right here:<br /> they’re all generated out of <a href="https://github.com/mitsuhiko/deser/tree/main/deser-template-json">one shared parser template</a>)<br /> For binary dealing with it helps<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-cbor">CBOR</a> and<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-msgpack">MessagePack</a>.<br /> Additionally it does<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-yaml">YAML</a> 1.1 and 1.2,<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-toml">TOML</a>,<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-xml">XML</a> and all three<br /> flavors of Apple’s <a href="https://github.com/mitsuhiko/deser/tree/main/deser-plist">plist</a><br /> in addition to <a href="https://github.com/mitsuhiko/deser/tree/main/deser-csv">CSV/TSV</a>,<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-urlencoded">urlencoded data</a> and<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-env">environment variables</a>.<br /> For extra loopy contraptions you’ll be able to<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-path">attach path info</a> or<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-location">capture location data</a><br /> in addition to help for<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-debug">debug printing</a>.<br /> You can carry out <a href="https://github.com/mitsuhiko/deser/tree/main/deser-validate">validation</a><br /> as you parse, decide into completely different<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-encoding">binary encodings</a><br /> along with base64, you’ll be able to<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-serde">bridge to serde</a> or<br /> seize<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-value">dynamic values</a>,<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-transcode">transcode</a><br /> between codecs or hook it up with<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/deser-tokio">tokio</a>.</p> <p>For documentation see <a href="https://docs.rs/deser/latest/deser/">docs.rs/deser</a><br /> and the code itself is <a href="https://github.com/mitsuhiko/deser">on GitHub</a> alongside<br /> <a href="https://github.com/mitsuhiko/deser/tree/main/examples">many examples</a>.</p> <p class="tags">This entry was tagged</p> <p> <a href="https://lucumr.pocoo.org/tags/rust/">rust</a></p> <p class="markdown-links"> <a href="https://lucumr.pocoo.org/2026/9/29/deser.md" id="copy-markdown" hx-boost="false">copy as</a> / <a href="https://lucumr.pocoo.org/2026/9/29/deser.md" id="view-markdown" hx-boost="false">view</a> markdown </p> </p></div> <p><script> atOptions = { 'key' : '1f8b16270d173a514d3502a511249a7f', 'format' : 'iframe', 'height' : 90, 'width' : 728, 'params' : {} }; </script> <script src="https://www.highrevenueformat.com/1f8b16270d173a514d3502a511249a7f/invoke.js"></script><br /> <br /><a href="https://lucumr.pocoo.org/2026/9/29/deser/">Source link </a></p> <script type="text/javascript"> jQuery(document).ready(function($) { $.post('https://africanbusinessdaily.com/wp-admin/admin-ajax.php', {action: 'wpt_view_count', id: '43079'}); }); </script> </div> </div> </article> <ul class="default-wp-page clearfix"> <li class="previous"><a href="https://africanbusinessdaily.com/orthodontic-integration-specialist-vancouver-bc-at-lightforce/" rel="prev"><span class="meta-nav">←</span> Orthodontic Integration Specialist – Vancouver, BC at LightForce</a></li> <li class="next"><a href="https://africanbusinessdaily.com/retired-couple-with-1-4-million-pays-0-tax-on-a-52000-stock-gain-the-window-closes-dec-31/" rel="next">Retired Couple With $1.4 Million Pays $0 Tax on a $52,000 Inventory Acquire. The Window Closes Dec. 31 <span class="meta-nav">→</span></a></li> </ul> <div class="share-buttons"> <span class="share">Share This Post:</span> <div class="box"> <div id="twitter" class="twitter-share share" data-share="twitter-share"> <i class="fa fa-twitter"></i> </div> </div> <div class="box"> <div id="facebook" class="facebook-share share" data-share="facebook-share"> <i class="fa fa-facebook-square"></i> </div> </div> <div class="box"> <div id="pinterest" class="pinterest-share share" data-share="pinterest-share"> <i class="fa fa-pinterest"></i> </div> </div> </div> <div class="related-posts-wrapper style-one"> <h4 class="related-posts-main-title"> <i class="fa fa-thumbs-up"></i><span>You May Also Like</span> </h4> <div class="related-posts clearfix "> <div class="single-related-posts"> <div class="related-posts-thumbnail"> <a href="https://africanbusinessdaily.com/why-rituals-matter-more-than-ever-with-bruce-feiler/" title="Why Rituals Matter Extra Than Ever with Bruce Feiler"> <img width="390" height="205" src="https://africanbusinessdaily.com/wp-content/uploads/2026/09/Bruce-Feiler-BLG-390x205.png" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="" decoding="async" loading="lazy" /> </a> </div> <div class="article-content"> <h3 class="entry-title"> <a href="https://africanbusinessdaily.com/why-rituals-matter-more-than-ever-with-bruce-feiler/" rel="bookmark" title="Why Rituals Matter Extra Than Ever with Bruce Feiler"> Why Rituals Matter Extra Than Ever with Bruce Feiler </a> </h3><!--/.post-title--> <div class="below-entry-meta "> <span class="posted-on"><a href="https://africanbusinessdaily.com/why-rituals-matter-more-than-ever-with-bruce-feiler/" title="3:13 pm" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="2026-09-23T15:13:36+00:00">September 23, 2026</time><time class="updated" datetime="2026-09-23T15:13:38+00:00">September 23, 2026</time></a></span> <span class="byline"> <span class="author vcard"> <i class="fa fa-user"></i> <a class="url fn n" href="https://africanbusinessdaily.com/author/admin/" title="admin" > admin </a> </span> </span> </div> </div> </div><!--/.related--> <div class="single-related-posts"> <div class="related-posts-thumbnail"> <a href="https://africanbusinessdaily.com/steve-blank-ai-and-teaching-the-brave-new-world/" title="Steve Clean AI and Instructing – The Courageous New Global community"> <img width="322" height="193" src="https://africanbusinessdaily.com/wp-content/uploads/2026/09/Accerated-Discovery-and-Validation.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://africanbusinessdaily.com/wp-content/uploads/2026/09/Accerated-Discovery-and-Validation.jpg 322w, https://africanbusinessdaily.com/wp-content/uploads/2026/09/Accerated-Discovery-and-Validation-300x180.jpg 300w, https://africanbusinessdaily.com/wp-content/uploads/2026/09/Accerated-Discovery-and-Validation-320x193.jpg 320w" sizes="auto, (max-width: 322px) 100vw, 322px" /> </a> </div> <div class="article-content"> <h3 class="entry-title"> <a href="https://africanbusinessdaily.com/steve-blank-ai-and-teaching-the-brave-new-world/" rel="bookmark" title="Steve Clean AI and Instructing – The Courageous New Global community"> Steve Clean AI and Instructing – The Courageous New Global community </a> </h3><!--/.post-title--> <div class="below-entry-meta "> <span class="posted-on"><a href="https://africanbusinessdaily.com/steve-blank-ai-and-teaching-the-brave-new-world/" title="11:23 pm" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="2026-09-23T23:23:52+00:00">September 23, 2026</time><time class="updated" datetime="2026-09-23T23:23:53+00:00">September 23, 2026</time></a></span> <span class="byline"> <span class="author vcard"> <i class="fa fa-user"></i> <a class="url fn n" href="https://africanbusinessdaily.com/author/admin/" title="admin" > admin </a> </span> </span> </div> </div> </div><!--/.related--> <div class="single-related-posts"> <div class="related-posts-thumbnail"> <a href="https://africanbusinessdaily.com/spain-orders-blocks-on-archive-today-and-its-mirrors/" title="Spain Orders Blocks On Archive.in the present day And Its Mirrors"> <img width="390" height="205" src="https://africanbusinessdaily.com/wp-content/uploads/2026/09/VlEW9CtTFnlS-390x205.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="" decoding="async" loading="lazy" /> </a> </div> <div class="article-content"> <h3 class="entry-title"> <a href="https://africanbusinessdaily.com/spain-orders-blocks-on-archive-today-and-its-mirrors/" rel="bookmark" title="Spain Orders Blocks On Archive.in the present day And Its Mirrors"> Spain Orders Blocks On Archive.in the present day And Its Mirrors </a> </h3><!--/.post-title--> <div class="below-entry-meta "> <span class="posted-on"><a href="https://africanbusinessdaily.com/spain-orders-blocks-on-archive-today-and-its-mirrors/" title="6:54 am" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="2026-09-20T06:54:59+00:00">September 20, 2026</time><time class="updated" datetime="2026-09-20T06:55:01+00:00">September 20, 2026</time></a></span> <span class="byline"> <span class="author vcard"> <i class="fa fa-user"></i> <a class="url fn n" href="https://africanbusinessdaily.com/author/admin/" title="admin" > admin </a> </span> </span> </div> </div> </div><!--/.related--> </div><!--/.post-related--> </div> </div><!-- #content --> </div><!-- #primary --> <div id="secondary"> <aside id="text-21" class="widget widget_text clearfix"><h3 class="widget-title"><span>Crypto Market Watch</span></h3> <div class="textwidget"><!-- Cryptocurrency Widgets - Version:- 2.10.3 By Cool Plugins (CoolPlugins.net) --><div id="ccpw-list-widget-7085" class="ccpw-widget"><table class="ccpw_table" style="border:none!important;"><thead> <th>Name</th> <th>Price</th><th>24H (%)</th></thead><tbody><tr id="bitcoin"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" id="bitcoin" alt="bitcoin" src="https://africanbusinessdaily.com/wp-content/plugins/cryptocurrency-price-ticker-widget/assets/coin-logos/bitcoin.svg" width="32"></div><div class="ccpw_coin_info"><span class="name">Bitcoin</span><span class="coin_symbol">(BTC)</span></div></td><td class="price"><div class="price-value">$83,331.00</div></td><td><span class="changes up"><i class="dashicons dashicons-arrow-up" aria-hidden="true"></i>0.26%</span></td></tr><tr id="ethereum"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" id="ethereum" alt="ethereum" src="https://africanbusinessdaily.com/wp-content/plugins/cryptocurrency-price-ticker-widget/assets/coin-logos/ethereum.svg" width="32"></div><div class="ccpw_coin_info"><span class="name">Ethereum</span><span class="coin_symbol">(ETH)</span></div></td><td class="price"><div class="price-value">$2,673.14</div></td><td><span class="changes up"><i class="dashicons dashicons-arrow-up" aria-hidden="true"></i>0.25%</span></td></tr><tr id="tether"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" id="tether" alt="tether" src="https://africanbusinessdaily.com/wp-content/plugins/cryptocurrency-price-ticker-widget/assets/coin-logos/tether.svg" width="32"></div><div class="ccpw_coin_info"><span class="name">Tether</span><span class="coin_symbol">(USDT)</span></div></td><td class="price"><div class="price-value">$1.00</div></td><td><span class="changes down"><i class="dashicons dashicons-arrow-down" aria-hidden="true"></i>-0.01%</span></td></tr><tr id="binancecoin"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" id="binancecoin" alt="binancecoin" src="https://africanbusinessdaily.com/wp-content/plugins/cryptocurrency-price-ticker-widget/assets/coin-logos/binancecoin.svg" width="32"></div><div class="ccpw_coin_info"><span class="name">BNB</span><span class="coin_symbol">(BNB)</span></div></td><td class="price"><div class="price-value">$762.17</div></td><td><span class="changes up"><i class="dashicons dashicons-arrow-up" aria-hidden="true"></i>0.51%</span></td></tr><tr id="ripple"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" id="ripple" alt="ripple" src="https://africanbusinessdaily.com/wp-content/plugins/cryptocurrency-price-ticker-widget/assets/coin-logos/ripple.svg" width="32"></div><div class="ccpw_coin_info"><span class="name">XRP</span><span class="coin_symbol">(XRP)</span></div></td><td class="price"><div class="price-value">$1.50</div></td><td><span class="changes up"><i class="dashicons dashicons-arrow-up" aria-hidden="true"></i>0.65%</span></td></tr><tr id="usd-coin"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" id="usd-coin" alt="usd-coin" src="https://africanbusinessdaily.com/wp-content/plugins/cryptocurrency-price-ticker-widget/assets/coin-logos/usd-coin.svg" width="32"></div><div class="ccpw_coin_info"><span class="name">USDC</span><span class="coin_symbol">(USDC)</span></div></td><td class="price"><div class="price-value">$1.00</div></td><td><span class="changes down"><i class="dashicons dashicons-arrow-down" aria-hidden="true"></i>0.00%</span></td></tr><tr id="solana"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" id="solana" alt="solana" src="https://africanbusinessdaily.com/wp-content/plugins/cryptocurrency-price-ticker-widget/assets/coin-logos/solana.svg" width="32"></div><div class="ccpw_coin_info"><span class="name">Solana</span><span class="coin_symbol">(SOL)</span></div></td><td class="price"><div class="price-value">$119.37</div></td><td><span class="changes up"><i class="dashicons dashicons-arrow-up" aria-hidden="true"></i>1.47%</span></td></tr><tr id="tron"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" id="tron" alt="tron" src="https://africanbusinessdaily.com/wp-content/plugins/cryptocurrency-price-ticker-widget/assets/coin-logos/tron.svg" width="32"></div><div class="ccpw_coin_info"><span class="name">TRON</span><span class="coin_symbol">(TRX)</span></div></td><td class="price"><div class="price-value">$0.336031</div></td><td><span class="changes up"><i class="dashicons dashicons-arrow-up" aria-hidden="true"></i>0.54%</span></td></tr><tr id="figure-heloc"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" alt="Figure Heloc" src="https://assets.coingecko.com/coins/images/68480/large/figure.png"></div><div class="ccpw_coin_info"><span class="name">Figure Heloc</span><span class="coin_symbol">(FIGR_HELOC)</span></div></td><td class="price"><div class="price-value">$1.03</div></td><td><span class="changes up"><i class="dashicons dashicons-arrow-up" aria-hidden="true"></i>2.76%</span></td></tr><tr id="zcash"><td><div class="ccpw_icon ccpw_coin_logo"><img decoding="async" id="zcash" alt="zcash" src="https://africanbusinessdaily.com/wp-content/plugins/cryptocurrency-price-ticker-widget/assets/coin-logos/zcash.svg" width="32"></div><div class="ccpw_coin_info"><span class="name">Zcash</span><span class="coin_symbol">(ZEC)</span></div></td><td class="price"><div class="price-value">$1,408.45</div></td><td><span class="changes up"><i class="dashicons dashicons-arrow-up" aria-hidden="true"></i>1.88%</span></td></tr></tbody></table></div><style type='text/css'>#ccpw-list-widget-7085.ccpw-widget .ccpw_table tr{background-color:#f7f7f7;} #ccpw-list-widget-7085.ccpw-widget .ccpw_table tr th, #ccpw-list-widget-7085.ccpw-widget .ccpw_table tr td, #ccpw-list-widget-7085.ccpw-widget .ccpw_table tr td a{color:#000;}</style> </div> </aside><aside id="text-29" class="widget widget_text clearfix"> <div class="textwidget"><script> atOptions = { 'key' : '572120f6c54f08461396bb4fce8d6eac', 'format' : 'iframe', 'height' : 50, 'width' : 320, 'params' : {} }; </script> <script src="https://www.highrevenueformat.com/572120f6c54f08461396bb4fce8d6eac/invoke.js"></script></div> </aside><aside id="colormag_featured_posts_vertical_widget-8" class="widget widget_featured_posts widget_featured_posts_vertical widget_featured_meta clearfix"> <h3 class="widget-title" style="border-bottom-color:#dd5a5a;"><span style="background-color:#dd5a5a;">Sports</span></h3><div class="first-post"> <div class="single-article clearfix"> <figure><a href="https://africanbusinessdaily.com/mathis-albert-becomes-the-youngest-goal-scorer-for-the-us-mens-national-team-at-17-years-and-140-days/" title="Mathis Albert turns into the youngest purpose scorer for the US Men’s National Team at 17 years and 140 days"><img width="390" height="205" src="https://africanbusinessdaily.com/wp-content/uploads/2026/09/cjAzeHRvYnhsa3NoMeV5IAFQ-KXC64aXmn3wmoOoZcOcylYka6-bQzv2-HAO-390x205.png" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Mathis Albert turns into the youngest purpose scorer for the US Men’s National Team at 17 years and 140 days" title="Mathis Albert turns into the youngest purpose scorer for the US Men’s National Team at 17 years and 140 days" decoding="async" loading="lazy" /></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="https://africanbusinessdaily.com/category/sports/" style="background:#dd5a5a" rel="category tag">Sports</a> </span></div><h3 class="entry-title"> <a href="https://africanbusinessdaily.com/mathis-albert-becomes-the-youngest-goal-scorer-for-the-us-mens-national-team-at-17-years-and-140-days/" title="Mathis Albert turns into the youngest purpose scorer for the US Men’s National Team at 17 years and 140 days"> Mathis Albert turns into the youngest purpose scorer for the US Men’s National Team at 17 years and 140 days </a> </h3><div class="below-entry-meta "><span class="posted-on"><a href="https://africanbusinessdaily.com/mathis-albert-becomes-the-youngest-goal-scorer-for-the-us-mens-national-team-at-17-years-and-140-days/" title="4:01 am" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="2026-09-30T04:01:41+00:00">September 30, 2026</time><time class="updated" datetime="2026-09-30T04:01:43+00:00">September 30, 2026</time></a></span> <span class="byline"> <span class="author vcard"> <i class="fa fa-user"></i> <a class="url fn n" href="https://africanbusinessdaily.com/author/admin/" title="admin" > admin </a> </span> </span> </div> <div class="entry-content"> <p> submitted by /u/Falcor626 [comments] Source link</p> </div> </div> </div> </div><div class="following-post"> <div class="single-article clearfix"> <figure><a href="https://africanbusinessdaily.com/no-tv-no-smartphone-just-a-phone-call-how-neeru-dhandas-gold-reached-her-mother/" title="No TV, no smartphone, only a cellphone name: How Neeru Dhanda’s gold reached her mom"><img width="130" height="90" src="https://africanbusinessdaily.com/wp-content/uploads/2026/09/1790739034_photo-130x90.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="No TV, no smartphone, only a cellphone name: How Neeru Dhanda’s gold reached her mom" title="No TV, no smartphone, only a cellphone name: How Neeru Dhanda’s gold reached her mom" decoding="async" loading="lazy" srcset="https://africanbusinessdaily.com/wp-content/uploads/2026/09/1790739034_photo-130x90.jpg 130w, https://africanbusinessdaily.com/wp-content/uploads/2026/09/1790739034_photo-392x272.jpg 392w" sizes="auto, (max-width: 130px) 100vw, 130px" /></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="https://africanbusinessdaily.com/category/sports/" style="background:#dd5a5a" rel="category tag">Sports</a> </span></div><h3 class="entry-title"> <a href="https://africanbusinessdaily.com/no-tv-no-smartphone-just-a-phone-call-how-neeru-dhandas-gold-reached-her-mother/" title="No TV, no smartphone, only a cellphone name: How Neeru Dhanda’s gold reached her mom"> No TV, no smartphone, only a cellphone name: How Neeru Dhanda’s gold reached her mom </a> </h3><div class="below-entry-meta "><span class="posted-on"><a href="https://africanbusinessdaily.com/no-tv-no-smartphone-just-a-phone-call-how-neeru-dhandas-gold-reached-her-mother/" title="3:30 am" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="2026-09-30T03:30:34+00:00">September 30, 2026</time><time class="updated" datetime="2026-09-30T03:30:35+00:00">September 30, 2026</time></a></span> <span class="byline"> <span class="author vcard"> <i class="fa fa-user"></i> <a class="url fn n" href="https://africanbusinessdaily.com/author/admin/" title="admin" > admin </a> </span> </span> </div> </div> </div> </div></aside><aside id="text-17" class="widget widget_text clearfix"> <div class="textwidget"><script> atOptions = { 'key' : 'aff680909c7b54523310c67932d81398', 'format' : 'iframe', 'height' : 250, 'width' : 300, 'params' : {} }; </script> <script src="https://www.highrevenueformat.com/aff680909c7b54523310c67932d81398/invoke.js"></script></div> </aside><aside id="colormag_featured_posts_vertical_widget-6" class="widget widget_featured_posts widget_featured_posts_vertical widget_featured_meta clearfix"> <h3 class="widget-title" style="border-bottom-color:#6ac4c2;"><span style="background-color:#6ac4c2;">Business</span></h3><div class="first-post"> <div class="single-article clearfix"> <figure><a href="https://africanbusinessdaily.com/the-standard-of-living-review-rory-kinnear-has-bags-of-charm-as-bloomsbury-economist-keynes-stage/" title="The Normal of Dwelling assessment – Rory Kinnear has baggage of attraction as Bloomsbury economist Keynes | Stage"><img width="390" height="205" src="https://africanbusinessdaily.com/wp-content/uploads/2026/09/1790739371_3333-390x205.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="The Normal of Dwelling assessment – Rory Kinnear has baggage of attraction as Bloomsbury economist Keynes | Stage" title="The Normal of Dwelling assessment – Rory Kinnear has baggage of attraction as Bloomsbury economist Keynes | Stage" decoding="async" loading="lazy" srcset="https://africanbusinessdaily.com/wp-content/uploads/2026/09/1790739371_3333-390x205.jpg 390w, https://africanbusinessdaily.com/wp-content/uploads/2026/09/1790739371_3333-300x158.jpg 300w, https://africanbusinessdaily.com/wp-content/uploads/2026/09/1790739371_3333-1024x538.jpg 1024w, https://africanbusinessdaily.com/wp-content/uploads/2026/09/1790739371_3333-768x403.jpg 768w, https://africanbusinessdaily.com/wp-content/uploads/2026/09/1790739371_3333.jpg 1200w" sizes="auto, (max-width: 390px) 100vw, 390px" /></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="https://africanbusinessdaily.com/category/business/" style="background:#6ac4c2" rel="category tag">Business</a> </span></div><h3 class="entry-title"> <a href="https://africanbusinessdaily.com/the-standard-of-living-review-rory-kinnear-has-bags-of-charm-as-bloomsbury-economist-keynes-stage/" title="The Normal of Dwelling assessment – Rory Kinnear has baggage of attraction as Bloomsbury economist Keynes | Stage"> The Normal of Dwelling assessment – Rory Kinnear has baggage of attraction as Bloomsbury economist Keynes | Stage </a> </h3><div class="below-entry-meta "><span class="posted-on"><a href="https://africanbusinessdaily.com/the-standard-of-living-review-rory-kinnear-has-bags-of-charm-as-bloomsbury-economist-keynes-stage/" title="3:36 am" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="2026-09-30T03:36:11+00:00">September 30, 2026</time><time class="updated" datetime="2026-09-30T03:36:12+00:00">September 30, 2026</time></a></span> <span class="byline"> <span class="author vcard"> <i class="fa fa-user"></i> <a class="url fn n" href="https://africanbusinessdaily.com/author/admin/" title="admin" > admin </a> </span> </span> </div> <div class="entry-content"> <p>Not everybody will know that the Bloomsbury group had a jobbing economist amongst them. One with celebrity standing and a</p> </div> </div> </div> </div><div class="following-post"> <div class="single-article clearfix"> <figure><a href="https://africanbusinessdaily.com/retired-couple-with-1-4-million-pays-0-tax-on-a-52000-stock-gain-the-window-closes-dec-31/" title="Retired Couple With $1.4 Million Pays $0 Tax on a $52,000 Inventory Acquire. The Window Closes Dec. 31"><img width="130" height="90" src="https://africanbusinessdaily.com/wp-content/uploads/2026/09/https3A2F2Fmedia.zenfs_.com2Fen2F24_7_wall_st__7182F625ef419b9639227fcb2a60268f14d3c-130x90.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Retired Couple With $1.4 Million Pays $0 Tax on a $52,000 Inventory Acquire. The Window Closes Dec. 31" title="Retired Couple With $1.4 Million Pays $0 Tax on a $52,000 Inventory Acquire. The Window Closes Dec. 31" decoding="async" loading="lazy" srcset="https://africanbusinessdaily.com/wp-content/uploads/2026/09/https3A2F2Fmedia.zenfs_.com2Fen2F24_7_wall_st__7182F625ef419b9639227fcb2a60268f14d3c-130x90.jpg 130w, https://africanbusinessdaily.com/wp-content/uploads/2026/09/https3A2F2Fmedia.zenfs_.com2Fen2F24_7_wall_st__7182F625ef419b9639227fcb2a60268f14d3c-392x272.jpg 392w" sizes="auto, (max-width: 130px) 100vw, 130px" /></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="https://africanbusinessdaily.com/category/business/" style="background:#6ac4c2" rel="category tag">Business</a> </span></div><h3 class="entry-title"> <a href="https://africanbusinessdaily.com/retired-couple-with-1-4-million-pays-0-tax-on-a-52000-stock-gain-the-window-closes-dec-31/" title="Retired Couple With $1.4 Million Pays $0 Tax on a $52,000 Inventory Acquire. The Window Closes Dec. 31"> Retired Couple With $1.4 Million Pays $0 Tax on a $52,000 Inventory Acquire. The Window Closes Dec. 31 </a> </h3><div class="below-entry-meta "><span class="posted-on"><a href="https://africanbusinessdaily.com/retired-couple-with-1-4-million-pays-0-tax-on-a-52000-stock-gain-the-window-closes-dec-31/" title="2:34 am" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="2026-09-30T02:34:11+00:00">September 30, 2026</time><time class="updated" datetime="2026-09-30T02:34:13+00:00">September 30, 2026</time></a></span> <span class="byline"> <span class="author vcard"> <i class="fa fa-user"></i> <a class="url fn n" href="https://africanbusinessdaily.com/author/admin/" title="admin" > admin </a> </span> </span> </div> </div> </div> </div></aside> </div> </div><!-- .inner-wrap --> </div><!-- #main --> <div class="advertisement_above_footer"> <div class="inner-wrap"> <aside id="text-27" class="widget widget_text clearfix"> <div class="textwidget"><script> atOptions = { 'key' : '1f8b16270d173a514d3502a511249a7f', 'format' : 'iframe', 'height' : 90, 'width' : 728, 'params' : {} }; </script> <script src="https://www.highrevenueformat.com/1f8b16270d173a514d3502a511249a7f/invoke.js"></script></div> </aside> </div> </div> <footer id="colophon" class="clearfix "> <div class="footer-widgets-wrapper"> <div class="inner-wrap"> <div class="footer-widgets-area clearfix"> <div class="tg-upper-footer-widgets clearfix"> <div class="footer_upper_widget_area tg-one-third"> </div> <div class="footer_upper_widget_area tg-one-third"> </div> <div class="footer_upper_widget_area tg-one-third tg-one-third-last"> </div> </div> <div class="tg-footer-main-widget"> <div class="tg-first-footer-widget"> <aside id="recent-posts-3" class="widget widget_recent_entries clearfix"> <h3 class="widget-title"><span>Latest News</span></h3> <ul> <li> <a href="https://africanbusinessdaily.com/canadian-defence-firm-pitches-containerized-drone-factories-for-the-arctic/">Canadian defence agency pitches containerized drone factories for the Arctic</a> <span class="post-date">September 30, 2026</span> </li> <li> <a href="https://africanbusinessdaily.com/anthropic-to-seek-2-trillion-ipo-valuation/">Anthropic to Search $2 Trillion IPO Valuation</a> <span class="post-date">September 30, 2026</span> </li> <li> <a href="https://africanbusinessdaily.com/dont-throw-away-your-old-router-do-this-instead/">Don’t Throw Away Your Old Router — Do This Instead</a> <span class="post-date">September 30, 2026</span> </li> <li> <a href="https://africanbusinessdaily.com/top-ai-and-tech-firms-sign-morally-binding-accord-to-self-police-development-after-meeting-at-white-house/">High AI and tech companies signal ‘morally binding’ accord to ‘self-police’ growth after assembly at White House</a> <span class="post-date">September 30, 2026</span> </li> <li> <a href="https://africanbusinessdaily.com/it-engineer-us-at-environmental-management-authority/">IT Engineer, US at Environmental Management Authority</a> <span class="post-date">September 30, 2026</span> </li> <li> <a href="https://africanbusinessdaily.com/mathis-albert-becomes-the-youngest-goal-scorer-for-the-us-mens-national-team-at-17-years-and-140-days/">Mathis Albert turns into the youngest purpose scorer for the US Men’s National Team at 17 years and 140 days</a> <span class="post-date">September 30, 2026</span> </li> <li> <a href="https://africanbusinessdaily.com/scratch-turns-anyone-into-an-app-maker-even-if-youve-never-written-a-line-of-code/">Scratch turns anybody into an app maker, even for those who’ve by no means written a line of code</a> <span class="post-date">September 30, 2026</span> </li> </ul> </aside> </div> </div> <div class="tg-footer-other-widgets"> <div class="tg-second-footer-widget"> <aside id="categories-7" class="widget widget_categories clearfix"><h3 class="widget-title"><span>Categories</span></h3> <ul> <li class="cat-item cat-item-3"><a href="https://africanbusinessdaily.com/category/business/">Business</a> (314) </li> <li class="cat-item cat-item-5"><a href="https://africanbusinessdaily.com/category/diy/">DIY</a> (569) </li> <li class="cat-item cat-item-766"><a href="https://africanbusinessdaily.com/category/entertainment/">Entertainment</a> (258) </li> <li class="cat-item cat-item-10"><a href="https://africanbusinessdaily.com/category/fashion/">Fashion</a> (472) </li> <li class="cat-item cat-item-7"><a href="https://africanbusinessdaily.com/category/investing/">Investing</a> (315) </li> <li class="cat-item cat-item-763"><a href="https://africanbusinessdaily.com/category/jobs/">Jobs</a> (562) </li> <li class="cat-item cat-item-6"><a href="https://africanbusinessdaily.com/category/sports/">Sports</a> (562) </li> <li class="cat-item cat-item-765"><a href="https://africanbusinessdaily.com/category/startups/">Startups</a> (319) </li> <li class="cat-item cat-item-2"><a href="https://africanbusinessdaily.com/category/technology/">Technology</a> (319) </li> <li class="cat-item cat-item-4"><a href="https://africanbusinessdaily.com/category/top-stories/">Top Stories</a> (441) </li> <li class="cat-item cat-item-8"><a href="https://africanbusinessdaily.com/category/trade-policy/">Trade Policy</a> (68) </li> <li class="cat-item cat-item-1"><a href="https://africanbusinessdaily.com/category/uncategorized/">Uncategorized</a> (1) </li> <li class="cat-item cat-item-13"><a href="https://africanbusinessdaily.com/category/world/">World</a> (437) </li> </ul> </aside> </div> <div class="tg-third-footer-widget"> <aside id="tag_cloud-4" class="widget widget_tag_cloud clearfix"><h3 class="widget-title"><span>Tags</span></h3><div class="tagcloud"><a href="https://africanbusinessdaily.com/category/business/" class="tag-cloud-link tag-link-3 tag-link-position-1" style="font-size: 20.520325203252pt;" aria-label="Business (314 items)">Business</a> <a href="https://africanbusinessdaily.com/category/diy/" class="tag-cloud-link tag-link-5 tag-link-position-2" style="font-size: 22pt;" aria-label="DIY (569 items)">DIY</a> <a href="https://africanbusinessdaily.com/category/entertainment/" class="tag-cloud-link tag-link-766 tag-link-position-3" style="font-size: 20.008130081301pt;" aria-label="Entertainment (258 items)">Entertainment</a> <a href="https://africanbusinessdaily.com/category/fashion/" class="tag-cloud-link tag-link-10 tag-link-position-4" style="font-size: 21.487804878049pt;" aria-label="Fashion (472 items)">Fashion</a> <a href="https://africanbusinessdaily.com/category/investing/" class="tag-cloud-link tag-link-7 tag-link-position-5" style="font-size: 20.520325203252pt;" aria-label="Investing (315 items)">Investing</a> <a href="https://africanbusinessdaily.com/category/jobs/" class="tag-cloud-link tag-link-763 tag-link-position-6" style="font-size: 21.943089430894pt;" aria-label="Jobs (562 items)">Jobs</a> <a href="https://africanbusinessdaily.com/category/sports/" class="tag-cloud-link tag-link-6 tag-link-position-7" style="font-size: 21.943089430894pt;" aria-label="Sports (562 items)">Sports</a> <a href="https://africanbusinessdaily.com/category/startups/" class="tag-cloud-link tag-link-765 tag-link-position-8" style="font-size: 20.577235772358pt;" aria-label="Startups (319 items)">Startups</a> <a href="https://africanbusinessdaily.com/category/technology/" class="tag-cloud-link tag-link-2 tag-link-position-9" style="font-size: 20.577235772358pt;" aria-label="Technology (319 items)">Technology</a> <a href="https://africanbusinessdaily.com/category/top-stories/" class="tag-cloud-link tag-link-4 tag-link-position-10" style="font-size: 21.373983739837pt;" aria-label="Top Stories (441 items)">Top Stories</a> <a href="https://africanbusinessdaily.com/category/trade-policy/" class="tag-cloud-link tag-link-8 tag-link-position-11" style="font-size: 16.764227642276pt;" aria-label="Trade Policy (68 items)">Trade Policy</a> <a href="https://africanbusinessdaily.com/category/uncategorized/" class="tag-cloud-link tag-link-1 tag-link-position-12" style="font-size: 8pt;" aria-label="Uncategorized (1 item)">Uncategorized</a> <a href="https://africanbusinessdaily.com/category/world/" class="tag-cloud-link tag-link-13 tag-link-position-13" style="font-size: 21.317073170732pt;" aria-label="World (437 items)">World</a></div> </aside> </div> <div class="tg-fourth-footer-widget"> <aside id="text-20" class="widget widget_text clearfix"> <div class="textwidget"><script> atOptions = { 'key' : '469e244dcfed43aca9942808d2c19e9b', 'format' : 'iframe', 'height' : 300, 'width' : 160, 'params' : {} }; </script> <script src="https://www.highrevenueformat.com/469e244dcfed43aca9942808d2c19e9b/invoke.js"></script></div> </aside> </div> </div> <div class="footer-full-width-sidebar inner-wrap clearfix"> </div> </div> </div> </div> <div class="footer-socket-wrapper clearfix"> <div class="inner-wrap"> <div class="footer-socket-area"> <div class="footer-socket-right-section"> <div class="social-links clearfix"> <ul> <li><a href="#" target="_blank"><i class="fa fa-facebook"></i></a></li><li><a href="https://x.com/afbdaily" target="_blank"><i class="fa fa-twitter"></i></a></li><li><a href="#" target="_blank"><i class="fa fa-google-plus"></i></a></li><li><a href="#" target="_blank"><i class="fa fa-instagram"></i></a></li><li><a href="#" target="_blank"><i class="fa fa-pinterest"></i></a></li><li><a href="#" target="_blank"><i class="fa fa-youtube"></i></a></li> </ul> </div><!-- .social-links --> <nav class="footer-menu clearfix"> </nav> </div> <div class="footer-socket-left-section"> <div class="copyright"><p><a href="https://africanbusinessdaily.com/" title="African Business Daily" ><span>African Business Daily</span></a> © 2026 Powered by Insight, Curated by <a href="https://www.linkedin.com/in/wamono-moses/" target="_blank" rel="noopener">Wamono Moses</a>.</p></div> </div> </div><!-- .footer-socket-area --> </div><!-- .inner-wrap --> </div><!-- .footer-socket-wrapper --> </footer><!-- #colophon --> <a href="#masthead" id="scroll-up"><i class="fa fa-chevron-up"></i></a> </div><!-- #page --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/colormag-pro/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script type="text/javascript"> var c = document.body.className; c = c.replace( /everest-forms-no-js/, 'everest-forms-js' ); document.body.className = c; </script> <script id="colormag-sticky-menu-js" src="https://africanbusinessdaily.com/wp-content/themes/colormag-pro/js/sticky/jquery.sticky.min.js?ver=3.2.1"></script> <script id="colormag-news-ticker-js" src="https://africanbusinessdaily.com/wp-content/themes/colormag-pro/js/news-ticker/jquery.newsTicker.min.js?ver=3.2.1"></script> <script id="colormag-featured-image-popup-js" src="https://africanbusinessdaily.com/wp-content/themes/colormag-pro/js/magnific-popup/jquery.magnific-popup.min.js?ver=3.2.1"></script> <script id="colormag-navigation-js" src="https://africanbusinessdaily.com/wp-content/themes/colormag-pro/js/navigation.min.js?ver=3.2.1"></script> <script id="colormag-fitvids-js" src="https://africanbusinessdaily.com/wp-content/themes/colormag-pro/js/fitvids/jquery.fitvids.min.js?ver=3.2.1"></script> <script id="GoogleMaps-js" src="//maps.googleapis.com/maps/api/js?key=AIzaSyCHHFfq2gFFoqNivAiUwjmp_pOspLIxDG8&ver=3.2.1"></script> <script id="colormag-skip-link-focus-fix-js" src="https://africanbusinessdaily.com/wp-content/themes/colormag-pro/js/skip-link-focus-fix.min.js?ver=3.2.1"></script> <script id="colormag-custom-js-extra"> var colormag_ticker_settings = {"breaking_news_slide_effect":"down","breaking_news_duration":"4000","breaking_news_speed":"1000"}; var colormag_load_more = {"tg_nonce":"5fc84d9f82","ajax_url":"https://africanbusinessdaily.com/wp-admin/admin-ajax.php"}; //# sourceURL=colormag-custom-js-extra </script> <script id="colormag-custom-js" src="https://africanbusinessdaily.com/wp-content/themes/colormag-pro/js/colormag-custom.min.js?ver=3.2.1"></script> <script id="colormag-loadmore-js-extra"> var colormag_script_vars = {"no_more_posts":"No more post"}; //# sourceURL=colormag-loadmore-js-extra </script> <script id="colormag-loadmore-js" src="https://africanbusinessdaily.com/wp-content/themes/colormag-pro/js/loadmore.min.js?ver=3.2.1"></script> <script id="colormag-infinite-scroll-js-extra"> var colormagInfiniteScrollParams = {"isSinglePost":"","queryVars":"{\"page\":0,\"name\":\"deser-rethinking-rust-serialization-armin-ronachers-thoughts-and-writings\",\"error\":\"\",\"m\":\"\",\"p\":0,\"post_parent\":\"\",\"subpost\":\"\",\"subpost_id\":\"\",\"attachment\":\"\",\"attachment_id\":0,\"pagename\":\"\",\"page_id\":0,\"second\":\"\",\"minute\":\"\",\"hour\":\"\",\"day\":0,\"monthnum\":0,\"year\":0,\"w\":0,\"category_name\":\"\",\"tag\":\"\",\"cat\":\"\",\"tag_id\":\"\",\"author\":\"\",\"author_name\":\"\",\"feed\":\"\",\"tb\":\"\",\"paged\":0,\"meta_key\":\"\",\"meta_value\":\"\",\"preview\":\"\",\"s\":\"\",\"sentence\":\"\",\"title\":\"\",\"fields\":\"all\",\"menu_order\":\"\",\"embed\":\"\",\"category__in\":[],\"category__not_in\":[],\"category__and\":[],\"post__in\":[],\"post__not_in\":[],\"post_name__in\":[],\"tag__in\":[],\"tag__not_in\":[],\"tag__and\":[],\"tag_slug__in\":[],\"tag_slug__and\":[],\"post_parent__in\":[],\"post_parent__not_in\":[],\"author__in\":[],\"author__not_in\":[],\"search_columns\":[],\"ignore_sticky_posts\":false,\"suppress_filters\":false,\"cache_results\":true,\"update_post_term_cache\":true,\"update_menu_item_cache\":false,\"lazy_load_term_meta\":true,\"update_post_meta_cache\":true,\"post_type\":\"\",\"posts_per_page\":10,\"nopaging\":false,\"comments_per_page\":\"50\",\"no_found_rows\":false,\"order\":\"DESC\"}","ajaxUrl":"https://africanbusinessdaily.com/wp-admin/admin-ajax.php","infiniteCount":"2","infiniteTotal":"0","pagination":"default","infiniteScrollEvent":"button","infiniteNonce":"893e560c9e","allPostsLoadedMessage":"All Posts Loaded"}; //# sourceURL=colormag-infinite-scroll-js-extra </script> <script id="colormag-infinite-scroll-js" src="https://africanbusinessdaily.com/wp-content/themes/colormag-pro/js/infinite-scroll.min.js?ver=3.2.1"></script> <script id="googlesitekit-consent-mode-js" src="https://africanbusinessdaily.com/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-consent-mode-755f1678e260138d789e.js"></script> <script id="advanced-ads-find-adblocker-js" src="https://africanbusinessdaily.com/wp-content/plugins/advanced-ads/admin/assets/js/advertisement.js"></script> <script id="js-cookie-js" src="https://africanbusinessdaily.com/wp-content/plugins/wp-review/public/js/js.cookie.min.js?ver=2.1.4"></script> <script id="underscore-js" src="https://africanbusinessdaily.com/wp-includes/js/underscore.min.js?ver=1.13.8"></script> <script id="wp-util-js-extra"> var _wpUtilSettings = {"ajax":{"url":"/wp-admin/admin-ajax.php"}}; //# sourceURL=wp-util-js-extra </script> <script id="wp-util-js" src="https://africanbusinessdaily.com/wp-includes/js/wp-util.min.js?ver=7.1.2"></script> <script id="wp_review-js-js-extra"> var wpreview = {"ajaxurl":"https://africanbusinessdaily.com/wp-admin/admin-ajax.php","loginRequiredMessage":"You must log in to add your review"}; //# sourceURL=wp_review-js-js-extra </script> <script id="wp_review-js-js" src="https://africanbusinessdaily.com/wp-content/plugins/wp-review/public/js/main.js?ver=5.3.5"></script> <script id="googlesitekit-events-provider-content-events-js-before"> window._googlesitekit = window._googlesitekit || {}; window._googlesitekit.contentEvents = {"postID":43079,"isSinglePost":true,"hasVimeoEmbed":false}; //# sourceURL=googlesitekit-events-provider-content-events-js-before </script> <script id="googlesitekit-events-provider-content-events-js" src="https://africanbusinessdaily.com/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-content-events-c7172f3fd0e4d5ad62ef.js" defer></script> <script id="wp-consent-api-js-extra"> var consent_api = {"consent_type":"","waitfor_consent_hook":"","cookie_expiration":"30","cookie_prefix":"wp_consent","services":[]}; //# sourceURL=wp-consent-api-js-extra </script> <script id="wp-consent-api-js" src="https://africanbusinessdaily.com/wp-content/plugins/wp-consent-api/assets/js/wp-consent-api.min.js?ver=2.1.0"></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://africanbusinessdaily.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} </script> <script type="module"> /*! This file is auto-generated */ var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); //# sourceURL=https://africanbusinessdaily.com/wp-includes/js/wp-emoji-loader.min.js </script> <script>!function(){window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[],advanced_ads_ready_queue.push=window.advanced_ads_ready;for(var d=0,a=advanced_ads_ready_queue.length;d<a;d++)advanced_ads_ready(advanced_ads_ready_queue[d])}();</script><script src="https://pl31542675.profitableratecpmnetwork.com/50/6f/6a/506f6a4356fe8a7e7fdc5a468fbe4e4d.js"></script> </body> </html>