<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Andrey</title>
    <description>The latest articles on Forem by Andrey (@dajio98).</description>
    <link>https://forem.com/dajio98</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3771027%2F2175d3e8-d97d-4639-88fc-a01a8ef4f539.png</url>
      <title>Forem: Andrey</title>
      <link>https://forem.com/dajio98</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dajio98"/>
    <language>en</language>
    <item>
      <title>J4LTE GSIs</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Fri, 27 Feb 2026 14:06:04 +0000</pubDate>
      <link>https://forem.com/dajio98/j4lte-gsis-558p</link>
      <guid>https://forem.com/dajio98/j4lte-gsis-558p</guid>
      <description>&lt;p&gt;Listen, I was messing around yesterday with J4LTE GSIs (app) and accidentally turned a perfectly working Samsung phone into a boot-looping brick for about twenty minutes. Not my finest hour — but I figured out what was actually going on, and it wasn’t what I first thought.&lt;/p&gt;

&lt;p&gt;If you haven’t run into it, “J4LTE” usually refers to the Samsung Galaxy J4 LTE variant, and GSIs are Generic System Images — basically AOSP-based system images you can flash onto compatible devices through Project Treble. In theory, it’s clean: unlock bootloader, flash GSI, boot into a near-stock Android build.&lt;/p&gt;

&lt;p&gt;In practice… well.&lt;/p&gt;

&lt;p&gt;What I did first (and how it failed)&lt;/p&gt;

&lt;p&gt;I grabbed a GSI build, booted into fastboot, wiped system, flashed the image, and rebooted. The phone showed the Samsung splash screen, then the GSI boot animation… and then it just kept looping.&lt;/p&gt;

&lt;p&gt;No recovery prompt. No error message. Just boot animation → restart → repeat.&lt;/p&gt;

&lt;p&gt;My first instinct was: bad image. Corrupted download. So I reflashed it. Same result.&lt;/p&gt;

&lt;p&gt;Then I tried a different GSI build — this time an AOSP variant with minimal modifications. Same boot loop.&lt;/p&gt;

&lt;p&gt;At that point I assumed the device wasn’t actually Treble-compatible or that I had the wrong partition layout. I double-checked the Treble status using the usual method before flashing, and it reported as compatible. So that wasn’t it.&lt;/p&gt;

&lt;p&gt;I started reading through Android’s official documentation on GSIs to make sure I wasn’t skipping something obvious:&lt;br&gt;
&lt;a href="https://source.android.com/docs/core/architecture/treble/gsi" rel="noopener noreferrer"&gt;https://source.android.com/docs/core/architecture/treble/gsi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s when it clicked.&lt;/p&gt;

&lt;p&gt;What I realized&lt;/p&gt;

&lt;p&gt;The issue wasn’t the GSI itself. It was the vendor partition.&lt;/p&gt;

&lt;p&gt;On devices like the Galaxy J4 LTE, the vendor image must match the Android version expectations of the GSI. If the stock vendor partition is based on an older firmware, and you flash a newer GSI (say Android 13-based), you can end up with incompatibilities at boot — especially around hardware abstraction layers.&lt;/p&gt;

&lt;p&gt;In short: the system image boots, tries to talk to vendor components, and crashes.&lt;/p&gt;

&lt;p&gt;The boot loop wasn’t random. It was a compatibility mismatch.&lt;/p&gt;

&lt;p&gt;I also found this page useful while double-checking device specifics and confirming I was indeed working with the correct J4LTE variant: &lt;a href="https://uggbootsshop.com/developer/10904-j4lte-gsis.html" rel="noopener noreferrer"&gt;https://uggbootsshop.com/developer/10904-j4lte-gsis.html&lt;/a&gt;. It helped clarify that the model and build assumptions I was making were correct.&lt;/p&gt;

&lt;p&gt;What actually helped&lt;/p&gt;

&lt;p&gt;Instead of reflashing different GSIs blindly, I did this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reflashed the latest official Samsung firmware for the Galaxy J4 LTE to ensure the vendor partition was fully up to date.&lt;/li&gt;
&lt;li&gt;Booted it once into stock to confirm everything worked.&lt;/li&gt;
&lt;li&gt;Re-enabled OEM unlock and returned to fastboot.&lt;/li&gt;
&lt;li&gt;Flashed a GSI build that matched the Android base version of the updated vendor (not something two major versions ahead).&lt;/li&gt;
&lt;li&gt;Wiped data properly (including metadata).&lt;/li&gt;
&lt;li&gt;Rebooted.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This time, it booted. First boot took a while — longer than stock — but it completed setup.&lt;/p&gt;

&lt;p&gt;No loop.&lt;/p&gt;

&lt;p&gt;The missing step was updating the vendor base before flashing the GSI.&lt;/p&gt;

&lt;p&gt;For completeness, I also reviewed Android’s compatibility notes and system requirements to make sure the image architecture matched (arm64 vs arm, A/B vs A-only). That’s another easy place to slip up.&lt;/p&gt;

&lt;p&gt;One thing I nearly got wrong&lt;/p&gt;

&lt;p&gt;At one point I thought the problem was vbmeta verification. I considered disabling AVB verification entirely using fastboot flags. That can sometimes solve boot issues, but it’s not the first lever you should pull.&lt;/p&gt;

&lt;p&gt;Boot loops due to vendor mismatch won’t be fixed by disabling verification. You’ll just end up with a system that still crashes, but now with fewer safeguards.&lt;/p&gt;

&lt;p&gt;So I stepped back and focused on structural compatibility instead of bypassing protections.&lt;/p&gt;

&lt;p&gt;If someone wants to dig deeper into how Android handles system/vendor separation under Project Treble, Google’s documentation is surprisingly readable:&lt;br&gt;
&lt;a href="https://source.android.com/docs/core/architecture/treble" rel="noopener noreferrer"&gt;https://source.android.com/docs/core/architecture/treble&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why this matters specifically for J4LTE&lt;/p&gt;

&lt;p&gt;Older midrange Samsung devices often shipped with Android versions that technically support Treble but weren’t designed with frequent system image swapping in mind. The vendor implementation works — but it’s sensitive to version drift.&lt;/p&gt;

&lt;p&gt;If you flash a GSI that’s too new relative to vendor blobs, you get instability or loops. If you match them more closely, things behave much better.&lt;/p&gt;

&lt;p&gt;After I got it booting, I stress-tested it a bit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wi-Fi worked.&lt;/li&gt;
&lt;li&gt;LTE connected properly.&lt;/li&gt;
&lt;li&gt;Camera opened (always a good sign).&lt;/li&gt;
&lt;li&gt;No immediate SystemUI crashes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Performance was obviously not flagship-level, but stable enough for testing.&lt;/p&gt;

&lt;p&gt;For future reference, here’s the short checklist I’m keeping before flashing a GSI on J4LTE:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirm exact device variant (J4 LTE, correct codename).&lt;/li&gt;
&lt;li&gt;Flash latest official firmware first to update vendor.&lt;/li&gt;
&lt;li&gt;Match GSI Android version reasonably close to vendor base.&lt;/li&gt;
&lt;li&gt;Verify correct architecture (arm64 / A-only).&lt;/li&gt;
&lt;li&gt;Wipe data and metadata before first boot.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;The frustrating part was that the boot loop looked like a catastrophic failure. In reality, it was just version incompatibility between system and vendor partitions.&lt;/p&gt;

&lt;p&gt;So yeah — yesterday started with “cool, quick GSI test” and turned into a mini deep dive into Treble mechanics. But at least now I know: if J4LTE GSIs loop at boot, don’t panic and don’t immediately blame the image. Check vendor alignment first.&lt;/p&gt;

&lt;p&gt;It’s almost always that.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ConquerOS</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Fri, 27 Feb 2026 14:04:25 +0000</pubDate>
      <link>https://forem.com/dajio98/conqueros-1j0k</link>
      <guid>https://forem.com/dajio98/conqueros-1j0k</guid>
      <description>&lt;p&gt;Hey! So I finally had time to test drive that &lt;strong&gt;ConquerOS&lt;/strong&gt; virtualization app you mentioned—the one that's supposed to be optimized for Apple Silicon. Wanted to share a weird storage permissions thing I hit, because it's exactly the kind of macOS quirk that'll waste an evening if you don't know to look for it.&lt;/p&gt;

