{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"blog_post","url":"https://ejfox.com/blog/projects/MorningRadio","json_url":"https://ejfox.com/blog/projects/MorningRadio.json","generator":"ejfox.com/json-twin@1","data":{"cacheVersion":"2026-05-13-gear-cards","html":"<p class=\"\">Designed to be a healthy \"first screen\" in the morning. News summaries, updates, and enough information about the latest events that you don't feel the need to endlessly doomscroll.</p>\n<p class=\"\">The goal was to repurpose the tik-tok style endless vertical scroll but instead fill it with interesting and useful websites, tools, and news articles (populated through my Pinboard bookmarks)</p>\n<figure role=\"figure\" aria-label=\"Home — an audio digest up top, then &#x22;Top Picks&#x22; and a recent feed pulled from my Pinboard bookmarks\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/morning-radio/home.png\" alt=\"Home — an audio digest up top, then &#x22;Top Picks&#x22; and a recent feed pulled from my Pinboard bookmarks\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/projects/morning-radio/home.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/projects/morning-radio/home.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/morning-radio/home.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/projects/morning-radio/home.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Home — an audio digest up top, then &#x22;Top Picks&#x22; and a recent feed pulled from my Pinboard bookmarks\" width=\"1206\" height=\"2622\" style=\"--splay-rot:1.38deg;\" data-dimensions=\"1206×2622\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Home — an audio digest up top, then \"Top Picks\" and a recent feed pulled from my Pinboard bookmarks</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"The morning audio briefing — a generated &#x22;Morning Radio&#x22; segment with scrubber and skip controls\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/morning-radio/player.png\" alt=\"The morning audio briefing — a generated &#x22;Morning Radio&#x22; segment with scrubber and skip controls\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/projects/morning-radio/player.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/projects/morning-radio/player.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/morning-radio/player.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/projects/morning-radio/player.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"The morning audio briefing — a generated &#x22;Morning Radio&#x22; segment with scrubber and skip controls\" width=\"1206\" height=\"2622\" style=\"--splay-rot:-1.67deg;\" data-dimensions=\"1206×2622\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">The morning audio briefing — a generated \"Morning Radio\" segment with scrubber and skip controls</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"A single card in the vertical scroll — full article with source, tags, and summary\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/morning-radio/reader.png\" alt=\"A single card in the vertical scroll — full article with source, tags, and summary\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/projects/morning-radio/reader.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/projects/morning-radio/reader.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/morning-radio/reader.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/projects/morning-radio/reader.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"A single card in the vertical scroll — full article with source, tags, and summary\" width=\"1206\" height=\"2622\" style=\"--splay-rot:0.8deg;\" data-dimensions=\"1206×2622\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">A single card in the vertical scroll — full article with source, tags, and summary</figcaption>\n</figure>\n<p class=\"\">I even experimented (unsuccessfully) with creating a home screen widget.</p>\n<figure role=\"figure\" aria-label=\"Home screen widget experiment\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1749668160/Screenshot_2025-06-11_at_2.55.49_PM.png\" alt=\"Home screen widget experiment\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1749668160/Screenshot_2025-06-11_at_2.55.49_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1749668160/Screenshot_2025-06-11_at_2.55.49_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1749668160/Screenshot_2025-06-11_at_2.55.49_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1749668160/Screenshot_2025-06-11_at_2.55.49_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Home screen widget experiment\" width=\"1136\" height=\"2168\" style=\"--splay-rot:-0.6deg;\" data-dimensions=\"1136×2168\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Home screen widget experiment</figcaption>\n</figure>","title":"MorningRadio","metadata":{"title":"MorningRadio","date":"2025-08-10T04:00:00.000Z","modified":"2025-08-13T15:26:19.000Z","url":"https://github.com/ejfox/MorningRadio","tech":["Swift","iOS","Audio Streaming","Mobile UX"],"state":"doing","aiInvolvement":"ai-assisted","tags":["ios","health"],"words":123,"images":4,"imageDetails":{"total":4,"cloudinary":4,"withDimensions":0},"links":4,"codeBlocks":0,"headers":{},"toc":[],"type":"post"}},"_links":{"self":"https://ejfox.com/blog/projects/MorningRadio.json","html":"https://ejfox.com/blog/projects/MorningRadio","index":"/blog.json"}}