{"id":19216,"date":"2026-04-23T15:07:21","date_gmt":"2026-04-23T14:07:21","guid":{"rendered":"https:\/\/www.20i.com\/blog\/?p=19216"},"modified":"2026-04-30T12:56:09","modified_gmt":"2026-04-30T11:56:09","slug":"link-round-up-010","status":"publish","type":"post","link":"https:\/\/www.20i.com\/blog\/link-round-up-010\/","title":{"rendered":"Link Round Up (010)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Welcome to Link Round Up, where we share the tools, projects and ideas that grab our attention&nbsp;each month.<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In this edition&nbsp;we\u2019ve&nbsp;got&nbsp;an ambitious all-in-one knowledge&nbsp;project,&nbsp;tools that reshape how you interact with the web and even your own prompts&nbsp;\u2013 and much more!<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With no&nbsp;shortage of productivity tools, it takes something special to stand out.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/affine.pro\/\" target=\"_blank\" rel=\"noreferrer noopener\">AFFiNE<\/a>&nbsp;is&nbsp;an open-source,&nbsp;self-hostable&nbsp;workspace app that&nbsp;blends documents, whiteboards,&nbsp;databases,&nbsp;kanban boards&nbsp;and collaboration tools into one local-first platform.&nbsp;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a860751e7c99&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a860751e7c99\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/AFFiNE.png\" alt=\"Screenshot of the AFFiNE homepage\" class=\"wp-image-19266\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Think of it as a hybrid between&nbsp;<a href=\"https:\/\/www.notion.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Notion<\/a>,&nbsp;<a href=\"https:\/\/miro.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Miro<\/a>&nbsp;and&nbsp;<a href=\"https:\/\/obsidian.md\/\" target=\"_blank\" rel=\"noreferrer noopener\">Obsidian<\/a>&nbsp;with an emphasis on&nbsp;privacy.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It supports&nbsp;a wide range of document formats&nbsp;and&nbsp;<a href=\"https:\/\/docs.affine.pro\/self-host-affine\" target=\"_blank\" rel=\"noreferrer noopener\">is completely free<\/a>&nbsp;for up to 10 members&nbsp;per&nbsp;workspace with, 30 days of backups&nbsp;and 100GB of&nbsp;additional&nbsp;cloud storage.&nbsp;Definitely worth&nbsp;checking out if you are part of a small team!&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/bambulab.com\/en-gb\/download\/studio\" target=\"_blank\" rel=\"noreferrer noopener\">BambuStudio<\/a>&nbsp;is a&nbsp;completely free&nbsp;slicer&nbsp;software&nbsp;built for&nbsp;3D&nbsp;printers.&nbsp;Take&nbsp;detailed&nbsp;STEP files and&nbsp;output multi-plate layout&nbsp;3MF-based projects.&nbsp;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a860751e8c17&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a860751e8c17\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1117\" height=\"884\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Bambu-Studio.png\" alt=\"Screenshot of the BambuStudio UI on a Mac-like display\" class=\"wp-image-19267\" srcset=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Bambu-Studio.png 1117w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Bambu-Studio-300x237.png 300w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Bambu-Studio-768x608.png 768w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Bambu-Studio-400x317.png 400w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Bambu-Studio-800x633.png 800w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Bambu-Studio-832x658.png 832w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Bambu-Studio-150x119.png 150w\" sizes=\"auto, (max-width: 1117px) 100vw, 1117px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It\u2019s&nbsp;fast,&nbsp;polished&nbsp;and surprisingly approachable, offering advanced controls without overwhelming newer users. For anyone in the 3D printing space,&nbsp;it\u2019s&nbsp;a reminder of how much UX still matters in traditionally technical tools.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Even if&nbsp;you\u2019re&nbsp;not using Bambu hardware,&nbsp;it\u2019s&nbsp;worth exploring just to see how smooth the workflow can be!&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If&nbsp;you\u2019ve&nbsp;ever opened YouTube&nbsp;with the intention of checking out&nbsp;one video&nbsp;only to&nbsp;emerge&nbsp;40 minutes later&nbsp;from a Shorts&nbsp;rabbit hole,&nbsp;wondering what happened,&nbsp;then&nbsp;<a href=\"https:\/\/unhook.app\/\" target=\"_blank\" rel=\"noreferrer noopener\">Unhook<\/a>&nbsp;is the solution for you.&nbsp;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a860751e9d01&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a860751e9d01\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Unhook.png\" alt=\"Screenshot of the Unhook YouTube homepage\" class=\"wp-image-19268\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This browser extension works with&nbsp;<a href=\"https:\/\/chrome.google.com\/webstore\/detail\/unhook-remove-youtube-rec\/khncfooichmfjbepaaaebmommgaepoid\" target=\"_blank\" rel=\"noreferrer noopener\">Chrome<\/a>,&nbsp;<a href=\"https:\/\/addons.mozilla.org\/firefox\/addon\/youtube-recommended-videos\/\" target=\"_blank\" rel=\"noreferrer noopener\">Firefox<\/a>&nbsp;and&nbsp;<a href=\"https:\/\/microsoftedge.microsoft.com\/addons\/detail\/unhook-remove-youtube-r\/hebpjnnclppdnfghdnmhgdljmjpfhggk\" target=\"_blank\" rel=\"noreferrer noopener\">Edge<\/a>&nbsp;to strip&nbsp;away recommendations, comments,&nbsp;sidebars&nbsp;and other attention-grabbing&nbsp;traps&nbsp;&#8211;&nbsp;leaving just the video you&nbsp;want&nbsp;to watch.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unhook\u2019s&nbsp;less algorithm, more intention&nbsp;philosophy&nbsp;has&nbsp;earned&nbsp;5000+ positive reviews and over 1 million active users!&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Spending time on YouTube&nbsp;isn\u2019t&nbsp;all bad \u2013&nbsp;it\u2019s&nbsp;where we first found out about&nbsp;<a href=\"https:\/\/www.projectnomad.us\/\" target=\"_blank\" rel=\"noreferrer noopener\">Project NOMAD<\/a>.&nbsp;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a860751eab8f&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a860751eab8f\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Project-NOMAD.png\" alt=\"Screenshot of the Project NOMAD homepage\" class=\"wp-image-19269\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This&nbsp;offshoot&nbsp;from&nbsp;Crosstalk Solutions&nbsp;explores a compelling concept: what if your knowledge stack&nbsp;didn\u2019t&nbsp;depend on the internet at all?&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Part philosophy, part tooling&nbsp;and&nbsp;centred around preserving access to information regardless of connectivity, Project NOMAD\u2019s aim is in the name: Node for Offline Media, Archives and Data.&nbsp;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a860751ebf4b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a860751ebf4b\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"556\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Project-NOMAD-dashboard.png\" alt=\"Screenshot of the Project NOMAD Command Center\" class=\"wp-image-19270\" srcset=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Project-NOMAD-dashboard.png 1200w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Project-NOMAD-dashboard-300x139.png 300w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Project-NOMAD-dashboard-768x356.png 768w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Project-NOMAD-dashboard-400x185.png 400w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Project-NOMAD-dashboard-800x371.png 800w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Project-NOMAD-dashboard-832x385.png 832w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Project-NOMAD-dashboard-150x70.png 150w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If&nbsp;you\u2019re&nbsp;familiar&nbsp;with&nbsp;<a href=\"https:\/\/internet-in-a-box.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Internet in a Box<\/a>&nbsp;you\u2019re&nbsp;halfway there.&nbsp;All of Wikipedia, plus many more curated&nbsp;knowledge collections,&nbsp;all of&nbsp;<a href=\"https:\/\/www.openstreetmap.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">OpenStreetMap<\/a>&nbsp;and&nbsp;all of&nbsp;<a href=\"https:\/\/www.khanacademy.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Khan Academy<\/a>&nbsp;is a formidable foundation.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Running open-source, free,&nbsp;local AI models&nbsp;on&nbsp;your own&nbsp;hardware is the icing on this multilayered&nbsp;tech cake, and sets it apart for tech enthusiasts, families in areas with poor&nbsp;internet connectivity&nbsp;or anyone living off-grid.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/dejan.ai\/tools\/reverse-prompter\/\" target=\"_blank\" rel=\"noreferrer noopener\">Reverse Prompter<\/a>&nbsp;flips the script on AI use.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of using LLMs by entering a prompt to get a response,&nbsp;DEJAN\u2019s&nbsp;clever&nbsp;tool takes AI&nbsp;responses&nbsp;and works to discern what prompt was used to produce it.&nbsp;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a860751ed150&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a860751ed150\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/DJEAN-Reverse-Prompter.png\" alt=\"Screenshot of the Reverse Prompting tool homepage\" class=\"wp-image-19271\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It\u2019s&nbsp;a fascinating&nbsp;resource&nbsp;to refine your own prompts, and a useful way to better understand how&nbsp;to&nbsp;shape results&nbsp;\u2013 making Reverse Prompter&nbsp;valuable&nbsp;for anyone who works with LLMs.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For developers who just want to test APIs quickly and get on with their day,&nbsp;<a href=\"https:\/\/www.usebruno.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Bruno<\/a>&nbsp;is&nbsp;a compelling proposition.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It\u2019s&nbsp;an open-source API client built around a local-first approach, storing collections as plain text files on your&nbsp;hardware&nbsp;rather than locking them into the cloud.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">API requests can sit alongside your codebase, be version controlled in Git and shared using workflows developers already know.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bruno\u2019s comparison with&nbsp;<a href=\"https:\/\/www.postman.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Postman<\/a>&nbsp;leans into exactly that&nbsp;positioning:&nbsp;lightweight, Git-friendly&nbsp;and&nbsp;refreshingly&nbsp;free from forced accounts&nbsp;and&nbsp;unnecessary friction.&nbsp;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a860751ef2b9&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a860751ef2b9\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Bruno.webp\" alt=\"Screenshot of the Bruno homepage\" class=\"wp-image-19272\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Roman&nbsp;Nurik\u2019s&nbsp;<a href=\"https:\/\/icon.kitchen\/\" target=\"_blank\" rel=\"noreferrer noopener\">IconKitchen<\/a>&nbsp;is&nbsp;a delightfully focused tool for generating app icons across platforms &#8211;&nbsp;<em>the<\/em>&nbsp;place to let your design skills cook!&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Craft custom icons for Android, iOS, web, macOS,&nbsp;watchOS, tvOS&nbsp;as well as&nbsp;Android TV banners and Play Store banners (which are in beta at the time of publishing).&nbsp;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a860751f0562&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a860751f0562\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/IconKitchen.png\" alt=\"Screenshot of the IconKitchen UI\" class=\"wp-image-19273\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It\u2019s&nbsp;the&nbsp;perfect&nbsp;tool&nbsp;for developers&nbsp;and UI&nbsp;designers&nbsp;who care about polish&nbsp;and&nbsp;want their&nbsp;apps to look exactly right for their users.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We\u2019ve&nbsp;shared UI libraries in past&nbsp;editions of our Link Round-Up series, but Cult UI is a bit special.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.cult-ui.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cult UI<\/a>&nbsp;builds on the popular&nbsp;shadcn\/ui&nbsp;ecosystem with a curated collection of animated components, blocks and templates designed to drop into React and Next.js projects.&nbsp;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a860751f2861&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a860751f2861\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/Cult-UI.png\" alt=\"Screenshot of the Cult UI homepage\" class=\"wp-image-19274\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Rather than feeling generic or overly corporate, the emphasis is on polished motion, strong visual taste and components that look like someone genuinely cared&nbsp;when putting the assets together.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Have&nbsp;you come across&nbsp;anything&nbsp;interesting,&nbsp;useful&nbsp;or unusual&nbsp;that caught your attention recently?<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"#comments\">Leave a comment below<\/a> and let us know what\u00a0we\u2019re\u00a0missing!<\/strong>\u00a0<\/p>\n\n\n<div class='code-block code-block-2' style='margin: 8px 0; clear: both;'>\n\n<div class='ai-rotate ai-unprocessed ai-rotate-2-48397630' data-shares='WzUwLDEwMF0=' style='position: relative;'>\n<div class=\"ai-rotate-option\" data-index=\"1\" data-name=\"UmVzZWxsZXIgSG9zdGluZw==\" data-code=\"Cjxocj4KPGJyIC8+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LjIwaS5jb20vcmVzZWxsZXItaG9zdGluZyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL3d3dy4yMGkuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDMvQmxvZy1BZC1SZXNlbGxlci0xMjAweDYyNS0xLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSJVbmxpbWl0ZWQgUmVzZWxsZXIgSG9zdGluZyI+PC9hPgoK\">\n<\/div>\n<div class=\"ai-rotate-option\" data-index=\"2\" data-name=\"MjBpIFlvdVR1YmU=\" data-code=\"Cjxocj4KPGJyIC8+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL0AyMGlob3N0aW5nP3N1Yl9jb25maXJtYXRpb249MSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL3d3dy4yMGkuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDUvMjBpLVlvdVR1YmUtMTIwMHg2MjUtMS5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iMjBpIFlvdVR1YmUiPjwvYT4=\">\n<\/div>\n<\/div>\n<script>if (typeof ai_js_code == 'boolean') {var ai_block_div = document.querySelector ('.ai-rotate-2-48397630'); ai_process_rotation (ai_block_div); ai_block_div.classList.remove ('ai-rotate-2-48397630');};<\/script>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"Welcome to Link Round Up, where we share the tools, projects and ideas that grab our attention&nbsp;each month.&nbsp;&hellip;","protected":false},"author":36,"featured_media":19243,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"csco_singular_sidebar":"","csco_page_header_type":"","csco_page_load_nextpost":"","footnotes":""},"categories":[46,51],"tags":[],"class_list":["post-19216","post","type-post","status-publish","format-standard","has-post-thumbnail","category-20i","category-technology","cs-entry"],"featured_image_src":"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/04\/link-010-no-title.png","author_info":{"display_name":"Joseph Simpson","author_link":"https:\/\/www.20i.com\/blog\/author\/joseph20i\/"},"_links":{"self":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts\/19216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/comments?post=19216"}],"version-history":[{"count":5,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts\/19216\/revisions"}],"predecessor-version":[{"id":19276,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts\/19216\/revisions\/19276"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/media\/19243"}],"wp:attachment":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/media?parent=19216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/categories?post=19216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/tags?post=19216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}