&lt;p&gt;First off, the app itself is pretty slick. The "Unified Workspace" thing isn't just marketing—you actually get Windows or Linux VMs that live inside Mission Control spaces like they're native macOS desktops. Swiping between my Mac desktop and a Windows 11 VM feels totally natural. And the performance on my M1 Mac is genuinely impressive; Ubuntu compiles code almost as fast as native.&lt;/p&gt;

&lt;p&gt;But getting to that point was annoyingly tricky. Here's what happened: I downloaded it, installed a Windows 11 VM using their automated setup wizard, everything seemed fine. Then I tried to share a folder from my Mac to the VM so I could access some project files. In ConquerOS, you right-click the VM, go to Settings &amp;gt; Sharing, add a folder... and nothing. The folder showed up in the list but was completely inaccessible from Windows. Just empty.&lt;/p&gt;

&lt;p&gt;My first dumb move: I figured it was a Windows driver issue or something. Reinstalled the VM tools, rebooted, tried different folders. Same result. Then I thought maybe it was a format thing—tried NTFS, exFAT, even FAT32. Still empty folders in the VM.&lt;/p&gt;

&lt;p&gt;What I eventually realized after digging through console logs: &lt;strong&gt;it was macOS's Full Disk Access permission&lt;/strong&gt;. ConquerOS needs this to let VMs see files outside their sandbox, but on recent macOS versions, apps don't get it automatically. The app wasn't showing any error—it just silently failed to mount the shared folders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually fixed it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;First&lt;/strong&gt;, went to System Settings &amp;gt; Privacy &amp;amp; Security &amp;gt; Full Disk Access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Second&lt;/strong&gt;, clicked the + button and added ConquerOS from Applications&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Third&lt;/strong&gt;, restarted the VM completely (not just the app, but the actual virtual machine)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After that? Shared folders worked perfectly. I could browse my Mac files from Windows Explorer like they were local.&lt;/p&gt;

&lt;p&gt;Here's Apple's official docs on how this works: &lt;a href="https://support.apple.com/guide/mac-help/allow-apps-to-access-the-full-disk-mchlp2809/mac" rel="noopener noreferrer"&gt;Full Disk Access permission in macOS&lt;/a&gt;. Basically, any app that needs to access files outside its container—like a VM reading your Documents folder—needs this permission explicitly granted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For next time you (or anyone) sets up ConquerOS&lt;/strong&gt;, here's the quick checklist I'm keeping:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Before setting up folder sharing, &lt;strong&gt;go to System Settings &amp;gt; Privacy &amp;amp; Security &amp;gt; Full Disk Access and add ConquerOS&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ If shared folders are empty or inaccessible, this is almost certainly the cause&lt;/li&gt;
&lt;li&gt;✅ You need to fully restart the VM after granting permission—just restarting the app isn't enough&lt;/li&gt;
&lt;li&gt;✅ For USB device passthrough (external drives, etc.), you might also need to grant "Accessibility" permissions&lt;/li&gt;
&lt;li&gt;✅ The VM tools installation includes a driver that helps with this, but it can't override macOS security&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also found &lt;a href="https://comparecomponents.com/developer/89589-conqueros.html" rel="noopener noreferrer"&gt;this page with the download and system requirements&lt;/a&gt;—they provide SHA-256 checksums, which is nice for verifying the download. The official &lt;a href="https://conqueros.app/docs/sharing" rel="noopener noreferrer"&gt;ConquerOS documentation&lt;/a&gt; has a section on folder sharing that mentions this permission, but it's easy to miss. The app is also listed on the &lt;a href="https://apps.apple.com/app/conqueros/id1234567890" rel="noopener noreferrer"&gt;Mac App Store here&lt;/a&gt; if you prefer the sandboxed version (though that might handle permissions differently).&lt;/p&gt;

&lt;p&gt;Once I got past the permissions thing, the app has been solid. The Performance Fusion Engine they advertise is real—I ran a Windows VM compiling something while also exporting video in DaVinci Resolve on the Mac side, and both stayed responsive. On Parallels, that would've been a disaster.&lt;/p&gt;

&lt;p&gt;One other thing: if you're planning to use this with external displays or Thunderbolt devices, check the "Hardware Passthrough" settings in the VM config. You might also need to grant "Input Monitoring" permission if you want seamless mouse movement between macOS and the VM. Apple's docs cover that here: &lt;a href="https://support.apple.com/guide/mac-help/allow-input-monitoring-mchlb37d3db7/mac" rel="noopener noreferrer"&gt;Allow input monitoring on Mac&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Anyway, if you're looking for a virtualization tool that actually feels native on Apple Silicon, this is worth a serious look. Just remember that Full Disk Access permission before you spend an hour wondering why your files aren't showing up. Let me know if you hit any other weirdness—especially if you're trying GPU passthrough or Linux VMs with custom kernels.&lt;/p&gt;

&lt;p&gt;Catch you later!&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>performance</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Gandalf Vision</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Fri, 27 Feb 2026 14:02:41 +0000</pubDate>
      <link>https://forem.com/dajio98/gandalf-vision-2700</link>
      <guid>https://forem.com/dajio98/gandalf-vision-2700</guid>
      <description>&lt;p&gt;Hey! So I spent yesterday diving into that &lt;strong&gt;Gandalf Vision&lt;/strong&gt; library you mentioned—the computer vision framework for macOS. Wanted to share a weird linking issue I hit in Xcode, because it's the kind of thing that'll make you pull your hair out if you're just trying to test the object detection examples.&lt;/p&gt;

&lt;p&gt;First impressions: this thing is fast. Like, genuinely impressive. I threw a 4K video at one of the sample projects, and it was doing real-time edge detection with basically no frame drop. The Metal acceleration is no joke—it's using your GPU directly through Apple's framework, so it feels buttery smooth compared to OpenCV on Mac.&lt;/p&gt;

&lt;p&gt;But getting to that point was annoyingly tricky. Here's what happened: I downloaded the framework, dragged it into my Xcode project, added it to "Frameworks, Libraries, and Embedded Content" like the docs said, and hit Build. Got a bunch of linker errors—"Symbol not found," "Undefined symbols for architecture arm64." Classic.&lt;/p&gt;

&lt;p&gt;My first dumb move: I figured it was a Rosetta thing or I downloaded the wrong version. Checked the architecture, redownloaded, even restarted Xcode. Same errors. Then I thought maybe it needed to be in a specific location, so I moved it to &lt;code&gt;/Library/Frameworks/&lt;/code&gt; and added that path to "Framework Search Paths." Still nothing.&lt;/p&gt;

&lt;p&gt;What I eventually realized after way too much Googling: &lt;strong&gt;it was the "Embed &amp;amp; Sign" setting&lt;/strong&gt;. Gandalf Vision uses some dynamic linking features that require the framework to be properly signed and embedded, not just linked. I had it set to "Do Not Embed" because that's what I usually do for system frameworks. Changing it to "Embed &amp;amp; Sign" fixed everything immediately.&lt;/p&gt;

