[{"data":1,"prerenderedAt":94},["ShallowReactive",2],{"i-lucide:menu":3,"i-lucide:arrow-up-right":8,"i-lucide:moon":10,"i-lucide:sun":12,"i-lucide:rss":14,"i-simple-icons:github":16,"i-simple-icons:linkedin":18,"post-\u002F2011\u002Fwebapp-idea-nowplaying-radio":21,"surround-\u002F2011\u002Fwebapp-idea-nowplaying-radio":81,"i-lucide:arrow-left":90,"i-lucide:arrow-right":92},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M7 7h10v10M7 17L17 7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"4\"\u002F>\u003Cpath d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16\"\u002F>\u003Ccircle cx=\"5\" cy=\"19\" r=\"1\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":17},"\u003Cpath fill=\"currentColor\" d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":19,"hidden":20},"\u003Cpath fill=\"currentColor\" d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037c-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85c3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.06 2.06 0 0 1-2.063-2.065a2.064 2.064 0 1 1 2.063 2.065m1.782 13.019H3.555V9h3.564zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0z\"\u002F>",true,{"id":22,"title":23,"body":24,"category":65,"comments":66,"date":67,"description":30,"excerpt":66,"extension":68,"image":66,"meta":69,"navigation":20,"path":70,"readingTime":71,"seo":72,"stem":73,"subtitle":66,"tags":74,"wordCount":79,"__hash__":80},"posts\u002F2011\u002Fwebapp-idea-nowplaying-radio.md","Webapp idea: #nowplaying radio",{"type":25,"value":26,"toc":61},"minimark",[27,31,34,37,40,43,48,51,54],[28,29,30],"p",{},"An oppurtunity to learn Ruby on Rails. Use a Twitter library to fetch tweets with the hashtag #nowplaying.",[28,32,33],{},"Present the user with an interface with exactly one button: Play",[28,35,36],{},"Parse Twitters results and fetch songs from youtube (embedded player, ajax\u002Fiframe)",[28,38,39],{},"User clicks play, the #nowplaying radio begins.",[28,41,42],{},"Ideas for later: add features such as result narrowing, sharing etc.",[44,45,47],"h1",{"id":46},"update","Update:",[28,49,50],{},"I actually coded this during the day and got some insight into Rails. The coding part was actually quite easy, taking into account that I'd never met Ruby before, but the real obstacle was deployment.",[28,52,53],{},"Heroku is awesome, really, but the beginner - I - failed miserably with dependencies (twitter and youtube gems). Long story short, 2 hours of messing with git, Gemfile and bundle and I gave up. The app works, but only in localhost. Maybe I'll get help later.",[28,55,56],{},[57,58],"img",{"alt":59,"src":60},"Screenshot of the now playing app","\u002Fcontent\u002F2011\u002F02\u002Fnowplaying.png",{"title":62,"searchDepth":63,"depth":63,"links":64},"",2,[],"Projects",null,"2011-02-14","md",{},"\u002F2011\u002Fwebapp-idea-nowplaying-radio","less than 1 minute",{"title":23,"description":30},"2011\u002Fwebapp-idea-nowplaying-radio",[75,76,77,78],"twitter","programming","Ruby","Ruby on Rails",147,"sCdDxTLYT9vL9Tw7por4H7HtfHjgvmic15gcDtDDyW4",[82,86],{"title":83,"path":84,"stem":85,"children":-1},"Remote control \u002F self-destruct attempt #2","\u002F2011\u002Fremote-control-self-destruct-attempt-2","2011\u002Fremote-control-self-destruct-attempt-2",{"title":87,"path":88,"stem":89,"children":-1},"e-Riik, bs-WiFi","\u002F2011\u002Fe-riik-bs-wifi","2011\u002Fe-riik-bs-wifi",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":91},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m12 19l-7-7l7-7m7 7H5\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":93},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",1790886933760]