{"version":"https://jsonfeed.org/version/1","title":"Aaron Gustafson: Content tagged devices","description":"The latest 20 posts and links tagged devices.","home_page_url":"https://www.aaron-gustafson.com","feed_url":"https://www.aaron-gustafson.com/feeds/devices.json","author":{"name":"Aaron Gustafson","url":"https://www.aaron-gustafson.com"},"icon":"https://www.aaron-gustafson.com/i/og-logo.png","favicon":"https://www.aaron-gustafson.com/favicon.png","expired":false,"items":[{"id":"https://www.aaron-gustafson.com/publications/articles/bringing-sanity-and-order-to-device-testing/","title":"📄 Bringing Sanity and Order to Device Testing","content_html":"<p>Device testing is time consuming, but you can make it easier on yourself.</p>\n","url":"http://www.sitepoint.com/bringing-sanity-order-device-testing/","tags":["devices","web development"],"date_published":"2015-06-16T00:00:00Z"},{"id":"https://www.aaron-gustafson.com/notebook/bringing-sanity-and-order-to-device-testing/","title":"✍🏻 Bringing Sanity and Order to Device Testing","summary":"<p>It seems like every other day the public is granted some new means of accessing the web. Some days it’s <a href=\"http://www.engadget.com/2015/04/29/microsoft-edge/\">a new browser</a>. Others it’s <a href=\"http://www.pcadvisor.co.uk/reviews/mobile-phone/3504276/yotaphone-2-review-uk-dual-screen-smartphone/\">a new smartphone</a>. Or <a href=\"http://www.engadget.com/products/microsoft/surface/3/\">a tablet</a>. Or <a href=\"http://the-digital-reader.com/2014/10/22/voyage-vs-paperwhite-comparison-review-web-browser/\">an e-reader</a>. Or <a href=\"https://www.nintendo.com/3ds/internetbrowser/specs/\">a video game console</a>. Or <a href=\"http://www.phonearena.com/news/Surf-the-Internet-from-your-Android-Wear-smartwatch-Now-possible-via-this-new-app_id58580\">a smartwatch</a>. Or <a href=\"https://html5test.com/compare/browser/samsungsmarttv-2013.html\">a TV</a>. Or <a href=\"http://www.techradar.com/us/reviews/wearables/microsoft-hololens-1281834/review\">a heads-up display</a>. Or <a href=\"http://www.popularmechanics.com/cars/a13191/the-future-of-car-connectivity-is-a-real-web-browser-in-the-dash-17416796/\">a car</a>. Or <a href=\"http://www.lgblog.lt/2009/10/28/zvilgsnis-atgal-pirmasis-pasaulyje-saldytuvas-su-internetu-lg-internet-digital-dios/\">a refrigerator</a>.</p>","content_html":"<p>It seems like every other day the public is granted some new means of accessing the web. Some days it’s <a href=\"http://www.engadget.com/2015/04/29/microsoft-edge/\">a new browser</a>. Others it’s <a href=\"http://www.pcadvisor.co.uk/reviews/mobile-phone/3504276/yotaphone-2-review-uk-dual-screen-smartphone/\">a new smartphone</a>. Or <a href=\"http://www.engadget.com/products/microsoft/surface/3/\">a tablet</a>. Or <a href=\"http://the-digital-reader.com/2014/10/22/voyage-vs-paperwhite-comparison-review-web-browser/\">an e-reader</a>. Or <a href=\"https://www.nintendo.com/3ds/internetbrowser/specs/\">a video game console</a>. Or <a href=\"http://www.phonearena.com/news/Surf-the-Internet-from-your-Android-Wear-smartwatch-Now-possible-via-this-new-app_id58580\">a smartwatch</a>. Or <a href=\"https://html5test.com/compare/browser/samsungsmarttv-2013.html\">a TV</a>. Or <a href=\"http://www.techradar.com/us/reviews/wearables/microsoft-hololens-1281834/review\">a heads-up display</a>. Or <a href=\"http://www.popularmechanics.com/cars/a13191/the-future-of-car-connectivity-is-a-real-web-browser-in-the-dash-17416796/\">a car</a>. Or <a href=\"http://www.lgblog.lt/2009/10/28/zvilgsnis-atgal-pirmasis-pasaulyje-saldytuvas-su-internetu-lg-internet-digital-dios/\">a refrigerator</a>.</p>\n<p>I worked on one project where the client provided me with a spreadsheet detailing 1,400 different user agents that accessed the login screen for the m-dot site. In two days!</p>\n<p>As further evidence, consider <a href=\"http://blog.jasonsamuels.net/post/21633531278/analytics-confirm-the-need-for-adaptive-web-design\">the enlightening details of this post from Jason Samuels</a> of the National Council on Family relations, a non-profit organization:</p>\n<ul>\n<li>In 2008, Internet Explorer dominated as the browser for 93.5% of their visitors. By 2014, that percentage had fallen to 19.7%, with Chrome bringing in the lion’s share of the traffic (37%). Firefox narrowly beat out IE with a 20% share of users.</li>\n<li>In 2008, visits from “mobile” devices accounted for only about 0.1% of their traffic. In 2014, that number had skyrocketed to 14.4%.</li>\n<li>In 2008, they detected 71 different screen resolutions, which is already a lot to consider. By 2014, however, they were seeing 1,000 unique screen resolutions each and every quarter (with over 200 of those recording 10+ visits per quarter).</li>\n</ul>\n<p>That last stat blows my mind every time I read it. You can’t design for 200 different screens, let alone 1,000. It’s a fools errand. And don’t even think of trying to test on that many devices.</p>\n<p>And yet, here we are designing websites that can (and will) go anywhere. We need to thoroughly test because we can’t make any assumptions about the browsers and devices being used to access our content.</p>\n<p>Testing can be tedious, time consuming, and costly. Surely there’s a way to make it easier. There sure is: Instead of getting hung up on creating one experience that needs to be nearly identical on every browser, we can be smarter about how we build things and treat experience as a continuum.</p>\n<p>We can build websites that are both nimble enough to work on low powered devices over slow networks <em>and</em> smart enough to take advantage of advanced features and sensors when opportunity knocks.</p>\n<p><em>Wha?! We can have our cake and eat it too</em>? Yes. Yes we can.</p>\n<h2 id=\"start-on-solid-footing\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#start-on-solid-footing\" aria-hidden=\"true\">#</a> Start on Solid Footing</h2>\n<p>When dealing with the insane proliferation of web-enabled devices and the great unknown of where our websites will go, it pays to take a step back and focus on what’s important. We need to ask ourselves two simple questions:</p>\n<ol>\n<li>What is the purpose of this page, this form, this interface?</li>\n<li>What is the simplest way to realize that purpose?</li>\n</ol>\n<p>Then we need to build that <em>first</em>. Typically we’re talking text, some basic HTML, actual links to other pages, and forms that submit to a back-end of some sort. This is our minimum viable product and it will work anywhere.</p>\n<p>Then we can look for opportunities to enhance the experience, all while keeping that functional core at the center of the experience.</p>\n<p>We can use CSS to add visual hierarchy to the page, provide some visual interest, and adjust the layout to create a good reading experience on a wide range of screen sizes. We should start from the narrowest screen size we can imagine and <a href=\"https://twitter.com/brad_frost/status/191977076000161793\">let the content guide our breakpoint decisions</a>.</p>\n<p>We’ll use JavaScript to give real-time feedback to our users. <a href=\"http://domscripting.com/presentations/xtech2006/\">We’ll hijack forms and links</a> to <a href=\"http://www.filamentgroup.com/lab/ajax-includes-modular-content.html\">lazy load additional content</a> or otherwise avoid full-page refreshes. Heck, we can even take over the entire page and <a href=\"http://nerds.airbnb.com/isomorphic-javascript-future-web-apps/\">convert it into a single page app</a>.</p>\n<p>But we should never sacrifice the functional core.</p>\n<p>This approach to designing for the web is called <a href=\"http://alistapart.com/article/understandingprogressiveenhancement\">progressive enhancement</a> and it’s the number one tool for dealing with the one-two punch of older browsers and device proliferation.</p>\n<h2 id=\"be-conservative-in-your-delivery\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#be-conservative-in-your-delivery\" aria-hidden=\"true\">#</a> Be Conservative in Your Delivery</h2>\n<p>What makes progressive enhancement so helpful when it comes to dealing with this swirling mass of devices and browsers is that the core experience will <em>always be</em> available. There is nothing precluding our users from accessing it, even on a crappy WAP browser or a text-based browser like Lynx or even some <a href=\"http://www.theubi.com/\">no so far-future talking computer</a> that only “sees” the web as text.</p>\n<p>In order to ensure we don’t accidentally deliver advanced features to less capable browsers like these, we just need to be smart about how we load stuff like CSS and JavaScript.</p>\n<p>Some basic CSS—think typography, color, etc.—will be usable by just about anyone, so we can put all that stuff in one CSS file (e.g., <code>basic.css</code>) and include it with a standard <code>link</code>. Then we can tuck all of our layout rules and other advanced CSS into a separate CSS file (e.g., <code>advanced.css</code>) that we link to with an associated media query.</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>link</span> <span class=\"token attr-name\">rel</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>stylesheet<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>default.css<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">media</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>all<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>link</span> <span class=\"token attr-name\">rel</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>stylesheet<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>advanced.css<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">media</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>only screen<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span></code></pre>\n<p>Any <a href=\"http://www.slideshare.net/bryanrieger/rethinking-the-mobile-web-by-yiibu/106\">browsers that don’t understand media queries will ignore the second CSS file entirely</a> and receive only the linear, mobile view. Easy peasy, and IE8 gets the mobile layout (a baseline level of support that is not likely to cause you any testing headaches).</p>\n<p>You can even take things a step further and use <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/@supports\">the <code>@supports</code> block</a> within <code>advanced.css</code> to limit certain rule sets to only the browsers that support specific CSS features.</p>\n<p>Of course, CSS support issues are nothing compared to JavaScript, so sometimes it’s best not to deliver certain bits of JavaScript-based functionality to browsers that can’t handle it. This is where <a href=\"http://www.quirksmode.org/js/support.html\">feature (and object) detection</a> becomes incredibly useful:</p>\n<pre class=\"language-js\" tabindex=\"0\"><code class=\"language-js\"><span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token string\">\"querySelector\"</span> <span class=\"token keyword\">in</span> document<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// We can use querySelector!</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>You can also use <a href=\"http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\">inverted conditional comments</a> to prohibit older versions of IE from getting JavaScript in the first place (which means you don’t even need to worry about debugging JavaScript there). Here’s an example that hides <code>main.js</code> from IE8 and below, but makes it available to IE9 on up and to every other non-IE browser.</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>!--[if</span> <span class=\"token attr-name\">gt</span> <span class=\"token attr-name\">IE</span> <span class=\"token attr-name\">8]</span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>!--</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>main.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token comment\">&lt;!--&lt;![endif]--></span></code></pre>\n<p>By being conservative in what we deliver to browsers we <a href=\"http://bradfrost.com/blog/mobile/support-vs-optimization/\">ensure the greatest level of support, but can still optimize for more advanced ones</a>. This makes testing so much easier because we know older browsers will be okay with the basics and we aren’t trying to use JavaScript features unless we know they’re available.</p>\n<h2 id=\"test%2C-test%2C-test\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#test%2C-test%2C-test\" aria-hidden=\"true\">#</a> Test, Test, Test</h2>\n<p>Progressive enhancement helps us avoid a lot of rendering and scripting issues before we even get to the testing phase of a project, but eventually we do need to sit down and run our projects through their paces.</p>\n<p>In order to keep testing manageable during development, it’s best to test in one browser we know to have good web standards support. It will provide a basic gut-check for our work. Once we are pretty confident things are working as they should be, we can begin more thorough testing on a variety of browsers and devices.</p>\n<p>I personally keep several versions of each major browser on my laptop at any given time. I work on a Mac, so I typically have a few versions of Chrome, Firefox, and Opera lying around. You can get older versions of these browsers here:</p>\n<ul>\n<li><a href=\"http://commondatastorage.googleapis.com/chromium-browser-continuous/index.html\">Chromium Archive</a></li>\n<li><a href=\"http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/\">Firefox Archive</a></li>\n<li><a href=\"http://www.opera.com/download//?custom=yes\">Opera Archive</a></li>\n</ul>\n<p>It’s near-impossible to get older versions of Safari running on modern versions of OS X, so I typically just have the latest version locally.</p>\n<p>For testing on Windows versions of said browsers, I typically have anywhere from 3-5 virtual machines running various Windows versions with their associated browser version and (typically) a copy of Chrome, Firefox, and Opera for good measure. The MS Edge Dev site offers <a href=\"https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/\">free Windows VMs for download</a>. If you’re just looking to get a gut-check in the latest and greatest from Microsoft, there’s also <a href=\"https://remote.modern.ie/\">the Remote.IE service</a>, which allows you to connect to a virtualized version of the browser.</p>\n<p>If you develop on Windows or Linux, you’ll need access to a Mac or you’ll have to rely on virtualization to test on that platform. I’ll discuss virtualization in a moment.</p>\n<p>Once you’ve thoroughly tested in the various desktop browsers, it’s time to take the deep dive into the world of devices. If you’re unsure where to begin, take a look at your analytics, but take them with a grain of salt. Analytics can lead you to make false assumptions. For example, if you see a low percentage of Blackberry users, could that be because your site just doesn’t work well in Blackberry so they don’t stick around (or come back)? Beware the self-fulfilling prophecy.</p>\n<p>If you have the budget, by all means pick up some devices to have on hand for testing. You can use tools like <a href=\"https://creative.adobe.com/products/inspect\">Adobe’s Edge Inspect</a>, <a href=\"http://vanamco.com/ghostlab/\">Vanamco’s Ghostlab</a>, or <a href=\"https://github.com/viljamis/Remote-Preview\">Viljami Salminen’s Remote Preview</a> (or a combination of all of the above) to synchronize browsing on a handful of devices. Some of these tools also allow for remote inspection of the device to debug CSS and JavaScript. <a href=\"http://people.apache.org/~pmuellr/weinre-docs/latest/\">Weinre</a> (which Adobe Edge Inspect uses) and <a href=\"http://vorlonjs.com/\">Vorlon.js</a> also provide remote inspection functionality.</p>\n<p>If you are lucky enough to have one nearby, you should stop by your local <a href=\"http://opendevicelab.com/\">open device lab (ODL)</a> to run your tests. ODLs are free community resources, typically offered by a web design studio or an individual who happens to be sitting on a ton of devices. Someone at the ODL should be able to help you pick out devices to test on and introduce you to the testing tools they have available in the lab.</p>\n<p>If you don’t have an ODL nearby, you can also do some guerrilla-style testing in your local mobile phone or electronics store. Just make sure they have real devices… you won’t get far on the fake plastic ones.</p>\n<p>If none of these are options for you, there’s always virtualization. You can download and install <a href=\"http://www.mobilexweb.com/emulators\">emulators for a variety of mobile browsers and devices</a>. Additionally, services like <a href=\"https://www.browserstack.com/\">Browserstack</a> and <a href=\"http://crossbrowsertesting.com/\">CrossBrowserTesting</a> offer access to hundreds of virtual desktops and devices for a nominal fee.</p>\n<p>Virtualization will never give you the same experience as holding a real device in your hand. The performance is rarely the same and you don’t get any sort of feel for how the device responds to your input. I once stumbled on an Android 2.3 bug wherein generated content was being re-generated and re-inserted every time the device was rotated. I doubt I would have discovered that using an emulator. That said, emulators can help you get a rough idea of whether your interface works or not.</p>\n<p>Regardless of the means by which you procure your testing devices, try to cover a good cross-section. Pick some low-end ones, a couple older high-end devices, and handful of the latest flagships, and a wide variety of screen sizes and resolutions. Make sure you have good coverage in terms of operating systems too—the latest iOS and Android versions are a given, but make sure you have a Windows device or two, a few Blackberry options, and some older Android and iOS versions in the mix. Then throw in <a href=\"http://www.geekwire.com/2013/microsoft-kin-resurfaces-25-daily-deals-site/\">an oddball</a> <a href=\"http://www.windowscentral.com/have-39-spare-then-pick-odd-sylvania-7-netbook-windows-ce\">or two</a> to see if your interfaces hold up.</p>\n<p>It’s important to bear in mind that we will never be able to give each user on each device exactly the same experience. We need to be okay with that—experience is a continuum. As long as our users can accomplish what they need to on our sites, they will be well-served.</p>\n<h2 id=\"bonus-points%3A-embrace-patterns\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#bonus-points%3A-embrace-patterns\" aria-hidden=\"true\">#</a> Bonus Points: Embrace Patterns</h2>\n<p>If we really want to make things easy on ourselves (and our team), we should consider building a <a href=\"http://alistapart.com/blog/post/getting-started-with-pattern-libraries\">pattern library</a> before we build a single page of our website.</p>\n<p>Breaking our interfaces down into discrete, repeatable patterns (e.g., a label and form control, a tabbed interface, etc.) lets us look at each in isolation and test it that way too. Testing in isolation is far easier than trying to debug a page with a lot of moving parts.</p>\n<p>Gathering our patterns into a live, web-based pattern library allows anyone on our team to collect the patterns they need to build a given interface as easily as they’d assemble a plate at a smörgåsbord. And if we really want to streamline the building and testing process, we can even <a href=\"http://ianfeather.co.uk/a-maintainable-style-guide/\">make the patterns importable into the live site</a> so everything stays in sync.</p>\n<h2 id=\"don%E2%80%99t-fear-the-zombie-apocalypse\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#don%E2%80%99t-fear-the-zombie-apocalypse\" aria-hidden=\"true\">#</a> Don’t Fear the Zombie Apocalypse</h2>\n<p>With the constant onslaught of new devices, form factors, and considerations, it’s tempting to throw up our hands and find another line of work. The pace of advancement is so brisk, it’s just hard to keep up, let alone feel like we’re on top of where things are headed.</p>\n<p>Thankfully, however, all is not lost. By taking a step back and focusing on what matters, embracing experience as a continuum, and being deliberate in how (and when) we deliver certain features and functionality to browsers, we’ll head most issues off at the pass.</p>\n<p>This relieves some of the pressure (and frustration) from the testing process and frees us up to test on a wider variety of devices and browsers, which means we’ll be able to provide a solid experience for more users, no matter what marvel of technological wizardry they happen to be using at the time.</p>\n<p>Everybody wins.</p>\n","url":"https://www.aaron-gustafson.com/notebook/bringing-sanity-and-order-to-device-testing/","tags":["web design","mobile","devices","progressive enhancement","web development"],"date_published":"2015-06-05T13:56:03Z"},{"id":"https://www.aaron-gustafson.com/notebook/an-onslaught-of-low-cost-smartphones/","title":"✍🏻 An Onslaught of Low-cost Smartphones","summary":"<p>It seems every week we are seeing more and more low-cost devices being launched in an effort to connect the unconnected. For instance, this past week saw the announcement of <a href=\"http://www.theverge.com/2015/1/14/7544107/microsoft-lumia-435-532-launch-specs-price-release-date\">two new entries in the Microsoft Lumia line, the 435 and the 532</a>, and the announcement of <a href=\"http://arstechnica.com/gadgets/2015/01/samsung-finally-puts-tizen-on-a-smartphone-launches-the-z1-in-india/\">Samsung’s first Tizen phone, the Z1</a>.</p>","content_html":"<p>It seems every week we are seeing more and more low-cost devices being launched in an effort to connect the unconnected. For instance, this past week saw the announcement of <a href=\"http://www.theverge.com/2015/1/14/7544107/microsoft-lumia-435-532-launch-specs-price-release-date\">two new entries in the Microsoft Lumia line, the 435 and the 532</a>, and the announcement of <a href=\"http://arstechnica.com/gadgets/2015/01/samsung-finally-puts-tizen-on-a-smartphone-launches-the-z1-in-india/\">Samsung’s first Tizen phone, the Z1</a>.</p>\n<p>The two Lumia devices are the cheapest Windows Phone offerings to date: The Lumia 435 is €69 (about US$80) and the Lumia 532 is just slightly more expensive at €79 (about US$94). By comparison, the Lumia 535 was the previous low-cost Windows Phone winner at US$135. And Samsung’s Z1, which is aimed at the Indian market, runs a mere Rs 5,700 (roughly US$92).</p>\n<p>Now if you’ve read this far, you are probably wondering why this matters. Well, spec-wise, many of these lower-end devices are far from what we are used to. All of these devices are running a resolution of 800×480. And their processing speeds are slower than the device you likely have in your pocket. But they are all far cheaper too. And remember that people in China and India have <a href=\"#fig-2015-01-15-01\">far less disposible income than we do</a>.</p>\n<figure id=\"fig-2015-01-15-01\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/05-lg.jpg\" alt=\"A bar chart comparing the average monthly incomes of people living in the U.S., Canada, China, and India.\"></p>\n</figure>\n<p>If you only earned US$295 a month, a US$799 smartphone would likely be out of the question.</p>\n<p>As Web designers and developers, we need to expose ourselves to the Web as others see it. This is why we need to view our sites and applications on lower-end devices and over lower-speed—2G, 3G, etc.—connections. Only by testing our wares can we truly ensure our content and services are available and accessible by anyone, anywhere, on any device. You know, <a href=\"http://webfoundation.org/about/vision/\">the vision for the Web</a>.</p>\n<p>Of course you probably don’t have the budget to purchase a bunch of devices, no matter how cheap they are. So how do you test on them? <a href=\"http://opendevicelab.com/\">Visit a local Open Device Lab</a> like <a href=\"http://chadevicelab.org\">the one we have here in Chattanooga</a>. Or if you don’t have one near you, consider getting together with some colleagues and <a href=\"http://lab-up.org/\">starting an ODL in your area</a>.</p>\n","url":"https://www.aaron-gustafson.com/notebook/an-onslaught-of-low-cost-smartphones/","tags":["mobile","web design","devices"],"date_published":"2015-01-15T16:58:11Z"},{"id":"https://www.aaron-gustafson.com/notebook/webos-is-back/","title":"✍🏻 webOS is Back","summary":"<p>You may not remember it, but Palm’s groundbreaking—yes, I said groundbreaking—operating system, <a href=\"https://en.wikipedia.org/wiki/WebOS\">webOS</a>, has been resuscitated yet again. This time by LG.</p>","content_html":"<p>You may not remember it, but Palm’s groundbreaking—yes, I said groundbreaking—operating system, <a href=\"https://en.wikipedia.org/wiki/WebOS\">webOS</a>, has been resuscitated yet again. This time by LG.</p>\n<p>For those of you who may have missed out on webOS in the past, here’s a primer: webOS was developed by Palm and debuted on the Palm Pre in 2009. It was the first “HTML5-based” operating system. Yes you read that right: the OS was built on HTML, CSS, and JavaScript. In 2009. Six. Years. Ago.</p>\n<p>Applications for webOS were written using the front-end Web stack, with the JavaScript application logic tied into the device via the Mojo—and later Enyo—JavaScript application framework. Though novel at the time, this concept has since taken off in the intervening years. <a href=\"http://msdn.microsoft.com/en-us/library/windows/apps/dn631758.aspx\">Windows</a>, <a href=\"https://marketplace.firefox.com/developers/\">Firefox OS</a>, and <a href=\"https://www.google.com/search?q=build%20native%20apps%20with%20html5\">countless “unified” app development platforms</a> have embraced the front-end Web stack as a means of building software.</p>\n<p>webOS also supported multitasking, which was not common back then. And to make it easy to manage, webOS introduced the brilliant card metaphor for viewing and switching between running applications. Apple, of course, ripped that idea off for iOS 7. If you dig that feature on your iPhone you have Palm to thank.</p>\n<p>Sadly, Palm usage was on the decline when webOS debuted so operating system never really took off. Eventually Palm was engulfed by HP, which launched the ill-fated HP TouchPad. It too failed to gather any steam and we thought webOS was dead (despite many proclamations to the contrary from well-meaning folks at HP).</p>\n<p>In 2013 <a href=\"http://www.theverge.com/2013/2/25/4027814/hp-emerges-as-big-winner-in-webos-sale\">HP announced it was selling parts of webOS to LG</a> for use in smart TVs. It was a glimmer of hope for the beleaguered OS. And now, not only do we have webOS based <a href=\"http://www.lg.com/uk/smarttv/webos\">smart TVs</a>, but <a href=\"http://gizmodo.com/lgs-new-smart-watch-is-powered-by-webos-1678191522\">LG’s new smart watches are sporting the OS as well</a>. And LG has not ruled out bringing it back for a phone either.</p>\n<p>I’m happy to see webOS sticking around. It may have been the laughing stock in the app development community back in the day, but I’ve always had a soft spot in my heart for it.</p>\n","url":"https://www.aaron-gustafson.com/notebook/webos-is-back/","tags":["mobile","devices","web design"],"date_published":"2015-01-08T15:17:09Z"}]}