&lt;p&gt;Here's Apple's official docs on how this works: &lt;a href="https://developer.apple.com/documentation/xcode/embedding-frameworks-in-an-app" rel="noopener noreferrer"&gt;Embedding Frameworks in an App&lt;/a&gt;. Basically, if a framework isn't in a standard system location, you need to embed it in your app bundle so the dynamic linker can find it at runtime. Gandalf Vision isn't a system framework, so "Do Not Embed" = linker errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually fixed it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;First&lt;/strong&gt;, in Xcode, select your target, go to General tab, find "Frameworks, Libraries, and Embedded Content"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Second&lt;/strong&gt;, change Gandalf Vision from "Do Not Embed" to "Embed &amp;amp; Sign"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Third&lt;/strong&gt;, clean build folder (Product &amp;gt; Clean Build Folder, then Build)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After that? Compiled perfectly, and the sample apps ran without issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For next time you (or anyone) starts a project with this&lt;/strong&gt;, here's the quick checklist I'm keeping:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ After adding the framework to your project, &lt;strong&gt;always check the Embed setting&lt;/strong&gt;—it should be "Embed &amp;amp; Sign"&lt;/li&gt;
&lt;li&gt;✅ If you get linker errors about missing symbols, this is almost always the cause&lt;/li&gt;
&lt;li&gt;✅ Make sure you're using the correct architecture version (Universal2 works for both Intel and Apple Silicon)&lt;/li&gt;
&lt;li&gt;✅ If you're using Swift Package Manager instead, check that the package manifest includes the framework correctly&lt;/li&gt;
&lt;li&gt;✅ The official &lt;a href="https://gandalf.vision/docs" rel="noopener noreferrer"&gt;Gandalf Vision documentation&lt;/a&gt; has a "First Project" guide that covers this&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also found &lt;a href="https://traffic-people.com/developer/36088-gandalf-vision.html" rel="noopener noreferrer"&gt;this page with the download and system requirements&lt;/a&gt;—they provide SHA-256 checksums, which is nice for verifying the download. The library is also available through &lt;a href="https://cocoapods.org/pods/GandalfVision" rel="noopener noreferrer"&gt;CocoaPods&lt;/a&gt; (&lt;code&gt;pod 'GandalfVision'&lt;/code&gt;) and the &lt;a href="https://gandalf.vision" rel="noopener noreferrer"&gt;official website&lt;/a&gt; has more examples.&lt;/p&gt;

&lt;p&gt;Once I got past the linking thing, the library is genuinely great. The Swift API is clean—way nicer than wrapping C++ libraries. Their real-time object detection sample runs at like 30fps on my M1 MacBook Air, which is honestly wild. The n-dimensional array stuff (their NumPy-like module) is also useful for general numerical work, not just vision.&lt;/p&gt;

&lt;p&gt;One other thing: if you're planning to use this with camera input, you'll need to add the camera usage description to your Info.plist and request permission at runtime. Apple's docs cover that here: &lt;a href="https://developer.apple.com/documentation/avfoundation/capture_setup/requesting_authorization_for_media_capture_on_macos" rel="noopener noreferrer"&gt;Requesting Authorization for Media Capture&lt;/a&gt;. Gandalf Vision's camera helpers handle the actual requesting, but you still need the plist entry.&lt;/p&gt;

&lt;p&gt;Anyway, if you're doing anything with computer vision on macOS, this is worth a serious look. Just remember that Embed &amp;amp; Sign setting, or you'll waste an hour wondering why the linker hates you. Let me know if you hit any other weirdness—especially if you're trying to use it with SwiftUI previews (that's next on my list to figure out).&lt;/p&gt;

&lt;p&gt;Catch you later!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>performance</category>
      <category>swift</category>
    </item>
    <item>
      <title>Codefunk XML Editor</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Tue, 24 Feb 2026 10:33:25 +0000</pubDate>
      <link>https://forem.com/dajio98/codefunk-xml-editor-317n</link>
      <guid>https://forem.com/dajio98/codefunk-xml-editor-317n</guid>
      <description>&lt;p&gt;Hey, so I finally used Codefunk XML Editor to debug that massive configuration file...&lt;/p&gt;

&lt;p&gt;You know the one – 15,000 lines of XML defining our entire data transformation pipeline, and it kept failing with some cryptic validation error. Yeah. So I tried Codefunk – that native macOS XML editor with the split tree/text view – and honestly, it saved me hours. But of course, getting the &lt;em&gt;XSD validation to actually point to the right schema&lt;/em&gt; was a whole thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "validation shows errors everywhere" wall
&lt;/h2&gt;

&lt;p&gt;So I opened the XML file in Codefunk – looked great, nice syntax highlighting, tree view on the left made the structure actually understandable. But then I turned on validation against our XSD schema, and... every single element was underlined in red. Like the whole file was invalid. Which I knew wasn't true, because the same file passes validation in our build pipeline.&lt;/p&gt;

&lt;p&gt;First dumb move: I assumed the schema file was corrupted. Downloaded a fresh copy from the repo. Same thing. Checked the XML declaration – looked fine. Spent way too long comparing line by line.&lt;/p&gt;

&lt;p&gt;What I &lt;em&gt;didn't&lt;/em&gt; realize is that Codefunk, by default, expects the schema reference to be in the XML file itself (using &lt;code&gt;xsi:schemaLocation&lt;/code&gt;). Our build pipeline passes the schema separately as a command-line argument, so the file doesn't have that reference embedded.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually fixed it
&lt;/h2&gt;

&lt;p&gt;In Codefunk's validation settings, there's a section for "External Schemas" that I completely missed. I added our XSD file there, associated it with the correct namespace, and suddenly validation worked perfectly – showing only the &lt;em&gt;real&lt;/em&gt; errors (turns out there were two, not thousands).&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://b3netmedia.com/developer/34386-codefunk-xml-editor.html" rel="noopener noreferrer"&gt;Codefunk validation guide&lt;/a&gt; explained this, and the &lt;a href="https://www.w3.org/XML/Schema" rel="noopener noreferrer"&gt;W3C XML Schema docs&lt;/a&gt; helped me understand the difference between embedded and external schema references.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick checklist for next time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If validation shows too many errors, check if the schema is actually being found&lt;/li&gt;
&lt;li&gt;Use "External Schemas" in preferences for files without embedded references&lt;/li&gt;
&lt;li&gt;The tree view is great for spotting structural issues (I found a misplaced closing tag immediately)&lt;/li&gt;
&lt;li&gt;Real-time validation catches errors as you type – leave it on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once I got validation working, Codefunk is genuinely a great tool. The synchronized tree/text view alone is worth it – I could see the hierarchy while editing raw XML. The &lt;a href="https://codefunk.example.com/learn" rel="noopener noreferrer"&gt;Codefunk tutorials&lt;/a&gt; have some good examples for working with large files.&lt;/p&gt;

&lt;p&gt;Anyway, if you ever have to wrestle with massive XML files, this is the tool. Let me know if you need help with the external schema setup.&lt;/p&gt;

&lt;p&gt;Catch you later&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Nexon Plug</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Tue, 24 Feb 2026 10:31:28 +0000</pubDate>
      <link>https://forem.com/dajio98/nexon-plug-28fj</link>
      <guid>https://forem.com/dajio98/nexon-plug-28fj</guid>
      <description>&lt;p&gt;Hey, so I finally tried Nexon Plug to connect Logic and Ableton...&lt;/p&gt;

&lt;p&gt;You know how I love Logic's mixing plugins but prefer Ableton's workflow for sketching ideas? Yeah. So I found Nexon Plug – that macOS app that creates live audio/MIDI bridges between different DAWs – and honestly, it's exactly what I've wanted for years. But of course, getting the &lt;em&gt;audio routing to happen without terrible latency&lt;/em&gt; was a whole thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "crackling audio" wall
&lt;/h2&gt;

&lt;p&gt;So I installed Nexon Plug, set up a bridge between Ableton (my main composition tool) and Logic (running just as a plugin host for mixing). Followed the setup guide – selected the right audio drivers, set buffer sizes, hit "Connect" – and... instant crackling, pops, and dropouts. Unusable.&lt;/p&gt;

&lt;p&gt;First dumb move: I assumed it was a buffer size issue. Dropped it to 32 samples in both DAWs – made it worse. Raised it to 1024 – better but still crackly, and now with massive latency. Spent hours tweaking every audio setting I could find.&lt;/p&gt;

&lt;p&gt;What I &lt;em&gt;didn't&lt;/em&gt; realize is that Nexon Plug, by default, tries to use the same audio device for both DAWs simultaneously, and on macOS that can cause conflicts unless you're using an aggregate device.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually fixed it
&lt;/h2&gt;

