{"id":61,"date":"2018-04-29T13:34:30","date_gmt":"2018-04-29T13:34:30","guid":{"rendered":"http:\/\/www.bullcrane.com\/angular\/?p=61"},"modified":"2018-04-29T18:35:52","modified_gmt":"2018-04-29T18:35:52","slug":"some-technical-design-decisions","status":"publish","type":"post","link":"http:\/\/www.bullcrane.com\/angular\/2018\/04\/29\/some-technical-design-decisions\/","title":{"rendered":"Some technical design decisions"},"content":{"rendered":"<h6>Not a Progressive Web App<\/h6>\n<p>Shufflizer has no <a href=\"https:\/\/en.wikipedia.org\/wiki\/Progressive_Web_Apps\"><em>Progressive Web App<\/em><\/a> service workers.\u00a0 There is no off-line scenario.\u00a0 Bad Internet connection?\u00a0 It&#8217;s best if you come back later.<\/p>\n<h6>No lazy loading<\/h6>\n<p><em>Lazy loading <\/em>is the idea of incrementally obtaining only the data necessary to render the viewport.<\/p>\n<p>The user is going to reorder the entire playlist.\u00a0 So I need the entire playlist.\u00a0 I don&#8217;t lazy load it.\u00a0 This is what Spotify&#8217;s native Windows app does when you click on a playlist.\u00a0 I can tell by the way it performs.\u00a0 It loads the whole thing.<\/p>\n<p>I am not downloading songs.\u00a0 The playlist is just the track listing, not the audio itself.\u00a0 Even for a few thousand songs this is not a challenging amount of data for today&#8217;s hardware &#8211; even a phone.<\/p>\n<p>I do get all of the album art.\u00a0 I did try lazy loading these images but I did not like the results.\u00a0 It made the user experience more sluggish and strange.\u00a0 I prefer the user wait a couple more seconds up front to get a smooth, normal\u00a0 scrolling experience.<\/p>\n<h6>No server-side code<\/h6>\n<p>Shufflizer is pure Angular\/TypeScript.\u00a0 MEAN stack?\u00a0 Nope.\u00a0 It&#8217;s just the A.<\/p>\n<p>Having no server-side code makes it easy to comply with this rule in the Spotify Developer Terms of Service:<\/p>\n<p><a href=\"https:\/\/beta.developer.spotify.com\/terms\/#v\"><em>If a Spotify user logs out of your SDA or becomes inactive, you will delete any Spotify Content related to that user stored on your servers.<\/em><\/a><\/p>\n<p>My only server is my web server, and it is totally stock.<\/p>\n<p>There are some trade-offs for this simplicity.\u00a0 I will talk about them in a future post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Not a Progressive Web App Shufflizer has no Progressive Web App service workers.\u00a0 There is no off-line scenario.\u00a0 Bad Internet connection?\u00a0 It&#8217;s best if you come back later. No lazy loading Lazy loading is the idea of incrementally obtaining only the data necessary to render the viewport. The user is going to reorder the entire &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.bullcrane.com\/angular\/2018\/04\/29\/some-technical-design-decisions\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Some technical design decisions&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts\/61"}],"collection":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/comments?post=61"}],"version-history":[{"count":5,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts\/61\/revisions"}],"predecessor-version":[{"id":80,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts\/61\/revisions\/80"}],"wp:attachment":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/media?parent=61"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/categories?post=61"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/tags?post=61"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}