<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[koodos labs]]></title><description><![CDATA[Building & enabling agentic* cultural products]]></description><link>https://blog.koodos.com</link><image><url>https://substackcdn.com/image/fetch/$s_!ik8L!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc740f03-fbd4-494f-bf05-df9049be08be_800x800.png</url><title>koodos labs</title><link>https://blog.koodos.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 21 Apr 2026 01:39:33 GMT</lastBuildDate><atom:link href="https://blog.koodos.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Koodos, inc.]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[koodos@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[koodos@substack.com]]></itunes:email><itunes:name><![CDATA[jad]]></itunes:name></itunes:owner><itunes:author><![CDATA[jad]]></itunes:author><googleplay:owner><![CDATA[koodos@substack.com]]></googleplay:owner><googleplay:email><![CDATA[koodos@substack.com]]></googleplay:email><googleplay:author><![CDATA[jad]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Personal Context Infrastructure]]></title><description><![CDATA[The next wave of personal technology]]></description><link>https://blog.koodos.com/p/personal-context-infrastructure</link><guid isPermaLink="false">https://blog.koodos.com/p/personal-context-infrastructure</guid><dc:creator><![CDATA[jad]]></dc:creator><pubDate>Mon, 13 Oct 2025 21:50:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EZ77!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EZ77!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EZ77!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png 424w, https://substackcdn.com/image/fetch/$s_!EZ77!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png 848w, https://substackcdn.com/image/fetch/$s_!EZ77!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png 1272w, https://substackcdn.com/image/fetch/$s_!EZ77!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EZ77!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png" width="1344" height="896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:896,&quot;width&quot;:1344,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:780770,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.koodos.com/i/176048362?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EZ77!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png 424w, https://substackcdn.com/image/fetch/$s_!EZ77!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png 848w, https://substackcdn.com/image/fetch/$s_!EZ77!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png 1272w, https://substackcdn.com/image/fetch/$s_!EZ77!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3db9dc-bb96-4222-b85b-5c041a51cb14_1344x896.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p><strong>Context</strong>: All signals available to a system at a given moment - from environmental cues and device state to user history and intent - woven into patterns that drive personalization and interaction. Context goes beyond raw data by adding interpretation. It&#8217;s dynamic and situational, potentially changing minute to minute, and often paired with a <em>context window</em> that defines how much information - and how recent - a model can process.</p><p><strong>Memory</strong>: The persistent layer of context carried forward across sessions - a lasting understanding of user preferences, behaviors, and past interactions. Memory is durable but not immutable &#8212; it can be updated, pruned, or reweighted, allowing experiences to improve over time through cumulative learning.</p><p><strong>Personal Context Infrastructure (also referred to as Personal Memory Platform)</strong>: Systems that aggregate, store, update, and share a user&#8217;s context across services, under the user&#8217;s control. It&#8217;s foundational to agentic software and personalized AI.</p></div><p></p><p><strong>Personal Context Infrastructure is the most important evolution in personal technology since social media.</strong></p><p>The social internet gave us a way to create online - to participate through our content. Social networking first used this power to bring connection, mapping our friends, relationships, and communities. Then social media grew to eclipse it, turning friendship into followership and connection into performance - fueling the creator economy, influencer commerce, and entire cultural movements.</p><p>Personal Context Infrastructure will bring the personal internet&#8212;the intelligent internet. It provides the missing layer that transforms software from generic tools into personalized intelligence that understands you, adapts to you, and acts on your behalf.</p><p>Today&#8217;s AI looks magical in demos but feels shallow in practice because it works with fragments of your story. You&#8217;re forced to keep prompting and retraining - repeating yourself across disconnected services. Context is gathered in pieces, yet the whole of who you are - and what you need - remains just out of reach.</p><h2><strong>The Current Fragmentation Problem</strong></h2><p>ChatGPT doesn&#8217;t know your communication style, your calendar app doesn&#8217;t understand your energy patterns, your streaming service doesn&#8217;t know what you&#8217;re working on this week.</p><p>Each service starts from zero, forcing endless onboarding processes that never quite capture who you really are. This fragmentation fundamentally limits what AI can do for you - the most powerful AI capabilities require rich context for understanding preferences, predicting needs, automating decisions, and taking autonomous actions.</p><p>The problem is that today the stitching together of all this context falls on us. We type, search, compare, and repeat. That is why online shopping feels like work instead of a red carpet experience. It&#8217;s 2025: software shouldn&#8217;t feel like filling forms.</p><p>Personal Context Infrastructure is the intelligent layer that aggregates and interprets the full picture of who you are across your digital life - under your control. Software should serve your life first, not a company&#8217;s quarterly goals.</p><p>Context is what software knows about you right now; memory is what it carries forward and refines over time. Personal Context Infrastructure connects the two, allowing software to remember you - not just respond.</p><p>It turns scattered data fragments into a portable digital identity that flows seamlessly between services on your terms. Think of it as your personal context server - a living memory that belongs to you, continuously enriched by your experiences and guided by your preferences - your LEARNINGS.md for digital life.</p><h2><strong>The Three Fronts of Change</strong></h2><h3><strong>Rethinking the Business Model</strong></h3><p>Today&#8217;s platforms build moats by hoarding your context&#8212;locking it inside walled gardens optimized for time on platform and ad yield. In the process, they fracture your memory across services. Personal Memory Patforms demand new economics: platforms that earn a <em>share of your identity</em>, not your time, and business models that thrive on <em>user-permissioned context liquidity</em> instead of lock-in. See our 2024 paper on the topic <a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5025403">here</a>.</p><h3><strong>Rebuilding the Technical Architecture</strong></h3><p>Personal Context Infrastructure must be user-controlled by design. Your memory lives on your turf, accessible only on your terms. The context can go where you choose. This is becoming a reality with <em><a href="https://standards.ieee.org/ieee/7012/7192/">IEEE P7012 Draft Standard for Machine Readable Personal Terms</a></em> (i.e. &#8220;MyTerms&#8221;), which has been in the works since 2017 and is now on track for publication early next year.</p><blockquote><p>&#8220;MyTerms are contractual agreements about personal privacy that <em>you</em> proffer as the first party, and the company agrees to as the second party. With MyTerms, you don&#8217;t &#8220;consent&#8221; to the company&#8217;s privacy policies. They agree to your privacy requirements, which will limit the use of tracking tech to only what you allow. You are not a mere &#8220;user&#8221; or &#8220;client.&#8221; You are an independent human being operating with full agency.&#8221;</p></blockquote><p>Shelf will ensure this is true with our hybrid, local-first approach and user-set privacy policies. Individuals will be able to decide how their context is shared, and apps must adhere to those terms.</p><h3><strong>Earning the Right to Context</strong></h3><p>Context isn&#8217;t merely captured - it&#8217;s <strong>earned.</strong> It comes through interfaces that invite authentic sharing from people who trust you with their digital memory. To be the trusted personal context server, you must prove - consistently and in practice - that you serve the individual, not the system. Trust is earned when people see that their history is theirs to interpret, move, and share - and that your infrastructure protects that boundary every time.</p><p>The most powerful signals come from vertical surfaces - each with its own unique affordances. ChatGPT will never know your music taste like Spotify or your watching habits like YouTube; each platform captures a different slice of context.</p><p>You can&#8217;t build Personal Context Infrastructure in a vacuum. You must fit naturally within each person&#8217;s digital ecosystem - earning trust and becoming the home for their digital memory.</p><h2><strong>Why koodos Is Uniquely Positioned</strong></h2><p>Most companies attempting this space are missing critical pieces:</p><ul><li><p>AI companies build general-purpose interfaces that miss the high-signal context within specific verticals</p></li><li><p>Privacy advocates often build technically sound solutions that real people don&#8217;t want to use</p></li><li><p>Consumer apps generate engaging experiences and excel at capturing specific types of context, but each operates within its own domain</p></li></ul><p>Consumer apps aren&#8217;t the problem: they&#8217;re solving real user needs and building valuable context within their verticals. The challenge is that this context remains isolated, preventing the seamless personalization users deserve across their entire digital experience. Anyone building apps today should think deeply about how their products can know the user and act on their behalf - without re-creating the infrastructure from scratch.</p><p>With Shelf, we&#8217;re building the technical core - context ingestion, inference, and permissioning - that keeps memory under user control. But we&#8217;re building more than technology; technology matters only when culture adopts it. Millions already use Shelf to connect their services and keep a digital record of their lives. Shelf isn&#8217;t just what you listened to, watched, read or consumed - it&#8217;s a portrait of you: your year, your growth, and the culture you belong to. When something appears on more than one person&#8217;s Shelf, it becomes culture. For Shelf to feel like a companion rather than inventory management, it must move at the speed of you, your community, and culture at large. We&#8217;re building a brand that not only reflects culture - it <a href="https://blog.koodos.com/p/why-did-a-tech-startup-hire-the-managing">drives it</a>.  </p><h2><strong>Context Is All You Need</strong></h2><p>Context is becoming the most valuable currency of the digital age - it will decide which AI services survive in a hyper-personalized future where actions are taken for you. That power must be distributed and placed in service of the individual.</p><p>The question isn&#8217;t whether Personal Context Infrastructure will be built &#8211; it&#8217;s who will build it and whose interests it will serve.</p><p>We believe it should serve yours, enabling AI that amplifies human potential while preserving and strengthening human agency. Not by competing with the services you love, but by helping them understand you better, on your terms.</p><p>Context is all you need. Make sure it belongs to you.</p><div><hr></div><p>FYI: still figuring out if I prefer personal context infrastructure, or personal memory platform. WDYT?</p>]]></content:encoded></item><item><title><![CDATA[When Half a Billion Tiny Files Broke Our Best Laid Plans]]></title><description><![CDATA[A tale of hubris, scale, and sometimes just using a really big machine]]></description><link>https://blog.koodos.com/p/when-half-a-billion-tiny-files-broke</link><guid isPermaLink="false">https://blog.koodos.com/p/when-half-a-billion-tiny-files-broke</guid><dc:creator><![CDATA[Luis Fernandez]]></dc:creator><pubDate>Tue, 23 Sep 2025 18:02:25 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7d35cabf-ddda-4126-a7ab-8e0821d414a7_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>A tale of hubris, scale, and sometimes just using a really big machine</em></p><p>So here&#8217;s how we learned that 500 million tiny files will humble every &#8220;proper&#8221; engineering approach you can think of.</p><p>It started innocently enough. We needed to backfill our data warehouse as part of our new Ingestion Pipeline. Migrate all our historical consumption data from the old S3 bucket format to our shiny new warehouse ready structure. How hard could it be?</p><p>We had two buckets to deal with:</p><ul><li><p><strong>datamover bucket</strong>: 50M files (11M actually had data)</p></li><li><p><strong>raw-consumptions bucket</strong>: 500M files across ~1.7M users</p></li></ul><p>The datamover bucket was going to be our practice round. Get the approach right on 11M files, then scale it up to 500M. Classic engineering, start small, iterate, then scale.</p><p>Spoiler alert: sometimes &#8220;scale it up&#8221; breaks everything you thought you knew.</p><h2>Act I: The Proper Engineering Approach</h2><p><em>&#8220;Let&#8217;s do this right. Database indexes, sequential processing, proper state management.&#8221;</em></p><p>We built what any engineer would build for a data migration:</p><pre><code><code>create table migration_file_index
(
    id              bigserial primary key,
    s3_key          text not null unique,
    platform        text not null,
    job_enqueued_at timestamp with time zone not null,
    file_size       bigint not null,
    processed       boolean default false,
    created_at      timestamp with time zone default now()
);
</code></code></pre><p>With proper indexes, of course, we are professionals:</p><pre><code><code>create index idx_migration_sort
    on migration_file_index (platform, job_enqueued_at)
    where (NOT processed);

create index idx_migration_resume
    on migration_file_index (processed, id);

create index idx_migration_platform_stats
    on migration_file_index (platform, processed);
</code></code></pre><p>The architecture was clean:</p><ul><li><p><strong>DatabaseIndexer</strong>: Catalog all S3 files that had data into Postgres</p></li><li><p><strong>SequentialProcessor</strong>: Process files in chronological order</p></li><li><p><strong>PartitionBuffer</strong>: Smart batching for optimal warehouse file sizes</p></li></ul><p>It felt good. It felt <em>right</em>. This is how you handle a large-scale data migration.</p><p>Then we ran it on our practice dataset.</p><p><strong>11 million files took one week.</strong></p><p>For the datamover migration, a week seemed totally reasonable. Less than a sprint! Exactly what product wants to hear. &#8220;Yeah, we&#8217;ll have the historical data migrated by next Friday.&#8221; Perfect.</p><p>Let me repeat that for emphasis: 11 million files. One week.</p><p>I remember staring at the progress logs, doing the math in my head. If 11M files = 1 week, then 500M files = ... <em>reaches for calculator</em> ... 45 weeks.</p><p>Forty-five weeks. Almost a year. To backfill the raw-consumptions bucket historical data.</p><p>That&#8217;s when we realized that all our careful database design, our proper indexes, our sequential processing - it was all overhead. We were spending more time managing the migration state than actually migrating data.</p><h2>Act II: The Cloud-Native Pivot</h2><p><em>&#8220;Surely AWS can handle what we can&#8217;t, right?&#8221;</em></p><p>Time for a complete rethink. Why are we trying to manage 500M individual files when AWS has services built exactly for this kind of massive parallel processing?</p><p>Enter the Athena approach:</p><ol><li><p>Create an external table mapping to our raw-consumptions bucket</p></li><li><p>Let Athena discover and process all 500M files in a single massive query</p></li><li><p>Output everything to a staging bucket in warehouse format</p></li><li><p>Do a controlled cross-bucket migration to production</p></li></ol><p>The promise was beautiful:</p><ul><li><p>2-6 hours instead of months</p></li><li><p>~$100-200 in Athena costs vs. massive compute bills</p></li><li><p>Leverage cloud services for what they&#8217;re actually built for</p></li></ul><pre><code><code>// Instead of this:
for (const file of 500_000_000_files) {
  await processFileSequentially(file); // &#129326;
}