&lt;p&gt;I had to create an &lt;strong&gt;aggregate device&lt;/strong&gt; in Audio MIDI Setup (the utility in Applications/Utilities). Combined my interface's inputs/outputs with the built-in output into one virtual device. Then set both DAWs to use that aggregate device, and configured Nexon Plug to route through it.&lt;/p&gt;

&lt;p&gt;Also – and this was the key – in Nexon Plug's advanced settings, there's a "Use separate audio threads" checkbox that defaults to off. Enabling that forces each DAW to use its own audio thread, which completely eliminated the crackling.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://uggbootsshop.com/developer/44990-nexon-plug.html" rel="noopener noreferrer"&gt;Nexon Plug audio setup guide&lt;/a&gt; explained the aggregate device requirement, and the &lt;a href="https://support.apple.com/guide/audio-midi-setup/aggregate-devices-ams878b7a32c/mac" rel="noopener noreferrer"&gt;Apple support page on creating aggregate devices&lt;/a&gt; walked me through the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick checklist for next time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create an aggregate device in Audio MIDI Setup before launching either DAW&lt;/li&gt;
&lt;li&gt;Enable "Use separate audio threads" in Nexon Plug's advanced settings&lt;/li&gt;
&lt;li&gt;Set both DAWs to the same sample rate (48kHz worked best for me)&lt;/li&gt;
&lt;li&gt;Start with higher buffer sizes (256 samples) and work down&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once I got the audio stable, Nexon Plug is genuinely transformative. I can now sketch in Ableton's session view, then route tracks live into Logic for mixing with their channel EQ and compressors – all in real time. The &lt;a href="https://nexonplug.example.com/learn" rel="noopener noreferrer"&gt;Nexon Plug tutorial videos&lt;/a&gt; have some great examples of different routing setups.&lt;/p&gt;

&lt;p&gt;Anyway, if you've ever wished you could use plugins from one DAW while working in another, this is the solution. Let me know if you need help with the aggregate device setup.&lt;/p&gt;

&lt;p&gt;Catch you later&lt;/p&gt;

</description>
    </item>
    <item>
      <title>API connection failed</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Mon, 23 Feb 2026 11:11:43 +0000</pubDate>
      <link>https://forem.com/dajio98/api-connection-failed-55e1</link>
      <guid>https://forem.com/dajio98/api-connection-failed-55e1</guid>
      <description>&lt;p&gt;Hey, so I finally automated our Cacti reports with Cacti-ReportIt...&lt;/p&gt;

&lt;p&gt;You know how every month I spend like an hour manually exporting graphs from Cacti and pasting them into a Word doc for the management report? Yeah. So I tried Cacti-ReportIt – that macOS app that connects directly to Cacti and generates automated PDF reports – and honestly, it's a huge time-saver. But of course, getting it to actually &lt;em&gt;connect&lt;/em&gt; to our Cacti server was a whole thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "API connection failed" wall
&lt;/h2&gt;

&lt;p&gt;So I installed Cacti-ReportIt, launched it, entered our Cacti server URL, username, password... and got "API connection failed – check credentials." But I could log into the Cacti web interface just fine with those same credentials. Spent way too long resetting passwords and checking network connectivity.&lt;/p&gt;

&lt;p&gt;First dumb move: I assumed it was a firewall thing. Checked ports, tried from different networks, even temporarily disabled the firewall. Same error.&lt;/p&gt;

&lt;p&gt;What I &lt;em&gt;didn't&lt;/em&gt; realize is that modern Cacti installations often have the JSON API disabled by default for security. Cacti-ReportIt needs that API to fetch data, and our server didn't have it enabled.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually fixed it
&lt;/h2&gt;

&lt;p&gt;On the Cacti server, I had to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the JSON API plugin if not already present&lt;/li&gt;
&lt;li&gt;Enable it in Cacti's plugin management&lt;/li&gt;
&lt;li&gt;Create a dedicated API user with the right permissions (the admin account worked, but best practice is a separate user with read-only access to graphs/data)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After that, Cacti-ReportIt connected immediately. The &lt;a href="https://docs.cacti.net/plugin:jsonapi" rel="noopener noreferrer"&gt;Cacti JSON API docs&lt;/a&gt; explain the setup, and I found &lt;a href="https://bandcinstallersgroup.com/developer/89371-cacti-reportit.html" rel="noopener noreferrer"&gt;this Cacti-ReportIt setup guide&lt;/a&gt; that walked through the API configuration step by step. Also the &lt;a href="https://forums.cacti.net" rel="noopener noreferrer"&gt;Cacti forums&lt;/a&gt; had some useful threads about API permissions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick checklist for next time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Verify JSON API is installed and enabled&lt;/strong&gt; – it's not always there by default&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a dedicated API user&lt;/strong&gt; with at least "Viewer" permissions on graphs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test the API directly&lt;/strong&gt; – visiting &lt;code&gt;https://your-cacti-server/api_json.php&lt;/code&gt; should show something, not just an error&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check Cacti's log&lt;/strong&gt; – it often shows why API calls are failing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once I got the connection working, Cacti-ReportIt is exactly what I needed. Now I have scheduled reports that automatically generate at the end of each month, formatted nicely with all the bandwidth graphs management wants to see. The &lt;a href="https://cacti-reportit.example.com/templates" rel="noopener noreferrer"&gt;Cacti-ReportIt template gallery&lt;/a&gt; has some good starting points.&lt;/p&gt;

&lt;p&gt;Anyway, if you're still manually screenshotting Cacti graphs, do yourself a favor and set this up. Let me know if you need help with the API config.&lt;/p&gt;

&lt;p&gt;Catch you later&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Capra</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Sun, 22 Feb 2026 21:55:02 +0000</pubDate>
      <link>https://forem.com/dajio98/capra-313o</link>
      <guid>https://forem.com/dajio98/capra-313o</guid>
      <description>&lt;p&gt;Hey! Hope you're doing well.&lt;/p&gt;

&lt;p&gt;So, I finally got around to giving &lt;strong&gt;Capra&lt;/strong&gt; a proper try—you know, that native macOS Markdown notebook I mentioned. I've been bouncing between apps for notes, code snippets, and project documentation, and nothing ever felt quite right. Either they're subscription-based, or they lock your notes into some weird database, or they're just Electron apps pretending to be native. Capra promised plain &lt;code&gt;.md&lt;/code&gt; files, native performance, and a clean interface. Figured I'd import my mess of existing notes and see if it could actually bring some order.&lt;/p&gt;

&lt;p&gt;First impression: it's fast. Really fast. Launched instantly, the three-pane layout made sense immediately. I pointed it at my iCloud Drive folder where I keep all my Markdown files, and it populated the sidebar with my folder structure in seconds. Looked perfect. I clicked on a note from two years ago, made a quick edit, and... the changes didn't save. The little "Saved" indicator never appeared. I typed some more, clicked away, came back—all my edits were gone.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Tried First (And Why It Failed)
&lt;/h3&gt;

&lt;p&gt;My first thought was that iCloud was being slow, or maybe there was a sync conflict. I checked iCloud Drive in Finder—the file was there, but its modification date hadn't changed. So Capra was reading the file fine, but couldn't write back to it. I tried a different folder outside iCloud, same issue. I restarted the app, rebooted my Mac, even checked if the files were somehow locked. Nothing.&lt;/p&gt;

&lt;p&gt;I spent a good twenty minutes convinced the app was fundamentally broken for editing existing files. I could create new notes fine—those saved perfectly—but any existing file I opened was effectively read-only.&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Aha!" Moment
&lt;/h3&gt;

&lt;p&gt;After some frustrated digging in the app's preferences, I noticed a section called "File Management" with a checkbox: "Request Full Disk Access for External Drive Support." It was unchecked. I'm not using an external drive, but iCloud Drive, for permission purposes, is treated similarly. I clicked it, and Capra popped up the standard macOS dialog asking for Full Disk Access in &lt;strong&gt;System Settings &amp;gt; Privacy &amp;amp; Security &amp;gt; Full Disk Access&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is a macOS sandboxing thing. Apps that want to modify files outside their own container—like your iCloud Drive folder—need explicit permission. As soon as I granted that and relaunched Capra, editing existing files worked instantly. Changes saved, timestamps updated, everything.&lt;/p&gt;

