<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<rss version="2.0"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:media="http://search.yahoo.com/mrss/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
  <channel>
    <title>🌤️ on @jelloeater👾</title>
    <link>https://jelloeater.me/weather/%EF%B8%8F/</link>
    <description>Recent content in 🌤️ on @jelloeater👾</description>
    <generator>Hugo</generator>
    <language>en</language>
    
    <copyright>Jelloeater 2024</copyright>
    <image>
      <title>🌤️ on @jelloeater👾</title>
      <url>https://jelloeater.me/weather/%EF%B8%8F/favicon-32x32.png</url>
      <link>https://jelloeater.me/weather/%EF%B8%8F/</link>
      <description>Recent content in 🌤️ on @jelloeater👾</description>
    </image>
    <lastBuildDate>Sat, 19 Jul 2025 20:53:23 +0000</lastBuildDate>
    
    <atom:link href="https://jelloeater.me/weather/%EF%B8%8F/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>July Blog Dump</title>
      <link>
      https://jelloeater.me/blog/blog-dump-2025-july/
      </link>
      <dc:creator>Jelloeater</dc:creator>
      <comments>
      https://jelloeater.me/blog/blog-dump-2025-july/#comments
      </comments>
      <pubDate>Sat, 19 Jul 2025 20:53:23 +0000</pubDate>
      <category>blogdump</category>
      
      <category>link_dump</category>
      <guid>https://jelloeater.me/blog/blog-dump-2025-july/</guid>
      


    
    
    
    

    
    


    
        



    

    

    <media:content url="https://jelloeater.me/blog/blog-dump-2025-july/gen-cover.png" medium="image" type="image/png"/>
    <media:thumbnail url="https://jelloeater.me/blog/blog-dump-2025-july/gen-cover.png"/>
    



      
      
      <description><![CDATA[Blogs ranging from tech and design to personal reflections and creative works]]></description>
      
      <content:encoded>
        <![CDATA[
        
        <h2 id="more-links-more-problems">More links, more problems</h2>
<p>While I really need to find more time to read through, I know I&rsquo;m not going to have the time to read through all of them. Maybe eventually I&rsquo;ll get through the whole list, but for now, I just want to at least leave this here incase anyone else finds it interesting. Pardon the LLM for the descriptions, but I don&rsquo;t have the time to write them all out myself.</p>
<h3 id="a-curated-collection-of-blogs-to-check-out"><strong>A Curated Collection of Blogs to Check Out:</strong></h3>
<ul>
<li><strong><a href="https://wildwild.directory/blog">The Wild Wild Web - Blog</a></strong>: A blog by the &ldquo;Wild Wild Web&rdquo; directory, focusing on curated content and discussions about the independent web and smaller online communities.</li>
<li><strong><a href="https://marmar22.tilde.team/">Marmar @ tilde.team</a></strong>: A personal blog likely part of the tildeverse, featuring various musings and thoughts from Marmar.</li>
<li><strong><a href="https://rdldn.co.uk/">Roast Dinners In London</a></strong>: A highly specific blog dedicated to reviewing and celebrating roast dinners found in London, complete with photos and detailed critiques.</li>
<li><strong><a href="https://www.laurahilliger.com/blog/">Posts - Laura Hilliger</a></strong>: Laura Hilliger&rsquo;s personal blog, featuring posts on open culture, technology, education, and social impact, often from a progressive viewpoint.</li>
<li><strong><a href="https://bohemiansultriness.nekoweb.org/">Bohemian Sultriness</a></strong>: A personal blog with an eclectic mix of thoughts, art, and possibly reflections on a bohemian lifestyle.</li>
<li><strong><a href="https://mjulius.com/">Michael Julius</a></strong>: Michael Julius&rsquo;s personal site, likely featuring a mix of professional work (design/development) and personal projects or writings.</li>
<li><strong><a href="https://insidemordecai.com/">Mordecai Kipng&rsquo;etich</a></strong>: Mordecai Kipng&rsquo;etich&rsquo;s personal blog, offering insights and thoughts on various topics, potentially tech or personal development.</li>
<li><strong><a href="https://gurupanguji.com/">@gurupanguji - Ramblings of an Eccentric Soul</a></strong>: A blog offering philosophical, personal, and sometimes humorous &ldquo;ramblings&rdquo; from a unique perspective.</li>
<li><strong><a href="https://notes.jeddacp.com/">Notes by JCProbably</a></strong>: A collection of notes and short-form writings from JCProbably, covering a range of interests.</li>
<li><strong><a href="https://perrotta.dev/">¬ just serendipity 🍀</a></strong>: The personal blog of a developer (Perrotta), likely sharing thoughts on code, personal projects, and other serendipitous discoveries.</li>
<li><strong><a href="https://uncorrected.net/">Uncorrected - By Alex Nonnemacher</a></strong>: Alex Nonnemacher&rsquo;s blog, presenting &ldquo;uncorrected&rdquo; thoughts, essays, and observations, often on culture and technology.</li>
<li><strong><a href="https://jagibson.org/">jagibson.org</a></strong>: A personal website for Jagibson, likely containing updates, projects, or personal reflections.</li>
<li><strong><a href="https://folkmoss.bearblog.dev/">The Folkmoss Logs</a></strong>: A personal journal or log of thoughts and experiences, hosted on the minimal Bear Blog platform, often evoking a cozy, reflective tone.</li>
<li><strong><a href="https://thewallflowerdigest.co.uk/">The Wallflower Digest - Blogging book reviews, embroidery &amp; whatever else may on my mind.</a></strong>: A charming UK-based blog covering book reviews, embroidery projects, and a variety of personal thoughts and interests.</li>
<li><strong><a href="https://jvns.ca/">Julia Evans</a></strong>: Julia Evans&rsquo;s highly popular blog known for its clear, insightful, and often illustrated explanations of technical concepts, particularly for programmers.</li>
<li><strong><a href="https://www.jemjabella.co.uk/">Jem - UK blogger - Developer - Entrepeneur</a></strong>: Jem&rsquo;s blog, showcasing insights from a UK-based developer and entrepreneur, likely covering technology, business, and personal experiences.</li>
<li><strong><a href="https://img25.com/">my photos</a></strong>: A minimalist photo blog, dedicated to sharing personal photography.</li>
<li><strong><a href="https://www.benji.dog/">benji</a></strong>: A simple, personal blog that might include updates on life, projects, or musings, perhaps with a charming, laid-back vibe.</li>
<li><strong><a href="https://memory.elliott.computer/">memory site</a></strong>: A personal &ldquo;memory site&rdquo; by Elliott, possibly a digital garden or collection of thoughts and personal archives.</li>
<li><strong><a href="https://www.mollywhite.net/">Molly White</a></strong>: Molly White&rsquo;s critical blog, often focusing on web3, cryptocurrency, and financial technology, known for its in-depth analysis and skepticism.</li>
<li><strong><a href="https://www.eliseomartelli.it/">Eliseo Martelli</a></strong>: Eliseo Martelli&rsquo;s personal and professional website, likely featuring work related to web development, design, or personal interests.</li>
<li><strong><a href="https://coyotetracks.org/">Coyote Tracks</a></strong>: A blog that might explore nature, travel, personal journeys, or reflections on the wild.</li>
<li><strong><a href="https://marksuth.dev/">Home - Mark Sutherland</a></strong>: Mark Sutherland&rsquo;s developer blog, where he shares insights, projects, and thoughts on software development.</li>
<li><strong><a href="https://v6.robweychert.com/blog/">Blog Archive | Rob Weychert</a></strong>: The blog archive of Rob Weychert, likely containing reflections on design, technology, and culture, with a focus on past writings.</li>
<li><strong><a href="https://tedium.co/">Tedium | An Offbeat Digital Newsletter</a></strong>: A unique newsletter and blog that delves into obscure, fascinating, and often overlooked corners of history, technology, and culture.</li>
<li><strong><a href="https://shkspr.mobi/blog/">Terence Eden’s Blog - Regular nonsense about tech and its effects 🙃</a></strong>: Terence Eden&rsquo;s blog, offering often humorous and insightful commentary on technology, its societal effects, and digital policy.</li>
<li><strong><a href="https://bookmaniac.org/">Composite - Internet - information - criticism - poetry - connection - feminism - open source - open spaces - translation - digression - recursion - boats - wheelchairs - disability rights - ranting - the future - by Liz Henry</a></strong>: Liz Henry&rsquo;s incredibly diverse blog, covering a vast range of topics including internet culture, open source, feminism, and disability rights with critical insight.</li>
<li><strong><a href="https://birchtree.me/">Birchtree</a></strong>: A personal blog, likely featuring thoughts on technology, productivity, and everyday life.</li>
<li><strong><a href="https://www.aleesteele.com/">/home (aleesteele.com)</a></strong>: A personal online space by Alee Steele, potentially sharing reflections, creative work, or personal updates.</li>
<li><strong><a href="https://www.scottishstoater.com/">Scottish Stoater - A collection of photographs and notes by Chris Collins</a></strong>: Chris Collins&rsquo;s blog, featuring stunning photography and personal notes from Scotland, capturing its landscapes and spirit.</li>
<li><strong><a href="https://www.chrisvogt.me/">Chris Vogt - Software Engineer in San Francisco | Digital Garden of Photography, Piano, and Travel</a></strong>: Chris Vogt&rsquo;s personal digital garden, blending his software engineering insights with his passions for photography, piano, and travel.</li>
<li><strong><a href="https://www.rousette.org.uk/">but she&rsquo;s a girl&hellip;</a></strong>: A personal blog by a woman, sharing her thoughts and experiences, possibly with a focus on feminism or personal identity.</li>
<li><strong><a href="https://write.as/matt/">Matt - Write.as</a></strong>: A minimalist blog by Matt, hosted on Write.as, likely featuring personal reflections or short-form essays.</li>
<li><strong><a href="https://sethw.xyz/">HELLO, I&rsquo;M SETH WERKHEISER - Founder of the Social Media Escape Club</a></strong>: Seth Werkheiser&rsquo;s blog, promoting a break from traditional social media and offering insights on independent online presence.</li>
<li><strong><a href="https://www.nicksimson.com/">Nick Simson, Internet Nobody.</a></strong>: Nick Simson&rsquo;s self-deprecatingly named blog, offering personal thoughts and observations on technology, internet culture, and daily life.</li>
<li><strong><a href="https://xandra.cc/">the museum of alexandra</a></strong>: Alexandra&rsquo;s unique personal site, presented as a &ldquo;museum&rdquo; of her thoughts, projects, and digital artifacts.</li>
<li><strong><a href="https://frills.dev/">Home - Frills</a></strong>: A developer&rsquo;s blog, potentially focusing on the &ldquo;frills&rdquo; of web development-design, user experience, and aesthetic details.</li>
<li><strong><a href="https://blog.gerbenjacobs.nl/">Gerben Jacobs</a></strong>: Gerben Jacobs&rsquo;s personal blog, likely covering topics related to technology, personal development, or professional insights.</li>
<li><strong><a href="https://karshwrites.com/">Karsh Writes</a></strong>: A blog primarily dedicated to Karsh&rsquo;s writing, which could include fiction, essays, or personal reflections.</li>
<li><strong><a href="https://paulrjohnson.net/">Paul Johnson</a></strong>: Paul Johnson&rsquo;s personal website, likely featuring a mix of professional work, personal interests, or reflective essays.</li>
<li><strong><a href="https://glycerinequeenmedia.com/">Glycerine Queen Media - News, opinion and everything in between</a></strong>: A media blog offering news, opinions, and general commentary on a wide range of topics.</li>
<li><strong><a href="https://veronique.ink/">véronique</a></strong>: Véronique&rsquo;s personal site, potentially a portfolio, digital garden, or blog covering her creative and intellectual pursuits.</li>
<li><strong><a href="https://tracydurnell.com/">Tracy Durnell&rsquo;s Mind Garden - Thinking and Learning In Public</a></strong>: Tracy Durnell&rsquo;s &ldquo;mind garden,&rdquo; a concept for a personal blog where thoughts, ideas, and learning processes are documented publicly.</li>
<li><strong><a href="https://aaronparecki.com/">Aaron Parecki</a></strong>: Aaron Parecki&rsquo;s personal website, a prominent figure in the IndieWeb movement, often documenting his tools, projects, and thoughts on personal data and online identity.</li>
<li><strong><a href="https://anderegg.ca/">anderegg.ca | Something (slightly) less boring than nothing.</a></strong>: A personal blog from anderegg.ca promising content &ldquo;slightly less boring than nothing,&rdquo; implying a casual and engaging style.</li>
<li><strong><a href="https://artlung.com/blog/">ArtLung: Joe Crawford</a></strong>: Joe Crawford&rsquo;s blog, often exploring the intersection of art, technology, and personal expression.</li>
<li><strong><a href="https://www.cboxes.icu/">CBOXES PHOTOGRAPHY</a></strong>: A dedicated photography blog, showcasing images and possibly accompanying narratives.</li>
<li><strong><a href="https://rknight.me/blog/">Blog • Robb Knight</a></strong>: Robb Knight&rsquo;s personal blog, typically featuring thoughts on technology, web development, and personal projects.</li>
<li><strong><a href="https://sergiswriting.com/">Sergi&rsquo;s writing</a></strong>: Sergi&rsquo;s dedicated space for his writing, which could encompass various forms and topics.</li>
<li><strong><a href="https://alexwlchan.net/">alexwlchan</a></strong>: Alex Chan&rsquo;s technical blog, offering insights on software engineering, Python, and personal projects.</li>
<li><strong><a href="https://dominikhofer.me/">Curious. Creative. Coder. | Dominik Hofer</a></strong>: Dominik Hofer&rsquo;s personal site, embodying his interests as a curious, creative coder, likely sharing projects and thoughts.</li>
<li><strong><a href="https://alabut.com/writing/">Writing Archives | Essays, articles &amp; notes</a></strong>: Alabut&rsquo;s collection of essays, articles, and notes, serving as a public archive of their written works.</li>
<li><strong><a href="https://george-lakoff.com/">George Lakoff</a></strong>: The official website and blog of George Lakoff, a cognitive linguist known for his work on metaphor and its role in politics and thought.</li>
<li><strong><a href="https://omeratagun.net/">Omers playground</a></strong>: Omer Atagun&rsquo;s personal &ldquo;playground,&rdquo; likely a space for experimenting with code, sharing personal projects, or exploring ideas.</li>
<li><strong><a href="https://rubenerd.com/">Rubenerd</a></strong>: Rubenerd&rsquo;s blog, featuring tech news, Linux-related content (which you&rsquo;d appreciate!), personal updates, and general internet culture.</li>
<li><strong><a href="https://ialja.com/">Meet iAlja</a></strong>: A personal blog introducing iAlja and their thoughts, projects, or professional endeavors.</li>
<li><strong><a href="https://refugionorte.com/">Refugio Norte - Reflexiones sobre la experiencia humana y los espacios arquitectónicos</a></strong>: A blog offering reflections on the human experience and architectural spaces, likely from a Spanish-speaking perspective.</li>
<li><strong><a href="https://pgadey.ca/">Parker Glynn-Adey</a></strong>: Parker Glynn-Adey&rsquo;s personal website, possibly featuring academic work, personal projects, or general musings.</li>
<li><strong><a href="https://erikjohannes.no/">Erik Johannes Husom</a></strong>: Erik Johannes Husom&rsquo;s personal blog, sharing thoughts, projects, or professional updates.</li>
<li><strong><a href="https://beradadisini.com/">Home - Beradadisini</a></strong>: A personal blog or online presence, likely based in Indonesia given the name.</li>
<li><strong><a href="https://www.ottorask.com/">Home - ottorask.com</a></strong>: Otto Rask&rsquo;s personal website, potentially a portfolio, blog, or digital garden.</li>
<li><strong><a href="https://ggirelli.info/">ggirelli | Filopoetica</a></strong>: A blog by ggirelli combining philosophy and poetry (&ldquo;Filopoetica&rdquo;).</li>
<li><strong><a href="https://cybrkyd.com/">cybrkyd - just another cyber kid</a></strong>: A personal blog by &ldquo;cybrkyd,&rdquo; reflecting a youthful or digital-native perspective on technology and life.</li>
<li><strong><a href="https://bneil.me/">bneil.me | Home</a></strong>: B Neil&rsquo;s personal website, likely featuring a mix of professional information, personal projects, or blog posts.</li>
<li><strong><a href="https://renecoignard.com/">renecoignard.com/</a></strong>: René Coignard&rsquo;s personal website, probably a portfolio or blog.</li>
<li><strong><a href="https://www.dazeland.com/index-en.html">Dazeland - We won’t nag you with cookies!</a></strong>: A blog that proudly declares no cookie nags, focusing on art, design, and creative content.</li>
<li><strong><a href="https://creativwork.org/">creativwork.org</a></strong>: A website dedicated to showcasing and discussing creative work.</li>
<li><strong><a href="https://frederickvanbrabant.com/">Frederick&rsquo;s delirious rantings</a></strong>: Frederick&rsquo;s personal blog for his &ldquo;delirious rantings,&rdquo; suggesting unedited thoughts on various topics.</li>
<li><strong><a href="https://wordsdeferred.com/">Words Deferred - Free fiction, ruminations on craft, and a radically open writing process</a></strong>: A blog by a writer sharing free fiction, thoughts on the writing craft, and a transparent look into their writing process.</li>
<li><strong><a href="https://olly.pagecord.com/">Posts from @olly</a></strong>: A personal blog or collection of posts from Olly, likely on a variety of personal interests.</li>
<li><strong><a href="https://kyscg.github.io/">New Ideas</a></strong>: A blog or repository for &ldquo;new ideas,&rdquo; possibly related to coding projects, innovative concepts, or personal insights.</li>
<li><strong><a href="https://essentialthinker.com/">Essential Thinker</a></strong>: A blog dedicated to thoughtful analysis and reflection on essential topics.</li>
<li><strong><a href="https://arbourtrary.com/">ɑrbərtrɛri</a></strong>: A personal blog with a unique name, likely featuring arbitrary but interesting thoughts and observations.</li>
<li><strong><a href="https://ivndbt.com/">Home (ivndbt.com)</a></strong>: A personal website with no overt theme, potentially a digital garden or collection of thoughts.</li>
<li><strong><a href="https://hq.getmatter.com/">Matter</a></strong>: A reading app and platform that also features curated articles and a blog with insights on reading, writing, and current events.</li>
<li><strong><a href="https://ninox.com/en">Ninox | The low-code platform for all business processes</a></strong>: While primarily a low-code platform, their blog likely covers business processes, database solutions, and tech productivity.</li>
<li><strong><a href="https://stfn.pl/">STFN</a></strong>: A personal or project blog from Poland, likely focusing on tech, development, or personal interests.</li>
<li><strong><a href="https://morgan.zoemp.be/">Morgan - Peanuts 🥜 - Quality is always right</a></strong>: Morgan&rsquo;s blog, possibly with short, concise, and high-quality &ldquo;peanut&rdquo; sized thoughts.</li>
<li><strong><a href="https://davehenry.blog/">Dave Henry Blog</a></strong>: Dave Henry&rsquo;s personal blog, featuring his thoughts and experiences.</li>
<li><strong><a href="https://nullrouted.space/">Nullrouted Space - The void is my friend.</a></strong>: A technical or philosophical blog with a focus on networks, privacy, or the &ldquo;void&rdquo; of the internet.</li>
<li><strong><a href="https://netbros.com/">Notes (netbros.com)</a></strong>: A collection of notes or short posts by Netbros, possibly on tech or personal reflections.</li>
<li><strong><a href="https://bucketz.wtf/">A Drop From The Bucket</a></strong>: A blog offering small, insightful &ldquo;drops from the bucket&rdquo; of knowledge or personal experience.</li>
<li><strong><a href="https://www.martinhaagen.se/">MartinHaagen.se</a></strong>: Martin Haagen&rsquo;s personal website, likely featuring professional work, personal projects, or blog posts.</li>
<li><strong><a href="https://laze.net/">laze.net</a></strong>: A personal blog or website that might have a relaxed, casual approach to its content.</li>
<li><strong><a href="https://alexcarpenter.me/notes">Notes // Alex Carpenter</a></strong>: Alex Carpenter&rsquo;s collection of notes, serving as a digital garden of thoughts and learnings.</li>
</ul>
<h3 id="recent-discoveries-saved-6292025-32806-pm"><strong>Recent Discoveries (Saved 6/29/2025, 3:28:06 PM):</strong></h3>
<ul>
<li><strong><a href="https://hypercritical.co/">Hypercritical</a></strong>: John Siracusa&rsquo;s renowned blog, known for its extremely detailed, thoughtful, and often lengthy commentary on Apple products and technology in general (though you&rsquo;re not an Apple fan, his depth of analysis is noteworthy).</li>
<li><strong><a href="https://blog.jpnearl.com/">Life Is Such A Sweet Insanity.</a></strong>: JP Nearl&rsquo;s personal blog, offering reflections on life&rsquo;s eccentricities and personal experiences.</li>
<li><strong><a href="https://joshcollinsworth.com/">Josh Collinsworth</a></strong>: Josh Collinsworth&rsquo;s blog, often covering web development, front-end technologies, and related industry thoughts.</li>
<li><strong><a href="https://meyerweb.com/">meyerweb.com</a></strong>: Eric Meyer&rsquo;s influential blog, a foundational resource for web standards, CSS, and web design, often featuring technical insights and personal reflections.</li>
<li><strong><a href="https://alicebartlett.co.uk/">The website of Alice Bartlett</a></strong>: Alice Bartlett&rsquo;s personal website, likely featuring her work in data, technology, or personal insights.</li>
<li><strong><a href="https://tantek.com/">Tantek Çelik</a></strong>: Tantek Çelik&rsquo;s personal website and blog, a key figure in microformats and the IndieWeb movement, focused on personal data and web standards.</li>
<li><strong><a href="https://www.jwz.org/blog/">jwz</a></strong>: Jamie Zawinski&rsquo;s classic, often irreverent, and highly opinionated blog on software, technology, and personal anecdotes.</li>
<li><strong><a href="https://librarian.aedileworks.com/">Librarian of Things - Mita Williams. Her blog.</a></strong>: Mita Williams&rsquo;s blog, sharing insights from a librarian&rsquo;s perspective on information, technology, and public life.</li>
<li><strong><a href="https://alis.me/">» alis.me</a></strong>: Alis&rsquo;s personal blog, potentially a digital garden or collection of thoughts and projects.</li>
<li><strong><a href="https://emilygorcenski.com/">Emily F. Gorcenski</a></strong>: Emily Gorcenski&rsquo;s blog, often covering data science, social justice, technology&rsquo;s societal impact, and political commentary from a progressive stance.</li>
</ul>
<h3 id="more-great-reads-saved-6272025-20017-pm"><strong>More Great Reads (Saved 6/27/2025, 2:00:17 PM):</strong></h3>
<ul>
<li><strong><a href="https://www.sparklytrainers.com/">The travels of Mary Loosemore</a></strong>: Mary Loosemore&rsquo;s blog, documenting her travels and experiences, often with a lighthearted and engaging tone.</li>
<li><strong><a href="https://www.birdsoutsidemywindow.org/">Outside My Window | A Blog of Birds &amp; Nature with Kate St. John</a></strong>: Kate St. John&rsquo;s nature blog, focusing on birdwatching, wildlife, and observations from her window.</li>
<li><strong><a href="https://gwern.net/">Essays · Gwern.net</a></strong>: Gwern Branwen&rsquo;s extensive collection of long-form essays, covering a wide range of topics from psychology and technology to statistics and personal experiments.</li>
<li><strong><a href="https://xlthlx.com/en/">Third Level | Don&rsquo;t waste your time, or time will waste you.</a></strong>: A blog that offers reflections and philosophical insights on productivity, personal growth, and making the most of one&rsquo;s time.</li>
<li><strong><a href="https://jasdev.me/">Distillations (jasdev.me)</a></strong>: Jasdev&rsquo;s blog, where he &ldquo;distills&rdquo; complex ideas into clear, concise posts, often on technology or personal development.</li>
<li><strong><a href="https://www.robinsloan.com/">Robin Sloan</a></strong>: Robin Sloan&rsquo;s personal website and blog, from a writer and media inventor, featuring his unique projects, thoughts on technology, and storytelling.</li>
<li><strong><a href="https://maggieappleton.com/">Maggie Appleton</a></strong>: Maggie Appleton&rsquo;s visual blog, known for her hand-drawn illustrations and insightful explanations of complex concepts, often related to knowledge work and digital gardens.</li>
<li><strong><a href="https://zioibi.com/">Adam Wood</a></strong>: Adam Wood&rsquo;s personal website, likely a portfolio or blog showcasing his work and thoughts.</li>
</ul>
<h3 id="latest-finds-saved-6292025-115324-pm"><strong>Latest Finds (Saved 6/29/2025, 11:53:24 PM):</strong></h3>
<ul>
<li><strong><a href="https://coxy.co/">coxy - designer and internet addict</a></strong>: Coxy&rsquo;s blog, blending insights from a designer&rsquo;s perspective with reflections on internet culture and digital life.</li>
<li><strong><a href="https://fromemily.com/">&hellip;from Emily Moran Barwick</a></strong>: Emily Moran Barwick&rsquo;s personal blog, likely featuring updates, personal thoughts, or creative projects.</li>
<li><strong><a href="https://www.elmikewalsh.com/">Front-End Web Designer, Developer &amp; Translator in Villarrica</a></strong>: El Mike Walsh&rsquo;s blog, detailing insights from his work as a front-end web designer, developer, and translator.</li>
<li><strong><a href="https://davidallengreen.com/">The Law and Policy Blog - Independent commentary on law and policy from a liberal constitutionalist and critical perspective</a></strong>: David Allen Green&rsquo;s blog, providing independent and critical commentary on law and policy from a liberal constitutionalist viewpoint, which aligns with your progressive political leanings.</li>
<li><strong><a href="https://timharek.no/">Tim Hårek</a></strong>: Tim Hårek&rsquo;s personal blog, likely featuring thoughts, projects, or professional insights.</li>
<li><strong><a href="https://netwars.pelicancrossing.net/">net.wars - computers, freedom, and privacy</a></strong>: Wendy Grossman&rsquo;s long-running blog focusing on the critical intersection of computers, digital freedom, and privacy issues.</li>
<li><strong><a href="https://bryanmanio.com/">Bryan Maniotakis - Design Director</a></strong>: Bryan Maniotakis&rsquo;s blog, offering insights into design, creative direction, and professional experiences.</li>
<li><strong><a href="https://rys.io/en/index.html">Songs on the Security of Networks</a></strong>: A blog by RYS.io, likely delving into cybersecurity topics, network security, and related technical discussions.</li>
<li><strong><a href="https://photothunk.blogspot.com/">Secure Site Not Available</a></strong>: A blog primarily focused on photography, sharing images and possibly thoughts on the photographic process.</li>
<li><strong><a href="https://www.bruh.ltd/">Ruby Klover</a></strong>: A personal blog by Ruby Klover, with a unique domain, likely featuring personal reflections or creative content.</li>
<li><strong><a href="https://impossiblesongs.blogspot.com/">impossible songs</a></strong>: A blog dedicated to &ldquo;impossible songs,&rdquo; suggesting a focus on music, creative audio projects, or musings on the art of songwriting.</li>
<li><strong><a href="https://wiby.me/">Wiby - Search Engine for the Classic Web</a></strong>: While a search engine, their blog or &ldquo;about&rdquo; section often provides commentary on the classic web, privacy, and independent web discovery.</li>
</ul>
<h3 id="more-interesting-blogs"><strong>More Interesting Blogs:</strong></h3>
<ul>
<li><strong><a href="https://hacdias.com/">Home - Henrique Dias</a></strong>: Henrique Dias&rsquo;s personal website, showcasing his projects, thoughts, and professional work, likely in development or open source.</li>
<li><strong><a href="https://www.jasonhalf.com/">JASON HALF : writer - Home</a></strong>: Jason Half&rsquo;s dedicated writing website, where he publishes his works, essays, or personal blog posts.</li>
<li><strong><a href="https://www.kryobot.io/">kryobot - Home of Emanuel Schwarz</a></strong>: Emanuel Schwarz&rsquo;s personal website, possibly focusing on robotics, AI, or other tech-related projects.</li>
<li><strong><a href="https://lindsma.com/">Linda Ma</a></strong>: Linda Ma&rsquo;s personal website, potentially a portfolio, digital garden, or blog covering her interests.</li>
<li><strong><a href="https://www.karlkoch.me/">Karl Koch | Home</a></strong>: Karl Koch&rsquo;s personal website, likely featuring his work, thoughts, or projects.</li>
<li><strong><a href="https://christopherharper.media/">Christopher Harper | Documenting life and exploration on Guam</a></strong>: Christopher Harper&rsquo;s blog, visually documenting life and explorations on the island of Guam through photos and stories.</li>
<li><strong><a href="https://calebhailey.com/">Caleb Hailey</a></strong>: Caleb Hailey&rsquo;s personal website, probably a professional portfolio or blog.</li>
<li><strong><a href="https://oliverobscure.xyz/">obscure blog</a></strong>: Oliver Obscure&rsquo;s personal blog, likely offering unique, perhaps unconventional, thoughts and observations.</li>
<li><strong><a href="https://blog.ucant.org/">Martin Keegan: All posts</a></strong>: Martin Keegan&rsquo;s blog, featuring a wide array of posts on technology, programming, and personal musings, often with a distinct perspective.</li>
<li><strong><a href="https://captainawkward.com/">CaptainAwkward.com - Don&rsquo;t need to be cool to be kind.</a></strong>: A popular advice blog focused on navigating awkward social situations, boundaries, and interpersonal relationships with kindness and directness.</li>
<li><strong><a href="https://tomcritchlow.com/">Tom Critchlow. Move. Think. Create.</a></strong>: Tom Critchlow&rsquo;s blog, where he writes about strategy, digital products, independent consulting, and the future of work.</li>
<li><strong><a href="https://fredrocha.net/words/">Words - fredrocha.net</a></strong>: Fred Rocha&rsquo;s space for his written works, which could include essays, articles, or personal reflections.</li>
</ul>

        <br>
<div class="rss_avatar">
    
<a href="https://www.gravatar.com/avatar/38b1e3a9923c356e248e749ace56d4fd?s=800" target="_blank" rel="noopener noreferrer">
  <img
  class="gravatar-img"
  
  alt="Avatar"
  loading="lazy"
  src="https://www.gravatar.com/avatar/38b1e3a9923c356e248e749ace56d4fd?s=250"
  />
</a>

</div>
<style>
.rss_avatar{
    float: right;
}
.rss_avatar img{
    border-radius: 100%;
    max-height: 150px;
}
</style>
<br>
<hr>
Reply:
<a href="https://mastodon.social/@jelloeater">🐘 @jelloeater - Masto</a> |
<a href="https://bsky.app/profile/jelloeater.bsky.social">🦋 @jelloeater - Bsky</a> |
<a href="https://bsky.app/profile/did:plc:srmltlrjqfr7mbfdejuxrbss/rss">🦋 @jelloeater - Bsky RSS</a> |
<a href="mailto:jello@jelloeater.me?subject=RE:blog-dump-2025-july">📧 Email Me</a> |
<a href="https://jelloeater.me/blog/blog-dump-2025-july/#comments">💬 Comment</a>
<br>
<a href="https://jelloeater.me/link/">🌳 LinkTree</a> |
<a href="https://ko-fi.com/jelloeater">☕ Buy me a coffee</a>
<hr>


Tags:
<a href="https://jelloeater.me/tags/blogdump/">#blogdump</a>

<a href="https://jelloeater.me/tags/link_dump/">#link_dump</a>

        ]]>
        </content:encoded>
    </item>
    <item>
      <title>Moving my diary to Obsidian</title>
      <link>
      https://jelloeater.me/blog/diary-migrate/
      </link>
      <dc:creator>Jelloeater</dc:creator>
      <comments>
      https://jelloeater.me/blog/diary-migrate/#comments
      </comments>
      <pubDate>Mon, 07 Jul 2025 01:32:00 -0500</pubDate>
      <category>diary</category>
      
      <category>obsidian</category>
      
      <category>personal</category>
      
      <category>private</category>
      
      <category>update</category>
      <guid>https://jelloeater.me/blog/diary-migrate/</guid>
      
      <media:content url="https://jelloeater.me/blog/diary-migrate.png" medium="image" type="image/png"/>
      <media:thumbnail url="https://jelloeater.me/blog/diary-migrate.png"/>
      


    
    



      
      
      <description><![CDATA[Keeping private thoughts; private]]></description>
      
      <content:encoded>
        <![CDATA[
        
          <p><img src="https://jelloeater.me/blog/diary-migrate.png" alt="Featured Image"/></p>
        
        <h2 id="intro">Intro</h2>
<p>So, I recently decided to migrate from <a href="https://diaroapp.com">Diaro</a> to Two Obsidian for my diary. Not that I have a problem with their website. For the low price of $20, I believe it was, I think it&rsquo;s a good deal. They gave me a lifetime subscription to their site, which utilizes Dropbox to sync its data backend. They&rsquo;ve never lost a single entry, and they&rsquo;ve helped me chronicle my life over the last three or four years. One of the great features they had was that you could upload a photo, and it would tag the location and set the time and date based on the photo. This was a great feature, and something I hope I can find similar to in Obsidian.</p>
<h2 id="getting-the-data-out">Getting the data out</h2>
<p>Getting the data out of the service wasn&rsquo;t exactly the easiest process, though they offered a few different export options, one that did CSV and one that did Text. When the PDF, A few different things, depending on which platform you tried to export from, the options were different depending on whether you did it on mobile or on the website. This was a little bit difficult because all the formats that they offered didn&rsquo;t include photos, at least in an easy-to-access format. Y, You could try and export the photos by ripping them out of the PDFs, but that was a nightmare. Luckily, I was able to do some digging through the Dropbox account that it happened to be using as a backend sync. In there. I found some XML files and my photos all as JPEGs. The XML file wasn&rsquo;t the easiest to parse, but thankfully, the structure was relatively sane. Attachments were in one table, Locations in another, and then the direct entries themselves in another table, all on one giant XML document.</p>
<h2 id="custom-scripting">Custom scripting</h2>
<p>I was able to cook up a little bit of Python magic to get all this converted into a standardized markdown format with some YAML front matter and the images embedded at the bottom of the posts. All in all. This took two to three days Of Work over a weekend. Nothing too crazy, but I do wish that they offered a better export option. Maybe something with JSON or at least CSVs with attachments easily linked? Maybe like a photo dump option as well, just some food for thought. Either way, I can&rsquo;t complain too much. For a whopping $20, I spent on a lifetime license, and the fact that they never lost a single post, but arguably, I would have to probably thank Dropbox for that. As they were debating the back end. Thankfully, the app always worked on every single device, and the website was reliable, so no digs against them. I&rsquo;m gonna include a link to the Python script or maybe just embed it in this post. At the bottom, we&rsquo;ll see. Just in case, it can help somebody else out down the road by moving their notes over from this service to either Obsidian or another markdown-based Diary application. Thanks!</p>
<p>🖖 Jelloeater</p>
<h2 id="migration-script">Migration script</h2>


  
    <blockquote>
      <p>This script is used to migrate data from Diaro to Obsidian, parsing XML files and creating markdown files with metadata. It&rsquo;s kind of crap, but it DOES work. Feel free to email me if you need help&hellip; ❤️</p>
    </blockquote>
  
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env -S uv run --quiet</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># /// script</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># requires-python = &#34;&gt;=3.12&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># dependencies = [</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#     &#34;pymarkdownlnt&#34;,</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># ]</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># ///</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> xml.etree.ElementTree <span style="color:#66d9ef">as</span> ET
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> datetime <span style="color:#f92672">import</span> datetime
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> zipfile
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> os
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> re
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> pymarkdown
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> xml.etree.ElementTree <span style="color:#66d9ef">as</span> ET
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Location</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> __init__(self, uid, title, address, lat, lng, zoom):
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>uid <span style="color:#f92672">=</span> uid
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>title <span style="color:#f92672">=</span> title
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>address <span style="color:#f92672">=</span> address
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>lat <span style="color:#f92672">=</span> lat
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>lng <span style="color:#f92672">=</span> lng
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>zoom <span style="color:#f92672">=</span> zoom
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> __repr__(self):
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> (
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Location(uid=&#39;</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>uid<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;, title=&#39;</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>title<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;, &#34;</span>
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;address=&#39;</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>address<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;, lat=</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>lat<span style="color:#e6db74">}</span><span style="color:#e6db74">, lng=</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>lng<span style="color:#e6db74">}</span><span style="color:#e6db74">, zoom=</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>zoom<span style="color:#e6db74">}</span><span style="color:#e6db74">)&#34;</span>
</span></span><span style="display:flex;"><span>        )
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Attachment</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> __init__(self, uid, entry_uid, type, filename, position):
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>uid <span style="color:#f92672">=</span> uid
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>entry_uid <span style="color:#f92672">=</span> entry_uid
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>type <span style="color:#f92672">=</span> type
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>filename <span style="color:#f92672">=</span> filename
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>position <span style="color:#f92672">=</span> position
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> __repr__(self):
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> (
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Attachment(uid=&#39;</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>uid<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;, entry_uid=&#39;</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>entry_uid<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;, &#34;</span>
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;type=&#39;</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>type<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;, filename=&#39;</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>filename<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;, position=</span><span style="color:#e6db74">{</span>self<span style="color:#f92672">.</span>position<span style="color:#e6db74">}</span><span style="color:#e6db74">)&#34;</span>
</span></span><span style="display:flex;"><span>        )
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">parse_locations_xml</span>(xml_file_path):
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;&#34;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    Parses an XML file containing location data into a list of Location objects.
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    Args:
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">        xml_file_path (str): The path to the XML file.
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    Returns:
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">        list: A list of Location objects.
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    &#34;&#34;&#34;</span>
</span></span><span style="display:flex;"><span>    tree <span style="color:#f92672">=</span> ET<span style="color:#f92672">.</span>parse(xml_file_path)
</span></span><span style="display:flex;"><span>    root <span style="color:#f92672">=</span> tree<span style="color:#f92672">.</span>getroot()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    locations <span style="color:#f92672">=</span> []
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> r_element <span style="color:#f92672">in</span> root<span style="color:#f92672">.</span>findall(<span style="color:#e6db74">&#34;r&#34;</span>):
</span></span><span style="display:flex;"><span>        uid <span style="color:#f92672">=</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;uid&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;uid&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>        title <span style="color:#f92672">=</span> (
</span></span><span style="display:flex;"><span>            r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;title&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;title&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>        )
</span></span><span style="display:flex;"><span>        address <span style="color:#f92672">=</span> (
</span></span><span style="display:flex;"><span>            r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;address&#34;</span>)<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;address&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>        )
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        lat_text <span style="color:#f92672">=</span> (
</span></span><span style="display:flex;"><span>            r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;lat&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;lat&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;0.0&#34;</span>
</span></span><span style="display:flex;"><span>        )
</span></span><span style="display:flex;"><span>        lng_text <span style="color:#f92672">=</span> (
</span></span><span style="display:flex;"><span>            r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;lng&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;lng&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;0.0&#34;</span>
</span></span><span style="display:flex;"><span>        )
</span></span><span style="display:flex;"><span>        zoom_text <span style="color:#f92672">=</span> (
</span></span><span style="display:flex;"><span>            r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;zoom&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;zoom&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;0&#34;</span>
</span></span><span style="display:flex;"><span>        )
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>            lat <span style="color:#f92672">=</span> float(lat_text)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">ValueError</span>:
</span></span><span style="display:flex;"><span>            lat <span style="color:#f92672">=</span> <span style="color:#ae81ff">0.0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>            lng <span style="color:#f92672">=</span> float(lng_text)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">ValueError</span>:
</span></span><span style="display:flex;"><span>            lng <span style="color:#f92672">=</span> <span style="color:#ae81ff">0.0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>            zoom <span style="color:#f92672">=</span> int(zoom_text)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">ValueError</span>:
</span></span><span style="display:flex;"><span>            zoom <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        location <span style="color:#f92672">=</span> Location(uid, title, address, lat, lng, zoom)
</span></span><span style="display:flex;"><span>        locations<span style="color:#f92672">.</span>append(location)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> locations
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">parse_attachments_xml</span>(xml_file_path):
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;&#34;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    Parses an XML file containing attachment data into a list of Attachment objects.
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    Args:
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">        xml_file_path (str): The path to the XML file.
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    Returns:
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">        list: A list of Attachment objects.
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    &#34;&#34;&#34;</span>
</span></span><span style="display:flex;"><span>    tree <span style="color:#f92672">=</span> ET<span style="color:#f92672">.</span>parse(xml_file_path)
</span></span><span style="display:flex;"><span>    root <span style="color:#f92672">=</span> tree<span style="color:#f92672">.</span>getroot()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    attachments <span style="color:#f92672">=</span> []
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> r_element <span style="color:#f92672">in</span> root<span style="color:#f92672">.</span>findall(<span style="color:#e6db74">&#34;r&#34;</span>):
</span></span><span style="display:flex;"><span>        uid <span style="color:#f92672">=</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;uid&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;uid&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>        entry_uid <span style="color:#f92672">=</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;entry_uid&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;entry_uid&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>        type <span style="color:#f92672">=</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;type&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;type&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>        filename <span style="color:#f92672">=</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;filename&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;filename&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>        position_text <span style="color:#f92672">=</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;position&#34;</span>)<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> r_element<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;position&#34;</span>) <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;0&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>            position <span style="color:#f92672">=</span> int(position_text)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">ValueError</span>:
</span></span><span style="display:flex;"><span>            position <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        attachment <span style="color:#f92672">=</span> Attachment(uid, entry_uid, type, filename, position)
</span></span><span style="display:flex;"><span>        attachments<span style="color:#f92672">.</span>append(attachment)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> attachments
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">write_files</span>():
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;&#34;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    Parses the Diaro XML data from a string, creates markdown files,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    and zips them up.
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    &#34;&#34;&#34;</span>
</span></span><span style="display:flex;"><span>    data <span style="color:#f92672">=</span> open(<span style="color:#e6db74">&#39;DiaroBackup.xml&#39;</span>)<span style="color:#f92672">.</span>read()
</span></span><span style="display:flex;"><span>    root <span style="color:#f92672">=</span> ET<span style="color:#f92672">.</span>fromstring(data)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    folders <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>        folder<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;uid&#39;</span>)<span style="color:#f92672">.</span>text: folder<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;title&#39;</span>)<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> folder <span style="color:#f92672">in</span> root<span style="color:#f92672">.</span>findall(<span style="color:#e6db74">&#34;.//table[@name=&#39;diaro_folders&#39;]/r&#34;</span>)
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># locations = {</span>
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">#     location.find(&#39;uid&#39;).text: location.find(&#39;name&#39;).text</span>
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">#     for location in root.findall(&#34;.//table[@name=&#39;diaro_locations&#39;]/r&#34;)</span>
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># }</span>
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># moods = {</span>
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">#     mood.find(&#39;uid&#39;).text: mood.find(&#39;name&#39;).text</span>
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">#     for mood in root.findall(&#34;.//table[@name=&#39;diaro_moods&#39;]/r&#34;)</span>
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># }</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    entries <span style="color:#f92672">=</span> root<span style="color:#f92672">.</span>findall(<span style="color:#e6db74">&#34;.//table[@name=&#39;diaro_entries&#39;]/r&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    output_dir <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;diaro_markdown_entries&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>exists(output_dir):
</span></span><span style="display:flex;"><span>        os<span style="color:#f92672">.</span>makedirs(output_dir)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    markdown_files <span style="color:#f92672">=</span> []
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    xml_path <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;./locations.xml&#34;</span>
</span></span><span style="display:flex;"><span>    parsed_locations <span style="color:#f92672">=</span> parse_locations_xml(xml_path)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    xml_path_attach <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;./attachments.xml&#34;</span>
</span></span><span style="display:flex;"><span>    parsed_attach <span style="color:#f92672">=</span> parse_attachments_xml(xml_path_attach)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> entry <span style="color:#f92672">in</span> entries:
</span></span><span style="display:flex;"><span>        date_ms <span style="color:#f92672">=</span> int(entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;date&#39;</span>)<span style="color:#f92672">.</span>text)
</span></span><span style="display:flex;"><span>        dt_object <span style="color:#f92672">=</span> datetime<span style="color:#f92672">.</span>fromtimestamp(date_ms <span style="color:#f92672">/</span> <span style="color:#ae81ff">1000</span>)
</span></span><span style="display:flex;"><span>        date_str <span style="color:#f92672">=</span> dt_object<span style="color:#f92672">.</span>strftime(<span style="color:#e6db74">&#34;%Y-%m-</span><span style="color:#e6db74">%d</span><span style="color:#e6db74"> %H:%M:%S %z&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        text_element <span style="color:#f92672">=</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;text&#39;</span>)
</span></span><span style="display:flex;"><span>        text <span style="color:#f92672">=</span> text_element<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> text_element <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#f92672">and</span> text_element<span style="color:#f92672">.</span>text <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;No content&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        title_element <span style="color:#f92672">=</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;title&#39;</span>)
</span></span><span style="display:flex;"><span>        title <span style="color:#f92672">=</span> title_element<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> title_element <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#f92672">and</span> title_element<span style="color:#f92672">.</span>text <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;Untitled&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> title <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;Untitled&#34;</span>:
</span></span><span style="display:flex;"><span>            title <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>sub(<span style="color:#e6db74">r</span><span style="color:#e6db74">&#34;[^\w]&#34;</span>, <span style="color:#e6db74">&#34; &#34;</span>, text<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#39;.&#39;</span>)[<span style="color:#ae81ff">0</span>][:<span style="color:#ae81ff">30</span>])
</span></span><span style="display:flex;"><span>            <span style="color:#75715e"># Use the first X characters of text if title is &#34;Untitled&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        mood_element <span style="color:#f92672">=</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;mood&#39;</span>)
</span></span><span style="display:flex;"><span>        mood <span style="color:#f92672">=</span> title_element<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> mood_element <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#f92672">and</span> mood_element<span style="color:#f92672">.</span>text <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;3&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> mood <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;1&#34;</span>:
</span></span><span style="display:flex;"><span>            mood <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;5-🥰&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> mood <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;2&#34;</span>:
</span></span><span style="display:flex;"><span>            mood <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;4-🙂&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> mood <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;3&#34;</span>:
</span></span><span style="display:flex;"><span>            mood <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;3-😑&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> mood <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;4&#34;</span>:
</span></span><span style="display:flex;"><span>            mood <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;2-🙁&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> mood <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;5&#34;</span>:
</span></span><span style="display:flex;"><span>            mood <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;1-😢&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        media_path <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;../media/&#34;</span>
</span></span><span style="display:flex;"><span>        attachments <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> parsed_attach:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> i<span style="color:#f92672">.</span>entry_uid <span style="color:#f92672">==</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;uid&#39;</span>)<span style="color:#f92672">.</span>text:
</span></span><span style="display:flex;"><span>                attachments <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">---------------------------------------------------------------&#34;</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span> i<span style="color:#f92672">.</span>type <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;image&#34;</span>:
</span></span><span style="display:flex;"><span>                    attachments <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">![</span><span style="color:#e6db74">{</span>i<span style="color:#f92672">.</span>filename<span style="color:#e6db74">}</span><span style="color:#e6db74">](</span><span style="color:#e6db74">{</span>media_path<span style="color:#e6db74">}{</span>i<span style="color:#f92672">.</span>filename<span style="color:#e6db74">}</span><span style="color:#e6db74">)</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">elif</span> i<span style="color:#f92672">.</span>type <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;video&#34;</span>:
</span></span><span style="display:flex;"><span>                    attachments <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">[Video: </span><span style="color:#e6db74">{</span>i<span style="color:#f92672">.</span>filename<span style="color:#e6db74">}</span><span style="color:#e6db74">](</span><span style="color:#e6db74">{</span>media_path<span style="color:#e6db74">}{</span>i<span style="color:#f92672">.</span>filename<span style="color:#e6db74">}</span><span style="color:#e6db74">)</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">elif</span> i<span style="color:#f92672">.</span>type <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;audio&#34;</span>:
</span></span><span style="display:flex;"><span>                    attachments <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">[Audio: </span><span style="color:#e6db74">{</span>i<span style="color:#f92672">.</span>filename<span style="color:#e6db74">}</span><span style="color:#e6db74">](</span><span style="color:#e6db74">{</span>media_path<span style="color:#e6db74">}{</span>i<span style="color:#f92672">.</span>filename<span style="color:#e6db74">}</span><span style="color:#e6db74">)</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>                    attachments <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">![</span><span style="color:#e6db74">{</span>i<span style="color:#f92672">.</span>filename<span style="color:#e6db74">}</span><span style="color:#e6db74">](</span><span style="color:#e6db74">{</span>media_path<span style="color:#e6db74">}{</span>i<span style="color:#f92672">.</span>filename<span style="color:#e6db74">}</span><span style="color:#e6db74">)</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># Create a safe filename</span>
</span></span><span style="display:flex;"><span>        safe_title <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>sub(<span style="color:#e6db74">r</span><span style="color:#e6db74">&#39;[^\w\s-]&#39;</span>, <span style="color:#e6db74">&#39;&#39;</span>, title)<span style="color:#f92672">.</span>strip()<span style="color:#f92672">.</span>lower()
</span></span><span style="display:flex;"><span>        safe_title <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>sub(<span style="color:#e6db74">r</span><span style="color:#e6db74">&#39;[-\s]+&#39;</span>, <span style="color:#e6db74">&#39;-&#39;</span>, safe_title) <span style="color:#66d9ef">if</span> safe_title <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;entry&#34;</span>
</span></span><span style="display:flex;"><span>        filename <span style="color:#f92672">=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;</span><span style="color:#e6db74">{</span>dt_object<span style="color:#f92672">.</span>strftime(<span style="color:#e6db74">&#39;%Y-%m-</span><span style="color:#e6db74">%d</span><span style="color:#e6db74">&#39;</span>)<span style="color:#e6db74">}</span><span style="color:#e6db74">-</span><span style="color:#e6db74">{</span>safe_title<span style="color:#e6db74">}</span><span style="color:#e6db74">.md&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># Front Matter</span>
</span></span><span style="display:flex;"><span>        front_matter <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>        front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;---</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> title:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;title: </span><span style="color:#e6db74">{</span>title<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;title: Entry on </span><span style="color:#e6db74">{</span>dt_object<span style="color:#f92672">.</span>strftime(<span style="color:#e6db74">&#39;%Y-%m-</span><span style="color:#e6db74">%d</span><span style="color:#e6db74">&#39;</span>)<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;date: </span><span style="color:#e6db74">{</span>date_str<span style="color:#f92672">.</span>rstrip()<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        folder_uid <span style="color:#f92672">=</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;folder_uid&#39;</span>)<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> folder_uid <span style="color:#f92672">and</span> folder_uid <span style="color:#f92672">in</span> folders:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;folder: </span><span style="color:#e6db74">{</span>folders[folder_uid]<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># location_uid = entry.find(&#39;location_uid&#39;).text</span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># if location_uid and location_uid in locations:</span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">#     front_matter += f&#34;location: {locations[location_uid]}\n&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        location_element <span style="color:#f92672">=</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;location_uid&#39;</span>)
</span></span><span style="display:flex;"><span>        location <span style="color:#f92672">=</span> location_element<span style="color:#f92672">.</span>text <span style="color:#66d9ef">if</span> location_element <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span> <span style="color:#f92672">and</span> location_element<span style="color:#f92672">.</span>text <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#34;N/A&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> location <span style="color:#f92672">!=</span> <span style="color:#e6db74">&#34;N/A&#34;</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#75715e"># Find the location in the parsed locations</span>
</span></span><span style="display:flex;"><span>            location_obj <span style="color:#f92672">=</span> next((loc <span style="color:#66d9ef">for</span> loc <span style="color:#f92672">in</span> parsed_locations <span style="color:#66d9ef">if</span> loc<span style="color:#f92672">.</span>uid <span style="color:#f92672">==</span> location), <span style="color:#66d9ef">None</span>)
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> location_obj:
</span></span><span style="display:flex;"><span>                location_obj <span style="color:#f92672">=</span> location_obj
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>                location_obj <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;Unknown Location&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> location <span style="color:#f92672">!=</span> <span style="color:#e6db74">&#34;N/A&#34;</span>:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;location: </span><span style="color:#e6db74">{</span>location_obj<span style="color:#f92672">.</span>lat<span style="color:#e6db74">}</span><span style="color:#e6db74">,</span><span style="color:#e6db74">{</span>location_obj<span style="color:#f92672">.</span>lng<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;location_title: </span><span style="color:#e6db74">{</span>location_obj<span style="color:#f92672">.</span>title<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;location_address: </span><span style="color:#e6db74">{</span>location_obj<span style="color:#f92672">.</span>address<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;location: Unknown</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> mood:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;mood: </span><span style="color:#e6db74">{</span>mood<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        tags_text <span style="color:#f92672">=</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;tags&#39;</span>)<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> tags_text <span style="color:#f92672">and</span> tags_text<span style="color:#f92672">.</span>strip(<span style="color:#e6db74">&#39;,&#39;</span>) :
</span></span><span style="display:flex;"><span>            tags <span style="color:#f92672">=</span> [tag<span style="color:#f92672">.</span>strip() <span style="color:#66d9ef">for</span> tag <span style="color:#f92672">in</span> tags_text<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#39;,&#39;</span>) <span style="color:#66d9ef">if</span> tag<span style="color:#f92672">.</span>strip()]
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;tags: </span><span style="color:#e6db74">{</span>tags<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># mood_uid = entry.find(&#39;mood&#39;).text</span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># if mood_uid and mood_uid in moods:</span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">#     front_matter += f&#34;mood: {moods[mood_uid]}\n&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        weather_temp <span style="color:#f92672">=</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;weather_temperature&#39;</span>)<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>        weather_icon <span style="color:#f92672">=</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;weather_icon&#39;</span>)<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>        weather_desc <span style="color:#f92672">=</span> entry<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;weather_description&#39;</span>)<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> weather_temp:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;temp_c: </span><span style="color:#e6db74">{</span>weather_temp<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> weather_icon:
</span></span><span style="display:flex;"><span>            weather_data <span style="color:#f92672">=</span> weather_icon<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#34;-&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>            time_of_day <span style="color:#f92672">=</span> weather_data[<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> time_of_day <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;day&#34;</span>:
</span></span><span style="display:flex;"><span>                front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;time_of_day: day</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">elif</span> time_of_day <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;night&#34;</span>:
</span></span><span style="display:flex;"><span>                front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;time_of_day: night</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>                front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;time_of_day: unknown</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>            weather_icon <span style="color:#f92672">=</span> weather_data[<span style="color:#ae81ff">1</span>:]
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> weather_icon:
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span> <span style="color:#e6db74">&#39;alt&#39;</span> <span style="color:#f92672">in</span> weather_icon:
</span></span><span style="display:flex;"><span>                    weather_icon<span style="color:#f92672">.</span>remove(<span style="color:#e6db74">&#39;alt&#39;</span>)
</span></span><span style="display:flex;"><span>                front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;weather: [</span><span style="color:#e6db74">{</span><span style="color:#e6db74">&#39;, &#39;</span><span style="color:#f92672">.</span>join(weather_icon)<span style="color:#e6db74">}</span><span style="color:#e6db74">]</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> weather_desc:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;forcast: </span><span style="color:#e6db74">{</span>weather_desc<span style="color:#e6db74">}</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> <span style="color:#e6db74">&#34;-----BEGIN PGP MESSAGE-----&#34;</span> <span style="color:#f92672">in</span> text:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;encrypted: true</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>            front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;encrypted: false</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        front_matter <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;---</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        converted_entry <span style="color:#f92672">=</span> front_matter <span style="color:#f92672">+</span> text <span style="color:#f92672">+</span> attachments <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># Write markdown file</span>
</span></span><span style="display:flex;"><span>        filepath <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(output_dir, filename)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">with</span> open(filepath, <span style="color:#e6db74">&#39;w&#39;</span>, encoding<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;utf-8&#39;</span>) <span style="color:#66d9ef">as</span> f:
</span></span><span style="display:flex;"><span>            f<span style="color:#f92672">.</span>write(converted_entry)
</span></span><span style="display:flex;"><span>        markdown_files<span style="color:#f92672">.</span>append(filepath)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>:
</span></span><span style="display:flex;"><span>    write_files()
</span></span></code></pre></div><h2 id="ai-version">AI version</h2>
<p>I ran this through Gemini to see if it would emulate my style&hellip; eh&hellip;</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span>I recently made the switch from [<span style="color:#f92672">Diaro</span>](<span style="color:#a6e22e">https://diaroapp.com</span>) to [<span style="color:#f92672">Obsidian</span>](<span style="color:#a6e22e">https://obsidian.md/</span>) for my personal diary. While I had a great experience with Diaro - their lifetime subscription was a steal at around $20, and their Dropbox sync never lost a single entry over three or four years. Diaro&#39;s feature to automatically tag location, time, and date from uploaded photos was incredibly convenient, and I&#39;m hoping to find a similar workflow in Obsidian.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">## Extracting the Data
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span>Getting my data out of Diaro proved to be the trickiest part. Diaro offered various export options (CSV, text, PDF), but these varied by platform (mobile vs. web) and none provided an easy way to export photos alongside the entries. Ripping images from PDFs was an absolute nightmare.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Fortunately, I dug into the Dropbox backend Diaro used for syncing. There, I discovered XML files containing all my entries and, more importantly, all my photos as JPEGs. The XML structure was relatively sane, with attachments, locations, and the diary entries themselves all contained within one large document, which made parsing manageable.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">## Custom Scripting for Conversion
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span>To get everything into a standardized Markdown format with YAML front matter and embedded images, I cooked up some Python magic. This conversion process took me a solid two to three days over a weekend. While not &#34;crazy&#34; in terms of effort, I do wish Diaro offered more robust export options – perhaps JSON or CSVs with easily linked attachments, or even a dedicated photo dump.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>That said, for a $20 lifetime license and the peace of mind that came with never losing a single post (kudos to Dropbox for the reliable backend!), I can&#39;t really complain too much. The Diaro app itself was consistently reliable across all my devices, and the website was solid.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>I&#39;ll include a link to the Python script, or perhaps embed it directly in this post, just in case it can help someone else migrate their notes from Diaro to Obsidian or another Markdown-based diary application down the road.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Thanks for reading!
</span></span><span style="display:flex;"><span>--- over From this service to either obsidian Or another Mark down based Diary application. Thanks!
</span></span></code></pre></div>
        <br>
<div class="rss_avatar">
    
<a href="https://www.gravatar.com/avatar/38b1e3a9923c356e248e749ace56d4fd?s=800" target="_blank" rel="noopener noreferrer">
  <img
  class="gravatar-img"
  
  alt="Avatar"
  loading="lazy"
  src="https://www.gravatar.com/avatar/38b1e3a9923c356e248e749ace56d4fd?s=250"
  />
</a>

</div>
<style>
.rss_avatar{
    float: right;
}
.rss_avatar img{
    border-radius: 100%;
    max-height: 150px;
}
</style>
<br>
<hr>
Reply:
<a href="https://mastodon.social/@jelloeater">🐘 @jelloeater - Masto</a> |
<a href="https://bsky.app/profile/jelloeater.bsky.social">🦋 @jelloeater - Bsky</a> |
<a href="https://bsky.app/profile/did:plc:srmltlrjqfr7mbfdejuxrbss/rss">🦋 @jelloeater - Bsky RSS</a> |
<a href="mailto:jello@jelloeater.me?subject=RE:diary-migrate">📧 Email Me</a> |
<a href="https://jelloeater.me/blog/diary-migrate/#comments">💬 Comment</a>
<br>
<a href="https://jelloeater.me/link/">🌳 LinkTree</a> |
<a href="https://ko-fi.com/jelloeater">☕ Buy me a coffee</a>
<hr>


Tags:
<a href="https://jelloeater.me/tags/diary/">#diary</a>

<a href="https://jelloeater.me/tags/obsidian/">#obsidian</a>

<a href="https://jelloeater.me/tags/personal/">#personal</a>

<a href="https://jelloeater.me/tags/private/">#private</a>

<a href="https://jelloeater.me/tags/update/">#update</a>

        ]]>
        </content:encoded>
    </item>
    <item>
      <title>Bookmarking &amp; Blogging</title>
      <link>
      https://jelloeater.me/blog/info-overload/
      </link>
      <dc:creator>Jelloeater</dc:creator>
      <comments>
      https://jelloeater.me/blog/info-overload/#comments
      </comments>
      <pubDate>Wed, 04 Jun 2025 02:59:29 +0000</pubDate>
      <category>blogging</category>
      
      <category>bookmarking</category>
      
      <category>instapaper</category>
      
      <category>link_dump</category>
      
      <category>mozilla_sync</category>
      
      <category>raindrop.io</category>
      
      <category>rss</category>
      
      <category>update</category>
      <guid>https://jelloeater.me/blog/info-overload/</guid>
      
      <media:content url="https://jelloeater.me/blog/info-overload.png" medium="image" type="image/png"/>
      <media:thumbnail url="https://jelloeater.me/blog/info-overload.png"/>
      


    
    



      
      
      <description><![CDATA[Blog posts (in theory) last forever...ish]]></description>
      
      <content:encoded>
        <![CDATA[
        
          <p><img src="https://jelloeater.me/blog/info-overload.png" alt="Featured Image"/></p>
        
        <h2 id="-information-overload">🤯 Information Overload</h2>
<p>I&rsquo;ve been rethinking my bookmarking and sharing habits. I consume a massive amount of content via RSS using <a href="https://www.inoreader.com">Inoreader</a>, often skimming 100-250 posts daily. This leads to an overwhelming reading list.</p>
<p>I&rsquo;ve been using <a href="https://openvibe.social/">OpenVibe</a> for quick shares and <a href="https://buffer.com/">Buffer</a> for automated posting, which works, but feels impersonal. Longer articles get starred for later review, resulting in a backlog of around 100 articles weekly. <a href="https://www.instapaper.com/">Instapaper</a> is my go-to for long-form content, but even then, I struggle to keep up.</p>
<p>I&rsquo;m trying to be more selective with what I send to Instapaper, reserving it for thought-provoking pieces. My free Buffer plan limits me to 10 queued articles, forcing me to be more discerning. I post around 20-30 articles weekly, which makes me question if I&rsquo;m a person or just a link aggregator.</p>
<p>While I&rsquo;m more selective than some, I want to avoid overwhelming my own followers. Feeds that post excessively feel like a chore, and I don&rsquo;t want to create that experience for others.</p>
<h2 id="-blogging">📝 Blogging</h2>
<p>To that end, I&rsquo;m going to TRY and start writing up a blog entry of the things I find interesting each week, and then posting that to my social media accounts. This way I can be more deliberate about what I share, and hopefully make it easier for folks reading my stuff things that interest <strong>them</strong>.</p>
<ul>
<li>Worst case, it becomes a highlight reel of the things I find interesting, and I can look back on it in a few months and see what I was into at the time.</li>
<li>Best case, it becomes a way for me to share my thoughts on the things I find interesting.</li>
</ul>
<p>Yeah, I&rsquo;ll still post timely stuff that&rsquo;s neat like now now, but I really want to focus more on the slow insightful stuff, as I&rsquo;m hoping it makes the whole info digestion process a bit easier for me, and hopefully for you too.</p>
<h2 id="-reading-and-bookmarking">📚 Reading and Bookmarking</h2>
<p>I use <a href="https://sync.mozilla.org/">Mozilla Sync</a> to manage my bookmarks, but it doesn&rsquo;t really help with the reading aspect. I do like how it integrates and lets me do bulk actions.</p>
<p>I&rsquo;ve also been testing out <a href="http://raindrop.io/">Raindrop.io</a>, which is also pretty neat. But the integration just feels second rate compared to FF Sync.</p>
<p>If you&rsquo;re not looking to use Mozilla Sync, then you might want to try [<a href="https://floccus.org/">Floccus</a>](<a href="https://floccus.org/">https://floccus.org/</a>) for doing cross browser bookmark syncing. It does work fairly well, but it does require a desktop to have all the bookmarks sync up, vs FF Sync, which is totally cloud based.</p>
<p>For reading long form, I prefer Instapaper due to its text reformating and features like reading progress tracking and highlighting. It also has Kindle sync, which I should utilize more.</p>
<p>However, I need a streamlined way to bulk bookmark, read, and share articles without service hassles. Currently, Mozilla Sync suits me for managing links to share later, while Buffer/OpenVibe handle immediate sharing.</p>
<pre class="mermaid">graph TD
Start --> Neat_Link --Skim_Headline-->

Interesting? --YES--> Read_Moar
Interesting? --NO--> Start

Read_Moar --> Lots_of_text
Lots_of_text --yeah--> InstaPaper
Still_Relevent --Nope--> Archive_It
InstaPaper --> Still_Relevent --Yeah--> Buffer/OpenVibe

Lots_of_text --nope--> Time_Sensitive
Time_Sensitive --Yes--> Buffer
Time_Sensitive --Nope--> Bookmark_It


Bookmark_It --> Blog_Post
  </pre>
  
<h2 id="-tldr">🤔 TL;DR</h2>
<p>I have a lot of bookmarks, and I want to be more deliberate about what I read and share. I&rsquo;m going to TRY to start writing up blog posts of the things I find interesting, and then posting that to my social media accounts.</p>
<ul>
<li>Worst case, you get a highlight reel / link dump of the things I find interesting</li>
<li>Best case, it becomes a new way for me to share my thoughts on the things I find interesting.</li>
</ul>
<p>🖖 Jelloeater</p>


  
    <blockquote>
      <p>Social media comes and goes, but blog posts (in theory) last forever&hellip;ish &lt;3</p>
    </blockquote>
  

        <br>
<div class="rss_avatar">
    
<a href="https://www.gravatar.com/avatar/38b1e3a9923c356e248e749ace56d4fd?s=800" target="_blank" rel="noopener noreferrer">
  <img
  class="gravatar-img"
  
  alt="Avatar"
  loading="lazy"
  src="https://www.gravatar.com/avatar/38b1e3a9923c356e248e749ace56d4fd?s=250"
  />
</a>

</div>
<style>
.rss_avatar{
    float: right;
}
.rss_avatar img{
    border-radius: 100%;
    max-height: 150px;
}
</style>
<br>
<hr>
Reply:
<a href="https://mastodon.social/@jelloeater">🐘 @jelloeater - Masto</a> |
<a href="https://bsky.app/profile/jelloeater.bsky.social">🦋 @jelloeater - Bsky</a> |
<a href="https://bsky.app/profile/did:plc:srmltlrjqfr7mbfdejuxrbss/rss">🦋 @jelloeater - Bsky RSS</a> |
<a href="mailto:jello@jelloeater.me?subject=RE:info-overload">📧 Email Me</a> |
<a href="https://jelloeater.me/blog/info-overload/#comments">💬 Comment</a>
<br>
<a href="https://jelloeater.me/link/">🌳 LinkTree</a> |
<a href="https://ko-fi.com/jelloeater">☕ Buy me a coffee</a>
<hr>


Tags:
<a href="https://jelloeater.me/tags/blogging/">#blogging</a>

<a href="https://jelloeater.me/tags/bookmarking/">#bookmarking</a>

<a href="https://jelloeater.me/tags/instapaper/">#instapaper</a>

<a href="https://jelloeater.me/tags/link_dump/">#link_dump</a>

<a href="https://jelloeater.me/tags/mozilla_sync/">#mozilla_sync</a>

<a href="https://jelloeater.me/tags/raindrop.io/">#raindrop.io</a>

<a href="https://jelloeater.me/tags/rss/">#rss</a>

<a href="https://jelloeater.me/tags/update/">#update</a>

        ]]>
        </content:encoded>
    </item>
  </channel>
</rss>