// We&#8217;d do this:
CREATE TABLE warehouse_data AS
SELECT 
  platform,
  user_id,
  payload,
  ingested_at,
  date_partition,
  hour_partition
FROM external_consumptions_table;
// Let Athena figure it out in parallel!
</code></code></pre><p>We built comprehensive tooling around it:</p><ul><li><p>Quality validation (95% success rate required)</p></li><li><p>Cross-bucket migration with configurable batch sizes</p></li><li><p>Progress monitoring and error recovery</p></li><li><p>Staging-to-production promotion pipeline</p></li></ul><p>It was elegant. It was cloud-native. It was exactly the kind of solution you&#8217;d present at a conference lol.</p><p>And Athena choked.</p><p>Turns out even AWS services have limits when you point them at half a billion tiny files. Queries would time out consistently. Tuns out 500M files is just too many god damn files!!</p><p>The cloud-native dream tried hard, but it died.</p><h2>Act III: The Big Machine Epiphany</h2><p><em>&#8220;You know what? Let&#8217;s just use a really big machine.&#8221;</em></p><p>Sometimes the most sophisticated solution is admitting when sophistication isn&#8217;t working.</p><p>We spun up an i4i.metal instance:</p><ul><li><p>128 vCPUs</p></li><li><p>1TB of RAM</p></li><li><p>30TB of NVMe storage</p></li><li><p>75 Gbps network</p></li></ul><p>The plan was beautifully simple:</p><ol><li><p>Download everything to local NVMe storage</p></li><li><p>Process it with maximum parallelism</p></li><li><p>Upload the results</p></li></ol><p>No databases to maintain. No cloud service limits to hit. No complex state management. Just raw compute power and storage bandwidth.</p><h3>Step 1: Setup the Beast</h3><pre><code><code># Create RAID 0 across all NVMe drives
NVME_DEVICES=$(lsblk -nd -o NAME | grep nvme | grep -v nvme0 | sed &#8216;s/^/\\/dev\\//&#8217; | tr &#8216;\\n&#8217; &#8216; &#8216;)
sudo mdadm --create /dev/md0 --level=0 --raid-devices=$NVME_COUNT $NVME_DEVICES
sudo mkfs.ext4 -F /dev/md0
sudo mount /dev/md0 /mnt/nvme
</code></code></pre><h3>Step 2: Download Everything</h3><pre><code><code># s5cmd with 4096 workers to max out the 75 Gbps network
s5cmd --numworkers 4096 cp &#8220;s3://consumptions-raw/*&#8221; /mnt/nvme/raw-data/
</code></code></pre><p>Enter s5cmd - if you haven&#8217;t used it, it&#8217;s like AWS CLI&#8217;s faster, more parallel cousin. While aws s3 cp might give you decent performance, s5cmd is built specifically for high-throughput S3 operations. It can spin up thousands of concurrent workers and actually saturate high-bandwidth connections.</p><p>With our 75 Gbps network and s5cmd cranked up to 4096 workers, we could download at speeds that would make your standard S3 sync weep.</p><h3>Step 3: The Organize Breakthrough</h3><p>This is where it got interesting. We needed to transform the data from:</p><pre><code><code>platform/user123/2024-01-15T14:30:15.json
platform/user123/2024-01-15T14:45:22.json  
platform/user456/2024-01-15T14:32:18.json
</code></code></pre><p>To warehouse partitions:</p><pre><code><code>platform=spotify/date=2024-01-15/hour=14/part1.gz
</code></code></pre><p>Our first approach was to process files sequentially, organizing by timestamp. Still too slow.</p><p>Then came the insight: &#8220;Wait, we have ~1.7M users here. What if we parallelize by user instead of by file?&#8221;</p><pre><code><code># Instead of processing 500M files sequentially:
for file in $(find . -name &#8220;*.json&#8221;); do
    organize_by_timestamp $file  # Still 500M operations!
done

# Process ~1.7M users in parallel:
find raw-data/ -maxdepth 2 -type d -name &#8220;user_*&#8221; | \\
    parallel -j 128 ./[organize-single-user.sh](&lt;http://organize-single-user.sh&gt;) {} /mnt/nvme/partitions
</code></code></pre><p>Each worker would:</p><ol><li><p>Take a user directory</p></li><li><p>Parse all their timestamp.json files</p></li><li><p>Route each file to the correct date/hour partition</p></li><li><p>Coordinate at the partition level to merge everything</p></li></ol><p>This reframed the problem completely. Instead of &#8220;how do we process 500M files?&#8221; it became &#8220;how do we process 1.7M users in parallel?&#8221;</p><p>One is hard. The other is Tuesday.</p><h3>Step 4: Process Partitions</h3><p>Now each partition could be processed independently:</p><pre><code><code># Each partition just worries about:
# 1. Collecting all files for that date/hour
# 2. Gzipping them efficiently
# 3. Creating warehouse-format records
find /mnt/nvme/partitions -name &#8220;file_list.txt&#8221; | \\
    parallel -j 128 --progress ./[process-single-partition.sh](&lt;http://process-single-partition.sh&gt;)
</code></code></pre><h3>Step 5: Upload and Snowpipe Magic</h3><pre><code><code># Upload to partitioned S3 structure
s5cmd --numworkers 4096 cp /mnt/nvme/output/* s3://raw-extractions-prod/data/
</code></code></pre><p>And here&#8217;s the beautiful part: once the files land in S3 with the correct partitioned structure (<code>platform=spotify/date=2024-01-15/hour=14/</code>), S3 notifications automatically trigger Snowpipe to ingest them into our data warehouse. No manual intervention. No complex orchestration. Just files appearing in the right place, and the rest happens automatically.</p><p><strong>It worked. Fast.</strong></p><p>And here&#8217;s the kicker: the entire 500M file migration took about a week. The same time it took our initial database approach to handle 11M files.</p><p>Let that sink in for a moment. We went from processing 11M files in a week to processing 500M files in a week. That&#8217;s a 45x improvement in efficiency, not just from throwing more hardware at the problem, but from completely reframing how we thought about it.</p><h2>What We Actually Learned</h2><h3>About Scale</h3><p>500 million files isn&#8217;t just &#8220;a lot of files.&#8221; It&#8217;s a scalability problem that broke our initial assumptions and iterations.</p><p>The overhead of &#8220;doing it right&#8221; - indexes, state management, proper abstractions - can exceed the actual work when you hit extreme scale. Sometimes the most elegant solution is the one that avoids the problem entirely.</p><h3>About Problem Reframing</h3><p>The breakthrough wasn&#8217;t better algorithms or more sophisticated architecture. It was changing the unit of work:</p><ul><li><p>&#10060; &#8220;How do we process 500M files efficiently?&#8221;</p></li><li><p>&#9989; &#8220;How do we process 1.7M users in parallel?&#8221;</p></li></ul><p>Sometimes the bottleneck isn&#8217;t compute power, it&#8217;s how you think about the problem.</p><h3>About Cloud Services</h3><p>AWS services are incredibly powerful, but they have limits. You just have to test them!</p><p>&#8220;Cloud-native&#8221; isn&#8217;t automatically better than &#8220;local processing with a big machine.&#8221; The right tool depends on your specific constraints and scale.</p><h3>About Engineering Pragmatism</h3><p>The best architecture is the one that ships. There&#8217;s real elegance in recognizing when your careful abstractions are getting in the way and just solving the actual problem.</p><p>Sometimes &#8220;just use a bigger machine&#8221; isn&#8217;t lazy engineering, sometimes it&#8217;s the sophisticated approach.</p><h2>The Real Lesson</h2><p>This isn&#8217;t a story about finding the &#8220;right&#8221; solution. It&#8217;s about recognizing when your assumptions break down and being willing to completely change approaches.</p><ul><li><p><strong>Approach 1 failed</strong> because we tried to apply normal database patterns to abnormal scale</p></li><li><p><strong>Approach 2 failed</strong> because we assumed cloud services could handle anything</p></li><li><p><strong>Approach 3 succeeded</strong> because we stopped trying to be clever and just solved the problem</p></li></ul><p>The most elegant engineering isn&#8217;t always in the architecture - sometimes it&#8217;s in knowing when to stop being architectural.</p><div><hr></div><p><em>Now our data warehouse hums along, ingesting new files automatically via Snowpipe, and our 500 million historical files are exactly where they need to be. Sometimes brute force is the sophisticated solution.</em></p><p><strong>Want to work on problems like this?</strong> We&#8217;re <a href="https://www.notion.so/Join-the-koodos-labs-team-f99d4eaab4a440ffb773e9535c8c1ab4?pvs=21">hiring widely</a> at <a href="https://koodos.com/">Koodos</a>. If this kind of scale, reframing, and pragmatism excites you, drop us a line at <strong><a href="mailto:team@koodos.com">team@koodos.com</a></strong>.</p>]]></content:encoded></item><item><title><![CDATA[Agency in a Datafied World]]></title><description><![CDATA[Theory & Practice]]></description><link>https://blog.koodos.com/p/agency-in-a-datafied-world</link><guid isPermaLink="false">https://blog.koodos.com/p/agency-in-a-datafied-world</guid><dc:creator><![CDATA[jad]]></dc:creator><pubDate>Mon, 30 Sep 2024 14:12:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QOMC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We live in an era where nearly every facet of human interaction is captured, quantified, and analyzed in real-time. This is <em>datafication</em> &#8212; the transformation of social actions into digital data, driving everything from personalized ads to predictive AI (Van Dijck, 2014). It&#8217;s not just a feature of modern society; it has become its backbone. We&#8217;re operating within what some have termed an &#8220;algorithmic turn,&#8221; where the pervasive role of algorithms is reshaping our cultural, social, and economic dynamics (Abiteboul &amp; Dowek, 2020). The question we face now is: what does agency look like in this increasingly data-driven, agent-driven world?</p><p>As we hurtle toward the development of Artificial General Intelligence (AGI), a system capable of understanding, learning, and performing many of the intellectual and creative tasks a human can, questions of agency become even more pressing. </p><h3>The Evolving Concept of Agency</h3><p>In the social sciences, "agency" refers to the locus of action &#8212; where power to act resides (Denzin, 2014). Whether it's within individuals, organizations, or even machines, the definition of agency varies across disciplines. Some, like Foucault (1970), argue that agency emerges through discursive practices, while others suggest that machines are merely &#8220;objectifications&#8221; of human intent (Knoblauch, 2020).</p><p>But today, this debate has evolved into something more complex. Can machines possess their own agency, or are they just tools that reflect human will? Social phenomenology suggests that humans often perceive machines as intentional, even though machines merely act based on algorithms and data patterns. This creates an interesting paradox: while we build machines to serve us, they often seem to act autonomously, influencing our behavior in subtle ways (Gunkel, 2020).</p><blockquote><p><strong>&#8220;Agency [&#8230;] is not inherent; it is permitted&#8221;</strong> </p><p>&#8212; Henrickson, 2018: 7</p></blockquote><p>As AGI looms closer, this paradox intensifies. If machines gain the ability to perform tasks across a vast array of domains, indistinguishable from human thought, how do we negotiate control? Is AGI simply an extension of our own capabilities, or does it represent a new form of agency, independent from us?</p><h3>A New Kind of Agency: The Rise of Hybrid Control</h3><p>Scholars like Latour (2007) and Gunkel (2020) have suggested that agency doesn&#8217;t belong solely to humans or machines, but is distributed between them. In this view, agency emerges in the &#8220;in-between&#8221; &#8212; in the relationships and interactions between people and the technology they use. This hybrid agency redefines our understanding of power dynamics, complicating simplistic notions of who (or what) is in control.</p><p>Take the rise of AI agents, for example. They&#8217;re meant to assist us with various tasks, from scheduling meetings to helping us file our taxes. But while they simplify our lives, they also raise questions about the hidden power dynamics at play. Who really has the agency here? The user? The machine? Or the company that designs and controls the technology?</p><p>As AGI progresses, these relationships will only become more entangled. An AGI system that can process immense amounts of personal data, perform complex tasks, and even make independent decisions will redefine the boundaries of agency, forcing us to rethink the roles of humans, machines, and the corporations behind them.</p><h3>Access Control as a Lever</h3><p>Consistent and pervasive access controls, embedded in nearly every digital experience, mean that we never truly access content in isolation. Each interaction &#8212; whether browsing social media, sharing a photo, or interacting with AI agents &#8212; is mediated by layers of <strong>authorization</strong> and <strong>authentication</strong>. </p><p>These layers create ongoing, often invisible, relationships not just with the digital environments we engage with, but also with the entities that manage, own, and profit from them. This is something we&#8217;re tackling head-on at koodos with <a href="https://datamover.org/">DataMover</a> and <a href="https://getashelf.com/">Shelf</a>.</p><h3>The Privacy Paradox</h3><p>We often hear that people are concerned about their online privacy &#8212; but the truth is that most people don&#8217;t.</p><p>A part of the reason is that the average person, when faced with the complexity of protecting their data, is overwhelmed. Setting up and managing personal data stores &#8212; systems designed to help individuals control and protect their digital information &#8212; requires technical know-how. Users must import their data, assign permissions, and continuously monitor for security risks. For most, this process feels like a burden, creating a barrier to entry. This is something we&#8217;re exploring more deeply as part of our <a href="https://koodos.notion.site/IDEO-x-Koodos-Labs-Creative-Residency-2c1d6f31af5b43849db08d86c4544a24">joint residency with IDEO</a>. </p><p>Because of this, consumer value propositions focused purely on ownership and control of personal data struggle to gain traction. While the need for privacy is acknowledged, it lacks the urgency in practice unless it&#8217;s tied to a clear utility that impacts daily life.</p><h3>Utility-Driven Agency</h3><p>To move beyond the privacy paradox, we need to rethink the role of agency over personal data. Instead of framing it as an abstract right or responsibility, agency must be tied to direct utility &#8212; to something that makes life simpler, more enjoyable, or more efficient. When the value of controlling data is tied to real-world benefits, users are more likely to engage.</p><p>A great example of this shift is seen in design patterns that focus on user-friendly, intuitive data control. Apple&#8217;s approach to data permissioning, for instance, exemplifies this trend. When a user connects a new app to their photo library, they aren&#8217;t forced into an all-or-nothing decision. Instead, they can selectively grant access to portions of their library, and they are regularly reminded of this permission, with the option to revoke or adjust it later.</p><p>At koodos, we&#8217;ve built <strong><a href="https://getashelf.com/">Shelf</a></strong> &#8212; a platform that lets individuals track their digital consumption and curate a public showcase of their taste. By using Shelf, users can aggregate their consumption data in one accessible place. We have been studying the technological shifts around personal data storage and compute &#8212; from local-first approaches to <a href="https://security.apple.com/blog/private-cloud-compute/">private cloud compute</a> &#8212; but the challenge isn&#8217;t just technical. It's about enabling meaningful engagement with that data, empowering users to reflect on and share their tastes as a means to re-aggregate users&#8217; data in a personal data store that they can control access to over time.</p><p>We intend to offer a balance of control and utility that empowers users in meaningful ways, rather than simply overwhelming them with abstract concepts of privacy.</p><h3>Reclaiming Agency in a Datafied Society</h3><p>The rapid rise of AI agents, which need access to our private data to perform tasks on our behalf, only amplifies the need for individuals to have centralized control over their data. These AI-driven systems demand a level of access that raises new questions about agency &#8212; not just who owns the data, but who has the power to act on it.</p><p>Yet, as much as we talk about giving users control, the truth is that even the most sophisticated AI agents don&#8217;t function in isolation. They are still shaped and constrained by the companies that build them and the ecosystems in which they operate. As consumers, we are simultaneously actors and acted upon, entangled in a web of relationships that we rarely perceive in full.</p><p>As machines become more autonomous, we must grapple with the reality that agency is not a binary, but a spectrum. It&#8217;s not simply a question of whether humans or machines are in control; it&#8217;s about how we share that control in an increasingly intertwined relationship.</p><p>The real challenge, then, is not just about designing systems that give individuals control over their data. It&#8217;s about recognizing and navigating the hidden layers of agency that exist between humans, machines, and the corporations that mediate these interactions. The future of agency lies not in choosing between human or machine control, but in understanding how these forces intersect and interact in our everyday lives.</p><p>In a world where the lines between human and machine agency are increasingly blurred, we intend to be pioneers in helping users navigate the complexities of a datafied society with tools designed for real utility, control, and empowerment. This is the future we are building &#8212; one where agency isn&#8217;t just reclaimed, but redefined. We&#8217;re excited to be publishing a collaborative paper that discusses the future of the data economy soon. </p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QOMC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QOMC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QOMC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QOMC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QOMC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QOMC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg" width="1456" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:853,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QOMC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QOMC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QOMC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QOMC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe333e747-bef1-4219-96b0-0b795379b2a4_2748x1610.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Credit to <a href="https://matguzzo.com/">Mateus Guzzo</a> &#8212; Public Audio</figcaption></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ul><li><p>Van Dijck, J. (2014). <em>Datafication, Dataism, and Dataveillance: Big Data between Scientific Paradigm and Ideology</em>. Surveillance &amp; Society, 12(2), 197-208.</p></li><li><p>Abiteboul, S., &amp; Dowek, G. (2020). <em>The Algorithmic Society: Technology, Power, and Knowledge</em>. Cambridge University Press.</p></li><li><p>Hallinan, D., &amp; Striphas, T. (2016). <em>Algorithmic Cultures: Essays on Meaning, Performance, and New Technologies</em>. Routledge.</p></li><li><p>Schuilenburg, M., &amp; Peeters, R. (2021). <em>The Algorithmic Society: Power, Knowledge, and the Future of Governance</em>. Routledge.</p></li><li><p>Foucault, M. (1970). <em>The Order of Things: An Archaeology of the Human Sciences</em>. Routledge.</p></li><li><p>Giddens, A. (1984). <em>The Constitution of Society: Outline of the Theory of Structuration</em>. University of California Press.</p></li><li><p>Ricaurte, P. (2022). <em>Algorithmic Cultures and Datafication: A Critical Reflection</em>. New Media &amp; Society, 24(4), 732-748.</p></li><li><p>Knoblauch, H. (2020). <em>Communicative Constructions of Reality: Semiotic Mediation and Society</em>. Springer.</p></li><li><p>Latour, B. (2007). <em>Reassembling the Social: An Introduction to Actor-Network Theory</em>. Oxford University Press.</p></li><li><p>Gunkel, D. J. (2020). <em>The Machine Question: Critical Perspectives on AI, Robots, and Ethics</em>. MIT Press.</p></li><li><p>Henrickson, L. (2018). <em>The Entanglements of Agency: Philosophical Reflections on AI, Autonomy, and Human-Machine Relations</em>. The Journal of AI Research, 45(7), 1-20.</p></li><li><p>Rammert, W., &amp; Schulz-Schaeffer, I. (2002). <em>Technological Action: Agency and Normativity in Human-Technology Relations</em>. Cambridge University Press.</p></li><li><p>Barad, K. (2007). <em>Meeting the Universe Halfway: Quantum Physics and the Entanglement of Matter and Meaning</em>. Duke University Press.</p></li><li><p>Coeckelbergh, M., &amp; Gunkel, D. J. (2023). <em>The Philosophy of Artificial Intelligence: Contemporary Debates</em>. Oxford University Press.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Celebrity Memoir Book Club]]></title><description><![CDATA[Nickelback defenders rise up&#8230;]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-celebrity-memoir</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-celebrity-memoir</guid><pubDate>Wed, 01 May 2024 23:58:36 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/144223394/3fccc02c967acd3c56e2b06c7c57e91b.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h4>You can follow Ashley and Claire on <a href="https://shelf.im/ashleyhammm">shelf.im/ashleyhammm</a> &amp; <a href="https://shelf.im/clairethescare">shelf.im/clairethescare</a></h4><p>This week we&#8217;re so excited to welcome the ladies of the Celebrity Memoir Book Club podcast: @<a href="https://instagram.com/ashleyhammm">ashleyhamm</a> &amp; @<a href="https://www.instagram.com/clairethescare">clairethescare</a> </p><p>Fitting in their incredible taste of movies, books, tv shows and music into a 90 second video may have been the hardest thing we&#8217;ve ever done tbh.</p><p>Featuring:</p><ul><li><p>True Blood</p></li><li><p>America&#8217;s Next Top Model&nbsp;</p></li><li><p>Nickelback&nbsp;</p></li><li><p>In Her Shoes</p></li><li><p>My Brilliant Friend by Elena Ferrante</p></li><li><p>Sisterhood of the Traveling Pants</p><p></p></li></ul><p><strong>What&#8217;s <a href="https://apps.apple.com/us/app/shelf-whats-on-yours/id1667391175">Shelf</a>?</strong> A fun way to learn about you and your friends&#8217; taste &#8212; from music, to shows, movies, books &amp; more! It&#8217;s like the lovechild of Spotify Wrapped, Letterboxd, and Goodreads.</p><p>To stay in the loop with new episodes, follow us on <a href="https://www.instagram.com/getashelf">Instagram</a>. Check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Alex Mutammara]]></title><description><![CDATA[Red flags include being chat restricted on League of Legends]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-alex-mutammara</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-alex-mutammara</guid><pubDate>Fri, 19 Apr 2024 00:04:56 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/143726933/831e0690fc6a946f950898876c87b06c.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h4>You can follow Alex&#8217;s Shelf at <a href="https://shelf.im/mutammara">shelf.im/mutammara</a>.</h4><p>On this episode of What&#8217;s on my Shelf, we&#8217;re welcomed by Brooklyn food review TikToker Alex <a href="https://www.tiktok.com/@mutammara">@mutammara</a>. Follow Alex&#8217;s Shelf at <a href="https://shelf.im/mutammara">shelf.im/mutammara&nbsp;</a></p><p>Featuring:</p><ul><li><p>League of Legends</p></li><li><p>Sex Education</p></li><li><p>Paramore @haileywilliams&nbsp;</p></li><li><p>Colorado @reneerapp&nbsp;</p></li><li><p>Live for Me @omaropollo&nbsp;</p></li><li><p>Jujutsu Kaisen</p><p></p></li></ul><p><strong>What&#8217;s <a href="https://apps.apple.com/us/app/shelf-whats-on-yours/id1667391175">Shelf</a>?</strong> A fun way to learn about you and your friends&#8217; taste &#8212; from music, to shows, movies, books &amp; more! It&#8217;s like the lovechild of Spotify Wrapped, Letterboxd, and Goodreads.</p><p>To stay in the loop with new episodes, follow us on <a href="https://www.instagram.com/getashelf">Instagram</a>. Check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[CEO diary entry: control, accountability, whiplash & anxiety]]></title><description><![CDATA[What I'm learning as I build koodos labs]]></description><link>https://blog.koodos.com/p/ceo-diary-entry-control-accountability</link><guid isPermaLink="false">https://blog.koodos.com/p/ceo-diary-entry-control-accountability</guid><dc:creator><![CDATA[jad]]></dc:creator><pubDate>Mon, 18 Mar 2024 16:51:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HA3M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This piece started as a personal reflection, a kind of open diary entry. It's a vulnerable exploration, a little disjointed and I&#8217;m sharing it is an experiment. I've learned and am learning a lot about what a CEO's role is, and how it shifts with the growth of the company. I don&#8217;t claim to have mastered it &#8212; I am constantly learning and invite other thoughts or viewpoints. I hope offering a glimpse into my journey and my development as we build koodos labs is helpful, or at the very least, interesting.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HA3M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HA3M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!HA3M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!HA3M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!HA3M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HA3M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png" width="436" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:436,&quot;bytes&quot;:1765570,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HA3M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!HA3M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!HA3M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!HA3M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b5e0f4-ded5-4e32-9d7c-3919919e1981_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>On Control, Accountability, and Authority</h3><p>In an effort to mirror what it&#8217;s like building a product and company, I ran an activity where my team had to piece together a puzzle without knowing the intended final image. When building a company, we have to be open to the fact that we don&#8217;t know what the final outcome needs to be as the puzzle pieces come together. And yes, even the founder doesn&#8217;t <em>really</em> know what the final image is. This led to a dialogue around whether stepping in or standing back was the most effective mode for the CEO to be in, especially considering the unique insights team members brought to specific segments of the puzzle.</p><p><a href="https://www.lennyspodcast.com/brian-cheskys-new-playbook/">Brian Chesky</a> suggests that detail-oriented involvement from the CEO is crucial for maintaining alignment and momentum. He posits that the more proximate the main decision-maker is to the project the better. At the early stages, the founder is domain expert in many aspects of the company, but as the organization expands, the domain expert should ideally be the decision-maker, and often this isn&#8217;t the founder. Finding the balance between being in the details and empowering autonomy becomes a sophisticated dance of leadership.</p><p>Logically-speaking, I (as the CEO) am ultimately held accountable. And as a leader, I am in a unique position where I could have a lot of control, and could also shift accountability internally. So someone who's directly responsible for a project could technically have no authority (just do what Jad says) and full accountability (if the project goes south, they're ultimately responsible). And so where there&#8217;s accountability, there must be agency. And agency requires trust and letting go of control.</p><p>A rule of thumb my friend Matt Braley shared is to train the leader do the job to our standards, figure out how to measure the standard, then step away when we see the standard is met 80%+. Naturally, I&#8217;ve found that I let go when I trust the person, and I won&#8217;t when I don&#8217;t. If I don&#8217;t trust handing over the reigns, I should really ask myself &#8220;can we up-skill the person in a reasonable time so that we&#8217;re comfortable?&#8221; And if not, then the difficult question should be &#8220;why is is this person on the team?&#8221;</p><p>Despite my ultimate accountability as CEO, or someone's direct responsibility for overseeing progress towards a goal or project, it is essential to establish expectations and foster an environment where everyone takes ownership. That means that no one person is to blame, and that every member on the team is taking <a href="https://www.youtube.com/watch?v=m3JNfEZAM-w">100% responsibility</a>. Everyone accepts their part in both successes and setbacks, openly discusses contributions to challenges, and actively works together to find solutions, fostering a culture of accountability and shared growth. Creating a culture where collective ownership is embraced means that success and failure are shared, fostering an environment of mutual accountability and collaborative growth.</p><h2>On Whiplash</h2><p>Navigating a startup is inherently turbulent, with constant learning and shifting priorities. Deciding what takes precedence and for how long is incredibly challenging but critical to progress. This journey demands a blend of urgency and the acceptance of imperfect processes, focusing on agility and on-the-fly problem-solving rather than flawless execution from the outset.</p><p>The CEO's actions can rock the boat even more as it navigates the turbulent waters. Underpinning it all is the view that <strong>clarity is kindness</strong>, and that getting to clarity is the ultimate goal. A few things worth aligning around could include:</p><ul><li><p>How much time we're "budgeting" for a bet, so that we're committing to a focus for some time, and also so that we're thinking about the scale of the project based on a specific time horizon.</p></li><li><p>What part of the discovery process are we currently in? Are we diverging? Exploring different approaches, sketching 100 solutions, running lots of quick tests in different directions, etc. or are we converging: narrowing our focus, testing one thing out and maintaining constraints?&nbsp;</p></li><li><p>The communication flows day-to-day, ensuring that we're collaborating (and not working in silos) as much as possible, and also making room to check in that we're on track for a high impact project and naturally pre-morteming so things just float when there are blockers. Importantly, we should aim to do this in a way that doesn't apply unnecessary pressure or constrains creativity and play.</p></li></ul><h3>On Conscious Leadership and &#8216;Amping It Up&#8217;</h3><p>I find myself toggling between two versions of myself as a leader. </p><p>The first: the empathetic, people-first servant leader. A la <a href="https://www.amazon.com/15-Commitments-Conscious-Leadership-Sustainable-ebook/dp/B00R3MHWUE">Concsious Leadership Group</a>.</p><p>The second: the driven, results-focused executive that runs towards discomfort and doesn&#8217;t accept coasting. A la <a href="https://www.amazon.com/Amp-Unlocking-Hypergrowth-Expectations-Intensity/dp/1119836115">Frank Slootman</a>&#8217;s Amp It Up.</p><p>This internal conflict generates both personal anxiety and confusion among my team regarding which version of me they&#8217;re dealing with. My goal is to forge an integrated leadership style that harmonizes these aspects, leveraging their strengths to guide my actions and decisions.</p><h3>On Learning and Anxiety</h3><p>I tell myself that it&#8217;s very natural to be anxious when we're trying to do something very hard, especially when the process requires making a lot of mistakes on the way. Rome wasn&#8217;t built in a day, and neither is the process of inverting the internet&#8217;s personal data model. Unlocking a retentive consumer product lots of people love is something very very few products can get to &#8212; and so I must remind myself that we&#8217;ve already achieved more than most startups can dream of.</p><p>I had heard many times that startup <em>success</em> is PACE OF LEARNING. But it took me a while to internalize that. A good way to maintain a strong pace of learning is to be in discovery mode &#8211; and this applies even at established companies (see: Kodak, or every big tech company that is trying to be bold and take risks again).</p><p>One way to reduce anxiety is to shift to a discovery mindset that celebrates <strong>learning</strong>, not just results. And to trust the process and maintain that learning will lead to results. There&#8217;s a lot of inertia against shifting toward a discovery mindset:</p><ul><li><p><strong>Conditioning</strong>: We've been rewarded our entire lives for being right, knowing all the answers, and avoiding mistakes. But perfectionism slows us down when we need to learn by trial and error. We'll suffer endlessly unless we get comfortable with being wrong, not knowing the answers, and making mistakes.</p></li><li><p><strong>Incentives</strong>: Typically folks get recognized for results over learnings. That&#8217;s how we&#8217;re typically rewarded through school. This might work well in established businesses where the levers are well understood. But at a startup, we first have to learn what the levers are before we can set the right targets and strive for results. And learning leads to out-sized results.</p></li><li><p><strong>The illusion of knowledge</strong>: We can't learn things when we believe we already know, so this illusion of knowledge hinders our effort to discover. Recall <a href="https://drawpaintacademy.com/wp-content/uploads/2019/06/Pablo-Picasso-The-Bull-1945-2.jpg">the bull</a>: beauty is in the simplest outcome (and often we&#8217;re stuck amidst the higher complexity phases, and so we actually don&#8217;t <em>really</em> know until we get to the simplest form of the bull or can explain a complex concept like a 6 year-old). We often view new information, especially contradictory information, as a threat thanks to our various cognitive biases (including our friends confirmation bias, hindsight bias, consistency bias and sunk cost fallacy).</p></li></ul><p>This requires balancing being a confident visionary with being a curious, skeptical scientist. It's less about feeling confident we have the right answer, and more feeling confident that we can figure it out. When we work from a place of insecurity, we see information as a threat. But new information is the currency of discovery. Great scientists build the confidence to push aside their self-doubt and run toward surprises. To seek discomfort. A discovery mindset means openness, experimentation, focus on users and data, collaboration, bold thinking, and risk-taking.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.koodos.com/subscribe?"><span>Subscribe now</span></a></p><p>Hit reply and let me know if this was interesting or useful, or not. This is an experiment :) </p>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Dominique]]></title><description><![CDATA[No free feet on this Shelf]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-dominique</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-dominique</guid><pubDate>Mon, 11 Mar 2024 05:05:15 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/142430313/527c3f3919da1298c3194bc773e804a3.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h4>You can follow Dominique&#8217;s Shelf at <a href="http://shelf.im/dominiquereshae">shelf.im/dominiquereshae</a>.</h4><p>On this episode of What&#8217;s on my Shelf, we&#8217;re welcomed by model and activist Dominique (<a href="https://www.instagram.com/dominiquereshae/?hl=en">@dominiquerashae</a>) to tour her stunning Shelf.</p><p>Featuring:</p><ul><li><p>Vintage Playboys</p></li><li><p>Dead Ringers</p></li><li><p>Steve Lacy &amp; Calvin Harris</p></li><li><p>Sitting on Top of the World by Burna Boy &amp; 21 Savage</p></li></ul><p>What&#8217;s Shelf? An app to showcase everything you&#8217;re into rn. It&#8217;s the lovechild of Spotify Wrapped, Goodreads and Letterboxd. Available to download on iOS and to pre-order on Android.</p><p>To stay in the loop with new episodes, follow us on <a href="https://www.instagram.com/getashelf">Instagram</a>. Check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>.</p>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Simona Ruzer]]></title><description><![CDATA[koodos labs' very-own tastemaker]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-simona</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-simona</guid><pubDate>Tue, 06 Feb 2024 21:40:51 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/141442151/4481d2d984d54ec77ee4f2b8f71f37e3.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h4>You can follow Simona&#8217;s Shelf at <a href="https://www.shelf.im/simonachrome">shelf.im/simonachrome</a>.</h4><p>What&#8217;s on my Shelf episode 7 is with koodos labs&#8217; very own Simona. <br><br>Featuring:</p><ul><li><p>Fourth Wing <a href="https://www.instagram.com/rebeccayarros/">@rebeccayarros</a> </p></li><li><p>SATC <a href="https://www.instagram.com/everyoutfitonsatc/">@everyoutfitonsatc</a> </p></li><li><p><a href="https://www.instagram.com/chappellroan/">@chappellroan</a> </p></li><li><p><a href="https://www.instagram.com/kardashianshulu/">@kardashianshulu</a> <a href="https://www.instagram.com/kimkardashian/">@kimkardashian</a> </p></li><li><p>Garden State <a href="https://www.instagram.com/hulu/">@hulu</a> </p></li><li><p>Anomia<br></p></li></ul><p>To stay in the loop with new episodes, follow us on <a href="https://tiktok.com/@getashelf">TikTok</a> &amp; <a href="https://www.instagram.com/getashelf">Instagram</a>. Check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to What&#8217;s on my Shelf?</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Avantika]]></title><description><![CDATA[The breakout star from the new Mean Girls movie]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-avantika</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-avantika</guid><pubDate>Sat, 13 Jan 2024 04:02:21 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/140636728/d85506153d76b083f2dfd766a683972d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h4>You can follow Avantika&#8217;s Shelf at <a href="https://shelf.im/avantika">shelf.im/avantika</a>.</h4><p>What&#8217;s on my Shelf episode 6 is with the one and only Avantika, aka Karen in the new Mean Girls OUT TODAY. Avantika is a multi-hyphenate artist, the youngest South-Asian to Star and Executive produce a 'Crown of Wishes' series and is also a current student at Columbia.</p><p>Featuring:</p><ul><li><p>Grand Budapest Hotel&nbsp;</p></li><li><p>Percy Jackson&nbsp;</p></li><li><p>Film camera&nbsp;</p></li><li><p>Giant water bottle&nbsp;</p></li><li><p>The New York Times Magazine&nbsp;</p></li><li><p>Mean Girls&nbsp;</p></li></ul><p>To stay in the loop with new episodes, follow us on <a href="https://tiktok.com/@getashelf">TikTok</a> &amp; <a href="https://www.instagram.com/getashelf">Instagram</a>. Check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to What&#8217;s on my Shelf?</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Moss Perricone]]></title><description><![CDATA[Reading while drunk? New hobby unlocked.]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-moss-perricone</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-moss-perricone</guid><pubDate>Wed, 10 Jan 2024 00:01:03 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/140531481/a19cfb75bf5d0fdcaf6e3fdbe1038a74.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h4>You can follow Moss&#8217; Shelf at <a href="https://www.shelf.im/mossperricone">shelf.im/mossperricone</a>.</h4><p>On episode 5 of What&#8217;s on my Shelf, we&#8217;re welcomed into writer, producer and stand-up comedian Moss Perricone&#8217;s home! He&#8217;s worked on shows like Beavis &amp; Butt-Head, The Patriot Act with Hasan Minhaj, The Other Two and most recently Mindy Kaling and Charlie Grandy&#8217;s Velma for HBO Max.</p><p>Featuring:</p><ul><li><p>Serge Lutens Parfum&nbsp;</p></li><li><p>Have One On Me</p></li><li><p>Codex Seraphinanus</p></li><li><p>The Wilder Shores of Gastronomy&nbsp;</p></li><li><p>Talk to Her</p></li><li><p>Oscar Picollo Lamp&nbsp;</p></li></ul><p>To stay in the loop with new episodes, follow us on <a href="https://tiktok.com/@getashelf">TikTok</a> &amp; <a href="https://www.instagram.com/getashelf">Instagram</a>. Check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to What&#8217;s on my Shelf?</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Courtney Kinnare]]></title><description><![CDATA[Brooklyn-based artist & trinket girl&#174;]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-courtney-kinnare</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-courtney-kinnare</guid><pubDate>Thu, 28 Dec 2023 10:06:55 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/140137707/79ac82fe49fe6b0b1bd1ea701e86a004.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h4>You can follow Courtney&#8217;s Shelf at <a href="http://www.shelf.im/courtneykinnare">www.shelf.im/courtneykinnare</a>.</h4><p>On episode 4 of What&#8217;s on my Shelf, we&#8217;re welcomed by Brooklyn-based artist Courtney Kinnare in her home studio.</p><p>Featuring:</p><ul><li><p><a href="https://www.instagram.com/invt305/">INVT</a> </p></li><li><p>The Artist&#8217;s Way</p></li><li><p>Nikon Coolpix 3000</p></li><li><p>Money Heist</p></li><li><p>Chrome Nail Powders</p></li></ul><p>To stay in the loop with new episodes, follow us on <a href="https://tiktok.com/@getashelf">TikTok</a> &amp; <a href="https://www.instagram.com/getashelf/">Instagram</a>. Check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to What&#8217;s on my Shelf?</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Jean-Luc]]></title><description><![CDATA[NYC clout guy ft Bella Hadid (kinda)]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-jean-luc</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-jean-luc</guid><pubDate>Wed, 20 Dec 2023 22:14:02 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/139869521/20ba5e059efb3d7a3feaa60992eeb694.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h4>You can follow Jean-Luc&#8217;s Shelf at <a href="http://www.shelf.im/thejeanluc">www.shelf.im/thejeanluc</a>.</h4><p>On episode 3 of What&#8217;s on my Shelf, we&#8217;re welcomed by New York City&#8217;s very own clout guy aka Jean-Luc. Jean-Luc walked so the Tabi Swiper could run&#8230;.</p><p>Featuring:</p><ul><li><p>Oppenheimer <a href="https://instagram.com/musclemilk">Muscle Milk</a></p></li><li><p>A Fish Doesn&#8217;t Know When It&#8217;s Wet by <a href="https://instagram.com/pharrell">Pharrell</a>&nbsp;</p></li><li><p>Ring Light and his Calvins</p></li><li><p><a href="https://www.instagram.com/theidol">The Idol</a></p></li><li><p>Material Girl </p></li><li><p>Prada Loafers&nbsp;&nbsp;</p></li></ul><p>To stay in the loop with new episodes, follow us on <a href="https://tiktok.com/@getashelf">TikTok</a> &amp; <a href="https://www.instagram.com/getashelf">Instagram</a>. Check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to What&#8217;s on my Shelf?</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Kailey Laise]]></title><description><![CDATA[What the NYC stylist who only wears primary colors is into right now]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-kailey-laise</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-kailey-laise</guid><pubDate>Mon, 11 Dec 2023 17:53:29 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/139698102/3bc102f766d5d8d4f1b6692e63e0fe69.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>On this week&#8217;s episode of What&#8217;s on my Shelf, we&#8217;re welcomed by NYC stylist and primary color aficionado <a href="https://www.instagram.com/kaileylaise/">Kailey Laise</a>. </p><h3>You can follow Kailey&#8217;s Shelf at <a href="https://www.shelf.im/kailey">shelf.im/kailey</a>.</h3><p>Featuring:</p><ul><li><p>A good ol&#8217; Chicago Bulls Jersey</p></li><li><p>Something to Give Each Other by <a href="https://www.instagram.com/troyesivan/">@troyesivan</a></p></li><li><p><a href="https://www.instagram.com/the1975/">The 1975</a> (specifically their <a href="https://www.instagram.com/chickenshopdate/">@chickenshopdate</a>) </p></li><li><p>Gilmore Girls</p></li><li><p>Hello Kitty Island Adventure,</p></li><li><p>A Court of Thorns and Roses by <a href="https://www.instagram.com/therealsjmaas/">@therealsjmaas</a></p></li></ul><p>What&#8217;s on my Shelf? is an award-winning* series featuring creators, artists and tastemakers sharing what's on their Shelf. To stay in the loop with new episodes, follow us on <a href="https://tiktok.com/@getashelf">TikTok</a> &amp; <a href="https://www.instagram.com/getashelf">Instagram</a>. And check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>.</p><p>*manifesting.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to What&#8217;s on my Shelf?</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What's on my Shelf?: Corbin Chase]]></title><description><![CDATA[NYC comedic legend and freelancer extraordinaire]]></description><link>https://blog.koodos.com/p/whats-on-my-shelf-corbin-chase</link><guid isPermaLink="false">https://blog.koodos.com/p/whats-on-my-shelf-corbin-chase</guid><pubDate>Mon, 04 Dec 2023 18:52:59 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/139350691/4c7cfdece13cf0d9f5947cfac93d8f44.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>We&#8217;re excited to introduce the award-winning* series featuring creators, artists and tastemakers sharing what's on their Shelf. </p><p>On this episode of What&#8217;s on my Shelf, we&#8217;re welcomed by comedic legend and freelancer extraordinaire <a href="https://www.instagram.com/corbinchase/">Corbin Chase</a>. Bet you can&#8217;t name one person who&#8217;s both a charcuterie stylist and been on 2 seasons of American Idol&#8230;.</p><h4>You can follow Corbin&#8217;s Shelf at <a href="https://www.shelf.im/corbinchase">shelf.im/corbinchase</a>.</h4><p>Featuring:<br>-Tangos by Les Baxter &#128191;<br>-SSX 3 &#127918;<br>-How to Have Impossible Conversations by <a href="https://www.instagram.com/peter.boghossian/">Peter Boghossian</a> &#128218;<br>-Olivia Rodrigo for Paper Mag &#128156;<br>-<a href="https://www.imdb.com/title/tt1034415/">Suspiria</a> &#127909;<br>-Team USA Gymnastics videos &#128250;</p><p>*manifesting.</p><p>To stay in the loop with new episodes, follow us on <a href="https://tiktok.com/@getashelf">TikTok</a> &amp; <a href="https://www.instagram.com/getashelf">Instagram</a>. Check out the other episodes <a href="https://blog.koodos.com/s/whatsonmyshelf">here</a>. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to What&#8217;s on my Shelf?</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[On many things.]]></title><description><![CDATA[Why NYC, the role of philosophy in tech, user need for content discovery, lessons on distribution & the future.]]></description><link>https://blog.koodos.com/p/on-many-things</link><guid isPermaLink="false">https://blog.koodos.com/p/on-many-things</guid><dc:creator><![CDATA[jad]]></dc:creator><pubDate>Tue, 10 Oct 2023 01:57:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nx7Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Some ramblings on many things. Excuse any broken thoughts and feel free to respond with your own.</p><p><strong>On New York.</strong></p><p>I'm frequently asked why koodos labs is building a team in NYC. In essence, this city possesses the highest ambition per capita and the most culture per square foot globally. To establish a generational company that centers culture, these are indispensable elements.</p><p><strong>On philosophy in tech</strong></p><p>There&#8217;s a noticeable lack of deep thinking and introspection in the tech world. It's common to find that foundations are incorrectly laid. However, this isn&#8217;t to say we should spend our days in deep thought and avoid shipping regularly to gather feedback and iterate. Scientists also run experiments &amp; talk to people to validate their mental models. They don&#8217;t just <em>think</em>. </p><p>Unearthing the &#8220;secrets&#8221; that underpin creative works demands production. The resonance of many profound creative pieces stems from a deep understanding of the human condition; and to get there the creative process necessitates a significant amount of trial and error.</p><p><strong>On content discovery</strong></p><p>Content discovery is not a burning user need. Yes, <a href="https://medium.com/swlh/the-future-of-music-is-at-risk-music-discovery-is-no-longer-an-emotional-experience-e08066ab2006">there are plenty of problems with content discovery</a>, and yes &#8220;we don&#8217;t know what to watch&#8221; sometimes &#8212; but we&#8217;ve found that it&#8217;s simply not a burning human need and there are plenty of channels to discover content today. People aren&#8217;t short on new content. We&#8217;ve chosen to frame content discovery as an outcome of our experience, not as a need or value proposition for using our product. </p><p><strong>On distribution &amp; the deadly sins.</strong></p><p>Attention is the most scarce resource. Platforms, driven by the goal of maximizing time spent and ad views, exploit basic human desires&#8212;often summarized as the &#8220;deadly sins&#8221; of lust, gluttony, greed, sloth, wrath, envy, and pride. This model, when it becomes the foundation of user engagement, <a href="https://blog.koodos.com/p/-bad-incentives-ruined-the-internet">instigates a destructive cycle</a>.</p><p>In our journey, we&#8217;ve anchored on share of identity, instead of share of time. That there&#8217;s ongoing utility, joy and insight unlocked from continuous use &#8212; that it can be generative and cathartic, without being a time suck or numbing. The idea that Shelf and Self are one letter apart, and that users should be able to see themselves on their Shelf. This is especially important as we shift ownership of one&#8217;s identity, and the data that underlies it, to the user. </p><p>Nonetheless, the dynamics of distribution are distinct. It revolves around seizing attention amidst the endless demands on it. The <em>deadly sins</em> can make a product resonate, create allure, and quickly occupy mental space. While the sustaining attributes and foundations of a retentive product might not be based on these patterns, it&#8217;s evident that effective distribution articulates how a product caters to intrinsic human desires or fears from the onset. It&#8217;s possible to align good long-term intentions, avoid gimmickry, and leverage innate human desires for distribution simultaneously.</p><p><strong>On the future</strong></p><p>I envision a world where diverse tastes are not just tolerated but celebrated; where our similarities unite us and enable us to see beyond the superficial, appreciating each other&#8217;s essence. A world where our differences are not viewed as reason for division, but as gateways to uncharted terrains awaiting exploration. We don&#8217;t need a second brain, we need a second heart. We need more soul. I imagine a world where our data is unequivocally ours, where we can keep all our stuff in &#8220;virtual USBs&#8221; that can be connected and disconnected at will, fostering a sense of ownership and empowerment in the infinite expanse of the internet. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.koodos.com/subscribe?"><span>Subscribe now</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nx7Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nx7Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png 424w, https://substackcdn.com/image/fetch/$s_!nx7Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png 848w, https://substackcdn.com/image/fetch/$s_!nx7Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png 1272w, https://substackcdn.com/image/fetch/$s_!nx7Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nx7Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png" width="1018" height="994" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2466ad54-1004-4213-80df-e200c112712e_1018x994.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:994,&quot;width&quot;:1018,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2406800,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nx7Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png 424w, https://substackcdn.com/image/fetch/$s_!nx7Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png 848w, https://substackcdn.com/image/fetch/$s_!nx7Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png 1272w, https://substackcdn.com/image/fetch/$s_!nx7Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2466ad54-1004-4213-80df-e200c112712e_1018x994.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Reflections from the Berkman Klein Centre’s 25th Anniversary]]></title><description><![CDATA[The role of academic scholarship in founding tech companies]]></description><link>https://blog.koodos.com/p/reflections-from-the-berkman-klein</link><guid isPermaLink="false">https://blog.koodos.com/p/reflections-from-the-berkman-klein</guid><dc:creator><![CDATA[jad]]></dc:creator><pubDate>Sat, 16 Sep 2023 20:03:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jacW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The <a href="https://cyber.harvard.edu/">Berkman Klein Centre </a>(BKC) at Harvard &#8212; a bastion for internet studies and the birthplace of initiatives like the Creative Commons and Wikimedia &#8212; recently marked its 25th anniversary. As I prepare to enter my <a href="https://cyber.harvard.edu/people/jad-esber">fourth year as an Affiliate</a>, this milestone nudged me to share some insights from the anniversary conference and reflect on how my time among its scholars has shaped me as a founder.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jacW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jacW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jacW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jacW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jacW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jacW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2867088,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jacW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jacW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jacW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jacW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab34a69c-a85e-4924-a195-e46cebbe79c6_3968x2232.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The surveillance-free platforms seminar group (from left to right: Rachel Kalmar, Leora Kornfeld, me &amp; Prof John Deighton)</figcaption></figure></div><div><hr></div><h3><strong>Critics, Analysts, and Tomorrow&#8217;s Tech</strong></h3><p>The narrative in academic spaces like the Berkman Klein Centre tend to have two distinct voices: the critics and the analysts. </p><p>Critics, with their incisive observations, lay bare systemic gaps and push for transformative reforms. Their critiques, although usually lagging, capture public opinion and foreshadow regulatory shifts &#8212; vital exposure for people building future-oriented technology.</p><p>Meanwhile, analysts weave theory and historical insights to paint a picture of what lies ahead. While some ideas born out of academic thought, such as fresh approaches to personal data management, might still be in their nascent stages, they're on the cusp of becoming our reality. It was at the BKC that I had my first exposure to questions around media consumption and self-presentation, the practical limitations of data interoperability, privacy techniques to empower individuals and many of the other themes we touch on at <a href="https://koodoslabs.xyz/research">Koodos Labs</a>.</p><h3><strong>Foreseeing the AI Wave</strong></h3><p>At the heart of the conference was the question of AI's future trajectory and impact on society. In the shadows of the social media era, there's an urgency to comprehend the potential spirals AI might trace. But what offers hope is the present-day academia and policy-makers' proactive and pragmatic approach, a stride towards anticipated challenges with purpose.</p><h3><strong>The Quiet Power of Scholarship</strong></h3><p>To some, academia seems slow and completely disconnected from the reality of building for users and markets. While there&#8217;s some truth to that and there&#8217;s a very strong need for builders and scholars to meet, it&#8217;s precisely the unhurried pace of scholarship, steeped in thought, that grounds us. It&#8217;s the time to theorize, discuss, tear down and build again. </p><p>Whereas for builders with limited runway and market demands, we're often running against the clock, making it easy to miss alternative approaches or the nuanced implications of our endeavors. When there&#8217;s urgency, we tend to retrofit solutions based on what we&#8217;ve come to know and it&#8217;s very hard to break that pattern. The more access to knowledge we have, the more of an edge we can have as fast-moving builders.</p><h3><strong>Towards Pragmatic Idealism</strong></h3><p>I was inspired by <a href="https://cyber.harvard.edu/story/2023-04/jacinda-ardern-joins-berkman-klein-center">Jacinda Arden</a>, New Zealand&#8217;s former Prime Minister and now a BKC Fellow. In her efforts to run a country and make policy decisions at speed (like during the Christchurch attacks and COVID), she had limited access to data and had to intuit her way to decisions quickly. She regularly referenced a frame of reference: &#8220;pragmatic idealism&#8221;: seeking to realize (seemingly unreachable) ideals by taking into account practical considerations. It's a philosophy that resonated deeply with me. When applied to the role of tech innovation, her perspective was that technology magnifies societies existing ills and isn&#8217;t a source of our ills. This viewpoint not only shifts the problem's definition but also broadens its responsibility beyond the people building technology &#8212; although there&#8217;s a need for tech founders to consider societal impact alongside maximizing financial returns &#8212; a necessary goal for any venture-backed company.</p><div><hr></div><p>In closing, as the Berkman Klein Centre marks a quarter-century of intellectual leadership, it serves as a potent reminder of the symbiosis between the tech world, policymakers and academia. Their combined insights foster not only innovation but also responsibility. Whether we're addressing what the future of social media is, the challenges of AI or decentralized technologies, valuing critics and analysts, or pondering the deeper lessons of scholarship, the guiding light remains: to create technology that pushes society forward. It's a journey of continual learning, and I'm grateful to be a part of it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.koodos.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Identity, authentication, and authorisation from the ground up]]></title><description><![CDATA[In an earlier post we learnt the basic concepts of identity, authentication, and authorisation &#8212; important terms that are easily confused by hackers and technologists.]]></description><link>https://blog.koodos.com/p/identity-authentication-and-authorisation-b7a</link><guid isPermaLink="false">https://blog.koodos.com/p/identity-authentication-and-authorisation-b7a</guid><dc:creator><![CDATA[Apurva Chitnis]]></dc:creator><pubDate>Sun, 27 Aug 2023 18:04:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pJJL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In an <a href="https://apuchitnis.substack.com/p/demystifying-identity-authentication">earlier post</a> we learnt the basic concepts of identity, authentication, and authorisation &#8212; important terms that are easily confused by hackers and technologists.</p><p>In this post we will dive deeper and demystify how apps actually implement authentication. Do it right, and you barely notice it. But do it wrong, and you lock users out or open major security holes. </p><p>We'll see how apps authenticate you, from old school passwords to slick new standards like WebAuthn, and we&#8217;ll get our hands dirty discussing security and usability trade-offs, encryption, individual sovereignty, and more!</p><p>By the end, you'll have a solid grasp of how real-world apps tackle authentication using the methods we've covered.</p><p>Let's get started!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pJJL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pJJL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512 424w, https://substackcdn.com/image/fetch/$s_!pJJL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512 848w, https://substackcdn.com/image/fetch/$s_!pJJL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512 1272w, https://substackcdn.com/image/fetch/$s_!pJJL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pJJL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512" width="512" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:512,&quot;width&quot;:512,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!pJJL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512 424w, https://substackcdn.com/image/fetch/$s_!pJJL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512 848w, https://substackcdn.com/image/fetch/$s_!pJJL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512 1272w, https://substackcdn.com/image/fetch/$s_!pJJL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e57f49a-52a2-427d-8513-cfdedf7ed4e7_512x512 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Surreal digital landscape with keys, locks, and fingerprint symbols</em>, generated by Substack.</figcaption></figure></div><h1>Authentication &#129706;</h1><p>The first thing you do when you log into an app is identify yourself.</p><p>This might be using some kind of identifier &#8212; typically an email address or phone number &#8212; or logging in through Google, Facebook, or some other third party service, and using their knowledge of your identity instead.</p><p>Taking that identification and ensuring that it is yours is the process of authentication<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. Once you&#8217;re authenticated, you can use the app!</p><p>In the <a href="https://apuchitnis.substack.com/p/demystifying-identity-authentication">earlier post</a> we explained that authentication can be achieved in one of three different ways. You can demonstrate that you:</p><ul><li><p><em>know</em> something</p></li><li><p><em>own</em> something, or</p></li><li><p><em>are</em> something</p></li></ul><p>Only the person you're identifying as would know or own this information, or have that identity.</p><p>All modern apps use a technique that boils down to one of these three methods to authenticate you.</p><p>So let&#8217;s look at each in turn!</p><h2>Knowledge-based authentication &#129504;</h2><p>Password-based authentication uses the first of these authentication methods &#8212; it verifies that you <em>know</em> something only the user you're logging in as would <em>know</em>: their password, pin, passphrase, or any other secret shared between the user and the service.</p><p>To prevent attackers being able to access your account in case an app&#8217;s authentication data is leaked through a hack, the app doesn&#8217;t actually store the password, but a <em>hashed</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> version of it.</p><p>Roughly speaking, the hash of your password is like an encrypted version of your password, except that given your password&#8217;s hash, it&#8217;s very hard (near-impossible, if hashed correctly) to retrieve the original password<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>.</p><h3>Limitations of passwords</h3><p>Implementing password-based authentication yourself is fraught with difficulty.</p><p>Some of the &#8220;fun&#8221; challenges you can anticipate are:</p><ul><li><p><strong>Properly implementing passwords</strong>&nbsp;&#8212; You need to manage salting, hashing, encryption and then store them securely in your database.</p></li><li><p><strong>Password recovery flows</strong>&nbsp;&#8212; You&#8217;ll also need to implement email-based password recovery. But what if your password-recovery emails go to spam? Having angry users contact customer support because they can't log in is not fun.</p></li><li><p><strong>Handle "password1@3"</strong>&nbsp;&#8212; You'll quickly realise that people like to use weak and easy-to-guess passwords.</p><p>This could allow hackers to find a password through a <em>dictionary attack</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> &#8212; something they can do if they get access to a leaked version of the database, for example &#8212; before later gaining access to the running system.</p></li><li><p><strong>Block bots</strong> &#8212; Users also <em>really</em>&nbsp;like to reuse passwords<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a>, so you might have hackers attacking your system because of a data breach on a completely different website. Blocking these hackers when they&#8217;re attacking your site from many different IP addresses is a major challenge<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a>.</p></li><li><p><strong>Additional friction</strong>&nbsp;- There will be quite a few users who won't have the patience to go through the password-recovery flows after forgetting their password. Instead, they just give up and go do something else. Forcing your user to remember something to log-in can add additional friction and increase churn.</p></li><li><p><strong>And much more</strong><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a></p></li></ul><p>Each of these steps is hard and requires scarce engineering resources, which is why authentication providers such as <a href="https://supabase.com/">Supabase</a>, <a href="https://auth0.com/">Auth0</a> and <a href="https://clerk.com/">Clerk</a> offer managed versions, at a cost.</p><p>But most significantly, users may forget their password and never even use your site in the first place!</p><p><strong>To summarise: passwords are a poor authentication mechanism. They&#8217;re hard to implement, unsafe, and lead to a poor user experience!</strong></p><p>So: is there a way to authenticate users without relying on something that only they would know?</p><p>I wouldn&#8217;t still be writing if there wasn&#8217;t, so let&#8217;s get into that!</p><h2>Ownership-based authentication &#128274;</h2><p>Ownership-based authentication is our second authentication method &#8212; it involves verifying that you <em>own</em> something that only the user you are attempting to log in as would <em>own</em>, such as their email inbox or phone number.</p><h3>One-time passwords</h3><p>For instance, when you log in, an app might send you a one-time password (OTP<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a>) via email. This is typically a random short, server-generated, alphanumeric code like <code>ZXY1</code>, but it can also be a <em>magic link</em>, which is a URL containing the OTP as part of it.</p><p>The OTP is a temporary secret that is only shared between the app and the user's email inbox, is valid for that specific interaction, and is invalidated once used.</p><p>If you log in using this OTP, then you&#8217;ve successfully demonstrated ownership of the email address connected to the user account, and so you must be that user &#8212; you&#8217;re successfully authenticated!</p><p>SMS-based logins can also be used, but SMS are not encrypted and can easily be discovered by anyone on the network by sniffing for text messages<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a>. </p><p>SMS-based logins can also be gamed for <a href="https://apuchitnis.substack.com/p/how-sms-fraud-works-and-how-to-guard-against-it">profit</a> &#8212; a big reason why many apps no longer solely rely on SMS for authentication, or even only offer SMS based authentication for premium or paying users.</p><p>But worst of all, SMS and emails may take minutes to be delivered, or may never be delivered at all<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a>!</p><p>Is there a way for the user and service to coordinate on a shared, time-based secret, without sending it over an insecure, slow and unreliable communication channel?</p><p>I haven&#8217;t stopped writing, so yes!</p><h3>Time-based one-time passwords</h3><p>Authentication apps, such as Google Authenticator, provide <em>time-based</em> OTPs (TOTP<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a>).</p><p>These authentication apps are set up well in advance of logging in, typically during the first onboarding session. Instead of using SMS or email to send the OTP to the user, an app on the user&#8217;s device generates a TOTP using the current time and a secret shared between the user and the web app.</p><p>This is much safer than SMS or email OTP delivery, as it does not rely on the security of external communication channels. The TOTP is generated locally on a device the user possesses and controls, making phishing and interception attacks much more difficult.</p><h3>Hardware authenticators</h3><p>Finally, hardware security keys, such as a YubiKey<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-12" href="#footnote-12" target="_self">12</a>, are a physical authentication device that a user can carry around with them. These are often used in high-security environments, such as in an enterprise, and can also create OTPs. These are really powerful devices, and we&#8217;ll dig into them more soon.</p><p>Whilst ownership-based authentication methods are often more secure, easier to use (no need to remember a password!), and easier to implement than passwords, they still require the user to do <em>something cumbersome</em> to authenticate.</p><p><strong>This is an opportunity to switch device, get distracted, </strong><em><strong>churn,</strong></em><strong> and never use your app at all!</strong></p><p>For this reason, authentication methods that require the user to switch device are used sparingly, only for sensitive operations such as when logging in on a new device for the first time.</p><p>So &#8212; can we authenticate a user without requiring them to use two devices? Absolutely!</p><h3>WebAuthn &#128376;&#65039;</h3><p>WebAuthn<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-13" href="#footnote-13" target="_self">13</a> is an awesome, new(ish) protocol that allows users to authenticate themselves whilst browsing the web.</p><p>Instead of using emails, passwords, YubiKeys, or OTPs, the information needed to authenticate a user is stored in an <em>authenticator</em> &#8212; typically the browser or device.</p><h4>Public-key cryptography</h4><p>The method used for authentication is public key cryptography. It&#8217;s the same technology used in Transport Layer Security (TLS) &#8212; a networking protocol which is used for nearly all traffic on the internet. It&#8217;s fundamental to security, so let&#8217;s take a quick aside to dig in:</p><p>The idea behind public-key cryptography, or asymmetric encryption, is pretty simple: each person has two keys &#8212; a public and private key. The public key is shared with everyone, and the private key is kept to themselves.</p><p>Seems pretty simple so far. But we can now do two <em>magical</em> things:</p><ul><li><p>Anyone can send the user a message by encrypting it with the user&#8217;s public key. Only the owner of the private key &#8212; the user &#8212; is able to decrypt that message.</p></li><li><p>The user can use their private key to <em>sign</em> a message. Anyone with the public key can verify that that user signed the message, and no one other than the user is able to sign it as that user.</p></li></ul><h4>Public-key cryptography in WebAuthn</h4><p>The browser or device, acting as an authenticator, <em>generates</em> a new public/private key pair as the user onboards onto a web service. The private key is kept hidden, potentially stored securely in a hardware security module (HSM<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-14" href="#footnote-14" target="_self">14</a>) on the device, and the public key is shared with the web service.</p><p>When the user later wishes to log in, the website asks the browser to <em>sign</em> a specific message. The browser or device does so using the private key, the website verifies it is indeed the same user using the previously shared public key, and the user is now authenticated!</p><blockquote><p><a href="https://webauthn.io">https://webauthn.io</a> has an awesome demo of this &#8212; try it out!</p></blockquote><p><strong>With WebAuthn, the user doesn&#8217;t need to type their username or remember a password </strong><em><strong>and</strong></em><strong> can login with a single click &#8212; very impressive!</strong></p><p>And excitingly, the prompt to log in with WebAuthn will only appear on the correct site, thereby preventing the phishing attacks that were possible with passwords &#127881;.</p><p>But logging in with a single click also makes it easy for friends, enemies, and attackers to log in with a single click, if they got close enough to your machine.</p><p>So, can we ensure it&#8217;s <em>you</em> actually doing the clicking? Surely!</p><h4>Multi-factor authentication</h4><p>The HSM can actually prompt the browser for <em>something</em> before it allows access to cryptographic operations, such as generating a public and private key or signing a message. And the browser can prompt the user for this data in turn.</p><p>The prompt can ask for a password &#8212; another example of knowledge-based authentication &#8212; or, even better, ask for <em>biometrics</em>, such as your fingerprint or face. Laptops and mobile phones commonly support fingerprint readers, so this is a fast, easy, and secure<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-15" href="#footnote-15" target="_self">15</a> way for users to authenticate.</p><p>Clicking a button to sign in and using your fingerprint is multi-factor authentication, since it requires <em>two</em> forms of authentication for you to log in: ownership of the device with the HSM and your inherent identity and ownership of your fingerprint.</p><p>And because you attest to your own identity, this is a form of <em>self-sovereign identity</em> &#8212; we&#8217;ll talk about this more in the next post.</p><h4>Cross-device authentication</h4><p>WebAuthn does pose a problem, though.</p><p>Users typically use a website on multiple devices: their phone, tablet, and laptop. It&#8217;s easy to share a password between devices &#8212; does WebAuthn offer something similar?</p><p>Yes! Well, sort of.</p><p>You can <em>delegate</em> the authentication to a roaming device &#8212; which could be your phone, laptop, or YubiKey &#8212; anything that is accessible via bluetooth, NFC, or USB. In turn, that device can sign the message on behalf of the main device.</p><p>This is an additional layer of protection, since malware on a site would need to infect an entirely different device than the main one you&#8217;re using to steal your private key &#8212; neat!</p><p>However, this means that we&#8217;d always be reliant on that first device for logging into that service, or we would need to set up a private key on <em>each</em> device we want to log in from &#8212; hardly a good user experience, and potentially worse than multi-factor login using passwords and OTPs.</p><h4>Limitations of WebAuthn</h4><p>WebAuthn isn&#8217;t a panacea, and does come with some notable downsides:</p><ul><li><p><strong>Single point of failure</strong> &#8212; If you lose a device, you&#8217;d lose access to <em>all</em> of your logins that that device stores the private keys for. Recreating those logins would take <em>ages</em>, and would be a massive pain!</p><p>Passkeys<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-16" href="#footnote-16" target="_self">16</a> are an exciting new feature to help plug this gap and to share private keys across devices, allowing for ease-of-access and easy recovery. The fun part is that Google<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-17" href="#footnote-17" target="_self">17</a> and Apple&#8217;s iCloud would sync these private keys for you &#8212; it&#8217;s built into the platform!</p><p>As excited as I am about Passkeys, they are new and controversial<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-18" href="#footnote-18" target="_self">18</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-19" href="#footnote-19" target="_self">19</a>, and it&#8217;s unclear if they&#8217;ll achieve mass adoption.</p></li><li><p><strong>Inflexibility &#8212;</strong> Passwords are flexible enough to support most flows that users need<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-20" href="#footnote-20" target="_self">20</a>. In contrast, WebAuthn only supports a subset of flows.</p><p>For example, sharing access to a single account (eg to access the bills of an energy provider) with a friend is straight-forward with passwords, but much tricker with WebAuthn.</p></li><li><p><strong>Uncertain adoption</strong> &#8212; Perhaps most important is that users aren&#8217;t familiar with the passwordless world.</p><p>Will they onboard? Will they log in again on a new device? Will they understand the user flow? We don&#8217;t know yet &#8212; and it&#8217;s a risk to try out something as innovative as this.</p></li></ul><p>Whilst I really want a passwordless future, and think WebAuthn and Passkeys could be our saviour, there&#8217;s one more form of authentication that is widely used and worth learning about.</p><h2>Identity-based authentication &#128587;</h2><p>The third way we can authenticate is to use something we <em>are</em> &#8212; our identity. Biometric authentication is one example of this, and we briefly covered it in the last section.</p><p>But we can also implement this by outsourcing identity verification to a third party that users already have an account with &#8212; an <em>identity</em> <em>provider</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-21" href="#footnote-21" target="_self">21</a>.</p><p>When you see &#8220;Login with Google&#8221; or &#8220;Login with Facebook&#8221;, that's identity-based authentication in action.</p><p>The identity provider tells the app that you are indeed the person you claim to be by providing it with a <em>signed</em> ID token.</p><p>When the app you&#8217;re signing into gets this token, it uses the signature to verify that the identity provider did indeed create that token &#8212; and now you&#8217;re fully authenticated!</p><h4>OpenID Connect</h4><p>OpenID Connect (OIDC<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-22" href="#footnote-22" target="_self">22</a>) is the underlying protocol used for this flow. OIDC is a layer on top of OAuth 2.0 &#8212; a protocol used for access delegation<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-23" href="#footnote-23" target="_self">23</a> &#8212; that standardises identity data like your name and email address.</p><p>Big tech giants like Google, Facebook, Twitter, and Microsoft all offer identity services that implement OIDC. It's easy and convenient for users since they can leverage their existing accounts.</p><p>And it saves a ton of headaches for developers since they no longer need to build secure authentication systems. Instead of authenticating a user yourself, just plug into Google, and you're done!</p><p>This is an example of <em>federated</em> identity<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-24" href="#footnote-24" target="_self">24</a>, where a user&#8217;s identity is used across multiple systems &#8212; Google, Facebook, and all the apps that rely on these identity providers &#8212; instead of just one.</p><h4>Limitations of identity federation</h4><p>However, identity federation has a fundamental flaw: the identity provider can revoke access at any time, instantly locking you out of all sites. You don&#8217;t <em>own</em> your identity &#8212; it&#8217;s stored on Google&#8217;s servers, not yours.</p><p>You may think it&#8217;s rare, but it&#8217;s surprisingly common<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-25" href="#footnote-25" target="_self">25</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-26" href="#footnote-26" target="_self">26</a> to find posts on Hacker News of users being denied access to their Google or Facebook accounts due to one reason or another, and totally unable to access any service that they used Google or Facebook as an identity provider for.</p><p>The quest for true user-owned identity is an active area of innovation which I'll cover in an upcoming post! Subscribe now to be updated when it&#8217;s released &#128071;</p><p>I would love to hear folks thoughts on this &#8212; feel free to comment below or <a href="https://twitter.com/apuchitnis">DM</a> me!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading the engineering blog on koodos! Subscribe for free to receive new posts and support our work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Have a great week all &#8212; stay tuned for Part 3!</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Authentication is in fact broader than simply validating your identity &#8212; it can refer to proving any assertion, such as your age being greater than some threshold, that you have a valid driving licence, or that you have enough funds in your bank.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Cryptographic_hash_function">https://en.wikipedia.org/wiki/Cryptographic_hash_function</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>We can make the hash even harder to crack by adding salt to the original &#8212; random data that prevents attackers using pre-computed data to guess your original password.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Dictionary_attack">https://en.wikipedia.org/wiki/Dictionary_attack</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>About 64% of people reuse at least one password across multiple services: <a href="https://auth0.com/blog/what-is-credential-stuffing">https://auth0.com/blog/what-is-credential-stuffing</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Bot_prevention">https://en.wikipedia.org/wiki/Bot_prevention</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>There&#8217;s a few other reasons why passwords are challenging &#8212; and many of these are outside of your control as an app developer. Malware can log the keys the user presses whilst typing the password to secretly exfiltrate it, an enemy (or friend!) could watch over your shoulder as you type it in (this is known as <a href="https://en.wikipedia.org/wiki/Shoulder_surfing_(computer_security)">shoulder surfing</a>), and phishing attacks could prompt the user to enter their password when they&#8217;re on similarly branded but malicious website.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/One-time_password">https://en.wikipedia.org/wiki/One-time_password</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p><a href="https://security.stackexchange.com/questions/112111/capturing-text-messages-on-the-fly">https://security.stackexchange.com/questions/112111/capturing-text-messages-on-the-fly</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p><a href="https://messageiq.io/sms-deliverability">https://messageiq.io/sms-deliverability</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Time-based_one-time_password">https://en.wikipedia.org/wiki/Time-based_one-time_password</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-12" href="#footnote-anchor-12" class="footnote-number" contenteditable="false" target="_self">12</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/YubiKey">https://en.wikipedia.org/wiki/YubiKey</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-13" href="#footnote-anchor-13" class="footnote-number" contenteditable="false" target="_self">13</a><div class="footnote-content"><p><a href="https://webauthn.io">https://webauthn.io</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-14" href="#footnote-anchor-14" class="footnote-number" contenteditable="false" target="_self">14</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Hardware_security_module">https://en.wikipedia.org/wiki/Hardware_security_module</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-15" href="#footnote-anchor-15" class="footnote-number" contenteditable="false" target="_self">15</a><div class="footnote-content"><p>Your biometrics are stored securely, and never leave your device &#8212; they&#8217;re only used to unlock the HSM used to store your private keys.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-16" href="#footnote-anchor-16" class="footnote-number" contenteditable="false" target="_self">16</a><div class="footnote-content"><p><a href="https://simplewebauthn.dev/docs/advanced/passkeys">https://simplewebauthn.dev/docs/advanced/passkeys</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-17" href="#footnote-anchor-17" class="footnote-number" contenteditable="false" target="_self">17</a><div class="footnote-content"><p><a href="https://blog.google/technology/safety-security/the-beginning-of-the-end-of-the-password">https://blog.google/technology/safety-security/the-beginning-of-the-end-of-the-password</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-18" href="#footnote-anchor-18" class="footnote-number" contenteditable="false" target="_self">18</a><div class="footnote-content"><p><a href="https://auth0-com.cdn.ampproject.org/v/s/auth0.com/blog/amp/our-take-on-passkeys">https://auth0-com.cdn.ampproject.org/v/s/auth0.com/blog/amp/our-take-on-passkeys</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-19" href="#footnote-anchor-19" class="footnote-number" contenteditable="false" target="_self">19</a><div class="footnote-content"><p><a href="https://fy.blackhats.net.au/blog/2023-02-02-how-hype-will-turn-your-security-key-into-junk/">https://fy.blackhats.net.au/blog/2023-02-02-how-hype-will-turn-your-security-key-into-junk</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-20" href="#footnote-anchor-20" class="footnote-number" contenteditable="false" target="_self">20</a><div class="footnote-content"><p><a href="https://jrhawley.ca/2023/08/07/blocked-by-cloudflare">https://jrhawley.ca/2023/08/07/blocked-by-cloudflare</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-21" href="#footnote-anchor-21" class="footnote-number" contenteditable="false" target="_self">21</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Identity_provider">https://en.wikipedia.org/wiki/Identity_provider</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-22" href="#footnote-anchor-22" class="footnote-number" contenteditable="false" target="_self">22</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/OpenID#OpenID_Connect_(OIDC)">https://en.wikipedia.org/wiki/OpenID#OpenID_Connect_(OIDC)</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-23" href="#footnote-anchor-23" class="footnote-number" contenteditable="false" target="_self">23</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/OAuth#OAuth_2.0">https://en.wikipedia.org/wiki/OAuth#OAuth_2.0</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-24" href="#footnote-anchor-24" class="footnote-number" contenteditable="false" target="_self">24</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Federated_identity">https://en.wikipedia.org/wiki/Federated_identity</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-25" href="#footnote-anchor-25" class="footnote-number" contenteditable="false" target="_self">25</a><div class="footnote-content"><p><a href="http://zuckbannedme.com">http://zuckbannedme.com</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-26" href="#footnote-anchor-26" class="footnote-number" contenteditable="false" target="_self">26</a><div class="footnote-content"><p><a href="https://www.google.com/search?q=lost+access+google+account+site%3Anews.ycombinator.com">https://www.google.com/search?q=lost+access+google+account+site%3Anews.ycombinator.com</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Musings on Mixed Reality]]></title><description><![CDATA[Awaiting Apple's Mixed Reality Headset]]></description><link>https://blog.koodos.com/p/musings-on-mixed-reality</link><guid isPermaLink="false">https://blog.koodos.com/p/musings-on-mixed-reality</guid><dc:creator><![CDATA[jad]]></dc:creator><pubDate>Tue, 30 May 2023 02:26:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_Q4s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We have much to share over at <a href="http://koodoslabs.xyz/">koodos labs</a> with our efforts rolling out <a href="http://shelf.im/">Shelf</a>, but I&#8217;ll save that for a future update. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_Q4s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Q4s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_Q4s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_Q4s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_Q4s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Q4s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png" width="404" height="404" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10995916-720e-456d-b04c-a11a177bc921_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:404,&quot;bytes&quot;:1472275,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_Q4s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_Q4s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_Q4s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_Q4s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10995916-720e-456d-b04c-a11a177bc921_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Apple&#8217;s about to announce its first foray into mixed reality, an advanced AR/VR headset destined to transport wearers into immersive new realms of connection. It will be the latest attempt by Apple to redefine human connection through media.&nbsp;</p><p>When I started writing this, it wasn&#8217;t meant as another speculative piece on how mixed reality might change the world.  I remain doubtful people will opt for extended time in clunky and costly headsets.&nbsp;Yet experience warns against betting against Apple in matters of hardware. So, somewhat against initial intention, this is me waxing poetic about the world that could emerge should Apple finally propel us into mixed reality. Perhaps I&#8217;m just another fanboy, but if any company can navigate that elusive shoal between human needs and technological possibility, it would be Apple. </p><p>Each new medium, from cuneiform to encryption, alters the nature of community and relationship. The telegraph swiftly connected distant hearts; radio gave voices to the voiceless. Social platforms have made connection constant and performative, as if living life connected to an audience.&nbsp;&nbsp;Virtual and augmented reality promise connection unbound from the corporeal world. No longer confined to sharing thoughts or images after an experience, but sharing experience itself, as lived in a virtual space. What changes when our realities can be shared, not just described? When distance collapses not into text or image, but into a dimensional shift that transports us, Alice in Wonderland-esque, across time and space?</p><p>The potential for human connection may be both the means and end of whatever new realities Apple has coded into being. Its devices spread through networks, even as they are networks made manifest, a map of humankind overlaid onto the world. Each heartbeat pulses out a steady beat of intimacy and alienation, and technology quickens the pulse.</p><p>New realities bring both promise and surcease, profoundly reshaping the connections between us. How fitting that a company so adept at consecrating intimacy through glass and metal would turn its alchemist&#8217;s furnace to distilling human connection into a vaporous stream, fit to flow across the chasms that separate us. The medium is still the message, however rarefied the medium becomes. All else perishes if technology doesn&#8217;t join lives and souls. Let&#8217;s not forget: connection remains its most fundamental, and lasting, purpose.</p><p>With skepticism and anticipation, see you on the other side?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading koodos labs! Subscribe for free for more musings and writing from us:</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Just be your shelf.]]></title><description><![CDATA[How your experience of aesthetic pleasure is bound to your sense of personal identity]]></description><link>https://blog.koodos.com/p/just-be-your-shelf</link><guid isPermaLink="false">https://blog.koodos.com/p/just-be-your-shelf</guid><dc:creator><![CDATA[jad]]></dc:creator><pubDate>Mon, 13 Feb 2023 17:12:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Q2kw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>At koodos labs, we&#8217;ve been exploring interfaces to utilize and manage your personal data. We&#8217;ve been interested in helping people connect more deeply with themselves and with the people and media that inspire them. With that, we&#8217;re very interested in <em>why</em> we like what we like. </p><p>With that context in mind, I&#8217;ve been curious about how we form our tastes and what makes us like what we like. My thoughts here are heavily inspired by a number of perspectives on the topic, including the work of Matthew Salganik, John Deighton (one of koodos labs&#8217; advisors), Susan Rogers, Ogi Ogas, Luke Burgis, W. David Marx, and many others.</p><p>In today&#8217;s piece, I share some of my takeaways from Susan Rogers and Ogi Ogas&#8217; fantastic book, This Is What It Sounds Like &#8212; for more, check out their book <a href="https://www.thisiswhatitsoundslike.com/">here</a>. </p><p>Before we jump in, a few announcements:</p><ul><li><p>Will you be at SXSW? We're hosting an event with <a href="https://crush.ventures/">Crush Ventures</a>. It'll be after-hours at a coffee roastery with a vinyl DJ, tacos and ~some announcements~.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://partiful.com/e/5cKSFyKuyyxVLI8pZecm&quot;,&quot;text&quot;:&quot;Request an invite&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://partiful.com/e/5cKSFyKuyyxVLI8pZecm"><span>Request an invite</span></a></p><p></p></li><li><p>The culmination of months of research &#8212; I published a <a href="https://a16zcrypto.com/progressive-decentralization-a-high-level-framework/">high-level framework on progressive decentralization</a> for fellow builders alongside my collaborator, Prof Scott Kominers.</p></li><li><p>We coordinated a limited working group on scaling cooperative platform models. The discussions led to <strong><a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4302681">a paper</a></strong> that has been in the Top Ten Download list on SSRN for multiple journals since it&#8217;s publication.</p></li></ul><div><hr></div><h2>I identify as&#8230;</h2><p>Our taste profile is formed through biology, experience and happenstance. Your random neural wiring, your exposure to media and culture in the time and place you grew up, and the sheer chance of consuming this piece and not <em>that </em>piece at crucial moments in your life all shaped your taste and influenced the kind of art, music, food, fashion, etc. that you can fall in love with. Your one-of-a-kind taste profile develops and evolves as your internal perceiving, thinking, feeling and social networks learn through experience.</p><p>If we were to disregard our broader need for societal acceptance and status &#8212; we&#8217;ll return to these in a future piece &#8212; then our <em>true</em> taste profile at any point in time isn&#8217;t something that we choose any more than we choose our height or sexual orientation. The art that tickles our mind isn&#8217;t something that we can control. All we can do is be open to learning what this wandering can teach us about our true nature &#8212; whether we&#8217;re musically attracted to Billie Eilish or Billy Idol. In human relationships and musical relationships, our opportunities for fulfillment start with being honest with ourselves about what we are truly attracted to. In short, the way our mind reacts to art is less something we cultivate, and more something we <em>recognize</em>.  </p><p>Because each of our brains are wired to experience rewards from different facets of music, we&#8217;d be misguided to think that anyone&#8217;s taste is superior to anyone else&#8217;s.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q2kw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q2kw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png 424w, https://substackcdn.com/image/fetch/$s_!Q2kw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png 848w, https://substackcdn.com/image/fetch/$s_!Q2kw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png 1272w, https://substackcdn.com/image/fetch/$s_!Q2kw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q2kw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png" width="456" height="412.04819277108436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:996,&quot;resizeWidth&quot;:456,&quot;bytes&quot;:1725263,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Q2kw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png 424w, https://substackcdn.com/image/fetch/$s_!Q2kw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png 848w, https://substackcdn.com/image/fetch/$s_!Q2kw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png 1272w, https://substackcdn.com/image/fetch/$s_!Q2kw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28c26f51-b08f-4219-a95e-c47e89cb08d7_996x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The neuroscience of liking a song</h2><p>Our most private dreams and fantasies &#8212; the fears, hopes, and longings nestled deep in our psychic core &#8212; are all bound together in a neural network in the brain, one associated with our sense of self. One of the best ways to activate the personalized &#8220;self network&#8221; is by consuming art that resonates with the sweet spots on our taste profile. For example, when we&#8217;re immersed in the enjoyment of a favorite record, our mind-wandering network lights up like fireworks. </p><div class="pullquote"><p>The music you respond to most powerfully can reveal those parts of yourself that are the most &#8220;you&#8221; &#8212; those places your mind unerringly returns to when it is daydreaming or fantasizing. </p></div><p>As our brain is idling, the contents of our reveries &#8212; what the psychologist William James labeled &#8220;flights of the mind&#8221; &#8212; contribute to the conscious conception of our personal self. Whenever we daydream or fantasize, our mind drifts to places that are intimate and private, thinking about what we like, what we need, and what we desire. Thus, when we listen to music we love &#8212; music that aligns with our sweet spot &#8212; we activate the part of our mind that fuels the deepest currents of our identity.</p><p>Beyond that, when we&#8217;re consuming something, we naturally start to link our personal experience to the experience of the art. Nobel Laureate Eric Kandel explored how when we view a painting, we start to evaluate whether the ideas and feelings it evokes within us match our self-concept. Our memory circuits kick into retrieval mode rather than encoding mode and we automatically &#8220;play back&#8221; memories of people, places, and events that we associate. </p><p><strong>So what do we end up liking?</strong> Cultural artifacts that maximize the reward of letting our minds wander &#8212; rewards linked to our deepest conception of personal self. And this can be different at different points, for example sometimes we need to access our most-buried emotions, while other times we need to feel our inner dance, warrior or athlete. Sometimes we need words to express our tangled thoughts, other times we&#8217;d like to visualize an impossible romance. We turn to our favorite records, videos, poems to take us where we want to go &#8212; where we <em>need</em> to go. </p><div class="pullquote"><p>Be it art or romantic partners, we fall in love with the ones who make us feel like our best and truest self. </p></div><h2>Sharing AUX, sharing myself</h2><p>Gaining insight into a friend&#8217;s musical tastes can be an intimate experience that reveals how they see themselves in relation to the world, the value of aesthetic experiences in their lives, or who they want to be when they grow up (or who they wanted to be). In many ways, when we play a song for a friend or send them a recommendation, we aren&#8217;t merely sharing the content with them, but we&#8217;re letting them in on a part of who we are. This doesn&#8217;t just apply to music, but extends to other cultural artifacts. </p><p>Interestingly, the identity constructive aspect of culture tends to be more pronounced in our more formative adolescent years. That&#8217;s because, neurally, what teens think of themselves is almost identical to their impression of what others think about them. Effective social cognition relies on self-knowledge and self-awareness, and both are under development through adolescence. This is also why lots of social apps, which tend help us temper our view of ourselves, start with a young audience &#8212; beyond that group just having more time on their hands.  </p><div><hr></div><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://twitter.com/lukeburgis/status/1356376338597294088?s=20&amp;t=L9LoyUnAhzQPgepL-5IDCw&quot;,&quot;full_text&quot;:&quot;Mimetic desire is wanting \&quot;according to the desire of another\&quot;&#8212;we want what other people want *because* they want it. But we almost never realize we're doing this. We live under the illusion of the Romantic Lie. The path to the objects we desire is never straight, but curved. &quot;,&quot;username&quot;:&quot;lukeburgis&quot;,&quot;name&quot;:&quot;Luke Burgis&quot;,&quot;profile_image_url&quot;:&quot;&quot;,&quot;date&quot;:&quot;Mon Feb 01 22:58:14 +0000 2021&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/EtLIjsOXYAImXbm.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/P3hXrLu8R8&quot;,&quot;alt_text&quot;:null}],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:0,&quot;retweet_count&quot;:8,&quot;like_count&quot;:35,&quot;impression_count&quot;:0,&quot;expanded_url&quot;:{},&quot;video_url&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p>Beyond a personal resonance, there&#8217;s a confluence of external factors for why we like what we like &#8212; and also what we say we like. We&#8217;ll explore those in a future article. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Until then, subscribe to make sure you&#8217;re the first to hear when it goes live:</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[From Shelf to Self: Identity Construction in the Digital World]]></title><description><![CDATA[When we were thinking about ways to incentivize people to re-aggregate all their data in one place, we often found ourselves returning to the metaphor of the shelf, to things tacked up on bedroom walls or record collections.]]></description><link>https://blog.koodos.com/p/from-shelf-to-self-identity-construction</link><guid isPermaLink="false">https://blog.koodos.com/p/from-shelf-to-self-identity-construction</guid><dc:creator><![CDATA[jad]]></dc:creator><pubDate>Thu, 20 Oct 2022 15:04:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!V8fk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V8fk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V8fk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png 424w, https://substackcdn.com/image/fetch/$s_!V8fk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png 848w, https://substackcdn.com/image/fetch/$s_!V8fk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png 1272w, https://substackcdn.com/image/fetch/$s_!V8fk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V8fk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png" width="462" height="451.92666005946484" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:987,&quot;width&quot;:1009,&quot;resizeWidth&quot;:462,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V8fk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png 424w, https://substackcdn.com/image/fetch/$s_!V8fk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png 848w, https://substackcdn.com/image/fetch/$s_!V8fk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png 1272w, https://substackcdn.com/image/fetch/$s_!V8fk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7490b1-a82d-4122-95b1-9e9d4bcd79ae_1009x987.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When we were thinking about ways to incentivize people to re-aggregate all their data in one place, we often found ourselves returning to the metaphor of the shelf, to things tacked up on bedroom walls or record collections. All of these represent stores of our stuff and physical manifestations of who we are, what we are, or how we want those closest to us to perceive us.</p><p>Using this framing, of the shelf as a proxy for the self, it&#8217;s an interesting coincidence that the words <em>self</em> and <em>shelf </em>are only one letter apart. Because to self-chronicle is to self-construct. The journey of identity construction is intertwined with our active collecting and chronicling of things and ideas. It isn&#8217;t that fixed self that we have to actualize or memorialize, it&#8217;s the changing and evolving one.</p><p>Life online can move so quickly it often feels like a blur. Swipe left, swipe right, swipe up, swipe down. Dings and pings for update notifications. The rabbit holes that algorithms send us down, some of which end up being too good for our own good. And the next thing we know, three hours have passed. In a lot of ways, today&#8217;s internet moves at such speed that it puts us in a kind of trance.</p><p>Is the &#8216;metaverse&#8217;, being heralded as the next manifestation of our connected lives, going to make things any better? What about the lean-back AI-generated future? One hint may lie in the &#8216;For You&#8217;-page, and the impending FYP-ification of our digital spaces. Everything is being personalized not just down to the level of the individual, but also to the moment at which the individual opens the page. Today&#8217;s online experience is dictated by momentum, instead of discrete moments.</p><p>What if we could slow things down, so that each digital moment doesn&#8217;t merely &#8216;autoplay&#8217; into the next one? A place where things that truly resonate with us can be captured and serve as extensions of ourselves. Where our online actions are more intentional, more contemplative, and more deliberately non-swipey. What about spaces that feel like &#8220;sanctuaries&#8221;?</p><blockquote><p>&#8220;One of the most necessary corrections to the character of mankind today is a considerable strengthening of the contemplative element in it.&#8221;&nbsp;</p></blockquote><p>&#8212; Nietzsche</p><p>If we wanted to get big-brainy about it, collecting lifts that moment to the level of consciousness. Of going from just one more nanosecond of life online to something of significance for us. But simply collecting digital things, and moments, isn&#8217;t enough.</p><h3><strong>To produce is to real-ize</strong></h3><p>In French, the word for producer is &#8216;r&#233;alisateur&#8217;&#8202;&#8212;&#8202; or the one who realizes. To produce is to realize. It&#8217;s the idea of making something &#8216;real&#8217;, of taking a jumble of ideas and turning them into something understandable and appealing. That&#8217;s what good producers do. They make things that don&#8217;t yet exist &#8216;real&#8217;. And this applies beyond the context of identity construction. If we think about the process of navigating ideas, we strengthen our understanding of the problem or get clarity on the idea by producing, by shipping, by putting something out there. The act of producing helps you realize the idea and take it from abstract to concrete.</p><p>On the advice of a dear mentor, I (Jad) recently took part in a Hoffman Institute weekend retreat and was taken aback by the centering on &#8220;Expression&#8221; in their process:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fcB_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fcB_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fcB_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fcB_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fcB_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fcB_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg" width="239" height="300" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:239,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fcB_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fcB_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fcB_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fcB_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6a714f99-06c8-4881-a370-b54f87667299_239x300.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In a psychotherapeutic context, you might have heard the advice to sit with that feeling to get through it faster. This is similar. Expressing ourselves&#8202;&#8212;&#8202;whether that&#8217;s by speaking to others, journaling about it, embodying what we&#8217;re feeling physically&#8202;&#8212;&#8202;the act of &#8220;expressing&#8221;, and therefore &#8220;producing&#8221;, helps us realize.</p><p>On the internet today, consumption is considered the main way to establish one&#8217;s particular identity (i.e. we are what we consume) and production is usually ignored in the discourse around identity-forming, since whatever we do outside of work is considered &#8220;consumption&#8221;. But what happens if we reframe so that more of what we do is framed as &#8220;productive&#8221;&#8202;&#8212; can some forms of consumption be framed through the lens of &#8220;production&#8221;?</p><h3><strong>And the more we realize, the more we become ourselves</strong></h3><blockquote><p>The unity of one&#8217;s life consists in the coherence of the story one can tell about oneself.&nbsp;</p></blockquote><p>&#8202;&#8212;&#8202;Simon Critchley</p><p>As life plays out, we&#8217;re constantly re-writing our one-page autobiography. And the story that we tell about ourselves might be different in different contexts, around different audiences or in different points in time.</p><blockquote><p>&#8220;Who are you?&#8221; said the Caterpillar.</p><p>Alice replied, rather shyly, &#8220;I&#8202;&#8212;&#8202;I hardly know, Sir, just at present&#8202;&#8212;&#8202;at least I know who I was when I got up this morning, but I think I must have been changed several times since then.&#8221;</p><p>&#8220;What do you mean by that?&#8221; said the Caterpillar, sternly. &#8220;Explain yourself!&#8221;</p><p>&#8220;I can&#8217;t explain myself, I&#8217;m afraid, Sir,&#8221; said Alice, &#8220;because I am not myself, you see.&#8221;</p></blockquote><p>&#8212; Alice in Wonderland, Chapter 5, Advice from a Caterpillar</p><p>We&#8217;re constantly writing a rough draft of our autobiography. It&#8217;s perpetually reshaped by our experiences, but also bounded by where we&#8217;re at in our development. The more our story comes together, and the more at peace we are with our story, the more we know ourselves. And, in culture today, we&#8217;re in the metamodern phase of rebellion against a fixed state of self&#8202;&#8212;&#8202;moving beyond the postmodernist view of &#8220;performing&#8221; as whoever we want to be at any given point in time.</p><h3><strong>Delineation of the self as part of our story</strong></h3><p>As we chronicle our lives online, we are forced to distinguish between our role as reader and our role as protagonist. And in that process, we separate the self from the things that influence the self in the story we tell ourselves, and the story we in turn tell the world about ourselves.</p><p>We rarely record such a realization of ourselves. Instead we capture bits of our selves, operating in particular moments. But it is this deliberate self-chronicling that becomes self-constructive.</p><p>So rather than view our identities as a &#8220;nucleus&#8221; and our quest to center who we are in one place&#8202;&#8212;&#8202;to create one single central story, or one &#8216;profile&#8217; of ourselves&#8202;&#8212;&#8202;our identity might be better conceived as &#8220;distributed&#8221;. Distributed across media that&#8217;s shaped us. We are a constellation of the things and experiences that define us. Or to use Walt Whitman&#8217;s phrase, &#8220;we contain multitudes&#8221;.</p><p>The reluctance of most user-generated content platforms to come to terms with their status as not just a social network but also a personal resource is rooted in this tension. Therefore, any effort to understand the nature and origins of the self is an interpretive effort largely done elsewhere, in parallel perhaps to our life online.</p><p>Our understanding of who we are is best served if we view it through a constructivist lens. That way we can see ourselves as the product of the situations in which we operate, the sum of things in which we participate, and put our gaze upon what is hopefully a vast collection of encounters and experiences.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.koodos.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to our semi-regular newsletter that chronicles research, thoughts and updates from the team at <a href="https://www.koodoslabs.xyz/">koodos labs</a>.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>