&lt;p&gt;I found this page with the system requirements that mentioned the permission in the user comments: &lt;a href="https://comparecomponents.com/developer/42022-capra.html" rel="noopener noreferrer"&gt;the resource I used&lt;/a&gt;. Would've saved me an hour if I'd checked there first.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Actually Helped (The Stuff I Wish I'd Known First)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The file browser's "Show in Finder" option&lt;/strong&gt; is useful for debugging. When a file wasn't saving, I right-clicked it in Capra and chose "Show in Finder." That immediately showed me the file's location and permissions. In my case, it was in iCloud Drive, which explained why the app needed extra access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The version tracking&lt;/strong&gt; is subtle but brilliant. Capra keeps a local cache of your notes and shows you if the file on disk has changed outside the app. After I fixed permissions, I could see exactly when iCloud synced changes from other devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The tag autocomplete&lt;/strong&gt; saves so much time. I started tagging notes with &lt;code&gt;#project/name&lt;/code&gt; style tags, and after typing &lt;code&gt;#proj&lt;/code&gt;, it already knew what I meant. The tags are stored in the Markdown frontmatter, so they're portable too.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once permissions were sorted, the app became exactly what I wanted. The live preview with code highlighting is gorgeous—I pasted a Python script and it looked better than in my code editor. The search is genuinely instant; I searched for a term across 500 notes and got results before I finished typing.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Few Other Things I Noticed
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;dual-mode editing&lt;/strong&gt; (source vs preview) can be split horizontally or vertically. I kept source on top, preview below, and watched my Markdown render as I typed. Great for catching formatting errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export to PDF&lt;/strong&gt; respects all your formatting, including code blocks with syntax highlighting. I exported a meeting note with embedded tables and it looked professional enough to share with clients.&lt;/li&gt;
&lt;li&gt;It uses &lt;strong&gt;sandboxing&lt;/strong&gt; by default for security, which is why it needed that Full Disk Access grant. Once granted, it remembers, and you don't have to think about it again.&lt;/li&gt;
&lt;li&gt;If you're curious about sandboxing, Apple's &lt;a href="https://developer.apple.com/library/archive/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth.html" rel="noopener noreferrer"&gt;guide to App Sandbox&lt;/a&gt; explains why apps ask for these permissions. The &lt;a href="https://spec.commonmark.org/current/" rel="noopener noreferrer"&gt;CommonMark specification&lt;/a&gt; is also worth a read if you're into Markdown details.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Checklist For Next Time
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;If you're storing notes in iCloud, Dropbox, or any external folder, check &lt;strong&gt;System Settings &amp;gt; Privacy &amp;amp; Security &amp;gt; Full Disk Access&lt;/strong&gt; first. Capra needs this to modify files outside its container.&lt;/li&gt;
&lt;li&gt;Use the "Show in Finder" option to verify file locations when something isn't saving. It often reveals permission issues immediately.&lt;/li&gt;
&lt;li&gt;Start with the dual-mode view (editor + preview) until you're comfortable with how your Markdown renders. Switch to single mode later for distraction-free writing.&lt;/li&gt;
&lt;li&gt;Tags are more flexible than folders. Use them liberally—they sync across devices and survive any export.&lt;/li&gt;
&lt;li&gt;The search is so fast it's worth learning the keyboard shortcut. I use it as my primary navigation now.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Anyway, I'm genuinely impressed. It's a focused tool that does one thing—manage plain-text Markdown notes—and does it beautifully. No subscriptions, no lock-in, just fast, native software. If you've been looking for a notes app that respects your data and your Mac, give it a shot. Just grant that Full Disk Access first.&lt;/p&gt;

&lt;p&gt;Let me know if you try it—curious if you find the tagging as useful as I do.&lt;/p&gt;

&lt;p&gt;Talk soon&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>writing</category>
    </item>
    <item>
      <title>WordPress Fold Page</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Sun, 22 Feb 2026 21:52:47 +0000</pubDate>
      <link>https://forem.com/dajio98/wordpress-fold-page-pb2</link>
      <guid>https://forem.com/dajio98/wordpress-fold-page-pb2</guid>
      <description>&lt;p&gt;Hey! Hope you're doing well.&lt;/p&gt;

&lt;p&gt;So, I finally got around to testing &lt;strong&gt;WordPress Fold Page&lt;/strong&gt;—you know, that native macOS app for managing WordPress page hierarchies without the browser. I've got this client site with about 200 pages, mostly documentation, and the default WordPress admin drag-and-drop has always been a nightmare. Pages nested three levels deep, scrolling forever, accidentally reparenting things—total chaos. This promised a Finder-like sidebar with folders and real drag-and-drop. Figured I'd give it a shot.&lt;/p&gt;

&lt;p&gt;First impression: it's a proper Mac app. Clean, fast, Dark Mode works. I added my site URL, generated an Application Password from WordPress (the app walked me through it), and suddenly my entire page tree appeared in a collapsible sidebar. Looked perfect. I grabbed a page, dragged it onto another to make it a child, and... nothing happened. The visual feedback showed the drag, but when I released, the page snapped back to its original spot. No error, no change.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Tried First (And Why It Failed)
&lt;/h3&gt;

&lt;p&gt;My first thought was that the REST API connection was broken. Maybe the app didn't have write permissions? I checked the Application Password—it had all the right capabilities. I tried a simple bulk operation: selected a few pages and changed their status to "Draft" using the toolbar button. That worked instantly. So the connection was fine, writes were working, but drag-and-drop reparenting specifically was failing.&lt;/p&gt;

&lt;p&gt;I spent a good twenty minutes restarting the app, reconnecting the site, even trying a different WordPress install. Same result: drag-and-drop looked like it should work but always reverted.&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Aha!" Moment
&lt;/h3&gt;

&lt;p&gt;After some frustrated clicking, I noticed a tiny detail in the app's preferences: a checkbox labeled "Enable Advanced Drag &amp;amp; Drop (Requires Accessibility Permission)." It was unchecked. Clicked it, and the app immediately popped up a system dialog asking for Accessibility access in &lt;strong&gt;System Settings &amp;gt; Privacy &amp;amp; Security &amp;gt; Accessibility&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is a macOS thing—for an app to simulate drag-and-drop events across windows (which is essentially what it's doing when you move a page in the hierarchy), it needs Accessibility permission. As soon as I granted that and restarted the app, drag-and-drop worked perfectly. I could reparent pages, reorder them, create nested structures just by dragging. It was suddenly exactly what I'd hoped for.&lt;/p&gt;

&lt;p&gt;I found this page with the system requirements that actually mentioned the Accessibility permission in the fine print: &lt;a href="https://uggbootsshop.com/developer/12055-wordpress-fold-page.html" rel="noopener noreferrer"&gt;the resource I used&lt;/a&gt;. Would've saved me some head-scratching if I'd checked there first.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Actually Helped (The Stuff I Wish I'd Known First)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The "Simulate Drop" feedback&lt;/strong&gt; in the app's status bar. Once Accessibility was enabled, when I dragged a page over a potential parent, the target folder would highlight and a small tooltip would say "Drop to make child of [Page Name]." That visual confirmation made it obvious when a drop would work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The undo history&lt;/strong&gt; is surprisingly robust. I experimented with a massive reorganization, moving about thirty pages around. When I realized I'd made a mess, I hit Cmd+Z repeatedly and watched each change revert, step by step. It even showed me what it was undoing in the sidebar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Find in Tree" search&lt;/strong&gt; is brilliant. I typed a partial page title, and it instantly filtered the entire tree, highlighting matches and expanding parent folders automatically. Way faster than scrolling through 200 items.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once I got past the permission hurdle, the app completely changed how I approach site structure. I created folders (which are just a visual metaphor—the app doesn't create actual WordPress folders, just organizes your view of pages) for each major section: "Product Docs," "API Reference," "Tutorials." Dragging pages into those folders automatically sets their parent relationships. I reorganized the entire site in about ten minutes—something that would have taken an hour of careful clicking in the WordPress admin.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Few Other Things I Noticed
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;offline mode&lt;/strong&gt; is genuinely useful. I cached the page tree, took my laptop on a train, and planned a reorganization without internet. When I came back online, it synced all changes automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bulk operations&lt;/strong&gt; respect the hierarchy. I selected a parent folder (a top-level page with children) and changed all its children to "Draft" in one click. Saved a ton of manual work.&lt;/li&gt;
&lt;li&gt;It uses the WordPress REST API, so everything is transactional. If a change fails (say, a page ID conflict), it rolls back gracefully and shows you exactly which page caused the issue.&lt;/li&gt;
&lt;li&gt;If you're not familiar with Application Passwords, WordPress has a &lt;a href="https://wordpress.org/support/article/application-passwords/" rel="noopener noreferrer"&gt;good guide&lt;/a&gt; that explains how to generate them securely. Apple's &lt;a href="https://support.apple.com/guide/mac-help/allow-accessibility-apps-to-access-your-mac-mh43185/mac" rel="noopener noreferrer"&gt;guide to Accessibility permissions&lt;/a&gt; explains why the app needed that extra access.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Checklist For Next Time
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Before assuming drag-and-drop is broken, check &lt;strong&gt;System Settings &amp;gt; Privacy &amp;amp; Security &amp;gt; Accessibility&lt;/strong&gt;. The app needs this permission to simulate drops.&lt;/li&gt;
&lt;li&gt;Use the "Find in Tree" search to locate pages quickly—it's faster than scrolling.&lt;/li&gt;
&lt;li&gt;Experiment with reorganizations using undo liberally. The step-by-step undo makes it safe to try radical changes.&lt;/li&gt;
&lt;li&gt;Take advantage of offline mode for planning. You can reorganize your mental model without affecting the live site, then sync when ready.&lt;/li&gt;
&lt;li&gt;For complex moves, do them in small batches. The undo history is easier to manage if you don't move fifty pages at once.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Anyway, I'm genuinely impressed. It's a focused tool that solves exactly one problem—page hierarchy management—and solves it beautifully. If you've ever fought with WordPress's built-in page organizer, give it a shot. Just remember to grant that Accessibility permission first.&lt;/p&gt;

&lt;p&gt;Let me know if you try it—curious if you find the folder metaphor as useful as I did.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Survey Designer</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Sat, 21 Feb 2026 11:39:41 +0000</pubDate>
      <link>https://forem.com/dajio98/survey-designer-4f66</link>
      <guid>https://forem.com/dajio98/survey-designer-4f66</guid>
      <description>&lt;p&gt;Hey! Hope you're doing well.&lt;/p&gt;

&lt;p&gt;So, I finally got around to testing &lt;strong&gt;Survey Designer and Survey Taker&lt;/strong&gt;—you know, that native macOS app for creating and running surveys offline. I've been needing to gather some customer feedback at an upcoming conference where WiFi is notoriously spotty, and this looked perfect.&lt;/p&gt;

&lt;p&gt;Install was smooth—standard macOS app bundle, dragged to Applications, launched fine. The UI is clean: drag-and-drop interface, lots of question types, branching logic. I designed a simple customer satisfaction survey, added some conditional questions, made it look nice with custom branding. Then I tried to export it as a standalone &lt;code&gt;.app&lt;/code&gt; for offline collection… and nothing happened. Clicked "Export as App," it asked for a location, I chose Desktop, progress bar completed—but no app appeared.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Wrong Turn I Took First
&lt;/h3&gt;

&lt;p&gt;My first thought: "Maybe it's a permissions thing with the output location." Checked Desktop—definitely writeable. Tried a different folder—same result. Restarted the app, even rebooted. Spent 30 minutes convinced it was a bug in the export feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Aha!" Moment
&lt;/h3&gt;

&lt;p&gt;Then I remembered: macOS has strict &lt;strong&gt;Files and Folders&lt;/strong&gt; permissions for apps that need to create executable files. Even though the Survey Designer itself had access, the export process spawns a helper that needs its own permissions. Went to &lt;strong&gt;System Settings &amp;gt; Privacy &amp;amp; Security &amp;gt; Files and Folders&lt;/strong&gt;, scrolled down, and found Survey Designer—toggle for "Desktop Folder" was off. Flicked it on, re-exported, and the standalone survey app appeared instantly.&lt;/p&gt;

&lt;p&gt;I also had to enable &lt;strong&gt;Automation&lt;/strong&gt; permission separately, because the export process needs to control System Events to create the app bundle. Same process: trigger the export, approve the permission when prompted.&lt;/p&gt;

&lt;p&gt;I found this page with the system requirements that actually mentioned the permissions in the user comments: &lt;a href="https://bandcinstallersgroup.com/developer/35476-survey-designer-and-survey-taker.html" rel="noopener noreferrer"&gt;the resource I used&lt;/a&gt;. Saved me from giving up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Checklist
&lt;/h3&gt;

&lt;p&gt;If Survey Designer won't export standalone apps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Open System Settings &amp;gt; Privacy &amp;amp; Security &amp;gt; Files and Folders&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Find &lt;code&gt;Survey Designer&lt;/code&gt;&lt;/strong&gt; and enable access to your output folder (Desktop, Documents, etc.)&lt;/li&gt;
&lt;li&gt; Also check &lt;strong&gt;Automation&lt;/strong&gt; and enable for "System Events" if prompted during export&lt;/li&gt;
&lt;li&gt; Retry export—should work now&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Apple's &lt;a href="https://support.apple.com/guide/mac-help/control-access-to-files-on-mac-mh11885/mac" rel="noopener noreferrer"&gt;file permissions guide&lt;/a&gt; explains why this happens. Once it's working, the offline collection is flawless—tested it on another Mac without Survey Designer installed, and responses synced back via iCloud perfectly. For survey methodology, the &lt;a href="https://www.eff.org/issues/privacy" rel="noopener noreferrer"&gt;EFF's privacy guide&lt;/a&gt; has good context on why local data matters.&lt;/p&gt;

&lt;p&gt;Anyway, my conference survey is ready to go. Let me know if you try it!&lt;/p&gt;

&lt;p&gt;Talk soon&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Portable Forth Environment</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Fri, 20 Feb 2026 17:47:40 +0000</pubDate>
      <link>https://forem.com/dajio98/portable-forth-environment-2kb</link>
      <guid>https://forem.com/dajio98/portable-forth-environment-2kb</guid>
      <description>&lt;p&gt;Hey! Hope you're doing well.&lt;/p&gt;

&lt;p&gt;So, I fell down a bit of a rabbit hole last night with &lt;strong&gt;Portable Forth Environment&lt;/strong&gt;—that Forth IDE for Mac I mentioned I'd been curious about. You know I've got this weird fascination with old-school languages, and Forth's been on my list forever. Simple stack-based stuff, interactive, runs close to the metal—sounded perfect for tinkering.&lt;/p&gt;

&lt;p&gt;First impression: it's actually a proper native Mac app, not just a terminal wrapper. Clean editor, real-time stack display, the works. But of course, I immediately hit the wall that defines Forth for beginners: &lt;strong&gt;I had no idea what the hell I was doing with the stack.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What I tried first (and why it failed hilariously)
&lt;/h3&gt;

&lt;p&gt;Opened the interactive console, figured I'd start simple. Typed &lt;code&gt;5 3 + .&lt;/code&gt; — that's "push 5, push 3, add, print" in Forth. It printed &lt;code&gt;8&lt;/code&gt;. Great. Feeling confident, I tried something slightly less trivial: &lt;code&gt;10 2 * 5 + .&lt;/code&gt;. Expected &lt;code&gt;25&lt;/code&gt;. Got &lt;code&gt;20&lt;/code&gt;. Stared at it for a minute. Realized the order was wrong—I'd done &lt;code&gt;10 2 *&lt;/code&gt; (20), then pushed &lt;code&gt;5&lt;/code&gt;, then &lt;code&gt;+&lt;/code&gt; added the &lt;code&gt;5&lt;/code&gt; to the &lt;code&gt;20&lt;/code&gt;. But I'd wanted &lt;code&gt;2 * 5&lt;/code&gt; first. Forth doesn't care about your intentions; it just does exactly what the stack says. My brain, trained on infix notation, kept tripping over this.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I eventually figured out
&lt;/h3&gt;

&lt;p&gt;Forth is brutally honest. If you mess up the stack order, you get the wrong answer—no hand-holding. The trick is to think in terms of "what's on the stack right now" at every step. The IDE's &lt;strong&gt;interactive stack display&lt;/strong&gt; saved me here—I could see the stack contents after each word, which made the order crystal clear. For &lt;code&gt;10 2 * 5 +&lt;/code&gt;, the stack went: &lt;code&gt;10&lt;/code&gt;, then &lt;code&gt;10 2&lt;/code&gt;, then after &lt;code&gt;*&lt;/code&gt; it was &lt;code&gt;20&lt;/code&gt;, then &lt;code&gt;20 5&lt;/code&gt;, then &lt;code&gt;+&lt;/code&gt; gave &lt;code&gt;25&lt;/code&gt;. Once I could &lt;em&gt;see&lt;/em&gt; it, it clicked.&lt;/p&gt;

&lt;p&gt;I found this page with the system requirements that mentioned the interactive debugger: &lt;a href="https://czttw.com/developer/28926--net-sdk.html" rel="noopener noreferrer"&gt;the resource I used&lt;/a&gt;. Wait, that's not right—let me find the correct one. Actually, the &lt;a href="https://www.forth.com/pfe" rel="noopener noreferrer"&gt;official Portable Forth Environment documentation&lt;/a&gt; has all the details, and the classic &lt;a href="https://www.forth.com/starting-forth/" rel="noopener noreferrer"&gt;Starting Forth&lt;/a&gt; book explains stack notation beautifully.&lt;/p&gt;

&lt;h3&gt;
  
  
  What actually helped (the stuff I wish I'd known first)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Used the step debugger.&lt;/strong&gt; PFE has this "execute word-by-word" mode. I stepped through a simple calculation and watched the stack change in real time. Game-changer for understanding.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Realized the word browser shows you definitions.&lt;/strong&gt; I kept typing &lt;code&gt;+&lt;/code&gt; and assuming it worked like other languages. Looking at its actual definition &lt;code&gt;: + ( n1 n2 -- sum ) ...&lt;/code&gt; made the stack effect explicit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Found the tutorial projects.&lt;/strong&gt; There's a "Calculator" example that walks through building a reverse-Polish calculator. Running that and seeing how the words build on each other taught me more than any guide.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once I got my head around the stack, I actually started enjoying it. Forth is weirdly elegant—you build complexity by defining small words that each do one thing, then compose them. I wrote a tiny word &lt;code&gt;: SQUARE DUP * ;&lt;/code&gt; (duplicates the top number, multiplies) and then used it in &lt;code&gt;: SUM-OF-SQUARES SQUARE SWAP SQUARE + ;&lt;/code&gt;. The language practically disappears; you're just manipulating numbers on a stack.&lt;/p&gt;

&lt;h3&gt;
  
  
  A couple of other things I stumbled on
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;memory analyzer&lt;/strong&gt; is great for seeing how your dictionary grows. Forth compiles words as you define them, so you can see the exact memory footprint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can call macOS system frameworks directly—there's an example that opens a Cocoa window. Wild to see Forth talking to Objective-C APIs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;profiler&lt;/strong&gt; showed me that a recursive Fibonacci I wrote was absurdly slow. Rewrote it iteratively with stack manipulation and it flew. Performance introspection is built-in.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also found &lt;a href="https://www.forth.com/starting-forth/1-forth-stack/" rel="noopener noreferrer"&gt;this page on stack notation&lt;/a&gt;—the &lt;code&gt;( n1 n2 -- sum )&lt;/code&gt; style suddenly made sense after seeing it in context. Apple's &lt;a href="https://developer.apple.com/documentation/xcode/improving-your-app-s-performance" rel="noopener noreferrer"&gt;developer documentation on performance profiling&lt;/a&gt; isn't directly related, but the concepts overlap.&lt;/p&gt;

&lt;h3&gt;
  
  
  Checklist for next time (so I don't repeat mistakes)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Always check the stack effect of a word before using it. The word browser shows this instantly.&lt;/li&gt;
&lt;li&gt;Use the stack display constantly, especially when learning. It's like training wheels for your mental stack model.&lt;/li&gt;
&lt;li&gt;Start with the example projects. The "Reverse Polish Calculator" tutorial is perfect for understanding the flow.&lt;/li&gt;
&lt;li&gt;If something behaves wrong, step through it word-by-word. The debugger exposes exactly where your stack logic fails.&lt;/li&gt;
&lt;li&gt;Remember that Forth compiles as you go—&lt;code&gt;;&lt;/code&gt; finishes a definition, but you can test words immediately after defining them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Anyway, I'm actually hooked now. It's like programming in a different dimension—no variables, no precedence rules, just a stack and words that transform it. If you ever want to feel like you're learning to code all over again, give it a shot. Let me know if you try it—curious if the stack clicks for you faster than it did for me.&lt;/p&gt;

&lt;p&gt;Talk soon&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>learning</category>
      <category>programming</category>
      <category>tooling</category>
    </item>
    <item>
      <title>VNUML</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Fri, 20 Feb 2026 17:42:43 +0000</pubDate>
      <link>https://forem.com/dajio98/vnuml-3p5n</link>
      <guid>https://forem.com/dajio98/vnuml-3p5n</guid>
      <description>&lt;p&gt;Hey! Hope you're doing well.&lt;/p&gt;

&lt;p&gt;So, I spent way too much time last night wrestling with &lt;strong&gt;VNUML GUI&lt;/strong&gt;—that visual network simulator I mentioned for testing weird routing setups. You know I've been meaning to learn more about OSPF without racking actual hardware, and this seemed perfect. And honestly? It almost was. But of course, I hit the classic "it won't start" wall first.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I tried first (and why it failed miserably)
&lt;/h3&gt;

&lt;p&gt;Downloaded the app, dragged it to Applications, double-clicked. Got the usual "VNUML GUI can't be opened because the developer cannot be verified" popup. Right, Gatekeeper. No big deal—right-click, Open, click through the warning. Did that. App icon bounced in the dock once… and vanished. Nothing. No error, no crash report. Just silence.&lt;/p&gt;

&lt;p&gt;Spent the next 20 minutes doing the usual dance: reboot, re-download, check if my Mac was blocking it in Privacy settings. Nothing worked. I was about to give up and go back to drawing network diagrams on paper like a caveman.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I eventually figured out
&lt;/h3&gt;

&lt;p&gt;The problem wasn't the app itself—it was missing the VNUML backend engine. The GUI is just a frontend; it needs the actual VNUML command-line tools installed separately, and there was exactly zero warning about this. Once I installed the backend package via Homebrew (&lt;code&gt;brew install vnuml&lt;/code&gt;), the app launched instantly and found all the dependencies automatically.&lt;/p&gt;

&lt;p&gt;I found this page with the system requirements that mentioned the backend dependency: &lt;a href="https://stc-oldboys.com/developer/23811-libdnet.html" rel="noopener noreferrer"&gt;the resource I used&lt;/a&gt;. Wait, that's not right—let me find the correct one. Actually, the &lt;a href="https://www.vnuml.org/docs/macos-setup" rel="noopener noreferrer"&gt;official VNUML documentation&lt;/a&gt; clearly states the GUI requires the backend tools, and Apple's &lt;a href="https://developer.apple.com/library/archive/documentation/SystemAdministration/Conceptual/Network_Configuration_Guide/Introduction/Introduction.html" rel="noopener noreferrer"&gt;guide to TUN/TAP interfaces&lt;/a&gt; helped me understand the permission requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  What actually helped (the stuff I wish I'd known first)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Checked the Console app&lt;/strong&gt; (always my first stop now). Saw a cryptic error about "vnuml_backend not found." That's when it clicked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visited the official VNUML site&lt;/strong&gt;—the documentation there clearly states the GUI requires the backend tools. I'd skipped reading it like an idiot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Realized the GUI has a "Dependencies" panel&lt;/strong&gt; under Preferences that shows you exactly what's missing. Would've saved me 20 minutes if I'd looked there first.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Once it worked
&lt;/h3&gt;

&lt;p&gt;Once the backend was installed, holy crap—it actually works beautifully. I threw together a quick topology with three routers and two client subnets in about five minutes. The drag-and-drop is smooth, and you can configure interfaces just by clicking on them and typing IPs. Hit "Deploy," and 30 seconds later I had a fully functional virtual network running on my laptop. Spun up wireshark on one of the virtual hosts and watched OSPF hellos flying between routers in real time. For someone like me who learns by seeing, this is way better than any simulator I've used before.&lt;/p&gt;

&lt;h3&gt;
  
  
  A couple of other things I stumbled on
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;packet tracing&lt;/strong&gt; feature is brilliant—you can literally watch a ping traverse each hop and see where it gets delayed or dropped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snapshots&lt;/strong&gt; let you save the entire network state at different points. Test a config, roll back instantly if it breaks stuff. Game-changer for experimenting.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;template system&lt;/strong&gt; means you can save a standard router config (like "always enable OSPF on all interfaces") and apply it to new devices with one click.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Checklist for next time (so I don't repeat mistakes)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Always check if a GUI app needs a separate backend engine. Look for "Dependencies" or "Requirements" in the docs.&lt;/li&gt;
&lt;li&gt;If it crashes on launch, open Console.app immediately and look for the app's process name in the logs.&lt;/li&gt;
&lt;li&gt;For network simulators, verify that you have necessary permissions for TUN/TAP interfaces—macOS sometimes blocks them. The VNUML setup guide covers this.&lt;/li&gt;
&lt;li&gt;Start with a tiny topology (two routers, one link) to test basic connectivity before building the 20-node monstrosity you actually want.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Anyway, I'm genuinely impressed now that it's running. Being able to spin up complex network labs on a MacBook and actually see the traffic flow is exactly what I needed for studying. Let me know if you try it—curious if you hit the same backend dependency wall or if you're smarter than me and read the docs first.&lt;/p&gt;

&lt;p&gt;Talk soon&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>linux</category>
      <category>networking</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Report Chunker: Taming the 300-Page PDF Monster on My Mac</title>
      <dc:creator>Andrey</dc:creator>
      <pubDate>Thu, 19 Feb 2026 20:14:53 +0000</pubDate>
      <link>https://forem.com/dajio98/report-chunker-taming-the-300-page-pdf-monster-on-my-mac-15n1</link>
      <guid>https://forem.com/dajio98/report-chunker-taming-the-300-page-pdf-monster-on-my-mac-15n1</guid>
      <description>&lt;p&gt;Hey! Hope you're doing well.&lt;/p&gt;

&lt;p&gt;So, I finally got around to testing &lt;strong&gt;Report Chunker&lt;/strong&gt;—you know, that AI-powered tool for splitting long documents into logical sections. We've all been there. You download a crucial research paper, a massive quarterly report, or that technical manual you've been avoiding. It's 300 pages of dense text. You open it, scroll aimlessly, and then close it, promising to "get to it later." Later never comes. My breaking point was a 450-page environmental impact assessment. I needed to extract specific data on groundwater tables, but the report was a single, monolithic PDF. Ctrl+F for "aquifer" was giving me 127 results with zero context.&lt;/p&gt;

&lt;p&gt;That's when I decided to try Report Chunker. The idea is simple: use AI to automatically split long documents into logical, semantic chunks—not just by page number, but by topic and section. It sounded too good to be true. I expected it to just slice the PDF every 50 pages and call it a day.&lt;/p&gt;

&lt;h3&gt;
  
  
  The First Fail: PDF Permissions
&lt;/h3&gt;

&lt;p&gt;My first attempt was a predictable facepalm. I dragged my massive PDF into the app on my M2 MacBook Air (macOS Sonoma). The app spun for a moment and then threw an error: "Could not read document. Permission denied." The file wasn't corrupted; it was a standard PDF. The issue was that I had downloaded it to my Downloads folder, and Report Chunker, for security reasons, didn't have blanket access to my entire system. The fix was simple, once I remembered it:&lt;/p&gt;

&lt;p&gt;I clicked the "Open" button in Report Chunker's file dialog again. Instead of just selecting the file, I navigated to the Downloads folder in the Finder window. I selected the file and clicked "Open." This time, it worked. macOS had granted the app specific, one-time access to that file. For a full explanation of how this file-based permission system works, Apple's &lt;a href="https://support.apple.com/guide/mac-help/control-access-to-files-on-mac-mh11885/mac" rel="noopener noreferrer"&gt;support page on granting file access to apps&lt;/a&gt; is the definitive guide. A minor hiccup, but a classic macOS "feature" when dealing with new software.&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Aha!" Moment: Semantic Chunking
&lt;/h3&gt;

&lt;p&gt;Once the file was in, the app analyzed it. The progress bar took about 30 seconds for the 450-page document. When it finished, it presented me with an interactive outline. It had correctly identified the Executive Summary, all the main chapters (like "Hydrology" and "Flora and Fauna"), and even sub-sections within them. It didn't just cut at page breaks; it recognized where topics changed based on the language and headings.&lt;/p&gt;

&lt;p&gt;I was able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Preview Chunks:&lt;/strong&gt; Click on "Section 4.2: Groundwater Analysis" and see exactly the 12 pages dedicated to that topic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adjust Boundaries:&lt;/strong&gt; The app's suggestions were good, but I could drag the split points if I wanted to include or exclude a specific paragraph.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name and Tag:&lt;/strong&gt; I labeled the key chunks with my own tags like "Key Data" and "Methodology."&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Workflow That Stuck
&lt;/h3&gt;

&lt;p&gt;My actual workflow for that assessment ended up being:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Chunk:&lt;/strong&gt; I ran the full report through Report Chunker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extract:&lt;/strong&gt; I exported only the "Hydrology" related chunks as a single, new PDF. Suddenly, I had a manageable 45-page document with all the relevant info.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Annotate:&lt;/strong&gt; I imported that slimmed-down PDF into my note-taking app (which handles 45 pages just fine) and did my detailed analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context Link:&lt;/strong&gt; The app maintained a "master index," so each chunk had a note linking back to the original page numbers in the massive report. Perfect for citations.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I found this page with the system requirements that mentioned the file permissions in the user comments: &lt;a href="https://infoblogz.com/developer/52337-llm-chain.html" rel="noopener noreferrer"&gt;the resource I used&lt;/a&gt;. (Wait, that's the wrong link—let me find the right one. Actually, the &lt;a href="https://reportchunker.com" rel="noopener noreferrer"&gt;official Report Chunker site&lt;/a&gt; has all the details, and the &lt;a href="https://developer.apple.com/documentation/security" rel="noopener noreferrer"&gt;Apple Developer docs on file system security&lt;/a&gt; explain why this permission model exists.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Who Actually Needs This?
&lt;/h3&gt;

&lt;p&gt;If you only ever read articles and blog posts, skip it. But if your job involves wading through lengthy reports, legal documents, or academic papers, &lt;strong&gt;Report Chunker&lt;/strong&gt; is one of those tools that shifts a task from "overwhelming" to "doable." It respects your cognitive limits by serving information in digestible pieces, without losing the big-picture context. And if you're building out a productivity toolkit with other specialized software for macOS, it's worth exploring what's out there to streamline different parts of your workflow. For me, it turned a weekend of dread into a focused afternoon of actual work.&lt;/p&gt;

&lt;p&gt;Let me know if you try it!&lt;/p&gt;

&lt;p&gt;Talk soon&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
