Add test data
This commit is contained in:
parent
9f5ce5d762
commit
dcbf928eda
6 changed files with 3781 additions and 0 deletions
482
tests/data/android-authority.xml
Normal file
482
tests/data/android-authority.xml
Normal file
|
@ -0,0 +1,482 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
|
||||||
|
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
||||||
|
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||||
|
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
|
||||||
|
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
|
||||||
|
xmlns:media="https://search.yahoo.com/mrss/"
|
||||||
|
xmlns:webfeeds="http://webfeeds.org/rss/1.0" >
|
||||||
|
|
||||||
|
<channel>
|
||||||
|
<title>Android Authority</title>
|
||||||
|
<atom:link href="https://www.androidauthority.com/feed/" rel="self" type="application/rss+xml" />
|
||||||
|
<link>https://www.androidauthority.com</link>
|
||||||
|
<description>Android News, Reviews, How To</description>
|
||||||
|
<lastBuildDate>Wed, 07 Mar 2018 01:32:40 +0000</lastBuildDate>
|
||||||
|
<language>en-US</language>
|
||||||
|
<sy:updatePeriod>hourly</sy:updatePeriod>
|
||||||
|
<sy:updateFrequency>1</sy:updateFrequency>
|
||||||
|
<generator>https://wordpress.org/?v=4.9.4</generator>
|
||||||
|
<webfeeds:accentColor>54cc39</webfeeds:accentColor>
|
||||||
|
<webfeeds:related layout="card" target="browser" />
|
||||||
|
<webfeeds:analytics id="UA-20765087-1" engine="GoogleAnalytics" />
|
||||||
|
<webfeeds:icon>https://www.androidauthority.com/wp-content/uploads/feed/aa-mascot-192x192.png?v=1.0.1</webfeeds:icon>
|
||||||
|
<webfeeds:logo>https://www.androidauthority.com/wp-content/uploads/feed/aa_icon_feed.svg?v=1.0.1</webfeeds:logo>
|
||||||
|
<webfeeds:cover image="https://www.androidauthority.com/wp-content/uploads/feed/aboutus_top_imagev2.jpg?v=1.0.1" /> <item>
|
||||||
|
<title>Light Phone 2 is an e-ink phone for people who hate smartphones</title>
|
||||||
|
<link>https://www.androidauthority.com/light-phone-2-smartphone-people-hate-smartphones-843598/</link>
|
||||||
|
<comments>https://www.androidauthority.com/light-phone-2-smartphone-people-hate-smartphones-843598/#respond</comments>
|
||||||
|
<pubDate>Wed, 07 Mar 2018 01:32:40 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[C. Scott Brown]]></dc:creator>
|
||||||
|
<category><![CDATA[News]]></category>
|
||||||
|
<category><![CDATA[Indiegogo]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=843598</guid>
|
||||||
|
<description><![CDATA[If you feel too connected to your smartphone, the Light Phone 2 is an elegant way to unplug...at least partially. It's funding on Indiegogo now.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-300x199.jpg" medium="image" /> <content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-843600" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-840x557.jpg" alt="light phone 2" width="840" height="557" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-300x200.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-768x509.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-16x11.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-32x21.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-28x19.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-56x37.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-64x42.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/rg2sdsybgcoqqhk2499g-302x200.jpg 302w" sizes="(max-width: 840px) 100vw, 840px" /><span class="source_link_wrap"> <a href="https://www.indiegogo.com/projects/light-phone-2-smartphone-design#/" rel="nofollow">Indiegogo</a> </span></p>
|
||||||
|
<div class="aa_tldr_text"></p>
|
||||||
|
<ul>
|
||||||
|
<li>The Light Phone 2 is an e-ink 4G phone with a few basic apps. When you are feeling too burdened by your smartphone, it can be a temporary replacement.</li>
|
||||||
|
<li>Striking in its minimalist design, the Light Phone 2 makes calls, sends messages, sets alarms, and that’s it.</li>
|
||||||
|
<li>The phone is currently crowdfunding at Indiegogo for $250 and a list price of $400.</li>
|
||||||
|
</ul>
|
||||||
|
<p></div><hr>
|
||||||
|
<p>Are you feeling too connected? Do you find yourself heading to bed to get some sleep, but instead <a href="https://www.androidauthority.com/blue-light-821900/">scrolling through your phone for hours</a>? Do you feel distracted by your phone in your pocket when you’re out at social engagements as if it’s yearning to be opened and toyed with instead of letting you engage in human interaction? Do you just, you know, <a href="https://www.androidauthority.com/nokia-q3-2017-results-827333/">hate smartphones</a>?</p>
|
||||||
|
<p>If you answered yes to any of the questions above, you are the target audience for <a href="https://www.indiegogo.com/projects/light-phone-2-smartphone-design#/" target="_blank" rel="noopener">Light Phone 2</a>, a crowdfunding project that’s currently raising a ton of money on <a href="https://www.androidauthority.com/billion-dollar-company-crowdfunding-804008/">Indiegogo</a>.</p>
|
||||||
|
<p>The first Light Phone was created by Joe Hollier, an artist, and Kaiwei Tang, a product designer. The two met at an NYC-based <a href="https://www.androidauthority.com/google-march-security-patch-pixel-nexus-843419/">Google</a> incubator in 2014. While trying to think up the “<a href="https://www.androidauthority.com/ideation-for-android-developers-700054/">next big app</a>,” the two realized that the last thing they wanted to do was ram another app down peoples’ throats. Instead, they tried to make something that did the opposite, something that pulled people away from their phones and back to real life.</p>
|
||||||
|
<p><img class="aligncenter size-large wp-image-843599" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn-840x422.jpg" alt="light phone 2" width="840" height="422" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn-300x151.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn-768x386.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn-16x8.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn-32x16.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn-28x14.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn-56x28.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn-64x32.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/aqmzzougveizsst6zcfn-398x200.jpg 398w" sizes="(max-width: 840px) 100vw, 840px" /><span class="source_link_wrap"> <a href="https://www.indiegogo.com/projects/light-phone-2-smartphone-design#/" rel="nofollow">Indiegogo</a> </span></p>
|
||||||
|
<p>The two invented the Light Phone, an e-ink device that looks like a small <a href="https://www.androidauthority.com/google-hires-man-behind-amazon-kindle-719828/">Kindle</a>. The Light Phone did one thing, which was make phone calls. The duo produced 10,000 Light Phones and now are crowdfunding its successor, the Light Phone 2.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/billion-dollar-company-crowdfunding-804008/" title="It’s not ok for billion-dollar companies to crowdfund"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2017/09/anker-nebula.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/09/anker-nebula.jpg" alt="related article"></div><h4 class="ra-title">It’s not ok for billion-dollar companies to crowdfund</h4><div class="ra-excerpt">
|
||||||
|
|
||||||
|
Crowdfunding has traditionally been a platform where the little guys go to get a leg up. Creators get the chance to share their ideas, and we’re able to do something positive if we like what we …</div></div></div></div>
|
||||||
|
<p>This new iteration of the Light Phone will do a bit more, although what it will exactly do is not yet set in stone. The duo knows that they want the phone to make calls, send text messages, and set alarms, but other features may make it into the final product. For example, some sort of <a href="https://www.androidauthority.com/best-travel-apps-for-android-2-247868/">navigation app</a> would be helpful, or maybe a <a href="https://www.androidauthority.com/best-weather-apps-and-weather-widgets-for-android-256942/">weather service app</a>.</p>
|
||||||
|
<p>But there are some things that will absolutely not be on the phone, like all social media apps, advertising, email, and news feeds.</p>
|
||||||
|
<p>The Light Phone 2 is not designed to completely replace your smartphone. It is instead supposed to offer you the choice between being fully connected and being partially connected. This partial connection is what Light Phone refers to as “going light.” If you’re <a href="https://www.androidauthority.com/iphone-users-likely-negatively-judge-android-836280/">going out on a date</a>, for example, you don’t need all the features of your smartphone potentially interrupting your evening. So you leave your primary phone at home and grab your Light Phone instead.</p>
|
||||||
|
<div class="video-container">
|
||||||
|
<div class="youtube-player add-active" data-id="CJvWm6VAjUE" data-related="0" data-control="1" data-info="1" data-fullscreen="1">
|
||||||
|
<div class="youtube-video-overlay"></div>
|
||||||
|
<p><img src="//i.ytimg.com/vi/CJvWm6VAjUE/hqdefault.jpg"><span class="youtube-play"><i class="youtube-play-icon"></i></span></div>
|
||||||
|
</div>
|
||||||
|
<p>There are some major hurdles the company faces with its product though. The first hurdle is the fact that most carriers do not allow you to duplicate SIM cards, so that means your Light Phone 2 and your regular phone would not be able to have the same number at the same time. A simple solution to this is to hot swap your SIM from one phone to the other, but that may not be practical for some people.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper left"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/differentiate-bezel-less-phones-830856/" title="5 ways phones can still be unique in the bezel-less age"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2017/11/OnePlus-5T-vs-LG-G6-1-of-12.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/11/OnePlus-5T-vs-LG-G6-1-of-12.jpg" alt="related article"></div><h4 class="ra-title">5 ways phones can still be unique in the bezel-less age</h4><div class="ra-excerpt">
|
||||||
|
|
||||||
|
Bezel-less was probably the defining term of the 2017 smartphone industry, one I take no pride in helping to spread. The look was everywhere as manufacturers raced to offer consumers extra screen real estate, and I'm …</div></div></div></div>
|
||||||
|
<p>Another issue is the price. The featured perk for the Indiegogo campaign is $250 for a Light Phone 2, which is a discounted price. The MSRP for the phone when it officially hits the market will be $400, which is considerably expensive for what is essentially a really fancy <a href="https://www.androidauthority.com/bill-would-make-prepaid-phone-owners-register-682373/">burner phone</a>. It also seems a tad overpriced when you consider a Kindle, which is roughly the same concept but without a SIM card, <a href="http://tyvm.ly/TQW85" target="_blank" rel="noopener">costs $100</a>.</p>
|
||||||
|
<p>However, some consideration should be given to the design of the Light Phone 2, which does look incredibly sleek and beautiful. It indeed would turn some heads if you took it out of your pocket in a group of friends.</p>
|
||||||
|
<p>The specs of the Light Phone 2 are below but obviously could change depending on how well the Indiegogo campaign performs. As of the publishing of this article, the campaign is nearly 300% funded at about $750,000, with 19 days left to go.</p>
|
||||||
|
|
||||||
|
<table id="tablepress-1136" class="tablepress tablepress-id-1136 tablepress-responsive-phone">
|
||||||
|
<thead>
|
||||||
|
<tr class="row-1 odd">
|
||||||
|
<th class="column-1"> </th><th class="column-2">Light Phone 2 Specs</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody class="row-hover">
|
||||||
|
<tr class="row-2 even">
|
||||||
|
<td class="column-1">Dimensions:</td><td class="column-2">91mm x 55mm x 6.5-7.5mm thick</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-3 odd">
|
||||||
|
<td class="column-1">OS:</td><td class="column-2">LightOS (modified Android)</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-4 even">
|
||||||
|
<td class="column-1">Connectivity:</td><td class="column-2">4G LTE, Wifi, GPS</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-5 odd">
|
||||||
|
<td class="column-1">Memory: </td><td class="column-2">1 GB DDR3 RAM / 8GB eMMC</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-6 even">
|
||||||
|
<td class="column-1">Sensor: </td><td class="column-2">Proximity</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-7 odd">
|
||||||
|
<td class="column-1">Battery:</td><td class="column-2">500mAh, 5 days standby; A few hours talk time.</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-8 even">
|
||||||
|
<td class="column-1">Color:</td><td class="column-2">Black/White</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-9 odd">
|
||||||
|
<td class="column-1">Material: </td><td class="column-2">Anodized Aluminum</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-10 even">
|
||||||
|
<td class="column-1">Weight:</td><td class="column-2">80g (estimation)</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-11 odd">
|
||||||
|
<td class="column-1">Processor:</td><td class="column-2">Qualcomm MSM8909W</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-12 even">
|
||||||
|
<td class="column-1">Display:</td><td class="column-2">E-Ink</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-13 odd">
|
||||||
|
<td class="column-1">SIM Card:</td><td class="column-2">Nano SIM</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-14 even">
|
||||||
|
<td class="column-1">Connector:</td><td class="column-2">USB-C</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-15 odd">
|
||||||
|
<td class="column-1">Language:</td><td class="column-2">English</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-16 even">
|
||||||
|
<td class="column-1">Other:</td><td class="column-2">Vibrator, Loud Speaker, Headset jack</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<!-- #tablepress-1136 from cache -->
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/light-phone-2-smartphone-people-hate-smartphones-843598/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>0</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>With public shares on the horizon, Spotify starts to crack down on piracy</title>
|
||||||
|
<link>https://www.androidauthority.com/public-shares-horizon-spotify-starts-crack-piracy-843550/</link>
|
||||||
|
<comments>https://www.androidauthority.com/public-shares-horizon-spotify-starts-crack-piracy-843550/#respond</comments>
|
||||||
|
<pubDate>Wed, 07 Mar 2018 00:59:46 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[C. Scott Brown]]></dc:creator>
|
||||||
|
<category><![CDATA[News]]></category>
|
||||||
|
<category><![CDATA[Spotify]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=843550</guid>
|
||||||
|
<description><![CDATA[If you are using a modified Spotify app to get premium features for free, the company is on to you and starting to crack down before going public.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-300x200.jpg" medium="image" /> <content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-749293" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-840x560.jpg" alt="" width="840" height="560" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-840x560.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-300x200.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-768x512.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-16x11.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-32x21.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-28x19.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-56x37.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-64x43.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-1000x667.jpg 1000w, https://cdn57.androidauthority.net/wp-content/uploads/2017/02/prince-spotify-1200x800.jpg 1200w" sizes="(max-width: 840px) 100vw, 840px" /></p>
|
||||||
|
<div class="aa_tldr_text"></p>
|
||||||
|
<ul>
|
||||||
|
<li>Spotify users are receiving emails from the company about “abnormal activity” and encouraging them to download the official Spotify app.</li>
|
||||||
|
<li>This is a clear indication that Spotify is beginning to crack down on members who use third-party apps to get Spotify premium features for free.</li>
|
||||||
|
<li>With Spotify soon selling shares of the company on the open market, it must abandon its conflicting views on internet piracy and crack down on TOS violations.</li>
|
||||||
|
</ul>
|
||||||
|
<p></div><hr>
|
||||||
|
<p>Some <a href="https://www.androidauthority.com/spotify-smart-speaker-839048/">Spotify</a> users are reportedly <a href="https://torrentfreak.com/spotify-emails-warning-to-pirates-using-hacked-apps-180305/" target="_blank" rel="noopener">receiving emails</a> from the company about “abnormal activity” detected on their accounts. While the email doesn’t use the words “piracy,” “theft,” or “stealing,” it’s hard not to connect the dots: Spotify is cracking down on members who use modified apps to get premium Spotify features for free.</p>
|
||||||
|
<p>Starting a Spotify account is easy: <a href="https://play.google.com/store/apps/details?id=com.spotify.music" target="_blank" rel="noopener">download the app</a>, give the company your email, pick a password, and you’re listening to all the music you can handle. However, there are a few notable limitations. You can only listen on shuffle, meaning you can’t select which song you specifically want to hear, and your listening experience will be interrupted by ads every so often.</p>
|
||||||
|
<p>To remove these limitations, you need to pay for <a href="https://www.spotify.com/us/premium/" target="_blank" rel="noopener">a premium Spotify account</a>, currently set at $9.99 per month for individuals or $14.99 per month for a family account.</p>
|
||||||
|
<p>Or you could just install any one of the illegally modified apps online that let you listen to whatever you want ad-free without paying a dime (no, we won’t be linking to them in this article).</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/best-music-streaming-apps-for-android-213818/" title="10 best music streaming apps and music streaming services for Android"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2016/02/AA-Google-Play-Music-Music-Library.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2016/02/AA-Google-Play-Music-Music-Library.jpg" alt="related article"></div><h4 class="ra-title">10 best music streaming apps and music streaming services for Android</h4><div class="ra-excerpt">
|
||||||
|
Music streaming has grown up tremendously since its inception and is now among the best ways to listen to music. Many streaming services let you listen for free, which has helped curb the need for …</div></div></div></div>
|
||||||
|
<p>There are more than 159 million Spotify users around the world, and according to numbers <a href="https://www.androidauthority.com/spotify-70-million-paid-subs-827866/">published by the company in December</a>, about 71 million of those members pay for a premium service. That leaves about 88 million members who may or may not be freeloading using a modified app.</p>
|
||||||
|
<p>These modified apps have existed almost as long as Spotify itself, but this is the first time the company has officially started to crack down on users themselves. Earlier this month, Spotify ordered a takedown of one of the more popular piracy apps on <a href="https://www.androidauthority.com/add-a-github-library-to-android-studio-using-maven-jcenter-jitpack-777050/">Github</a>, a request with which Github complied.</p>
|
||||||
|
<p>It can’t be a coincidence that the piracy Spotify has been fine to look away from for years is all of a sudden a priority right before it’s about to start <a href="https://www.androidauthority.com/spotify-files-for-ipo-842319/">selling shares in Spotify stock</a> on the open market. By going public, Spotify is going to have to consistently raise revenue to appease stockholders; it will be hard to do that if there are millions of users getting the service for free.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper left"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/spotify-files-for-ipo-842319/" title="Spotify files for IPO amidst increasing competition from Apple and Google"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2016/04/Spotify-3.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2016/04/Spotify-3.jpg" alt="related article"></div><h4 class="ra-title">Spotify files for IPO amidst increasing competition from Apple and Google</h4><div class="ra-excerpt">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
After filing IPO documents in December, Spotify has finally announced its plans to go public through a filing with the United States Securities and Exchange Commission. The company intends to list its shares on New …</div></div></div></div>
|
||||||
|
<p>One of the lead developers of Spotify’s software is <a href="https://en.wikipedia.org/wiki/Ludvig_Strigeus" target="_blank" rel="noopener">Ludvig Strigeus</a>, whose original claim to fame was the creation of <a href="https://www.androidauthority.com/best-torrent-apps-android-711563/">uTorrent</a>. For those of you who aren’t familiar with internet piracy, uTorrent is an extremely popular BitTorrent client that is a favorite way for internet pirates to download illegal torrents of copyrighted material.</p>
|
||||||
|
<p>With an integral member of the Spotify team rooted in internet piracy, it’s easy to see why the company might have been loath to crack down on piracy of its own software. But the company is going public, and that means the gloves are coming off.</p>
|
||||||
|
<p><img class="aligncenter size-full wp-image-843556" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/spotify-pirates.png" alt="" width="600" height="619" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/spotify-pirates.png 600w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/spotify-pirates-300x310.png 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/spotify-pirates-16x16.png 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/spotify-pirates-32x32.png 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/spotify-pirates-28x28.png 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/spotify-pirates-54x56.png 54w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/spotify-pirates-62x64.png 62w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/spotify-pirates-194x200.png 194w" sizes="(max-width: 600px) 100vw, 600px" /></p>
|
||||||
|
<p>According to <em>TorrentFreak</em>, some users are reporting after getting the warning email that their accounts no longer work. Other users say they see no change in their account status. To avoid repercussions on your Spotify account, you should uninstall any third-party Spotify apps and then install <a href="https://play.google.com/store/apps/details?id=com.spotify.music" target="_blank" rel="noopener">the official app</a> from the <a href="https://www.androidauthority.com/how-to-use-google-play-store-android-841792/">Google Play Store</a>. By signing in with your account on that app, you can be assured that you will be using Spotify within the limits of its terms of service.</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/public-shares-horizon-spotify-starts-crack-piracy-843550/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>0</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Google Home now supports hands-free calling in the UK</title>
|
||||||
|
<link>https://www.androidauthority.com/google-home-hands-free-calling-uk-support-843492/</link>
|
||||||
|
<comments>https://www.androidauthority.com/google-home-hands-free-calling-uk-support-843492/#respond</comments>
|
||||||
|
<pubDate>Tue, 06 Mar 2018 23:58:40 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Oliver Cragg]]></dc:creator>
|
||||||
|
<category><![CDATA[News]]></category>
|
||||||
|
<category><![CDATA[UK]]></category>
|
||||||
|
<category><![CDATA[Google Assistant]]></category>
|
||||||
|
<category><![CDATA[Google Home]]></category>
|
||||||
|
<category><![CDATA[Google Home Mini]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=843492</guid>
|
||||||
|
<description><![CDATA[Home users in the UK can now call their friends and family via Google's smart speakers and Assistant.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-300x200.jpg" medium="image" /> <content:encoded><![CDATA[<p><img class="alignnone size-large wp-image-826063" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-840x561.jpg" alt="" width="840" height="561" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-840x561.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-300x200.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-768x513.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-16x11.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-32x21.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-28x19.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-56x37.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-64x43.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-1000x668.jpg 1000w, https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Google-Home-1-1200x801.jpg 1200w" sizes="(max-width: 840px) 100vw, 840px" /></p>
|
||||||
|
<div class="aa_tldr_text"></p>
|
||||||
|
<ul>
|
||||||
|
<li>Google Home and Home Mini now support hands-free calling in the UK.</li>
|
||||||
|
<li>Voice Match and callerID supported from day one.</li>
|
||||||
|
<li>Home Mini down to £39 at Google Store and various retailers to celebrate the rollout.</li>
|
||||||
|
</ul>
|
||||||
|
<p></div><hr>
|
||||||
|
<p>Google has been slowly rolling out new features to Home smart speakers outside the US and Canada and that continues today with the news that <a href="https://www.androidauthority.com/google-home-sales-google-assistant-827945/">Home</a> devices in the UK now support <a href="https://www.androidauthority.com/google-homes-calling-feature-might-coming-soon-793963/">hands-free calling</a> over Wi-Fi.</p>
|
||||||
|
<p>The search giant had <a href="https://www.androidauthority.com/google-home-coming-japan-hands-free-calling-due-uk-later-2017-804699/">previously suggested</a> call functionality would arrive in the region in late 2017, but patient Home owners are unlikely to care now it has officially arrived. The full rollout is expected to be completed in the next week, so make sure your Home or Home Mini is online to receive the latest firmware update.<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/google-home-vs-amazon-echo-785590/" title="Google Home vs Amazon Echo – Is Google finally the king?"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2017/07/Google-Home-Amazon-Echo.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/07/Google-Home-Amazon-Echo.jpg" alt="related article"></div><h4 class="ra-title">Google Home vs Amazon Echo – Is Google finally the king?</h4><div class="ra-excerpt">The Google Home smart assistant was released just over a year ago, and a lot has changed since then. At the time of launch, a lot of people were disappointed at its ability vs the …</div></div></div></div></p>
|
||||||
|
<p>To celebrate the launch, Google is slashing the price of the smaller <a href="https://www.androidauthority.com/google-home-mini-specs-price-release-date-features-804238/">Home Mini</a> to just £39 (down £10).</p>
|
||||||
|
<p>The limited time offer runs from now until March 12th via the official Google Store and retailers John Lewis, Argos, and Currys PC World.</p>
|
||||||
|
<p>Starting a hands-free call using Home is as easy as it is on mobile. All you’ll need to do is activate Google Assistant with “Ok Google” and say the name of the contact you wish to call. Users can also register their mobile number as callerID after the first call has been placed.</p>
|
||||||
|
<h4 style="text-align: center;"><a href="https://dgit.com/google-assistant-options-51530/">More: What is Google Assistant? How can you use it?</a></h4>
|
||||||
|
<p>In addition, UK users get to enjoy Voice Match support from day one. That means if you ask Home to call mum it’ll know to call <em>your</em> mum (it is Mother’s Day in the UK next week, remember), even if your Home has <a href="https://www.androidauthority.com/google-home-multi-user-support-uk-782968/">more than one registered user</a>.</p>
|
||||||
|
<p>As well as family and friends, Home can also call businesses and restaurants across the UK, however premium rate and emergency numbers are not supported.</p>
|
||||||
|
<p>The rollout means Home has caught up with Amazon’s Echo devices. Calling has been supported by the Alexa-powered speaker range in the UK since last October. The only thing missing now is a UK release date for the <a href="https://www.androidauthority.com/google-home-max-review-839235/">Google Home Max</a> which is still exclusive to the US market.</p>
|
||||||
|
<div class="aa_custom_button_wrapp center"><a class="aa_button cbs_button add-active cbs_icon cbs-shopping-cart fasc-alignment-center center" style="background-color: #19db97;" target="_blank" rel="nofollow noopener" href="http://fave.co/2nEeacM">Buy Now: Home Mini at Google Store</a></div>
|
||||||
|
<div>
|
||||||
|
<div class="aa_custom_button_wrapp center"><a class="aa_button cbs_button add-active cbs_icon cbs-shopping-cart fasc-alignment-center center" style="background-color: #19db97;" target="_blank" rel="nofollow noopener" href="http://fave.co/2oNhXVV">Buy Now: Home Mini at John Lewis</a></div>
|
||||||
|
</div>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/google-home-hands-free-calling-uk-support-843492/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>0</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Google Lens rolling out to more Android devices</title>
|
||||||
|
<link>https://www.androidauthority.com/google-lens-availability-843525/</link>
|
||||||
|
<comments>https://www.androidauthority.com/google-lens-availability-843525/#comments</comments>
|
||||||
|
<pubDate>Tue, 06 Mar 2018 22:56:09 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Williams Pelegrin]]></dc:creator>
|
||||||
|
<category><![CDATA[News]]></category>
|
||||||
|
<category><![CDATA[Google]]></category>
|
||||||
|
<category><![CDATA[Google Lens]]></category>
|
||||||
|
<category><![CDATA[Google Photos]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=843525</guid>
|
||||||
|
<description><![CDATA[Google Lens started out very much in the experimental phase, though it has steadily improved over time.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-300x169.jpg" medium="image" /> <content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-816114" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-840x473.jpg" alt="" width="840" height="473" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-840x472.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-300x170.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-768x432.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-16x9.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-32x18.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-28x16.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-56x32.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-64x36.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-712x400.jpg 712w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-1000x563.jpg 1000w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-1200x675.jpg 1200w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-792x446.jpg 792w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-1280x720.jpg 1280w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-1340x754.jpg 1340w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-770x433.jpg 770w, https://cdn57.androidauthority.net/wp-content/uploads/2017/11/google-assistant-google-lens-356x200.jpg 356w" sizes="(max-width: 840px) 100vw, 840px" /></p>
|
||||||
|
<div class="aa_tldr_text"></p>
|
||||||
|
<ul>
|
||||||
|
<li>Google announced that Lens will be available for more Android smartphones, as long as they have Google Photos installed.</li>
|
||||||
|
<li>Certain smartphones will eventually support Lens through Google Assistant.</li>
|
||||||
|
<li>Lens recognizes real-world objects, QR codes, Wi-Fi passwords, and more.</li>
|
||||||
|
</ul>
|
||||||
|
<p></div><hr>
|
||||||
|
<p>After announcing during <a href="https://www.androidauthority.com/best-of-mwc-2018-841806/">MWC 2018</a> that more Android smartphones will eventually support <a href="https://www.androidauthority.com/google-lens-772814/">Google Lens</a>, <a href="https://www.androidauthority.com/google-march-security-patch-pixel-nexus-843419/">Google</a> kept its word and started rolling out the feature for devices that have Google Photos installed.</p>
|
||||||
|
<p>This is a staged rollout, so do not fret if you do not get the update right away. Also, certain smartphones will eventually support Lens through Google Assistant, including flagship devices from <a href="https://www.androidauthority.com/samsung-acquires-kngine-ai-bixby-843389/">Samsung</a>, <a href="https://www.androidauthority.com/lg-product-strategy-842091/">LG</a>, <a href="https://www.androidauthority.com/huawei-virtual-assistant-chinese-market-hiassistant-843522/">Huawei</a>, <a href="https://www.androidauthority.com/lenovo-motorola-razr-revival-841898/">Motorola</a>, HMD Global/<a href="https://www.androidauthority.com/nokia-9-2018-september-launch-premium-features-843090/">Nokia</a>, and <a href="https://www.androidauthority.com/sony-design-841991/">Sony</a>.</p>
|
||||||
|
<p>Lens will also be available for iOS devices, but Google did not say when the roll out would start.</p>
|
||||||
|
<blockquote class="twitter-tweet tw-align-center" data-lang="en">
|
||||||
|
<p dir="ltr" lang="en">Rolling out today, Android users can try Google Lens to do things like create a contact from a business card or get more info about a famous landmark. To start, make sure you have the latest version of the Google Photos app for Android: <a href="https://t.co/KCChxQG6Qm">https://t.co/KCChxQG6Qm</a><br />
|
||||||
|
Coming soon to iOS <a href="https://t.co/FmX1ipvN62">pic.twitter.com/FmX1ipvN62</a></p>
|
||||||
|
<p>— Google Photos (@googlephotos) <a href="https://twitter.com/googlephotos/status/970788927765278720?ref_src=twsrc%5Etfw">March 5, 2018</a></p></blockquote>
|
||||||
|
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
|
||||||
|
<p>The road getting to this point has been a long one. Google <a href="https://www.androidauthority.com/google-lens-772814/">first announced</a> Lens during its 2017 I/O developer conference and said the feature would roll out within Photos for Pixel smartphones. Lens then made its way to Google Assistant <a href="https://www.androidauthority.com/google-lens-pixel-users-818352/">in November</a>, but remained a Pixel-exclusive feature. You do not need to snap a picture for Lens to work in Assistant, since you can just tap an object in the viewfinder and have Lens try to identify it.</p>
|
||||||
|
<p>Whether you use it in Photos or Assistant, Lens uses machine learning to identify real-world objects. Lens also pulls off neat tricks, such as scanning QR codes and connecting to Wi-Fi networks by scanning the password on the back of your router.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/best-android-phones-568001/" title="Best Android phones (March 2018): our picks, plus a giveaway"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2018/01/Pixel-2-XL-vs-OnePlus-5T-10.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/01/Pixel-2-XL-vs-OnePlus-5T-10.jpg" alt="related article"></div><h4 class="ra-title">Best Android phones (March 2018): our picks, plus a giveaway</h4><div class="ra-excerpt">With Android thoroughly dominating the mobile industry, picking the best Android smartphones is almost synonymous with choosing the best smartphones, period. But while Android phones have few real opponents on other platforms, internal competition is …</div></div></div></div>
|
||||||
|
<p>Lens was very much experimental and temperamental, but Google continues to make fixes and add more features. <a href="https://thenextweb.com/apps/2018/03/06/google-lens-now-describes-landmarks-and-creates-contacts-from-business-cards/" target="_blank" rel="noopener"><em>The Next Web</em></a> reported that the most recent update allows Lens to identify and provide contextual information to landmarks. You can also use Lens to create contact information from business cards.</p>
|
||||||
|
<p>Google <a href="https://www.androidauthority.com/google-lens-improvements-ar-experiences-822580/">teased features</a> like integrated AR experiences, improvements to natural object recognition, and buying objects that Lens recognizes. We should hear more about these features, along with others, during Google I/O 2018 in May.</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/google-lens-availability-843525/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>1</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Want to excel at Excel? Become VBA literate</title>
|
||||||
|
<link>https://www.androidauthority.com/microsoft-vba-bundle-842884/</link>
|
||||||
|
<comments>https://www.androidauthority.com/microsoft-vba-bundle-842884/#respond</comments>
|
||||||
|
<pubDate>Tue, 06 Mar 2018 22:06:45 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[AA Picks]]></dc:creator>
|
||||||
|
<category><![CDATA[Deals]]></category>
|
||||||
|
<category><![CDATA[News]]></category>
|
||||||
|
<category><![CDATA[Online Courses]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=842884</guid>
|
||||||
|
<description><![CDATA[To really unleash the potential of Excel, you need to master VBA. This bundle teaches you how to use VBA for real business applications.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-300x168.png" medium="image" /> <content:encoded><![CDATA[<p><a href="http://andauth.co/jUvJDR"><img class="aligncenter wp-image-842886 size-large" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-840x471.png" alt="" width="840" height="471" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-840x472.png 840w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-300x168.png 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-768x431.png 768w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-16x9.png 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-32x18.png 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-28x16.png 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-56x31.png 56w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-64x36.png 64w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-712x400.png 712w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-1000x561.png 1000w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-770x433.png 770w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop-356x200.png 356w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Guy-with-Laptop.png 1039w" sizes="(max-width: 840px) 100vw, 840px" /></a></p>
|
||||||
|
<p>I have a soft spot for <strong>Microsoft Excel</strong>. There’s just something extremely pleasing about a working <b>set of calculations</b>, or even a <strong>cheeky vlookup</strong>.</p>
|
||||||
|
<p>The thing is, knowing how to change the number of decimal places and putting together a good color scheme can <strong>only get you so far</strong>. If you want to really <strong>harness the power of Excel</strong>, you need to know your onions when it comes to <strong>VBA</strong>.</p>
|
||||||
|
<p>Fortunately <strong>help is at hand</strong>, and it’s even <strong>on offer</strong>. Today’s deal is the <a href="http://andauth.co/jUvJDR"><strong>Microsoft VBA Bundle</strong></a>. If you’re looking to <strong>advance your career prospects</strong>, stellar Excel game is a great card to have in your hand.</p>
|
||||||
|
<div class="clear"></div><blockquote class="quote_new center" style="color: #39d266; border-color: #39d266;"><p>Really harness the power of Excel</p></blockquote><div class="clear"></div>
|
||||||
|
<p><a href="http://andauth.co/jUvJDR"><strong>The bundle</strong></a> is made up of two extensive courses: <a href="http://andauth.co/jUvJDR"><strong>Microsoft VBA</strong></a> and <a href="http://andauth.co/jUvJDR"><strong>Advanced VBA</strong></a>. The focus is on real <strong>applicability in business</strong> rather than just understanding the functionality of Excel. The creators, <strong>Excel for Business</strong>, want to give you <strong>skills you can really use</strong> to wow your clients or paymasters.</p>
|
||||||
|
<p>During the first of these <strong>CPDUK certified courses</strong> you get acquainted with using VBA to <strong>harness Excel</strong>. By the end you’ll be creating subroutines and<strong> automating your processes</strong>.</p>
|
||||||
|
<p>In the second course you really kick on to the <strong>next level</strong>, and learn how to <strong>manipulate Excel</strong> in all sorts of ways. You’ll be able to use input boxes and message boxes to<strong> interact with users</strong>, create cross-functional flowcharts, and even <strong>customize the right click menu</strong>.</p>
|
||||||
|
<p><a href="http://andauth.co/jUvJDR"><img class="aligncenter wp-image-842889" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/VBA-2-300x129.png" alt="" width="840" height="361" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/VBA-2-300x129.png 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/VBA-2-16x7.png 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/VBA-2-32x14.png 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/VBA-2-28x12.png 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/VBA-2-56x24.png 56w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/VBA-2-64x28.png 64w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/VBA-2-465x200.png 465w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/VBA-2.png 488w" sizes="(max-width: 840px) 100vw, 840px" /></a></p>
|
||||||
|
<p>If you like the sound of this <strong>data wizardry</strong>, your timing is on point. Usually <strong>valued at $69 each</strong>, you can get both courses in the bundle for <a href="http://andauth.co/jUvJDR"><strong>just $29.99</strong></a>. No complex formula required to work out that you’re <strong>saving 78%</strong> on the retail price.</p>
|
||||||
|
<p>We think this deal only lasts <strong>until Thursday</strong>, so join the <strong>1,000+ people already enrolled</strong> by <strong>hitting the button</strong> below.</p>
|
||||||
|
<div class="aa_custom_button_wrapp center"><a class="aa_button cbs_button add-active fasc-alignment-center center" style="background-color: #0077db;" target="_blank" rel="nofollow noopener" href="http://andauth.co/jUvJDR">To the deal!</a></div>
|
||||||
|
<p><em>The AAPicks team writes about things we think you’ll like, and we may see a share of revenue from any purchases made through affiliate links. To see all our hottest deals, head over to <a href="https://goo.gl/WPGPbB">the AAPICKS HUB</a>. </em></p>
|
||||||
|
<hr>
|
||||||
|
<h3>Looking for a new phone or plan? Start here with the Android Authority Plan Tool:</h3>
|
||||||
|
<p><a href="https://goo.gl/Rex3q1"><img class="aligncenter size-large wp-image-811348" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-840x385.jpg" alt="" width="840" height="385" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-840x385.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-300x138.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-768x352.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-16x7.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-32x15.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-28x13.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-56x26.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-64x29.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans-436x200.jpg 436w, https://cdn57.androidauthority.net/wp-content/uploads/2017/10/whistleout-compare-phones-and-plans.jpg 892w" sizes="(max-width: 840px) 100vw, 840px" /></a></p>
|
||||||
|
<div class="alert alert-dismissable alert-info"><strong>This smart tool lets you filter plans by phone, price, data tiers, and regional availability.</strong> Stop overpaying for cell service you hate and a phone that you’re tired of. Use our <a href="https://goo.gl/Rex3q1">Compare Phones & Plans tool </a>to fully customize your mobile experience and painlessly transition from one carrier to another!</div>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/microsoft-vba-bundle-842884/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>0</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Nokia 8 Sirocco, 7 Plus, and 6 join the list of Android Enterprise Recommended devices</title>
|
||||||
|
<link>https://www.androidauthority.com/nokia-8-sirocco-7-plus-6-android-enterprise-recommended-843461/</link>
|
||||||
|
<comments>https://www.androidauthority.com/nokia-8-sirocco-7-plus-6-android-enterprise-recommended-843461/#comments</comments>
|
||||||
|
<pubDate>Tue, 06 Mar 2018 21:22:27 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Williams Pelegrin]]></dc:creator>
|
||||||
|
<category><![CDATA[News]]></category>
|
||||||
|
<category><![CDATA[Android Enterprise Recommended]]></category>
|
||||||
|
<category><![CDATA[Nokia]]></category>
|
||||||
|
<category><![CDATA[Nokia 6 (2018)]]></category>
|
||||||
|
<category><![CDATA[Nokia 7 Plus]]></category>
|
||||||
|
<category><![CDATA[Nokia 8 Sirocco]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=843461</guid>
|
||||||
|
<description><![CDATA[Expect more devices to be part of Google's Android Enterprise Recommended list of devices as time passes.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-300x200.jpg" medium="image" /> <content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-841038" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-840x560.jpg" alt="" width="840" height="560" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-840x560.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-300x200.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-768x512.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-16x11.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-32x21.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-28x19.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-56x37.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-64x43.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-1000x667.jpg 1000w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Nokia-MWC-Phones-22-of-27-1200x800.jpg 1200w" sizes="(max-width: 840px) 100vw, 840px" /></p>
|
||||||
|
<div class="aa_tldr_text"></p>
|
||||||
|
<ul>
|
||||||
|
<li>Nokia announced that the Nokia 8 Sirocco, Nokia 7 Plus, and Nokia 6 are part of Google’s list of Android Enterprise Recommended devices.</li>
|
||||||
|
<li>All three phones were announced during MWC 2018, though only the Nokia 6 will launch in the US.</li>
|
||||||
|
<li>Nokia and HMD Global emphasize timely OS upgrades and security updates.</li>
|
||||||
|
</ul>
|
||||||
|
<p></div><hr>
|
||||||
|
<p>Google’s list of <a href="https://www.androidauthority.com/android-enterprise-recommended-lists-best-business-phones-839476/">Android Enterprise Recommended</a> devices grew a bit larger today as Nokia announced the newest trio of additions: the <a href="https://www.androidauthority.com/nokia-8-sirocco-review-841421/">Nokia 8 Sirocco</a>, <a href="https://www.androidauthority.com/nokia-7-plus-2-840105/">Nokia 7 Plus</a>, and <a href="https://www.androidauthority.com/nokia-hmd-global-us-launch-8-sirocco-7-plus-mwc-841496/">Nokia 6</a>. They join the Nokia 8 and bring the total number of Android Enterprise Recommended devices to 25.</p>
|
||||||
|
<p>The Nokia 8 Sirocco, Nokia 7 Plus, and Nokia 6 were announced during MWC 2018 and are not surprising additions to the business-friendly device list. HMD Global, which develops and markets devices under the Nokia name, emphasizes timely security updates with Nokia-branded Android smartphones.</p>
|
||||||
|
<blockquote class="twitter-tweet tw-align-center" data-lang="en">
|
||||||
|
<p dir="ltr" lang="en">We are excited to announce that in addition to <a href="https://twitter.com/hashtag/Nokia8?src=hash&ref_src=twsrc%5Etfw">#Nokia8</a>, we have three new smartphones, <a href="https://twitter.com/hashtag/Nokia8Sirocco?src=hash&ref_src=twsrc%5Etfw">#Nokia8Sirocco</a>, <a href="https://twitter.com/hashtag/Nokia7plus?src=hash&ref_src=twsrc%5Etfw">#Nokia7plus</a> and the new <a href="https://twitter.com/hashtag/Nokia6?src=hash&ref_src=twsrc%5Etfw">#Nokia6</a> to be included in the <a href="https://twitter.com/hashtag/AndroidEnterprise?src=hash&ref_src=twsrc%5Etfw">#AndroidEnterprise</a> Recommended program. <a href="https://t.co/4eISZyKmsx">https://t.co/4eISZyKmsx</a> <a href="https://t.co/oCBCcUbcMR">pic.twitter.com/oCBCcUbcMR</a></p>
|
||||||
|
<p>— Nokia Mobile (@Nokiamobile) <a href="https://twitter.com/Nokiamobile/status/970679219264122881?ref_src=twsrc%5Etfw">March 5, 2018</a></p></blockquote>
|
||||||
|
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
|
||||||
|
<p>It just so happens that security is one of the key tenets of the Android Enterprise Recommended program. Manufacturers must deliver Android security updates within 90 days of release from Google, for a minimum of three years. Manufacturers must also support bulk deployment of Android devices, including zero-touch enrollment, and have a consistent application experience in managed profiles and on managed devices.</p>
|
||||||
|
<p>As for devices, they must support the minimum hardware specifications for Android 7.0+ devices and be available unlocked from either the manufacturer or reseller.</p>
|
||||||
|
<p>Google hopes to add different types of devices over time, including rugged devices, mobile carriers, system integrators, and enterprise mobility management providers. For the search giant, the goal is presumably is for companies to stick with Android rather than them jump ship to iOS.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/best-nokia-phones-827121/" title="The best Nokia phones you can get your hands on"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2017/03/Nokia-logo-1-aa-gds-mwc17.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/03/Nokia-logo-1-aa-gds-mwc17.jpg" alt="related article"></div><h4 class="ra-title">The best Nokia phones you can get your hands on</h4><div class="ra-excerpt">Nokia was once the biggest smartphone manufacturer in the world but lost its appeal when it decided to overlook Android and start making Windows-powered smartphones. The company was sold to Microsoft in 2013, which decided …</div></div></div></div>
|
||||||
|
<p>HMD Global, meanwhile, no doubt hopes to use the Android Enterprise Recommended program to further buff its growing reputation for timely OS upgrades and security patches.</p>
|
||||||
|
<p>The Nokia 8 Sirocco and Nokia 7 Plus will launch sometime in April. The Nokia 6 will launch in the U.S. in May.</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/nokia-8-sirocco-7-plus-6-android-enterprise-recommended-843461/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>1</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Don’t lose sleep worrying about blue light</title>
|
||||||
|
<link>https://www.androidauthority.com/blue-light-821900/</link>
|
||||||
|
<comments>https://www.androidauthority.com/blue-light-821900/#comments</comments>
|
||||||
|
<pubDate>Tue, 06 Mar 2018 20:47:27 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Bob Myers]]></dc:creator>
|
||||||
|
<category><![CDATA[Features]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=821900</guid>
|
||||||
|
<description><![CDATA[What's the truth about this supposed threat to human health and happiness? Is there really anything to worry about here? As with most such things, the answer is yes — and no.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-300x169.jpg" medium="image" /> <content:encoded><![CDATA[<p><img class="aligncenter wp-image-836855" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Blue_LIght-e1518372880382.jpg" alt="" width="840" height="379" /><a href="http://www.aoa.org/images/news/Blue_LIght.jpg" rel="nofollow" rel="lightbox[821900]">AOA</a></p>
|
||||||
|
<p>Unless you’ve been living completely off the grid and away from the joys of the internet for years (if you have, welcome back. Just to bring you up to speed, the Cubs didn’t repeat), you’ve no doubt been bombarded by stories of the awful dangers of blue light. Especially the blue light that comes out of all those little pieces of tech we so adore.</p>
|
||||||
|
<p>Apparently, all this blue light can make you lose sleep, lose hair, lose your cool, and experience uneven tire wear, as well as raft of far worse problems. Seriously though, some scaremongering sites claim that blue light can cause retinal damage and increase your risk of cancer and heart disease. It’s almost enough to make you throw your smartphone, laptop, and TV into the nearest dumpster and commit to becoming the next <a href="https://en.wikipedia.org/wiki/Jedediah_Smith">Jedediah Smith</a>.</p>
|
||||||
|
<p>But is there really anything to worry about here? As with most things, the answer is yes and no — it’s complicated.</p>
|
||||||
|
<p><img class="aligncenter size-large wp-image-794709" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-840x472.jpg" alt="" width="840" height="472" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-840x472.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-300x170.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-768x431.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-16x9.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-32x18.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-28x16.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-56x31.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-64x36.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-712x400.jpg 712w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-1000x562.jpg 1000w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-792x446.jpg 792w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-770x433.jpg 770w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android-356x200.jpg 356w, https://cdn57.androidauthority.net/wp-content/uploads/2017/08/Night-Mode-Night-Light-Android.jpg 1024w" sizes="(max-width: 840px) 100vw, 840px" /></p>
|
||||||
|
<p>Ultimately, most of the articles on the subject point back to some studies done a couple of years ago by researchers at Harvard Medical School. <a href="http://www.pnas.org/content/112/4/1232">This paper</a> drew a link between nighttime<em> </em>“blue light” exposure and interruptions to peoples’ <a href="https://en.wikipedia.org/wiki/Circadian_rhythm">circadian rhythms</a>, which basically govern our sleep cycles and the related aspects of our day/night existence. That’s where the scarier claims come from. The researchers never claimed exposure to blue light directly caused cancer, heart disease, or any of the other terrible things, but messing around with the body’s circadian rhythms can increase your chances of all of these ailments.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/night-light-slider-773348/" title="Night Light adds a slider to control intensity [Diving into Android O]"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2017/05/Screenshot_20170517-220649.png)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/05/Screenshot_20170517-220649.png" alt="related article"></div><h4 class="ra-title">Night Light adds a slider to control intensity [Diving into Android O]</h4><div class="ra-excerpt">Night Light was a new feature specific to the Google Pixel in Android N which gave users the ability to reduce the blue light channel on their phone. While this feature was very useful for …</div></div></div></div>
|
||||||
|
<p>In other words, all the blue light itself can do is upset those rhythms (and then only if the exposure comes at night). It’s the long-term alteration of your body’s natural cycles — which can be caused by a number of things in addition to blue light exposure — that is the real problem.</p>
|
||||||
|
<p>So no, exposure to blue light is not a health hazard, and it’s especially not true that our tech toys are particular dangers. If exposure to blue light alone was hazardous, you’d be at great risk just by being outside during the day; natural sunlight, of course, contains its share of the blue wavelengths, and in a much higher intensity than any phone or TV at that.</p>
|
||||||
|
<blockquote class="quote_new right" style="color: #39d266; border-color: #39d266;"><p>If exposure to blue light alone was hazardous, you'd be at great risk just by being outside during the day.</p></blockquote>
|
||||||
|
<p>But what’s different about blue light exposure at night? In addition to rod and cone cells, our eyes have a third type of photoreceptor cell: the intrinsically photoreceptive retinal ganglion cell (ipRGCs)<em>. </em>These ipRGCs are particularly sensitive to blue light and are basically there to help the brain regulate circadian rhythms, control the release of melatonin (a hormone responsible for the regulation of sleep cycles), and even control the response of the pupils to light.</p>
|
||||||
|
<p><img class="aligncenter size-large wp-image-836872" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-840x473.jpg" alt="" width="840" height="473" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-840x472.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-300x170.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-768x432.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-16x9.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-32x18.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-28x16.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-56x32.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-64x36.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-712x400.jpg 712w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-792x446.jpg 792w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-770x433.jpg 770w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots-356x200.jpg 356w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/samsung-quantum-dots.jpg 960w" sizes="(max-width: 840px) 100vw, 840px" /> <a href="http://www.samsung.com/global/tv/images/blog/161014/topic_stained-glass_04.jpg" rel="nofollow" rel="lightbox[821900]">Samsung</a></p>
|
||||||
|
<p>This shouldn’t be all that surprising. In the evolutionary history of the human species, the development of artificial light sources is a very, very recent thing. Before Thomas Edison, if you were seeing things by sunlight (rich in blue light), it was obviously daytime. After the sun went down, the only decent light source we had was fire — for most of that time, the light of the tribe’s campfires and torches, and only much later candles and oil lamps. But all of these sources lack significant blue wavelengths. Even Edison’s incandescent bulbs were a good deal “redder” than daylight.</p>
|
||||||
|
<div class="clear"></div><blockquote class="quote_new center" style="color: #39d266; border-color: #39d266;"><p>We evolved with systems that associated blue light with daytime, and a lack of blue light with night</p></blockquote><div class="clear"></div>
|
||||||
|
<p>We evolved with systems that associated blue light with daytime, and a lack of blue light with night, so this became one of the primary means our bodies have of setting their internal “clocks.”</p>
|
||||||
|
<p>In the last few decades we’ve started to change that. Fluorescent lighting relies on UV light, exciting a “white” phosphor, a mix of chemicals which emit blue and yellow light to give the perception of white. Fluorescents never became popular for home lighting, especially in areas we frequent at night, but LEDs did. Like fluorescent tubes, “white” LEDs have considerable blue content in their output spectrum, as a combination of a blue LED with a yellow phosphor coating.</p>
|
||||||
|
<p><img class="alignnone wp-image-836860" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/led-spectrum.png" alt="" width="840" height="523" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/led-spectrum.png 692w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/led-spectrum-300x187.png 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/led-spectrum-16x10.png 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/led-spectrum-32x20.png 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/led-spectrum-28x17.png 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/led-spectrum-56x35.png 56w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/led-spectrum-64x40.png 64w, https://cdn57.androidauthority.net/wp-content/uploads/2018/02/led-spectrum-321x200.png 321w" sizes="(max-width: 840px) 100vw, 840px" /> <a href="https://i.stack.imgur.com/b7ach.png" rel="nofollow" rel="lightbox[821900]">Source</a></p>
|
||||||
|
<p>In just a decade, the reddish glow of incandescents has been replaced by a veritable flood of “blue-rich” light sources around us after sundown. It’s little wonder we’re feeling the effects of this and looking for some solutions. That doesn’t mean we need to be in a panic about any and all exposure to these sources. Again, if blue light itself was such a heath hazard, the sun would’ve done us all in long ago.</p>
|
||||||
|
<p>What’s really changed is that we now have a lot of light sources — including, but definitely not<em> </em>limited to, all of our favorite little bits of tech — producing light at the wavelengths that could interfere with our sleep cycles. Messing those up is a very bad idea. So what can we do about it?</p>
|
||||||
|
<p>Getting rid of all of these blue-light sources would certainly do the trick, but I doubt it’s going to be a very popular option unless you’re looking for a lead role in the next Alaskan-bush reality show. Instead, we’re going to have to come up with some alternate means of peaceful co-existence. The most obvious change may also be one of the most effective: get away from the tech as you get close to bedtime. Put down the phone, leave the tablet on its charger, and resist the temptation to get in one more game of <em>Call of Grand Theft Mario </em>before you turn in for the night. <blockquote class="quote_new left" style="color: #39d266; border-color: #39d266;"><p>The most obvious change may also be one of the most effective: get away from the tech as you get close to bedtime. </p></blockquote></p>
|
||||||
|
<p>You really don’t need to take the tech to bed with you. Many people like to read a bit before going to sleep, but there are these things called “books,” which emit little if any blue light. Some e-readers also use reflective displays which don’t have any blue-light emission.</p>
|
||||||
|
<p>Apart from those, there are other solutions which still let you keep the tech but do away with the blue light. These come in two main forms: filters (including eyewear) that cut out the blue wavelengths of light, preventing them from ever reaching your eye and causing trouble, and some apps which simply cut back on the amount of blue light your devices produce.</p>
|
||||||
|
<p>The problem with eliminating all the blue light, is it will create a very noticeable yellow tint (which happens when “white” light loses its blue components). The less yellow tint you see, the more blue gets through to your eyes (even then, a reduction in blue light may be all you need). Obviously anything that changes the color balance of what your screens produce or your eyes receive isn’t going to be great for color accuracy. If you need accurate color, you’re just going to have to do that work during the day (or surrender and adjust to the night shift permanently).</p>
|
||||||
|
<p>None of this addresses the potential problem of growing LED use in home lighting. Not all LED lighting has<em> </em>to have this problem though. Light fixtures with RGB LEDs which permit their color adjustment can, of course, be set to provide a “warmer” (less blue) color balance whenever desired. The standard LED bulb, though, produces a veritable ton of blue light whenever it’s in use. So even if you limit your device usage at night, you’ve still got a problem.</p>
|
||||||
|
<p>There’s still no evidence of a direct health hazard, but sleep-cycle disruption may be a distinct possibility. The one potential saving grace here is that we don’t generally look directly at such overhead sources, instead mostly seeing their light reflected from surfaces which may absorb a good deal of the troublesome short wavelengths. If you find yourself having difficulties in getting to sleep, limiting nighttime exposure to this sort of lighting is also something to think about.</p>
|
||||||
|
<p>For further reading, please check the following on <a href="https://hms.harvard.edu/news/harvard-medicine/blues-cues">blue light’s effect on your health</a> and <a href="https://hms.harvard.edu/news/harvard-medicine/blues-cues">NASA’s response to the problem</a> (no, really).</p>
|
||||||
|
<p>How concerned are you by blue light? What steps do you take to limit your exposure?</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/blue-light-821900/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>1</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>BlackBerry sues Facebook, claims theft of intellectual property (Updated)</title>
|
||||||
|
<link>https://www.androidauthority.com/blackberry-facebook-lawsuit-843534/</link>
|
||||||
|
<comments>https://www.androidauthority.com/blackberry-facebook-lawsuit-843534/#comments</comments>
|
||||||
|
<pubDate>Tue, 06 Mar 2018 19:41:05 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[C. Scott Brown]]></dc:creator>
|
||||||
|
<category><![CDATA[News]]></category>
|
||||||
|
<category><![CDATA[BlackBerry]]></category>
|
||||||
|
<category><![CDATA[Facebook]]></category>
|
||||||
|
<category><![CDATA[Instagram]]></category>
|
||||||
|
<category><![CDATA[WhatsApp]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=843534</guid>
|
||||||
|
<description><![CDATA[BlackBerry is taking Facebook to court over theft of intellectual property, most likely related to the BlackBerry Messenger (BBM) service.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-300x179.jpg" medium="image" /> <content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-842731" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-840x500.jpg" alt="" width="840" height="500" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-300x179.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-768x457.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-16x10.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-32x19.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-28x17.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-56x33.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-64x38.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/BlackBerry-logo-336x200.jpg 336w" sizes="(max-width: 840px) 100vw, 840px" /></p>
|
||||||
|
<p><strong>UPDATE 03/06/2018, 3:30 P.M. EST:</strong> Facebook made a statement regarding this BlackBerry lawsuit. The statement comes from Paul Grewal, the deputy general counsel for Facebook:</p>
|
||||||
|
<blockquote><p>“BlackBerry’s suit sadly reflects the current state of its messaging business. Having abandoned its efforts to innovate, BlackBerry is now looking to tax the innovation of others. We intend to fight.”</p></blockquote>
|
||||||
|
<p>It seems that Facebook is not mincing words when it comes to this particular lawsuit.</p>
|
||||||
|
<hr />
|
||||||
|
<p><strong>Original Article</strong>: Today, in a Los Angeles Federal Court, <a href="https://www.reuters.com/article/us-blackberry-lawsuit/blackberry-files-lawsuit-against-facebook-whatsapp-and-instagram-idUSKCN1GI2J2" target="_blank" rel="noopener">BlackBerry, Ltd. filed a lawsuit</a> against Facebook, Inc. for infringing a patent on its messaging technology. The lawsuit calls out <a href="https://www.androidauthority.com/now-can-add-friends-ongoing-video-chat-facebook-messenger-839412/">Facebook Messenger</a> as well as Facebook-owned properties like <a href="https://www.androidauthority.com/uh-oh-quoted-whatsapp-messages-can-be-seen-even-after-original-message-has-been-deleted-838980/">WhatsApp</a> and <a href="https://www.androidauthority.com/hidden-portrait-mode-instagram-selfie-game-843427/">Instagram</a>.</p>
|
||||||
|
<p>According to the lawsuit, <a href="https://www.androidauthority.com/blackberry-less-million-phone-sold-2017-841179/">BlackBerry</a> has attempted “several years” of dialog with Facebook over the alleged violation of BlackBerry patents. Presumably, those dialogs haven’t been fruitful, and BlackBerry sees no other choice but to take Facebook to court.</p>
|
||||||
|
<p>Though the specifics of the lawsuit are unavailable, it’s highly likely that the intellectual property patent(s) BlackBerry is suing over relate to its <a href="https://www.androidauthority.com/bbm-for-android-full-review-video-285624/">BlackBerry Messenger (BBM)</a> service. Using BBM, BlackBerry users could send messages to each other without using traditional SMS or MMS protocols, a favorite feature in the time before unlimited texting became a given with pretty much any mobile service plan. BBM was eventually ported to Android.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/blackberry-less-million-phone-sold-2017-841179/" title="BlackBerry execs: “Mission accomplished” with less-than-a-million phone sold in 2017"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2018/01/blackberry-keyone-bronze-edition-ces-2018-aa-5-of-6.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/01/blackberry-keyone-bronze-edition-ces-2018-aa-5-of-6.jpg" alt="related article"></div><h4 class="ra-title">BlackBerry execs: “Mission accomplished” with less-than-a-million phone sold in 2017</h4><div class="ra-excerpt">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Back in 2016, the budget phone maker TCL bought the rights to create BlackBerry phones. Its first flagship device under this arrangement, the BlackBerry KeyOne, launched last year during Mobile World Congress 2017. Now at …</div></div></div></div>
|
||||||
|
<p>However, if BlackBerry is suing Facebook specifically over technology present in BBM, shouldn’t it also be suing <a href="https://www.androidauthority.com/google-will-sell-zagat-review-site-infatuation-843218/">Google</a>, <a href="https://www.androidauthority.com/apple-vs-google-competition-836686/">Apple</a>, and the many other companies that have similar messaging apps? Or is there something specific about Facebook’s properties that brought on this lawsuit?</p>
|
||||||
|
<p>Unfortunately, until the full lawsuit transcript goes online, we can only speculate what BlackBerry is after.</p>
|
||||||
|
<p>As of now, Facebook has made no public comment on the lawsuit. We’ll update this post as soon as any new information surfaces.</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/blackberry-facebook-lawsuit-843534/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>5</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Huawei creating its own virtual assistant for Chinese market</title>
|
||||||
|
<link>https://www.androidauthority.com/huawei-virtual-assistant-chinese-market-hiassistant-843522/</link>
|
||||||
|
<comments>https://www.androidauthority.com/huawei-virtual-assistant-chinese-market-hiassistant-843522/#respond</comments>
|
||||||
|
<pubDate>Tue, 06 Mar 2018 19:24:22 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[C. Scott Brown]]></dc:creator>
|
||||||
|
<category><![CDATA[News]]></category>
|
||||||
|
<category><![CDATA[Huawei]]></category>
|
||||||
|
<category><![CDATA[Huawei HiAssistant]]></category>
|
||||||
|
<category><![CDATA[Huawei P20]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=843522</guid>
|
||||||
|
<description><![CDATA[Huawei may release a virtual assistant specifically for China, as both Google's and Amazon's assistants do not support Chinese languages.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-300x179.jpg" medium="image" /> <content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-842737" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-840x500.jpg" alt="" width="840" height="500" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-300x179.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-768x457.jpg 768w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-16x10.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-32x19.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-28x17.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-56x33.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-64x38.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2018/03/Huawei-logo-MWC-336x200.jpg 336w" sizes="(max-width: 840px) 100vw, 840px" /></p>
|
||||||
|
<div class="aa_tldr_text"></p>
|
||||||
|
<ul>
|
||||||
|
<li>By examing the firmware of EMUI 8.1, <em>XDA Developers</em> discovered that Huawei is creating a virtual assistant for the Chinese market.</li>
|
||||||
|
<li>Both Google’s and Amazon’s virtual assistants do not support Chinese languages, leaving China as an untapped market.</li>
|
||||||
|
<li>While Huawei has made no official announcement of its virtual assistant, the firmware code makes it seem inevitable that we’ll hear about it soon.</li>
|
||||||
|
</ul>
|
||||||
|
<p></div><hr>
|
||||||
|
<p>While most of the world thinks of <a href="https://www.androidauthority.com/leader-alexa-ai-jumps-ship-amazon-google-842481/">Amazon’s Alexa</a> and <a href="https://www.androidauthority.com/features-coming-google-assistant-including-support-30-languages-840113/">Google Assistant</a> when it comes to <a href="https://www.androidauthority.com/google-assistant-vs-siri-vs-bixby-vs-amazon-alexa-vs-cortana-best-virtual-assistant-showdown-796205/">virtual assistants</a>, not everyone finds them so useful: neither platform currently understands Chinese. Yes, you can ask both assistants to translate something into Chinese (and Amazon has <a href="https://www.androidauthority.com/amazon-seriously-exploring-star-trek-like-translation-service-842550/">some big plans when it comes to translation</a>), but you can’t ask the systems a question in Chinese.</p>
|
||||||
|
<p><a href="https://www.androidauthority.com/huawei-ceo-competitors-using-politics-842801/">Huawei</a> is apparently looking to jump into this untapped market by creating its own virtual assistant specifically for China. There are multiple international Huawei products that integrate either Google Assistant or Alexa, but not in the versions sold in Chinese markets. If Huawei had its own virtual assistant, it wouldn’t have to wait for Google and Amazon to add Chinese language support.</p>
|
||||||
|
<p><a href="https://www.xda-developers.com/huawei-google-assistant-alexa-chinese-market/" target="_blank" rel="noopener"><em>XDA Developers</em></a> found that, apparently, Huawei has a virtual assistant called HiAssistant that will roll out in future Chinese-market Huawei smartphones, such as the <a href="https://www.androidauthority.com/huawei-p20-plus-826117/">P20 and P20 Plus</a>. The information comes from firmware files taken from the Chinese version of <a href="https://www.androidauthority.com/huawei-mate-10-pro-review-807465/">Huawei’s Mate 10</a> EMUI 8.1 release, which is based on Android 8.1 Oreo.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/huawei-p20-pictures-leak-3-cameras-839453/" title="Exclusive: First pictures of the Huawei P20 leak, could feature three rear cameras"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Huawei-P20-prototype-leak-12.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2018/02/Huawei-P20-prototype-leak-12.jpg" alt="related article"></div><h4 class="ra-title">Exclusive: First pictures of the Huawei P20 leak, could feature three rear cameras</h4><div class="ra-excerpt">
|
||||||
|
|
||||||
|
The Huawei Mate 10 and Mate 10 Pro were stylish smartphones. The Pro even won our Phone of the Year 2017 award. Huawei’s next flagship looks like it could continue that trend. We got our …</div></div></div></div>
|
||||||
|
<p>Now, there are some caveats here. First, the assistant will only run on devices with the <a href="https://www.androidauthority.com/what-is-the-kirin-970s-npu-gary-explains-824423/">Kirin 970 SoC</a>, as other chips in Huawei devices do not have a dedicated NPU (neural processing unit) to run the full-blown virtual assistant. Also, the Android version must be EMUI 8.1, the phone must be designed to be sold in the Chinese market, and you must be able to speak and understand Chinese, clearly.</p>
|
||||||
|
<p>Some Chinese users might know of the app <a href="https://www.androidauthority.com/huawei-mediapad-m3-review-713646/">HiVoice</a> that comes preinstalled on some Huawei devices. With HiVoice, Chinese-speaking users can do simple things like ask for the GPS location of the device, make a phone call, etc. HiAssistant will be a much more advanced version of HiVoice, similar to how Google Assistant is an advanced version of <a href="https://www.androidauthority.com/google-now-explore-interests-test-708894/">Google Now</a>.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/huawei-ceo-competitors-using-politics-842801/" title="Huawei CEO calls out competitors “using politics” to kill U.S. deal"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2017/09/Richard-Yu-holding-Kirin-970-aa.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/09/Richard-Yu-holding-Kirin-970-aa.jpg" alt="related article"></div><h4 class="ra-title">Huawei CEO calls out competitors “using politics” to kill U.S. deal</h4><div class="ra-excerpt">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Richard Yu, the CEO of the consumer products division at Chinese smartphone manufacturer Huawei, recently made some controversial comments at Mobile World Congress 2018. When pressed by CNBC journalists to comment on the roadblocks the company …</div></div></div></div>
|
||||||
|
<p>Using HiAssistant, a user will be able to control nearly every setting on the device with their voice, such as Bluetooth, Wi-Fi, volume levels, brightness, etc. You will also be able to search for food, airplane tickets, navigation routes, videos, albums, movies, TV shows, and more.</p>
|
||||||
|
<p>Likely to be included with HiAssistant will be HiVision, which seems to be a clone of <a href="https://www.androidauthority.com/google-lens-improvements-ar-experiences-822580/">Google Lens</a>. Using your phone’s camera, you can frame a shot around an object and HiVision will give you more information about that object. For example, you could focus your shot on a toy a child is playing with at the park, and HiVision will tell you what that toy is and how to buy it for your own child.</p>
|
||||||
|
<p>Huawei has, as of yet, made no official announcement of HiAssistant, so all of this should be taken with a grain of salt. However, with <a href="https://www.androidauthority.com/huawei-p20-likely-revealed-paris-march-27-834367/">the launch of the P20 and P20 Plus</a> only a few weeks away, we can most likely expect to get more news about HiAssistant soon, since those devices will presumably be some of the first to support the new assistant.</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/huawei-virtual-assistant-chinese-market-hiassistant-843522/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>0</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>You will be able to use your phone as a Bluetooth mouse or keyboard in Android P</title>
|
||||||
|
<link>https://www.androidauthority.com/android-p-bluetooth-mouse-keyboard-843456/</link>
|
||||||
|
<comments>https://www.androidauthority.com/android-p-bluetooth-mouse-keyboard-843456/#comments</comments>
|
||||||
|
<pubDate>Tue, 06 Mar 2018 18:37:21 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[C. Scott Brown]]></dc:creator>
|
||||||
|
<category><![CDATA[News]]></category>
|
||||||
|
<category><![CDATA[Android P]]></category>
|
||||||
|
<category><![CDATA[Bluetooth]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">https://www.androidauthority.com/?p=843456</guid>
|
||||||
|
<description><![CDATA[In the next iteration of Android, you will be able to use your phone as a Bluetooth mouse or keyboard without having to root first.]]></description>
|
||||||
|
<media:content name="AndroidAuthority" url="https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-300x169.jpg" medium="image" /> <content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-632064" src="https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-840x473.jpg" alt="" width="840" height="473" srcset="https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-840x472.jpg 840w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-300x170.jpg 300w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-16x9.jpg 16w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-32x18.jpg 32w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-28x16.jpg 28w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-56x32.jpg 56w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-64x36.jpg 64w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-712x400.jpg 712w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-1000x563.jpg 1000w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-1200x675.jpg 1200w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-792x446.jpg 792w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-1280x720.jpg 1280w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-1340x754.jpg 1340w, https://cdn57.androidauthority.net/wp-content/uploads/2015/08/Android-code-programming-770x433.jpg 770w" sizes="(max-width: 840px) 100vw, 840px" /></p>
|
||||||
|
<div class="aa_tldr_text"></p>
|
||||||
|
<ul>
|
||||||
|
<li>Development code in Android P points to a feature enabling you to use your phone as a wireless keyboard or mouse.</li>
|
||||||
|
<li>You can do this currently in Android, but only if you root your device first. This new feature would eliminate the need to root.</li>
|
||||||
|
<li>While not exactly a highly demanded feature, it would be incredibly useful to use your phone as a mouse in certain situations.</li>
|
||||||
|
</ul>
|
||||||
|
<p></div><hr>
|
||||||
|
<p><a href="https://www.xda-developers.com/android-p-bluetooth-keyboard-mouse/">Over at <em>XDA Developers</em></a>, Android enthusiasts have been working tirelessly to round up all the rumors of upcoming features in <a href="https://www.androidauthority.com/android-p-dev-preview-preemptive-call-blocking-release-843030/">Android P</a>, the next iteration of the Android operating system. It looks like one of those features will be the ability to use your phone as <a href="https://www.androidauthority.com/adding-bluetooth-to-your-app-742538/">a Bluetooth input device</a>, like a wireless mouse or keyboard.</p>
|
||||||
|
<p>You can read <a href="https://www.xda-developers.com/android-p-bluetooth-keyboard-mouse/">the recent <em>XDA</em> blog post</a> to get the nitty-gritty details, but essentially the code to perform wireless input functions has been present in Android since 2016. The Android team just never turned the feature on. Why, we don’t know, but it looks all but certain that the function will finally get switched on <a href="https://www.androidauthority.com/google-begins-i-o-2018-scavenger-hunt-832304/">whenever Android P makes its debut</a>.</p>
|
||||||
|
<p>Technically, rooted devices have had this feature for quite a while. Simply <a href="https://www.androidauthority.com/best-root-apps-android-269022/">root your phone</a>, download the <a href="https://play.google.com/store/apps/details?id=com.z2software.bluetoothpatcher" target="_blank" rel="noopener">Bluetooth Plus app</a>, and then take your pick from any of the Bluetooth mouse/keyboard apps available on the <a href="https://www.androidauthority.com/how-to-use-google-play-store-android-841792/">Google Play Store</a>.</p>
|
||||||
|
<div class="aa_srma_container shortcodes_wrapper right"><div class="shortcodes-header"><div class="shortcodes-title">Editor's Pick</div></div><div class="related_articles_wrapper"><div class="related_article_item"><a class="overlay-link" href="https://www.androidauthority.com/android-p-camera-restrictions-839076/" title="Android P will prevent apps from using your camera or microphone without telling you (Updated)"></a><div class="ra-image" style="background-image: url(https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Pixel-2-XL-second-opinion-11.jpg)"><img class="hidden" src="https://cdn57.androidauthority.net/wp-content/uploads/2017/12/Pixel-2-XL-second-opinion-11.jpg" alt="related article"></div><h4 class="ra-title">Android P will prevent apps from using your camera or microphone without telling you (Updated)</h4><div class="ra-excerpt">
|
||||||
|
|
||||||
|
Update (02/21): Another open source commit has been unearthed which suggests that Android P will also stop idle background from accessing your device's microphone.
|
||||||
|
|
||||||
|
According (once again) to XDA Developers, the privacy measure will follow a …</div></div></div></div>
|
||||||
|
<p>However, making the feature built into Android will enable users to do this without rooting their phone, which is a big deal for people who are not tech savvy enough to root their device or who simply don’t want to go through the hassle.</p>
|
||||||
|
<p>You may or may not see any real advantage to using your phone as an HID (human interface device), but for people who give lots of presentations, it would be quite useful. Not having to carry around a wireless mouse with you to navigate through a presentation would be nice indeed. And people who use desktops as their media center control might like to use their phone to navigate around rather than keeping a wireless mouse on their coffee table.</p>
|
||||||
|
<p>Ultimately, we won’t know 100% for sure if this feature will be present in Android P until Google announces as such, but the code seems to support that certainty.</p>
|
||||||
|
<p>Now, the real question is: will it be Android Pie, Android Pop, or Android Popsicle?</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>https://www.androidauthority.com/android-p-bluetooth-mouse-keyboard-843456/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>2</slash:comments>
|
||||||
|
</item>
|
||||||
|
</channel>
|
||||||
|
</rss>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Performance optimized by W3 Total Cache. Learn more: https://www.w3-edge.com/products/
|
||||||
|
|
||||||
|
Object Caching 2181/357 objects using memcache
|
||||||
|
Page Caching using disk: enhanced
|
||||||
|
Database Caching 3/7 queries in 0.016 seconds using memcache
|
||||||
|
Application Monitoring using New Relic
|
||||||
|
|
||||||
|
Served from: www.androidauthority.com @ 2018-03-06 21:40:10 by W3 Total Cache
|
||||||
|
-->
|
1511
tests/data/android-central.xml
Normal file
1511
tests/data/android-central.xml
Normal file
File diff suppressed because it is too large
Load diff
649
tests/data/donnfelker.xml
Normal file
649
tests/data/donnfelker.xml
Normal file
|
@ -0,0 +1,649 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">
|
||||||
|
|
||||||
|
<channel>
|
||||||
|
<title>DONN FELKER</title>
|
||||||
|
|
||||||
|
<link>http://www.donnfelker.com</link>
|
||||||
|
<description>Lessons Learned From the Software Industry</description>
|
||||||
|
<lastBuildDate>Tue, 06 Mar 2018 14:17:14 +0000</lastBuildDate>
|
||||||
|
<language>en-US</language>
|
||||||
|
<sy:updatePeriod>hourly</sy:updatePeriod>
|
||||||
|
<sy:updateFrequency>1</sy:updateFrequency>
|
||||||
|
<generator>https://wordpress.org/?v=4.9.4</generator>
|
||||||
|
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/donnfelker" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="donnfelker" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
|
||||||
|
<title>Your First Test: The Launch Test</title>
|
||||||
|
<link>http://www.donnfelker.com/your-first-test-the-launch-test/</link>
|
||||||
|
<comments>http://www.donnfelker.com/your-first-test-the-launch-test/#respond</comments>
|
||||||
|
<pubDate>Tue, 06 Mar 2018 12:34:51 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Development]]></category>
|
||||||
|
<category><![CDATA[programming]]></category>
|
||||||
|
<category><![CDATA[Testing]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1939</guid>
|
||||||
|
<description><![CDATA[I get it. Your application (mobile app or web app) doesn’t have tests and … well … you’re scared anytime you make changes. Why? … well … because you’re not sure if you broke anything when you commit that code. I encounter this a lot in the realm of software consulting. There’s one simple way […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p>I get it. Your application (mobile app or web app) doesn’t have tests and … well … you’re scared anytime you make changes.</p>
|
||||||
|
<p>Why? … well … because you’re not sure if you broke anything when you commit that code.</p>
|
||||||
|
<p>I encounter this a lot in the realm of software consulting.</p>
|
||||||
|
<h3>There’s one simple way to remedy fear in your development lifecycle – tests.</h3>
|
||||||
|
<p>The more tests you have, the more confident you will be that you didn’t screw anything up.</p>
|
||||||
|
<blockquote><p>Yeah, Ok, I get it, but what if I don’t have any tests, where do I start?</p></blockquote>
|
||||||
|
<p>Great question.</p>
|
||||||
|
<h2>The first test you need to write is a Launch Test.</h2>
|
||||||
|
<p>A launch test is a functional test that runs on your continuous functional server (or even your local machine if you don’t have CI yet) that confirms that the application you just compiled/etc will actually start and you can hit the home screen/home page of the app.</p>
|
||||||
|
<p>Simply check that your home screen text is showing as you would expect it to show and that certain key values are present. Simple. Done.</p>
|
||||||
|
<blockquote><p>Hold up … but I know I didn’t break my home page. Why should I test it? Why is this important?</p></blockquote>
|
||||||
|
<p>You said you didn’t have any tests. Are you sure you’re sure you didn’t break it?</p>
|
||||||
|
<p>Thought so, probably not.</p>
|
||||||
|
<p>The reason why this is important is that you may have made a change to the dependency injection code that uses reflection that does something at runtime that would only be exposed when the app is run.</p>
|
||||||
|
<p>What would happen if you didn’t catch that in development?</p>
|
||||||
|
<p><img src="https://s.w.org/images/core/emoji/2.4/72x72/1f4a5.png" alt="💥" class="wp-smiley" style="height: 1em; max-height: 1em;" />BOOM! CRASH! <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f4a5.png" alt="💥" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
|
||||||
|
<p>Exactly.</p>
|
||||||
|
<p>Furthermore what this first functional test does is give you a starting point. It gives you a jump off point. It’s your first test of many.</p>
|
||||||
|
<p>Yes, it might hit production servers. Ok, when you test manually you probably were hitting production servers too. Yikes. It is what it is.</p>
|
||||||
|
<p>The key thing to remember here is that you now have a test covering you to ensure your app launches.</p>
|
||||||
|
<h3>What to Test Next</h3>
|
||||||
|
<p>Ultimately the next thing you should be testing is your most used screens:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Home/Main Screen</li>
|
||||||
|
<li>Customers</li>
|
||||||
|
<li>Orders</li>
|
||||||
|
<li>Etc</li>
|
||||||
|
</ul>
|
||||||
|
<p>Once you get some tests around these screens (do they load, do they work when interacted with) then you can refactor.</p>
|
||||||
|
<h2>Refactor with Confidence</h2>
|
||||||
|
<p>That’s the key takeaway here. Tests give you the confidence to do work that otherwise might be overly stressful and risky because you’re not sure what you’re breaking.</p>
|
||||||
|
<p>Functional (and integration) tests are the best place to start because they’re true end-to-end tests and they mimic what the end user is going to see and this is important because …</p>
|
||||||
|
<p><b>Nothing else matters more than the end user experience.</b></p>
|
||||||
|
<p>If the end user sees a screen that’s broken, gets a crash, or sees incorrect data they’re not going to be happy and they won’t give two cents that your app is powered by AI with advanced machine learning to render results from a globally decentralized blockchain network running on Ethereum.</p>
|
||||||
|
<p>User’s don’t care about your cool tech stack if your app doesn’t work.</p>
|
||||||
|
<p><i>To the user, if the app doesn’t work, it’s garbage.</i></p>
|
||||||
|
<p>… and …. well … at that point, let the 1-star reviews come flooding in.</p>
|
||||||
|
<p>So … if you don’t have any tests, start with some functional tests and then you can refactor with confidence and then and only then should you introduce more testing mythologies into your app.</p>
|
||||||
|
<p> </p>
|
||||||
|
<p><small>PS: If your app is an Android app, quickly set up an Espresso launch test with the Espresso Test Recorder. Sam Edwards has a great course on it <a href="https://caster.io/courses/espresso-test-recorder">here</a>.</small></p>
|
||||||
|
<p> </p>
|
||||||
|
<p><a style="background-color: black; color: white; text-decoration: none; padding: 4px 6px; font-family: -apple-system, BlinkMacSystemFont, 'San Francisco', 'Helvetica Neue', Helvetica, Ubuntu, Roboto, Noto, 'Segoe UI', Arial, sans-serif; font-size: 12px; font-weight: bold; line-height: 1.2; display: inline-block; border-radius: 3px;" title="Download free do whatever you want high-resolution photos from Ehud Neuhaus" href="https://unsplash.com/@paramir?utm_medium=referral&utm_campaign=photographer-credit&utm_content=creditBadge" target="_blank" rel="noopener noreferrer"><span style="display: inline-block; padding: 2px 3px;">Photo: Ehud Neuhaus</span></a></p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/your-first-test-the-launch-test/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>0</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>I Don’t Have Time is a Myth</title>
|
||||||
|
<link>http://www.donnfelker.com/i-dont-have-time-is-a-myth/</link>
|
||||||
|
<comments>http://www.donnfelker.com/i-dont-have-time-is-a-myth/#comments</comments>
|
||||||
|
<pubDate>Mon, 06 Nov 2017 15:03:15 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Business]]></category>
|
||||||
|
<category><![CDATA[Health]]></category>
|
||||||
|
<category><![CDATA[Misc]]></category>
|
||||||
|
<category><![CDATA[Goals]]></category>
|
||||||
|
<category><![CDATA[Life]]></category>
|
||||||
|
<category><![CDATA[Productivity]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1936</guid>
|
||||||
|
<description><![CDATA[“I don’t have time” is a myth. The statement, “I don’t have time”, really gets under my skin. Why? Because you do have the time. Get up early. Cant? Go to bed earlier. Stop watching TV shows and YouTube channels that do nothing to help you progress in your dreams. Stop playing video games. Stop […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p><img class="alignnone wp-image-1937" src="http://www.donnfelker.com/wp-content/uploads/2017/11/idonthavetime-loic-djim-300x234.jpg" alt="I Don't Have Time" width="641" height="500" srcset="http://www.donnfelker.com/wp-content/uploads/2017/11/idonthavetime-loic-djim-300x234.jpg 300w, http://www.donnfelker.com/wp-content/uploads/2017/11/idonthavetime-loic-djim-768x599.jpg 768w, http://www.donnfelker.com/wp-content/uploads/2017/11/idonthavetime-loic-djim-1024x798.jpg 1024w" sizes="(max-width: 641px) 100vw, 641px" /></p>
|
||||||
|
<p>“I don’t have time” is a myth.</p>
|
||||||
|
<p>The statement, “I don’t have time”, <em>really gets under my skin.</em></p>
|
||||||
|
<p>Why? Because <em>you do have the time</em>.</p>
|
||||||
|
<p>Get up early. Cant? Go to bed earlier.</p>
|
||||||
|
<p>Stop watching TV shows and YouTube channels that do nothing to help you progress in your dreams.</p>
|
||||||
|
<p>Stop playing video games.</p>
|
||||||
|
<p>Stop going out to the bar.</p>
|
||||||
|
<p>Stop wasting time reading news websites, Reddit, surfing Facebook or Instagram for hours.</p>
|
||||||
|
<p>You have the time. Its right there in your hands. <em>Use it</em>.</p>
|
||||||
|
<p>How much time would you get back if you stopped doing all of those things above? You’d be blown away by how much time you’d get back. In fact, let us dig in a little bit deeper …</p>
|
||||||
|
<h2>Watching 45 Days of TV Per Year <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f44e.png" alt="👎" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>
|
||||||
|
<p>The average American spends 3 hours a day watching TV.</p>
|
||||||
|
<p><b>3 HOURS A DAY!</b></p>
|
||||||
|
<p>Some reports show an <a href="https://www.nytimes.com/2016/07/01/business/media/nielsen-survey-media-viewing.html">upwards of five hours a day</a>.</p>
|
||||||
|
<p>Let us be conservative and stick with 3 hours.</p>
|
||||||
|
<p>That’s 21 hours a week!</p>
|
||||||
|
<p>90 hours in a month!</p>
|
||||||
|
<p>1,095 hours in a year.!</p>
|
||||||
|
<p><em>That’s over 45 days of watching TV for 24 hours straight!</em></p>
|
||||||
|
<p>This is just watching TV. This does not include time spent looking at your phone!</p>
|
||||||
|
<p><b>That’s just insane.</b></p>
|
||||||
|
<p>“I don’t have time.”</p>
|
||||||
|
<p> </p>
|
||||||
|
<p><i>Pffft. Whatever.</i></p>
|
||||||
|
<p> </p>
|
||||||
|
<p>No, you do have the time – you’re just choosing not use it for the things you say “You don’t have the time for.”</p>
|
||||||
|
<h2>The magic of time optimization</h2>
|
||||||
|
<p>Is life hard sometimes? Yes, it is. Oh god yes. It can feel completely overwhelming and you might feel like you can’t get a breath. But … you still have time … if you don’t waste it.</p>
|
||||||
|
<p>Single mothers and fathers exist and they make magical things happen. They work multiple jobs, have little or no help from family and they have to do everything themselves. Somehow, they make magic happen.</p>
|
||||||
|
<p>You know what? I bet you most of these folks have “more time” than most.</p>
|
||||||
|
<p><i>Why? How?</i></p>
|
||||||
|
<p>They optimize their life to maximize their time.</p>
|
||||||
|
<p>Furthermore, I bet you they read more books than most too.</p>
|
||||||
|
<p>Imagine being one who catches the bus at 6:30 am after dropping the kids off at early-drop off and/<i>or daycare/</i>preschool. <strong>So what do they do with that next 10–30 minutes of commuting time (before and after work)?</strong> They probably use that next 10-30 minutes to listen to a book or podcast or watch a video tutorial that they downloaded on their phone instead of passively looking out the window or on Facebook<i>Instagram</i>Reddit<i>News</i>etc.</p>
|
||||||
|
<p>They have the time & you have this same time.</p>
|
||||||
|
<p>Maybe you don’t commute via train, maybe you drive to work.</p>
|
||||||
|
<p>Same thing.</p>
|
||||||
|
<p>Use that time to learn, grow, etc. Maybe you work at home? That’s cool. Listen to books/<i>podcasts while driving/</i>walking to the grocery store or dentist/or wherever you’re driving.</p>
|
||||||
|
<p>For example, let’s think about the time in the shower. Could that be put to use? Hell yes, it can. Put an audio book on while you’re in the shower. <em>That’s 10-15 minutes a day. 10-15 minutes a day for 30 days is 5 to 7.5 hours.</em> You can easily listen to a book a month simply by listening to it in the shower. Use the Audible app to download books and listen to them on the go.</p>
|
||||||
|
<p>“I don’t have the time.” Yeah. Ok.</p>
|
||||||
|
<h2>“… but I don’t have time to eat healthy and work out”</h2>
|
||||||
|
<p>Maybe you want to work out and get yourself into better health and don’t have time for the gym. I get it. Do a bodyweight program by any number of fitness trainers 3-5 days a week at home. There a TON of them online for free. Eat salads for lunch. The best shape I got into in my life I worked out two days a week and ate healthy (salads and steamed veggies). The diet did more for me than working out did.</p>
|
||||||
|
<p>Maybe you don’t have a ton of time for meal prep. Ok, I get it. Then follow <a href="http://bradpilon.com/introduction-to-intermittent-fasting/" target="_blank" rel="noopener">intermittent fasting</a> – it helps you learn how to control your hunger and is proven to be very good for your health. Fewer meals to prepare – eating less and improving health? Yes. I’m in. Eat steamed veggies from the microwave for two meals a day with lean grilled meats. Do a meal prep day on Sunday. There are always options.</p>
|
||||||
|
<p>I once knew a girl in college who would cook beans and rice every Sunday and have that for lunch because she didn’t have time to make lunch every day and bring it to college. She did the work on Sundays. She found the time, owned the problem and fixed it – even on the cheap.</p>
|
||||||
|
<h2>Finding Time is Easy</h2>
|
||||||
|
<p>Finding time is easy if you look hard enough. It’s everywhere. 10 minutes here, 15 minutes there. Before you know it you have an hour or two each day you can use.</p>
|
||||||
|
<p>If you feel like you don’t have time try to find all the spaces where you’re not doing anything (dentist office waiting, doctors office waiting, at a kids drama practice, waiting) and then use that time to push the ball a little further down the field. I bring my laptop everywhere, just in case I have a free moment to crank things out. In fact, I’m writing this post at my accountant’s office this AM while he’s preparing some documents for me.</p>
|
||||||
|
<p>I’m not saying to give up that time you spend with your family. That has importance too. Maybe one of your goals is to be a great parent and/or spouse. Then execute on it and find the time to be a great parent. Use the spare time for that. Same for anything else that you find that you want to accomplish. It doesn’t have to be “work” or “business”. If you “don’t have time to walk the dog”, then stop surfing Facebook or Instagram while you’re on the toilet (you know you do it too).</p>
|
||||||
|
<p>The moral of the story is – you do have the time, it’s most likely being wasted on needless activities that provide no real growth value to you.</p>
|
||||||
|
<h2>Tips</h2>
|
||||||
|
<p>One thing I advise is to try to get up earlier – <a href="http://www.businessinsider.com/navy-seals-why-waking-up-early-matters-2016-9" target="_blank" rel="noopener">before anyone else</a>. I’ll admit, it’s not easy. One thing I do the night before is write down a couple of things I want to get done before everyone else gets up (could be work out/run, get task x done, read, work on your project, etc). You get such a head start on the day that you feel positive and happy.</p>
|
||||||
|
<p>Can you do the same at night? Yes, for sure. Maybe you’re a night owl and get most your work/etc stuff done from 9pm-3am. That’s fine too. However, I will say this – when you’re tired, it’s much easier to simply go to bed and miss out on those hours. When you get a head start at the beginning of the day you start off on the right foot. Waiting to get some stuff done at the end of the day can sometimes fall apart (bad day, super tired, made a bad decision by having few too many at happy hour, etc).</p>
|
||||||
|
<p>Next, focus on whatever you want to accomplish and execute until it’s done. Don’t lose focus. Do not get distracted. Kill all external distractions. Complete the task at all costs. Striking an item off a to-do list (even if it is mental) is a huge win. Build upon these wins and snowball them.<br />
|
||||||
|
Be obsessed with your passions and goals. Its ok to be that way. Do you want to be the best parent in the world? Go do it. Don’t let anything stop you. Do you want to be the best long-distance marathon runner? Go do it. Do you want to be the best rheumatologist in the United States? GO. DO. IT.</p>
|
||||||
|
<p>No one is going to give you anything. You have to get it yourself. You have to take the risks. You have to make it happen. To do those things you’ll need to find the time and trust me, you have it.</p>
|
||||||
|
<p> </p>
|
||||||
|
<p>Make it happen.</p>
|
||||||
|
<p> </p>
|
||||||
|
<p> </p>
|
||||||
|
<p><small>Photo credit: <a href="https://unsplash.com/@loic" target="_blank" rel="noopener">@loic</a></small></p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/i-dont-have-time-is-a-myth/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>18</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Android MVVM with DataBinding – Removing Logic from Your Views with BindingAdapters</title>
|
||||||
|
<link>http://www.donnfelker.com/android-mvvm-with-databinding-removing-logic-from-your-views-with-bindingadapters/</link>
|
||||||
|
<comments>http://www.donnfelker.com/android-mvvm-with-databinding-removing-logic-from-your-views-with-bindingadapters/#comments</comments>
|
||||||
|
<pubDate>Fri, 20 Oct 2017 14:10:41 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Development]]></category>
|
||||||
|
<category><![CDATA[Android]]></category>
|
||||||
|
<category><![CDATA[Kotlin]]></category>
|
||||||
|
<category><![CDATA[MVVM]]></category>
|
||||||
|
<category><![CDATA[Testing]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1934</guid>
|
||||||
|
<description><![CDATA[One of the things that’s great about MVVM (I’m using data binding in my implementation) is the lack of the boilerplate that you have to deal with. When working with the MVP pattern you are forced to deal with an obscene amount of get/set boilerplate code. Sure, this does make your UI logic more testable […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p>One of the things that’s great about MVVM (I’m using data binding in my implementation) is the lack of the boilerplate that you have to deal with. When working with the MVP pattern you are forced to deal with an obscene amount of get/set boilerplate code. Sure, this does make your UI logic more testable but it doesn’t get around the fact that there is a lot of boilerplate.</p>
|
||||||
|
<p>While MVVM with Data Binding does remove a good deal of this boilerplate you also run into new issues where logic is now present in the views, like this:</p>
|
||||||
|
<pre class="EnlighterJSRAW" data-enlighter-language="xml"><TextView
|
||||||
|
...
|
||||||
|
android:visibility="@{post.hasComments ? View.Visible : View.Gone}" /></pre>
|
||||||
|
<p>As <a href="https://twitter.com/hitherejoe">Joe Birch</a> accurately pointed out in <a href="https://labs.ribot.co.uk/approaching-android-with-mvvm-8ceec02d5442">his article</a> – this has a code smell and it just feels gross.</p>
|
||||||
|
<p>The logic is now buried in an Android XML view and its near impossible to test unless you’re rigorous about your Espresso tests … and let’s be brutally honest here… <strong>you’re not rigorous about your testing</strong>.</p>
|
||||||
|
<h2>Removing Logic from XML Views with Custom Binding Adapters</h2>
|
||||||
|
<p>Removing logic from XML Views is quite easy with custom BindingAdapters. Early adopter and DataBinding aficionado, <a href="https://twitter.com/lisawrayz">Lisa Wray</a>, <a href="https://plus.google.com/+LisaWrayZeitouni/posts/5DQGiNbne5W">posted about this</a> back in 2015: Pro tip: More data binding — Easy view visibility in XML! I heard you guys l….</p>
|
||||||
|
<p>In short, you create a binding adapter in Java (or Kotlin as I’ve done below) and drop it into your project.</p>
|
||||||
|
<pre class="EnlighterJSRAW" data-enlighter-language="kotlin">@BindingAdapter(“isVisible”)
|
||||||
|
fun setIsVisible(view: View, isVisible: Boolean) {
|
||||||
|
if (isVislble) {
|
||||||
|
view.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
view.visibility = View.GONE
|
||||||
|
}
|
||||||
|
}</pre>
|
||||||
|
<p>The logic for showing a view is now determined by a Boolean value. To use this in an MVVM Data Binding XML View you’d do the following in your view:</p>
|
||||||
|
<pre class="EnlighterJSRAW" data-enlighter-language="xml"><TextView
|
||||||
|
...
|
||||||
|
app:isVisible="@{post.hasComments()}" /></pre>
|
||||||
|
<p>The logic for the hasComments code is now kept inside of the View Model which can be easily unit tested.</p>
|
||||||
|
<h2>Testing the Custom BindingAdapter</h2>
|
||||||
|
<p>We may have removed the logic from the XML view, but we still have code that needs to get tested. Now that the view logic is based upon a Boolean we can easily test this with an Espresso test:</p>
|
||||||
|
<pre class="EnlighterJSRAW" data-enlighter-language="null">@Test
|
||||||
|
fun isVisibleShouldBeEasilyControlledWithABoolean() {
|
||||||
|
val v = View(InstrumentationRegistry.getTargetContext())
|
||||||
|
setIsVisible(v, true) // visible
|
||||||
|
assertThat(v.visibility).isEqualTo(View.VISIBLE)
|
||||||
|
|
||||||
|
setIsVisible(v, false) // gone
|
||||||
|
assertThat(v.visibility).isEqualTo(View.GONE)
|
||||||
|
}</pre>
|
||||||
|
<p>You’re going to put this in your androidTest folder.</p>
|
||||||
|
<p>I know what you’re thinking – this is an Espresso Test, it runs slow. Not really. You’d be surprised at how fast this test runs as it does not need to fire up an activity and start clicking on buttons/etc.</p>
|
||||||
|
<p>You now have logic that can (and is) tested via a simple test. Your display logic is then kept inside of your View Model (does a post have comments or not, that’s a fairly simple true/false boolean).</p>
|
||||||
|
<p>Furthermore … your ViewModel is not riddled with Android package references (which can make it harder to test). Which brings me to …</p>
|
||||||
|
<h2>Keep the ViewModel free of Android Dependencies</h2>
|
||||||
|
<p>One goal that I have is to keep the View Model free from Android Dependencies if at all possible. This allows me to utilize JUnit unit tests for a quick feedback loop. I can write, test and iterate much faster with a unit test than I can with an Espresso based test.</p>
|
||||||
|
<p>Yes, you could put some of this logic into the View Models, but I find keeping it as clean a possible provides for the best possible outcome when it comes to testing.</p>
|
||||||
|
<p>As with everything, there are always caveats to this – using resource identifiers (as they’re only integers, etc). My rule of thumb is to try to avoid the Android packages in my view models. That way it makes testing a snap.</p>
|
||||||
|
<p> </p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/android-mvvm-with-databinding-removing-logic-from-your-views-with-bindingadapters/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>3</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Make the Most of Your Time</title>
|
||||||
|
<link>http://www.donnfelker.com/make-the-most-of-your-time/</link>
|
||||||
|
<comments>http://www.donnfelker.com/make-the-most-of-your-time/#comments</comments>
|
||||||
|
<pubDate>Thu, 14 Sep 2017 18:04:00 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Business]]></category>
|
||||||
|
<category><![CDATA[Health]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1931</guid>
|
||||||
|
<description><![CDATA[Photo: Uroš Jovičić Recently, a friend of mine asked if I wanted to partake in a small side project with him. Unfortunately, I didn’t have the time to commit to the project so I politely declined. He responded with: Dude I totally understand. I’m single at the moment and pretty much have my ass alone […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p><img class="alignnone wp-image-1932" src="http://www.donnfelker.com/wp-content/uploads/2017/09/sands-of-time-1024x768.jpg" alt="Make the Most of Your Time" width="681" height="423" /><br />
|
||||||
|
<a style="background-color: black; color: white; text-decoration: none; padding: 4px 6px; font-family: -apple-system, BlinkMacSystemFont, 'San Francisco', 'Helvetica Neue', Helvetica, Ubuntu, Roboto, Noto, 'Segoe UI', Arial, sans-serif; font-size: 12px; font-weight: bold; line-height: 1.2; display: inline-block; border-radius: 3px;" title="Download free do whatever you want high-resolution photos from Uroš Jovičić" href="https://unsplash.com/@urosjovicic96?utm_medium=referral&utm_campaign=photographer-credit&utm_content=creditBadge" target="_blank" rel="noopener noreferrer"><span style="display: inline-block; padding: 2px 3px;">Photo: Uroš Jovičić</span></a></p>
|
||||||
|
<p>Recently, a friend of mine asked if I wanted to partake in a small side project with him. Unfortunately, I didn’t have the time to commit to the project so I politely declined.</p>
|
||||||
|
<p>He responded with:</p>
|
||||||
|
<blockquote><p>Dude I totally understand. I’m single at the moment and pretty much have my ass alone to take care of and I can barely remain afloat. You are a rockstar. I don’t know how the hell you can do it.</p></blockquote>
|
||||||
|
<p>What he’s saying is that he has no idea how I get so much stuff done with my situation (Married, 2 kids, consulting, founding a company, a podcast, presenting, writing, 3 dogs, 3 cats, etc etc etc).</p>
|
||||||
|
<p>So how do I get so much stuff done?</p>
|
||||||
|
<p><em>Time optimization, 100%.</em></p>
|
||||||
|
<p>Don’t get me wrong … I’m not some zen-productivity-master, not at all. I just value my time.</p>
|
||||||
|
<p>The way I see it is like this:</p>
|
||||||
|
<p>Time<strong> <em>is your life.</em></strong></p>
|
||||||
|
<h3>Life is Finite</h3>
|
||||||
|
<p>One time I did an exercise that scared me: I took a look at the average life span of a US Male (~78 years) and I calculated the days I had left in my life.</p>
|
||||||
|
<p><em>Hint: It’s not that much. <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f62f.png" alt="😯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></em></p>
|
||||||
|
<p>After seeing that number it catapulted me into action. To check yours go here: <a href="http://www.countmydays.com/" target="_blank" rel="noopener">http://www.countmydays.com/</a></p>
|
||||||
|
<p>I’m not being morbid about life, it’s merely factual.</p>
|
||||||
|
<p> </p>
|
||||||
|
<h3>Seeing the Number of Days Left in Your Life is Scary</h3>
|
||||||
|
<p>My friend replied back with a shocked face:</p>
|
||||||
|
<blockquote><p>I calculated the waking hours I had left in my life.</p>
|
||||||
|
<p>Holy cow, this freaks me out … <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f62e.png" alt="😮" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p></blockquote>
|
||||||
|
<p>I know the feeling. Every time I look at the number, it’s smaller. <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f4c9.png" alt="📉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> It never goes up. <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f622.png" alt="😢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
|
||||||
|
<p>Not many people look into how many days are left in their life. They should though – as it’s a humbling exercise. I think it’s important as it helps keep yourself grounded and keep your ambitions high because, well, your time is limited. You have less of it than you think.</p>
|
||||||
|
<p>There’s a popular blog post titled <a href="https://waitbutwhy.com/2015/12/the-tail-end.html"><em>The Tail End</em></a> in which the author draws little pictures of how many months, weeks and days he has left. He goes on further to outline how much time we have left with loved ones, time left doing things you love, face time with children, etc. Read it, it’s worth your time (pun intended).</p>
|
||||||
|
<p>You probably never thought about this, but around 90% of the time that you will have spent with your parents was done from the ages of 0-18. So if you have kids – remember this. My daughter just turned 9 and I realized that I’m already 45% through the average time that I will spend with her in our combined lives. That really sucks, but it also puts urgency into what matters – being with my children as much as possible and not taking it for granted.</p>
|
||||||
|
<h3><em>So … Why am I harping on this so much? </em></h3>
|
||||||
|
<p>I’m doing so because your time here is finite. You only have so many at bats and then the game is over. That’s it. All done. Why not give it all you have, all the time? Why not chase those ambitions and dreams? Fix those broken relationships? Say sorry instead of being stubborn. You get what I’m saying.</p>
|
||||||
|
<p>The value of my time is a primary driver in my decision to work remotely. I know I only have so long with my kids, my wife, my family. Why waste that valuable resource commuting to and from work just to sit at a desk? To me, that’s absolutely insane.</p>
|
||||||
|
<p>Unfortunately, even though this information is quite eye opening, sometimes people will still avoid doing what they want to do <strong>due to fear</strong>.</p>
|
||||||
|
<p>Fear of failure.</p>
|
||||||
|
<p>Fear of rejection.</p>
|
||||||
|
<p>Fear of success (yes, it’s <a href="http://99u.com/articles/14347/are-you-subconsciously-afraid-of-success" target="_blank" rel="noopener">really a thing</a>).</p>
|
||||||
|
<h3>Break Down Your Fears and Do It</h3>
|
||||||
|
<p>One of my favorite things to use to combat fear is to utilize a technique known as “<em>Fear Setting</em>“. I picked this up from Tim Ferriss, and you can watch a video on it here – <a href="https://www.ted.com/talks/tim_ferriss_why_you_should_define_your_fears_instead_of_your_goals">Fear Setting by Tim Ferriss (Ted Talk)</a>. It helps you determine what you’re scared of and helps you realize it’s usually not that big of a deal. The video is very important, so please take a few minutes and watch it. Queue it up while you eat your lunch, etc. One of the quotes he uses in the talk is this one –</p>
|
||||||
|
<blockquote><p>We suffer more often in imagination than in reality. – Seneca</p></blockquote>
|
||||||
|
<p>This is so true. Using quotes like this and a mix of Stoicism to remind you of important things in life makes it easy to appreciate what you have, and how much time you have left and what you can do to maximize it.</p>
|
||||||
|
<p>Lastly, Steve Jobs has a quote that I often refer to:</p>
|
||||||
|
<blockquote><p>Remembering that I’ll be dead soon is the most important tool I’ve ever encountered to help me make the big choices in life. Because almost everything — all external expectations, all pride, all fear of embarrassment or failure — these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart. – <a href="https://www.youtube.com/watch?v=UF8uR6Z6KLc">Steve Jobs, Stanford 2005 Commencement Speech</a></p></blockquote>
|
||||||
|
<p>I’m not a huge Steve Jobs fan, but this speech really helped ground me. I have a recurring calendar event every 3 months to watch <a href="https://www.youtube.com/watch?v=UF8uR6Z6KLc" target="_blank" rel="noopener">this speech</a>. It always helps course correct me when I’m wandering in the sea of life.</p>
|
||||||
|
<p>Yeah, I know … you’ve heard that life is short, but seeing it in numbers is humbling and action inspiring, no doubt.</p>
|
||||||
|
<p>So, how do I get so much done?</p>
|
||||||
|
<p>I remind myself that<em> life is finite.</em></p>
|
||||||
|
<p> </p>
|
||||||
|
<hr />
|
||||||
|
<p><em>I’d like to thank <a href="http://kaush.co" target="_blank" rel="noopener">Kaushik Gopal</a> for reviewing this article.</em></p>
|
||||||
|
<p> </p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/make-the-most-of-your-time/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>5</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>TDD Your UI Layer – #uitestsmatter</title>
|
||||||
|
<link>http://www.donnfelker.com/tdd-your-ui-layer/</link>
|
||||||
|
<comments>http://www.donnfelker.com/tdd-your-ui-layer/#comments</comments>
|
||||||
|
<pubDate>Tue, 24 Jan 2017 19:43:48 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Development]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1917</guid>
|
||||||
|
<description><![CDATA[A recent conversation developed on twitter when I posted a link to a Caster.IO lesson where I talk about using TDD to drive your UI development. The problem? Some folks feel that you cannot TDD your UI layer with a functional testing framework like Espresso. I disagree. Why? Well, before I dive into details, I […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p dir="auto"><img class="alignnone size-full wp-image-1921" src="http://www.donnfelker.com/wp-content/uploads/2017/01/tdd-your-ui-layer.jpg" alt="TDD Your UI Layer" width="960" height="540" srcset="http://www.donnfelker.com/wp-content/uploads/2017/01/tdd-your-ui-layer.jpg 960w, http://www.donnfelker.com/wp-content/uploads/2017/01/tdd-your-ui-layer-300x169.jpg 300w, http://www.donnfelker.com/wp-content/uploads/2017/01/tdd-your-ui-layer-768x432.jpg 768w" sizes="(max-width: 960px) 100vw, 960px" /></p>
|
||||||
|
<p dir="auto">A recent conversation developed on twitter when I posted a link to a <a href="https://caster.io" target="_blank">Caster.IO</a> lesson where I talk about using TDD to drive your UI development.</p>
|
||||||
|
<p dir="auto">The problem?</p>
|
||||||
|
<p dir="auto"><em>Some folks feel that you cannot TDD your UI layer with a functional testing framework like Espresso.<br />
|
||||||
|
</em><br />
|
||||||
|
<strong>I disagree. </strong></p>
|
||||||
|
<p dir="auto">Why? Well, before I dive into details, I thinks it’s only pertinent to re-establish what TDD is.</p>
|
||||||
|
<h3>What is TDD?</h3>
|
||||||
|
<p dir="auto">TDD by definition is: Test Driven Development. TDD is a <em>software development process.<br />
|
||||||
|
</em><br />
|
||||||
|
<strong>Key word: <em>process.</em></strong></p>
|
||||||
|
<p dir="auto">The process of TDD is comprised of 5 steps:</p>
|
||||||
|
<ol>
|
||||||
|
<li><strong>Add a test – </strong>each new feature, update, fix, etc starts with writing a test to cover that new code/change/etc.</li>
|
||||||
|
<li><strong>Run all tests</strong> and see if the new tests fails (typically to save time, I’ll run the new test in isolation to speed things up, then loop back later to run all of them to check for regressions).</li>
|
||||||
|
<li><strong>Write the code</strong> (this is what you orignally needed/wanted to do anyway – implement a feature/etc).</li>
|
||||||
|
<li><strong>Run the test(s)</strong> – Again, typically I’ll run my single new test in isolate to speed up this process a bit. If it passes, I run all the tests to see if I broke anything.</li>
|
||||||
|
<li><strong>Refactor</strong> – After all tests are passing, you now have a safety net to catch you in case you make a mistake. At this time you can now start refactoring to change the desired implementation of the code.</li>
|
||||||
|
</ol>
|
||||||
|
<p> </p>
|
||||||
|
<p dir="ltr">Then … <strong>repeat the steps for each new feature/update/fix/etc</strong>. You may need to do this many times over. One test for the “happy path” (when everything works as you hope/expect it would), one for all the edge cases, one for null value paths, one for catastrophic failures, etc etc. You usually end up with may tests covering all the different expected (and unexpected outcomes) for that given code path.</p>
|
||||||
|
<h3>So, how do you TDD your UI Layer?</h3>
|
||||||
|
<p dir="ltr">Let us keep the full TDD process in mind when walking through this example …</p>
|
||||||
|
<p dir="ltr">This means writing your test first, even before particular UI elements exist. In this case I’ll do it with <a title="Espresso Docs" href="https://google.github.io/android-testing-support-library/docs/espresso/" target="_blank">Espresso</a>, the defacto Android UI testing framework along with <a href="http://junit.org/junit4/" target="_blank">jUnit</a> as the driver.</p>
|
||||||
|
<p dir="ltr"><strong>Step 1: Create the Test</strong></p>
|
||||||
|
<p dir="ltr">I’ll create a test like so:</p>
|
||||||
|
<p><img class="aligncenter" src="http://www.donnfelker.com/wp-content/uploads/2017/01/HomeTests_java_-_skyfit-android_-____Documents_Agilevent_clients_Skyfit_source_Android_skyfit-android_.png" width="1262" height="200" align="middle" /></p>
|
||||||
|
<p dir="ltr">As you can see, the <em>buttonx</em> id does not exist yet (this is why it is red). At this point I’d go implement the button and we’d then see something like this:</p>
|
||||||
|
<p><img class="aligncenter" src="http://www.donnfelker.com/wp-content/uploads/2017/01/ExampleInstrumentedTest_java_-_UIUnitTestExample_-____scratch_UIUnitTestExample_.png" width="1204" height="172" align="middle" /></p>
|
||||||
|
<p dir="ltr">The id, <em>buttonx</em>, is now found (it changed colors and we can navigate to its definition now). How I implemented it is not important as it’s an implementation detail and we’re worried about the TDD process here. I can compile successfully. Ok, now I can move onto step 2 of the TDD process:</p>
|
||||||
|
<p dir="ltr"><strong>Step 2: Run The Test<br />
|
||||||
|
</strong>I run the test and I expect it to fail because the text “Hello from buttonx” does not exist. If it does not fail (meaning that it passes) I have a problem and I need to dig into that. Let’s assume it fails and at that point I’m ready for Step 3 …</p>
|
||||||
|
<p dir="ltr"><strong>Step 3: Write The Code<br />
|
||||||
|
</strong>At this point I’m able to write the code that is needed in order to get this code to pass (whatever that may be – adding a click listener to buttonx and having it output “Hello from buttonx” somewhere on the screen). Then move onto step 4 …</p>
|
||||||
|
<p dir="ltr"><strong>Step 4: Run the test(s)<br />
|
||||||
|
</strong>We run the test(s) to make sure that the tests passes and to make sure that other tests still pass. This is integral to the TDD process. You will want to run all the tests (usually at least all the tests that interact with this component/screen/etc) to catch any regressions that may popup because of this new code you have added. After everything is green (passing) I’ll move onto Step 5 …</p>
|
||||||
|
<p dir="ltr"><strong>Step 5: Refactor<br />
|
||||||
|
</strong>This is where I’d come in and clean up the code to make it more proper. Maybe make things more private, final, or extract methods, etc. Maybe I find an area of code that I can improve the design on/etc. If thats the case; for example maybe I’ve refactored some logic into a new class I’d introduce a new TDD test process for a new refactoring/etc. When would that happen or why? Maybe I see that I’ve duplicated code in a few places and I can extract this into another class. At that point I’d probably want some tests around that class so I’d go through the TDD process with that class.</p>
|
||||||
|
<p dir="ltr">I’ve followed TDD to implement a feature/change a chunk of code/fix a bug/etc that <strong>is on the UI using Espresso</strong>.</p>
|
||||||
|
<p dir="ltr"><em>Most importantly – I used TDD a process to implment it.</em></p>
|
||||||
|
<p> </p>
|
||||||
|
<h3>Arugments Against TDD in this Context</h3>
|
||||||
|
<p dir="ltr">Sure, this example is fairly contrived and it’s super simple, and it’s that way for a reason – I’m trying to demonstrate a point. <em><strong>TDD is a software development process</strong></em>. Alas, there are some folks who feel that TDD represents something different. Let’s chat about those opositional points of view.</p>
|
||||||
|
<h4>TDD should not use a UI Testing Framework</h4>
|
||||||
|
<p dir="ltr">I completely disagree with this because <strong><em>TDD is a software development process</em></strong>. The UI is part of the software and if you want to develop it using TDD then you can. Step 1 states that we need to write a test. Does it matter what framework we use to write it in? No. IMO, any test is better than no test (but thats another topic for another day). Looking at the <a href="https://en.wikipedia.org/wiki/Test-driven_development" target="_blank">Wikipedia entry for TDD</a> I found the following under the definition of Part 1 – Add a test:</p>
|
||||||
|
<blockquote><p>The developer […] can write the test in whatever testing framework is appropriate to the software environment.</p></blockquote>
|
||||||
|
<p dir="ltr">We’re writing the UI, therefore Espresso is an appropriate testeing framework to use as it is a UI testing framework. Right tool. Right job.</p>
|
||||||
|
<p dir="ltr">The reason most folks oppose following TDD with UI testing is because it’s slow, which brings me to the next item …</p>
|
||||||
|
<h4>When doing TDD, all tests should be fast</h4>
|
||||||
|
<p dir="ltr">I totally can relate to this one. I’ve been part of teams that have HUGE Espresso/UI test suites and they can take hours upon hours to complete. Running the full test suite can be a pain and it’s simply not feasible. In this case <a href="https://caster.io/lessons/episode-2-android-continuous-integration-with-circleci/" target="_blank">I rely on CI</a> to run full test suite. During development though, for steps 2 and 4 (where we run the tests) I’ll run a small subset of tests. Usually the test(s) that I’m writing or the small suite of tests in that test file/package that is pertinent. This allows me to remain nimble. Typically this is anywhere from one to twenty tests (give or take).</p>
|
||||||
|
<p dir="ltr">I agree, this is slow compared to JVM unit tests that can run at hundreds (if not thousands) per second. However, I’m doing UI development here so given the state that UI testing is in (for Android) we’re unfortunately stuck with some slower tests. It is what it is, but the TDD process can still be used.</p>
|
||||||
|
<h4>Doing TDD on the UI is an Anti-Pattern</h4>
|
||||||
|
<p dir="ltr">I’ve seen this mentioned a few times, and it’s mainly because <em>having slow running tests is an anti-pattern</em> … but as I stated above, that’s the situation were in. How do you get around that though? Extract your logic out into something like the <a href="https://caster.io/courses/mvp/" target="_blank">MVP pattern</a>. You can then test the majority of your code in fast jvm tests. You’ll still need a thin layer of UI tests to make sure your UI works as you (and your customers) expect it to.</p>
|
||||||
|
<p dir="ltr">I say this because <strong><em>you need to verify what your customer is going to see</em></strong> … because …</p>
|
||||||
|
<p dir="ltr">If your apps UI fails/crashes/doesnt do what it is supposed and it does not do what the customer wants, they’ll think its garbage.<em> It doesnt matter if your app is beautifully architected with fancy patterns and so forth. If the UI doesnt work and do its job as expected, the customer is unhappy and will most likely not use your app.</em> At that point all your work is moot.</p>
|
||||||
|
<p dir="ltr">How many times have you used an app and initially it looked great, but then when you started using it … well … it just felt like things were wrong. What was your reaction then? Most likely a negative one. You probably didnt use the app or even uninstalled it right away. I definitely don’t want that and I’m sure you don’t either. #uitestsmatter</p>
|
||||||
|
<p dir="ltr">What I’m trying to say is, UI tests are extremely useful, even if its a thin layer and that layer can be test driven thorugh TDD.</p>
|
||||||
|
<h4>… but, I heard TDD is Dead</h4>
|
||||||
|
<p dir="ltr">This has been going around for the last few years. I’ve been through the TDD inception/rediscovery in 2003 by <a href="https://twitter.com/KentBeck" target="_blank">Kent Beck</a> and seen it rise and fall and rise again and so forth. It’s cyclical. One moment it’s in favor, the next its not. <em>The hard part is</em> … <strong>TDD is hard</strong>. With some languages TDD is seen as a way to help improve the overall design of the app (which is usually the case with statically typed languages like Java). Dynamic languages have some other benefits when it comes to testing and mocking that statics do not (but they have their own downfalls too, which I wont get into here).</p>
|
||||||
|
<p dir="ltr">Back in 2014, <a href="https://martinfowler.com/" target="_blank">Martin Fowler</a>, <a href="https://twitter.com/KentBeck" target="_blank">Kent Beck</a> and <a href="https://twitter.com/dhh" target="_blank">DHH</a> hosted a series of online videos where they discussed if TDD was dead or not. You can find them here – <a href="https://martinfowler.com/articles/is-tdd-dead/" target="_blank">Is TDD Dead?</a> I’ll let you decide if TDD is dead. Each person in the group had great points and at times I agreed separately with each one of them on different topics.</p>
|
||||||
|
<p dir="ltr">I’m not here to argue if TDD is dead. I’ll leave that up to you to determine.</p>
|
||||||
|
<p dir="ltr">However, I do hope that this article does prove the point that TDD can be possible with UI development.</p>
|
||||||
|
<p> </p>
|
||||||
|
<h3>So … Is TDD with UI Development Possible?</h3>
|
||||||
|
<p dir="ltr">Yes.</p>
|
||||||
|
<p dir="ltr">Remember, <em><strong>TDD is a software development process</strong></em> that can be applied anywhere in software.</p>
|
||||||
|
<p dir="ltr">As always, please leave comments below. Thank you for reading. <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/tdd-your-ui-layer/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>17</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Automating Screenshots: Simplifying Internationalization on Android</title>
|
||||||
|
<link>http://www.donnfelker.com/simplifying-internationalization-on-android/</link>
|
||||||
|
<comments>http://www.donnfelker.com/simplifying-internationalization-on-android/#comments</comments>
|
||||||
|
<pubDate>Thu, 11 Feb 2016 17:45:47 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Development]]></category>
|
||||||
|
<category><![CDATA[Mobile]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1911</guid>
|
||||||
|
<description><![CDATA[I’ve worked on some fairly large internationalized apps (50MM+ installs on each app) and on each app I’ve always had a problem with internationalization. It presents its own set of challenges. If you have not internationalized an app before you’ll quickly realize that your app design may not fit various locales – especially when text widgets […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p>I’ve worked on some fairly large internationalized apps (50MM+ installs on each app) and on each app I’ve always had a problem with internationalization. It presents its own set of challenges. If you have not internationalized an app before you’ll quickly realize that your app design may not fit various locales – especially when text widgets are horizontally adjacent to each other. The text will eventually overlap or just look wonky and this can create odd UI bugs. You’ll find this out during testing, or as in my experience, when someone reports an odd text widget is overlapping another part of the UI. Finding these issues usually resulted in having your QA team go through each screen in the app to visually inspect the app for each locale. An optimal solution would be to visualize all of the different screens in the different locales so that it would be easy to inspect. Unfortunately that, solution did not exist …</p>
|
||||||
|
<p>While there is no silver bullet for this situation, there is a new tool that can help with this process (which also has ancillary uses as well).</p>
|
||||||
|
<p>I recently had the honor to work with the Fabric team – the same trusted team who brought us the Crashlytics tool that we all rely on. They were looking for some feedback on a new open source tool called <strong>screengrab</strong>. I got to try it out, and after some setup, I had an “Aha!” moment that made me want the tool immediately. It’s a tool that any pragmatic Android developer should evaluate as a possible candidate for their Android development toolbox – especially if your app is internationalized.</p>
|
||||||
|
<p>Let me explain why …</p>
|
||||||
|
<h3>What is screengrab and why should I care?</h3>
|
||||||
|
<p>Put simply, it is a command line tool that helps you take screenshots of your application at desired execution points in your functional android tests (Espresso) … in any locale.</p>
|
||||||
|
<p><img class="alignnone size-full wp-image-1912" src="http://www.donnfelker.com/wp-content/uploads/2016/02/running-screengrab.gif" alt="running-screengrab" width="800" height="457" /></p>
|
||||||
|
<p> </p>
|
||||||
|
<p> </p>
|
||||||
|
<h4>A screenshot tool? Really? Any Locale? Why Should I care about that?</h4>
|
||||||
|
<p>Therein lies the magic …</p>
|
||||||
|
<p>One thing you notice during the localization effort is that during design and development strings that fit in one language (English for me) do not necessarily translate well to other languages. Meaning that a five-letter word in English may translate to a twenty letter word in another language.</p>
|
||||||
|
<p>This is problematic when you are dealing with horizontal space. Longer text entries will overflow onto other widgets and you’ll have a problem.</p>
|
||||||
|
<p>As stated above, you often don’t realize it until it’s too late because manually testing your application on various locales is difficult and extremely time intensive.</p>
|
||||||
|
<h4>How Does screengrab Help?</h4>
|
||||||
|
<p>The screengrab tool will help automate the process of visually inspecting the various locale output of your app. You can configure screengrab to load up different locales, run all the UI tests and take screenshots during the execution of the test on various devices and configurations at the same time … and then ….</p>
|
||||||
|
<p><em>Screengrab will output all of the screenshot files for each locale for you. You can then use those files to quickly visually inspect if there are in fact visual problems with your application and locales. </em></p>
|
||||||
|
<p>Simply scroll through the files and check to see if anything is broken.</p>
|
||||||
|
<p>This can result in huge time savings when you make a feature change, add a new screen, etc.</p>
|
||||||
|
<h4>How Do I Install It and Use it?</h4>
|
||||||
|
<p>As usual, the Fabric team is making this as easy as possible. It’s one file to setup after <a href="https://github.com/fastlane/screengrab" target="_blank">the installation</a> that anyone on your team can run once it’s checked into github (setup once, setup everyone forever).</p>
|
||||||
|
<p>Once installed you can start taking screenshots in your tests with the following Screengrab.screenshot(“screenshot_name”);</p>
|
||||||
|
<p><pre data-enlighter-language="java" class="EnlighterJSRAW">@Test
|
||||||
|
public void testTakeScreenshot() {
|
||||||
|
Screengrab.screenshot("before_button_click");
|
||||||
|
|
||||||
|
onView(withId(R.id.fab)).perform(click());
|
||||||
|
|
||||||
|
Screengrab.screenshot("after_button_click");
|
||||||
|
}</pre></p>
|
||||||
|
<p>The above code is a jUnit 4 test that allows you to take a screenshot before an action with a the tag “before_button_click”. This tag will show up on the screenshot so you can trace the execution of your test and screenshots.</p>
|
||||||
|
<p>Then we click on a button, then take another screenshot.</p>
|
||||||
|
<p>Almost done …</p>
|
||||||
|
<h4>Configuring Various Locales</h4>
|
||||||
|
<p>Now, lets assume you have mulitpe locales and you want to test those various locales and see the screenshot results. To do that you’ll need to provide some configuration values in the screengrabfile.</p>
|
||||||
|
<p>The screengrabfile was generated when you installed screengrab. You’ll want to add the following information to the screengrab file:</p>
|
||||||
|
<p><pre data-enlighter-language="ruby" class="EnlighterJSRAW"># locales to test
|
||||||
|
locales ['en-US', 'it-IT']
|
||||||
|
|
||||||
|
# clear all previously generated screenshots in your local output directory before creating new ones
|
||||||
|
clear_previous_screenshots true</pre></p>
|
||||||
|
<p>This configures screengrab to run the US Ensligh locale and the Italian locale.</p>
|
||||||
|
<h4>Now Lets Run It</h4>
|
||||||
|
<p>You’ll need to make sure you’ve built your application so that you have an application APK and the test APK. Build that with the following command:</p>
|
||||||
|
<p><code data-enlighter-language="shell" class="EnlighterJSRAW">$&amp;gt; ./gradlew assembleDebug assembleAndroidTest</code></p>
|
||||||
|
<p>Now that the application and test app are built you’re ready to kick off screengrab. Execute the following command:</p>
|
||||||
|
<p><code data-enlighter-language="shell" class="EnlighterJSRAW">$&amp;gt; screengrab</code></p>
|
||||||
|
<p>This will fire off your tests in each locale and you’ll see your device(s) reacting and your console going wild, as this gif showcases:</p>
|
||||||
|
<div id="attachment_1913" style="max-width: 310px" class="wp-caption alignnone"><img class="wp-image-1913 size-medium" src="http://www.donnfelker.com/wp-content/uploads/2016/02/screengrab-output-300x240.png" alt="screengrab-output" width="300" height="240" srcset="http://www.donnfelker.com/wp-content/uploads/2016/02/screengrab-output-300x240.png 300w, http://www.donnfelker.com/wp-content/uploads/2016/02/screengrab-output-1024x819.png 1024w" sizes="(max-width: 300px) 100vw, 300px" /><p class="wp-caption-text">(Click for larger)</p></div>
|
||||||
|
<p>When screengrab is done your screenshots will be stored in the <i>fastlane/metadata/android/images</i> directory of where you ran the <strong>screengrab</strong> command.</p>
|
||||||
|
<h4>View The Results</h4>
|
||||||
|
<p>Viola! Open the file to see how everything went. Here’s an example:</p>
|
||||||
|
<div id="attachment_1913" style="max-width: 310px" class="wp-caption alignnone"><a href="http://www.donnfelker.com/wp-content/uploads/2016/02/screengrab-output.png"><img class="wp-image-1913 size-medium" src="http://www.donnfelker.com/wp-content/uploads/2016/02/screengrab-output-300x240.png" alt="screengrab-output" width="300" height="240" srcset="http://www.donnfelker.com/wp-content/uploads/2016/02/screengrab-output-300x240.png 300w, http://www.donnfelker.com/wp-content/uploads/2016/02/screengrab-output-1024x819.png 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">(Click image for larger resolution)</p></div>
|
||||||
|
<p> </p>
|
||||||
|
<h3>What else can I use this for?</h3>
|
||||||
|
<p>The screengrab tool integrates with the <a href="https://github.com/fastlane/" target="_blank">Ffastlane toolsuite</a> right out of the box.</p>
|
||||||
|
<p>It’s fairly new for Android, so if you haven’t heard about it I totally get it. Here’s a quick synopsis – fastlane lets you, as a developer or release manager, automate your deployment pipeline. From integrating with <a href="http://fragmentedpodcast.com/episodes/12/" target="_blank">continuous integration</a> taking screenshots, to placing them into device frames (currently iOS only though, hopefully Android soon! Hint Hint Fabric team!), to upload the files to Google Play automatically. Fastlane helps you automate the deployment process of your Android apps. <a href="https://fastlane.tools/" target="_blank">Check out fastlane</a> for more detailed info.</p>
|
||||||
|
<p>The screengrab tool has a few additional use cases:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Design/Product Manager Review
|
||||||
|
<ul>
|
||||||
|
<li>Keep your product and design teams up to date with all of the screens in your application on a per build basis.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Automate Screenshots for release</li>
|
||||||
|
<li>Automate Screenshot automation for internal dog fooding and review processing with other tools.</li>
|
||||||
|
<li>… and of course, to validate what might have gone wrong during a test.</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Does this replace my other screen capture tooling?</h3>
|
||||||
|
<p>No, screengrab complements the existing toolchain that is out there. If you need/want to use your other solutions, feel free to keep using it. Screengrab is just another tool in your toolbox.</p>
|
||||||
|
<h3>Pragmatic Development Tooling</h3>
|
||||||
|
<p>I’m very pragmatic in my day to day development. When I do internationalize my next app (which I’m actually doing in the next month or two) I will be reaching for screengrab as the tool to help sanity check my work.</p>
|
||||||
|
<p>Why?</p>
|
||||||
|
<p>It’s simple. It’s easy. It helps me solve a problem and it gets out of my way. I don’t need to write the tool myself. It just works.</p>
|
||||||
|
<p>As with anything new, it has a purpose and it now occupies a space in my toolbox. Maybe it will help you save some time too.</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/simplifying-internationalization-on-android/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>5</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>The Rule of Thirds</title>
|
||||||
|
<link>http://www.donnfelker.com/the-rule-of-thirds/</link>
|
||||||
|
<comments>http://www.donnfelker.com/the-rule-of-thirds/#comments</comments>
|
||||||
|
<pubDate>Fri, 05 Feb 2016 18:23:44 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Business]]></category>
|
||||||
|
<category><![CDATA[Health]]></category>
|
||||||
|
<category><![CDATA[Marketing]]></category>
|
||||||
|
<category><![CDATA[Misc]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1906</guid>
|
||||||
|
<description><![CDATA[Photo by Aaron Escobar via Creative Commons I learned one simple thing years ago that helped me more than I think anything else I’ve learned in awhile. What is it? You can’t make everyone happy.   I’ve tried. It just doesn’t work. When you do try to make everyone happy you eventually end up feeling […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1908" src="http://www.donnfelker.com/wp-content/uploads/2016/02/ducks.jpg" alt="Photo by Aaron Escobar via Creative Commons" width="640" height="427" srcset="http://www.donnfelker.com/wp-content/uploads/2016/02/ducks.jpg 640w, http://www.donnfelker.com/wp-content/uploads/2016/02/ducks-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /><small>Photo by <a href="https://www.flickr.com/photos/aaronescobar/">Aaron Escobar</a> via <a href="https://creativecommons.org/licenses/by/2.0/">Creative Commons</a></small></p>
|
||||||
|
<p>I learned one simple thing years ago that helped me more than I think anything else I’ve learned in awhile.</p>
|
||||||
|
<p>What is it?</p>
|
||||||
|
<blockquote><p>You can’t make everyone happy.</p></blockquote>
|
||||||
|
<p> </p>
|
||||||
|
<p>I’ve tried. It just doesn’t work.</p>
|
||||||
|
<p>When you do try to make everyone happy you eventually end up feeling <strong>defeated and burned out</strong>. At the end of the day you’ve wasted part of your life on trying to please people who do not want to be pleased.</p>
|
||||||
|
<p>I eventually learned to accept what I call the rule of thirds. I’m not the first one to come up with this, but it is very useful so I thought I’d share it here.</p>
|
||||||
|
<h3>The Rule of Thirds</h3>
|
||||||
|
<p>The rule of thirds is a mental system which you can apply to your day to day life to help alleviate the mental load of worrying about making everyone happy.</p>
|
||||||
|
<p><strong>The rule of thirds is as follows …<br />
|
||||||
|
</strong>When you create something in life (a business, products, a presentation, public speaking, an idea, something at work, etc – it doesn’t matter .. its anything) people are going to react in one of three ways:</p>
|
||||||
|
<ul>
|
||||||
|
<li>1/3 of people are going to be positive about it</li>
|
||||||
|
<li>1/3 of people are going to be indifferent about it</li>
|
||||||
|
<li>1/3 of people are going to be negative about it</li>
|
||||||
|
</ul>
|
||||||
|
<p>As soon as you realize that this is the way the world works, the easier things become.</p>
|
||||||
|
<p>Give a presentation on XYZ Topic at your local MeetUp? Most may like it, some may hate it, and some are indifferent.</p>
|
||||||
|
<p>You can’t make everyone happy … and that’s ok.</p>
|
||||||
|
<p>Thats why this world is great. We all have different opinions, emotions and things we enjoy. Everyone is unique.</p>
|
||||||
|
<p>So the next time someone trolls you online about something you’ve done, just realize what bucket they’re in and move on with your life. Don’t let it disrupt your day.</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/the-rule-of-thirds/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>2</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Why Podcasts Have Become Popular</title>
|
||||||
|
<link>http://www.donnfelker.com/why-podcasts-have-become-popular/</link>
|
||||||
|
<comments>http://www.donnfelker.com/why-podcasts-have-become-popular/#comments</comments>
|
||||||
|
<pubDate>Mon, 04 Jan 2016 02:18:56 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Business]]></category>
|
||||||
|
<category><![CDATA[Development]]></category>
|
||||||
|
<category><![CDATA[Marketing]]></category>
|
||||||
|
<category><![CDATA[Misc]]></category>
|
||||||
|
<category><![CDATA[Mobile]]></category>
|
||||||
|
<category><![CDATA[Android]]></category>
|
||||||
|
<category><![CDATA[Productivity]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1902</guid>
|
||||||
|
<description><![CDATA[The way we consume video content is changing. Netflix. Hulu. You Tube. HBO Now. Amazon Instant Video. DVR. The way we communicate is changing. Email (always is popular). SMS/Text. WhatsApp. Facebook Messenger. Voxer. Telegram. The way we physically get around is changing. Uber. Lyft. Sidecar. Curb. The way we listen to audio is changing. iTunes. […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p><img src="http://www.donnfelker.com/wp-content/uploads/2016/01/Photo-on-5-7-15-at-6.17-PM-3-1024x683.jpg" alt="Photo on 5-7-15 at 6.17 PM #3" width="1024" height="683" class="alignnone size-large wp-image-1903" srcset="http://www.donnfelker.com/wp-content/uploads/2016/01/Photo-on-5-7-15-at-6.17-PM-3-1024x683.jpg 1024w, http://www.donnfelker.com/wp-content/uploads/2016/01/Photo-on-5-7-15-at-6.17-PM-3-300x200.jpg 300w, http://www.donnfelker.com/wp-content/uploads/2016/01/Photo-on-5-7-15-at-6.17-PM-3.jpg 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
|
||||||
|
<p>The way we consume video content is changing. </p>
|
||||||
|
<p><strong>Netflix. Hulu. You Tube. HBO Now. Amazon Instant Video. DVR.<br /></strong></p>
|
||||||
|
<p>The way we communicate is changing. </p>
|
||||||
|
<p><strong>Email (always is popular). SMS/Text. WhatsApp. Facebook Messenger. Voxer. Telegram. </strong></p>
|
||||||
|
<p>The way we physically get around is changing. </p>
|
||||||
|
<p><strong>Uber. Lyft. Sidecar. Curb. </p>
|
||||||
|
<p></strong></p>
|
||||||
|
<p>The way we listen to audio is changing. </p>
|
||||||
|
<p><strong>iTunes. Google Play Music. Spotify. Pandora. Rdio (RIP)</p>
|
||||||
|
<p></strong></p>
|
||||||
|
<p>The way we educate is changing.</p>
|
||||||
|
<p><strong>Kahn Academy. Code.org. Code Academy. MIT/Standford/Etc Free Online Classes.</strong></p>
|
||||||
|
<p>The way we research things changed about two decades ago. </p>
|
||||||
|
<p><strong>The Internet. Wikipedia. Blogs. </strong></p>
|
||||||
|
<h3>What do all of things have in common? </h3>
|
||||||
|
<p><em><strong>They’re all on-demand. </strong><br /></em><br />We live in a world where we can now determine when and where we will reply to a text message or email. We get to watch what we want to watch when we want to watch it. We get to usher a cab/ride when we need to go somewhere at any point in the day. We get to listen to the music that we want to listen to when we want to listen to it. We get to learn what we want to learn when we want to learn it. </p>
|
||||||
|
<p>Many industries are getting disrupted by the on-demand economy.</p>
|
||||||
|
<h3>Radio has been changing for years</h3>
|
||||||
|
<p>Radio is ineffective because it’s live. I can only listen to what is on, right now, pre-programmed by someone who has tastes that are marginally similar to mine. </p>
|
||||||
|
<p>Don’t like a song? </p>
|
||||||
|
<p>Too bad. Listen to it. </p>
|
||||||
|
<p>Don’t like this ad? </p>
|
||||||
|
<p>Too bad. Listen to it. </p>
|
||||||
|
<h3>Podcasts Are On-Demand Radio</h3>
|
||||||
|
<p>That’s all there is to it. They’re on-demand radio that give you the ability to fast forward, rewind, save for later, etc. </p>
|
||||||
|
<p>Can’t listen to it now? </p>
|
||||||
|
<p>No problem. Listen to it later when you have time. </p>
|
||||||
|
<p>Can’t listen to the whole show? </p>
|
||||||
|
<p>No problem. Listen to the rest when you have time. </p>
|
||||||
|
<p>Miss something? </p>
|
||||||
|
<p>No problem. Hit rewind and listen to it again. </p>
|
||||||
|
<p>This is one of the reasons why Howard Stern remains a powerhouse on Sirius/XM. Though his show is not a podcast it is consistently replayed all day and through his off time during the weeekends/etc. If fans miss a show, they can tune in and catch it any time of the day. Without this, his show would be far less popular, IMO. Unfortunately not everyone can listen to it at any time they want but this consitent replay exposes his show as an on-demand show. Listeners listen during the day when they have time.</p>
|
||||||
|
<p>This is exactly why podcasts are becoming popular. </p>
|
||||||
|
<p><strong>Podcasts are On-Demand Radio. <br /></strong><br />Download it and listen to it when you have time. Today. Tomorrow. Next week. Whenever. </p>
|
||||||
|
<p><em>That is why Podcasts are becoming popular. </em></p>
|
||||||
|
<p><em>If you’re an Android Developer/Mobile Developer you might like my podcast – <a href="http://www.fragmentedpodcast.com" target="_blank" title="Fragmented Podcast">Fragmented</a>. Its a podcast about Android Development that I host with <a href="http://www.kaush.co" target="_blank" title="Kaushik Gopal's Site">Kaushik Gopal</a>.</em></p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/why-podcasts-have-become-popular/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>1</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Staying Sane and Productive While Working Remotely</title>
|
||||||
|
<link>http://www.donnfelker.com/working-remotely-tips/</link>
|
||||||
|
<comments>http://www.donnfelker.com/working-remotely-tips/#comments</comments>
|
||||||
|
<pubDate>Wed, 30 Dec 2015 21:13:42 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Business]]></category>
|
||||||
|
<category><![CDATA[Development]]></category>
|
||||||
|
<category><![CDATA[Health]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1897</guid>
|
||||||
|
<description><![CDATA[Here’s some tips I can give you after working remotely for nearly 10 years. Image by jnyemb via Creative Commons Read REMOTE by Jason Fried and DHH Read (I highly advise listening to it on Audible): REMOTE: http://37signals.com/remote Alot of what I say is regurgitated in the book above. When I listened to the book years ago […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p>Here’s some tips I can give you after working remotely for nearly 10 years.<br />
|
||||||
|
<img class="alignnone wp-image-1898 size-full" src="http://www.donnfelker.com/wp-content/uploads/2015/12/4051398710_8985c07e0e_o.jpg" alt="4051398710_8985c07e0e_o" width="600" height="450" srcset="http://www.donnfelker.com/wp-content/uploads/2015/12/4051398710_8985c07e0e_o.jpg 600w, http://www.donnfelker.com/wp-content/uploads/2015/12/4051398710_8985c07e0e_o-300x225.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" /><br />
|
||||||
|
<small>Image by <a href="https://www.flickr.com/photos/jnyemb/4051398710/" target="_blank">jnyemb</a> via Creative Commons</small></p>
|
||||||
|
<h3>Read REMOTE by Jason Fried and DHH</h3>
|
||||||
|
<p>Read (I highly advise listening to it on <a href="http://amzn.to/1VqeiFv" target="_blank">Audible</a>): REMOTE: <a href="http://37signals.com/remote">http://37signals.com/remote</a></p>
|
||||||
|
<p>Alot of what I say is regurgitated in the book above. When I listened to the book years ago I thought to myself “Whoa, OMG, these guys think the same way I do … I’m NOT ALONE!!!!” – so I’ve been recommending it for ages.</p>
|
||||||
|
<h3>Stick to a Schedule</h3>
|
||||||
|
<p>Schedule. Schedule. Schedule. Stick to a schedule when starting out. It will save you.</p>
|
||||||
|
<p>I get up at the same time every day, just like if I had a on-site job. I take a shower, get dressed and wear a collared shirt (think Golf shirt) and pants (usually jeans). I do my hair, and “get ready for work”. This is PURELY MENTAL. It prepares your mind and gets you into the mindset of work. Futhermore, being presentable goes a long way in a video call!</p>
|
||||||
|
<h3>Preparation</h3>
|
||||||
|
<p>I then get the <a href="http://www.donnfelker.com/overcoming-coffee-yerba-mate/" target="_blank">tea/coffee</a> ready, grab some snacks, some water in a water bottle and head off to my “office”. This again, is mental. I grab drinks and snacks so that I do not have to leave the office for awhile.</p>
|
||||||
|
<blockquote><p>Distractions are abound in your house, you need to limit your exposure to them.</p></blockquote>
|
||||||
|
<p> </p>
|
||||||
|
<p>By preparing these small things you are getting yourself into the mindset for work. Let’s be100% honest here, there is no way in hell you can be effective with an interesting movie blaring in the background and working in 2 hour chunks through the day. You need to be in the mental mindset and have a schedule.</p>
|
||||||
|
<p>Now, work your 6, 8, 10 hours or whatever you deem a work day. Get up and use the restroom, sparingly. When you eat lunch, spend 30 mins to 1 hour. Prepare your lunch before work if at all possible. Again, this is to limit distractions.</p>
|
||||||
|
<h3>Make Time For Exercise</h3>
|
||||||
|
<p>During lunch, fit in a workout in the garage if you can (or go to the gym/fitness group/etc – see below). Health is important. You don’t commute, so pick up some freaking weights or run or row, etc.</p>
|
||||||
|
<p>Don’t have equipment?</p>
|
||||||
|
<p>Go for a run. Do Calisthenics, etc.</p>
|
||||||
|
<p>If you need help here, I can help you – I have tons of fitness programs I do on the road, visiting family, in my garage, all with no equipment. I’m no Hulk, but I’d say I’m “in shape” somewhat, so it must be working.</p>
|
||||||
|
<h3>Eat Healthy</h3>
|
||||||
|
<p>This is key! Eat healthy! Tip: Eat ONE salad per day. I don’t care when. Only requirement: Do not soak it in dressing. I recommend Olive Oil and vinaigrette or some variation. Not ranch or thousand island or any of those heavy variants. Eating one salad a day will do insane things for your health and mindset. Doing this alone will make positive changes in your diet and health.</p>
|
||||||
|
<h3>Understand and Recognize Cabin Fever</h3>
|
||||||
|
<p><a href="https://signalvnoise.com/posts/3658" target="_blank">Cabin fever</a> is real.</p>
|
||||||
|
<p>If you live in a city, get out for lunch at least once a week. Go to a taco shop, meet a friend, have a lunch date with your wife/girl[boy]friend/husband/etc.</p>
|
||||||
|
<p><strong>Get out of the house.</strong></p>
|
||||||
|
<p>Plan to work out of the house 1-2 days a week.</p>
|
||||||
|
<h3>Time Block Your Tasks</h3>
|
||||||
|
<p>List a couple of tasks that you want to complete that take about 2-4 hours to complete, go to a coffee shop or coworking space and get it done. It will do an insane amount for you mentally and creatively. Do that a couple times a week. I find that sometimes doing one task at one coffee shop and then going to another place (library, etc) and doing the other one will also help break the monotony.</p>
|
||||||
|
<h3>Outside of Work (AKA: Social Life)</h3>
|
||||||
|
<p>Outside of work – do something that requires you to get out of the house. Join a fitness group – yoga, pilates, CrossFit, Brazilian Jiu-Jitsu, etc. You’ll get that social connection that way. I highly recommend it to be fitness or martial arts related.</p>
|
||||||
|
<p>Fitness and martial arts communities are very tight knit and you’ll find a vast array of individuals you can connect with that have differnet backgrounds. Through these groups I’ve become friends with Lawyers, Doctors, Dentists, stay at home mothers, Insurance Reps, Students, you name it – they’re all there. Fitness and martial arts crosses all boundaries. It will be worth your while. Trust me on this one.</p>
|
||||||
|
<h3>Create Some Mental Space</h3>
|
||||||
|
<p>Try to meditate. Not into meditation? Try the free 10 day guided meditation from headspace.com (<a href="https://www.headspace.com/headspace-meditation-app" target="_blank">download the app</a> and try it out).</p>
|
||||||
|
<p><strong>If you haven’t noticed yet, this is <em>all mainly mental</em>.</strong></p>
|
||||||
|
<h3>Communication when Remote</h3>
|
||||||
|
<p>As for your typical day to day work routine …<br />
|
||||||
|
<strong><br />
|
||||||
|
You are going to have to communicate about 3x-4x as hard as you did before.</strong></p>
|
||||||
|
<p>That’s the way it is.</p>
|
||||||
|
<p>Being remote means you have to be way more proactive.</p>
|
||||||
|
<p>Don’t hear from your boss/teammate/etc and you’re stuck?</p>
|
||||||
|
<p>Pick up the phone. Text. Call. Blow up the slack channel. <em>Anything<strong>.</strong></em> i.e. – <strong>Clear your own road.</strong></p>
|
||||||
|
<p>When you’re remote you’re not visually there and<strong> sometimes you have to be loud</strong> before others respond. Voice your opinions.</p>
|
||||||
|
<p>The goal is to communicate very well.</p>
|
||||||
|
<h3>TLDR;</h3>
|
||||||
|
<p>Its all mental.</p>
|
||||||
|
<p>You need to create a schedule, stick to it, take care of your body, create the proper mental mindset and cultivate it (day in and day out). You need to create “out of band” social connections so you don’t go crazy. Do that with a fitness/martial arts group. Break work into chunks and get out of the house a couple times a week. Lastly, communicate the hell out of everything. If you’re not sure if you communicated enough, do it more. Annoy people if you have to, you’re remote and sometimes people forget about you if they can’t see you.</p>
|
||||||
|
<p>Follow those simple steps and you’ll thrive in a remote atmosphere and you’ll end up enjoying life 10x more than you ever did before.</p>
|
||||||
|
<p>Finally, if you ever have a question about remote working – <a href="http://www.donnfelker.com/contact/" target="_blank">email me</a> – I’ll help. I’ve been through probably almost anything you’ve been through working remote.</p>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/working-remotely-tips/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>8</slash:comments>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Genymotion Will Not Start Virtual Device</title>
|
||||||
|
<link>http://www.donnfelker.com/genymotion-will-not-start-virtual-device/</link>
|
||||||
|
<comments>http://www.donnfelker.com/genymotion-will-not-start-virtual-device/#comments</comments>
|
||||||
|
<pubDate>Fri, 18 Dec 2015 21:12:49 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[Donn Felker]]></dc:creator>
|
||||||
|
<category><![CDATA[Development]]></category>
|
||||||
|
<category><![CDATA[Misc]]></category>
|
||||||
|
<category><![CDATA[Android]]></category>
|
||||||
|
<category><![CDATA[development]]></category>
|
||||||
|
|
||||||
|
<guid isPermaLink="false">http://www.donnfelker.com/?p=1893</guid>
|
||||||
|
<description><![CDATA[My Genymotion device will not start. Hmmph. Thankfully, I was able to fix the issue. Here’s how I did it – hopefully it works for you too: The Issue When I would attempt to start the virtual device I’d get the following message (with screenshot below): Unable to start the virtual device. VirtualBox cannot start […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p>My Genymotion device will not start. </p>
|
||||||
|
<p>Hmmph.</p>
|
||||||
|
<p> Thankfully, I was able to fix the issue. Here’s how I did it – hopefully it works for you too: </p>
|
||||||
|
<h2>The Issue</h2>
|
||||||
|
<p>When I would attempt to start the virtual device I’d get the following message (with screenshot below):</p>
|
||||||
|
<blockquote><p>Unable to start the virtual device. VirtualBox cannot start the virtual device. To find out the cause of the problem, start the virtual device from VirtualBox …</p></blockquote>
|
||||||
|
<p><a href="http://www.donnfelker.com/wp-content/uploads/2015/12/1450471994_full.png" target="_blank"><img class="aligncenter" src="http://www.donnfelker.com/wp-content/uploads/2015/12/1450471994_thumb.png" alt="" align="middle" /></a><br />
|
||||||
|
I then started the device in VirtualBox and received the following error:</p>
|
||||||
|
<blockquote><p>VERR_SUPLIB_OWNER_NOT_ROOT</p></blockquote>
|
||||||
|
<p>with the text saying “Cannot start device” or something like that. The key was the error message constant:</p>
|
||||||
|
<blockquote><p>VERR_SUPLIB_OWNER_NOT_ROOT</p></blockquote>
|
||||||
|
<p>I sent my logs and screenshots of Genymotion and VirtualBox to Genymotion and I was told to install new graphics drivers (smh) and upgrade VirtualBox. This error has nothing to do with graphics drivers. Anyway .. I did some digging.</p>
|
||||||
|
<h2>The Fix</h2>
|
||||||
|
<p>I noticed that Genymotion was installed in the /Applications folder. Ok, cool. I took a look at the permissions via the CLI with:</p>
|
||||||
|
<pre class="brush: bash; title: ; notranslate">>ls -al</pre>
|
||||||
|
<p>I noticed something weird … the /Applications folder was owned by someone else, not by wheel (the system admin group in OSX), myself or root. It was owned by some other user that I could not find (which is another issue altogether).</p>
|
||||||
|
<p>The error message states that the owner is not root. You can typically fix this with the diskutil command:</p>
|
||||||
|
<pre class="brush: bash; title: ; notranslate"> > diskutil verifyPermissions /</pre>
|
||||||
|
<p>This will verify all the permissions on your system (sans the homedir IIRC), telling you what is out of whack. To fix the permission issues you can run the following command:</p>
|
||||||
|
<pre class="brush: bash; title: ; notranslate"> > diskutil repairPermissions /</pre>
|
||||||
|
<p>After running these commands I was able to start my Genymotion device as the user has been changed back to ‘root’.</p>
|
||||||
|
<h3>Still Stuck?</h3>
|
||||||
|
<p>If that did not work you can try changing the owner manually like this, which changes the owner:</p>
|
||||||
|
<pre class="brush: bash; title: ; notranslate"> > sudo chown root Applications</pre>
|
||||||
|
]]></content:encoded>
|
||||||
|
<wfw:commentRss>http://www.donnfelker.com/genymotion-will-not-start-virtual-device/feed/</wfw:commentRss>
|
||||||
|
<slash:comments>1</slash:comments>
|
||||||
|
</item>
|
||||||
|
</channel>
|
||||||
|
</rss>
|
340
tests/data/github.xml
Normal file
340
tests/data/github.xml
Normal file
|
@ -0,0 +1,340 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en-US">
|
||||||
|
<id>tag:github.com,2008:/wbrawner/SimpleMarkdown/commits/master</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commits/master"/>
|
||||||
|
<link type="application/atom+xml" rel="self" href="https://github.com/wbrawner/SimpleMarkdown/commits/master.atom"/>
|
||||||
|
<title>Recent Commits to SimpleMarkdown:master</title>
|
||||||
|
<updated>2018-03-05T04:39:29Z</updated>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/8f81553997d1a98dd86e6b4d2abb5c2c581903b3</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/8f81553997d1a98dd86e6b4d2abb5c2c581903b3"/>
|
||||||
|
<title>
|
||||||
|
Merge pull request #24 from wbrawner/sdcard-crash-fix
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-05T04:39:29Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #24 from wbrawner/sdcard-crash-fix
|
||||||
|
|
||||||
|
Add possible fix for NPE in ExplorerActivity</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/018879116d806361059905b905c47733e263faa7</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/018879116d806361059905b905c47733e263faa7"/>
|
||||||
|
<title>
|
||||||
|
Add possible fix for NPE in ExplorerActivity
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-05T04:30:15Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Add possible fix for NPE in ExplorerActivity</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/775bfc0f92917d8f17d7624ec35beed4fadd91cb</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/775bfc0f92917d8f17d7624ec35beed4fadd91cb"/>
|
||||||
|
<title>
|
||||||
|
Merge pull request #23 from wbrawner/splash-screen-fix
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-05T03:51:42Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #23 from wbrawner/splash-screen-fix
|
||||||
|
|
||||||
|
Fix splash screen appearance</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/e3ec6734edfe1300cdb23471c3e7e1384b6b379e</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/e3ec6734edfe1300cdb23471c3e7e1384b6b379e"/>
|
||||||
|
<title>
|
||||||
|
Fix splash screen appearance
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-05T03:37:10Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Fix splash screen appearance</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/8cb20248c6d6d6b5464f773baed213df7a55429a</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/8cb20248c6d6d6b5464f773baed213df7a55429a"/>
|
||||||
|
<title>
|
||||||
|
Increment version number
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-05T02:57:15Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Increment version number</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/f9910f835d34956d768b25b1ede8d146075b629d</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/f9910f835d34956d768b25b1ede8d146075b629d"/>
|
||||||
|
<title>
|
||||||
|
Merge pull request #22 from wbrawner/default-root
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-05T02:51:21Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #22 from wbrawner/default-root
|
||||||
|
|
||||||
|
Add option to set default root directory</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/2d357ec3c039f2e238ba4e5382f7314bc46abdaa</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/2d357ec3c039f2e238ba4e5382f7314bc46abdaa"/>
|
||||||
|
<title>
|
||||||
|
Fix broken tests
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-05T02:37:45Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Fix broken tests</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/c0f036f885d00a2e1bc6d1d31accca05691e4d55</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/c0f036f885d00a2e1bc6d1d31accca05691e4d55"/>
|
||||||
|
<title>
|
||||||
|
Add option to set default root directory
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-05T01:48:49Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Add option to set default root directory</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/5f74c18a45f0f1981bcd6e8efbbfe4c6f42b020d</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/5f74c18a45f0f1981bcd6e8efbbfe4c6f42b020d"/>
|
||||||
|
<title>
|
||||||
|
Merge pull request #21 from wbrawner/dex
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-05T00:34:05Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #21 from wbrawner/dex
|
||||||
|
|
||||||
|
Added Dex support</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/3ae00db49eb98fb74665187a4e63dd64860d2677</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/3ae00db49eb98fb74665187a4e63dd64860d2677"/>
|
||||||
|
<title>
|
||||||
|
Added Dex support
|
||||||
|
</title>
|
||||||
|
<updated>2018-03-04T19:52:33Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Added Dex support</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/97c0c98fdf30dd81ec93fddae83331169d86ca91</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/97c0c98fdf30dd81ec93fddae83331169d86ca91"/>
|
||||||
|
<title>
|
||||||
|
Merge pull request #20 from wbrawner/samsung
|
||||||
|
</title>
|
||||||
|
<updated>2018-02-18T00:44:38Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #20 from wbrawner/samsung
|
||||||
|
|
||||||
|
Add Samsung build flavor</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/e98d4cb48a691367c13fc38504811167cfe2c2dd</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/e98d4cb48a691367c13fc38504811167cfe2c2dd"/>
|
||||||
|
<title>
|
||||||
|
Add Samsung build flavor
|
||||||
|
</title>
|
||||||
|
<updated>2018-02-18T00:28:29Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Add Samsung build flavor</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/b9cbaae0865282506dfbf5724e5e4f45cbf0dacd</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/b9cbaae0865282506dfbf5724e5e4f45cbf0dacd"/>
|
||||||
|
<title>
|
||||||
|
Merge pull request #19 from wbrawner/default-view
|
||||||
|
</title>
|
||||||
|
<updated>2018-02-03T00:47:50Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #19 from wbrawner/default-view
|
||||||
|
|
||||||
|
Add default launch view setting</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/650ccdcb8a44e0f6b5b28051278da16d8e370c79</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/650ccdcb8a44e0f6b5b28051278da16d8e370c79"/>
|
||||||
|
<title>
|
||||||
|
Add default launch view setting
|
||||||
|
</title>
|
||||||
|
<updated>2018-02-03T00:36:49Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Add default launch view setting</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/6ecded0b2558b13e7c36583dbd0fbf3d95fb788a</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/6ecded0b2558b13e7c36583dbd0fbf3d95fb788a"/>
|
||||||
|
<title>
|
||||||
|
Update README.md
|
||||||
|
</title>
|
||||||
|
<updated>2018-02-02T14:35:56Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Update README.md</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/39553373093e617fafda74e34d8a44d21ca3c7e9</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/39553373093e617fafda74e34d8a44d21ca3c7e9"/>
|
||||||
|
<title>
|
||||||
|
Fix bug on markdown processing
|
||||||
|
</title>
|
||||||
|
<updated>2018-01-28T21:42:21Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Fix bug on markdown processing</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/46c084a454c8ec6efa8d43fa7d0070165fd4a87f</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/46c084a454c8ec6efa8d43fa7d0070165fd4a87f"/>
|
||||||
|
<title>
|
||||||
|
Add apk files to gitignore
|
||||||
|
</title>
|
||||||
|
<updated>2018-01-28T02:35:07Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Add apk files to gitignore</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/1bb9526c8e9839ba7c0a139f80e824643e7fc774</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/1bb9526c8e9839ba7c0a139f80e824643e7fc774"/>
|
||||||
|
<title>
|
||||||
|
Increment version number for release and fix test
|
||||||
|
</title>
|
||||||
|
<updated>2018-01-28T02:34:38Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Increment version number for release and fix test</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/67360f32dce1085b184777da19daa81ab954949d</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/67360f32dce1085b184777da19daa81ab954949d"/>
|
||||||
|
<title>
|
||||||
|
Fix apache license text in Libraries text
|
||||||
|
</title>
|
||||||
|
<updated>2018-01-28T02:28:06Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Fix apache license text in Libraries text</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>tag:github.com,2008:Grit::Commit/ef0ba289ac69cfbbaaf5c248fa4e4e5b403fdc07</id>
|
||||||
|
<link type="text/html" rel="alternate" href="https://github.com/wbrawner/SimpleMarkdown/commit/ef0ba289ac69cfbbaaf5c248fa4e4e5b403fdc07"/>
|
||||||
|
<title>
|
||||||
|
Fix file opening
|
||||||
|
</title>
|
||||||
|
<updated>2018-01-28T02:20:26Z</updated>
|
||||||
|
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/11827417?s=30&v=4"/>
|
||||||
|
<author>
|
||||||
|
<name>wbrawner</name>
|
||||||
|
<uri>https://github.com/wbrawner</uri>
|
||||||
|
</author>
|
||||||
|
<content type="html">
|
||||||
|
<pre style='white-space:pre-wrap;width:81ex'>Fix file opening</pre>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
</feed>
|
321
tests/data/upwork.xml
Normal file
321
tests/data/upwork.xml
Normal file
|
@ -0,0 +1,321 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0"><channel><title><![CDATA[All Android Jobs jobs | upwork.com]]></title><link><![CDATA[https://www.upwork.com/ab/feed/topics/rss?orgUid=574933498259517441&securityToken=571648aac692838c5c574a359abfa52d8de223ce8e28526376055aa401e86be73e9e7eb53a3ae20f449932cab4992aa41ee8679cee80865e7a602556eafd8469&topic=2695084&userUid=574933498251128832]]></link><description><![CDATA[All Android Jobs jobs as of March 07, 2018 03:00 UTC]]></description><language>en-us</language><pubDate>Wed, 07 Mar 2018 03:00:55 +0000</pubDate><copyright>© 2003-2018 Upwork Corporation</copyright><docs>http://blogs.law.harvard.edu/tech/rss</docs><generator>Upwork Corporation</generator><managingEditor>rss@upwork.com (Upwork Corporation)</managingEditor><image><url>https://www.upwork.com/images/rss_logo.png</url><title><![CDATA[All Android Jobs jobs | upwork.com]]></title><link><![CDATA[https://www.upwork.com/ab/feed/topics/rss?orgUid=574933498259517441&securityToken=571648aac692838c5c574a359abfa52d8de223ce8e28526376055aa401e86be73e9e7eb53a3ae20f449932cab4992aa41ee8679cee80865e7a602556eafd8469&topic=2695084&userUid=574933498251128832]]></link></image><item><title><![CDATA[Looking for experienced Backend-Developer for an Android app (Python / Django / Nodejs) - Upwork]]></title><link>https://www.upwork.com/jobs/Looking-for-experienced-Backend-Developer-for-Android-app-Python-Django-Nodejs_%7E014eb72027eb4e628f?source=rss</link><description><![CDATA[Looking to add a back end developer to our engineering team.<br /><br />
|
||||||
|
Applicants need to have extensive knowledge in:<br />
|
||||||
|
- Mysql <br />
|
||||||
|
- Python / Django<br />
|
||||||
|
- Nodejs / REST<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Django, MySQL Programming, Node.js, Python <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Looking-for-experienced-Backend-Developer-for-Android-app-Python-Django-Nodejs_%7E014eb72027eb4e628f?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Looking to add a back end developer to our engineering team.<br /><br />
|
||||||
|
Applicants need to have extensive knowledge in:<br />
|
||||||
|
- Mysql <br />
|
||||||
|
- Python / Django<br />
|
||||||
|
- Nodejs / REST<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Django, MySQL Programming, Node.js, Python <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Looking-for-experienced-Backend-Developer-for-Android-app-Python-Django-Nodejs_%7E014eb72027eb4e628f?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 02:45:58 +0000</pubDate><guid>https://www.upwork.com/jobs/Looking-for-experienced-Backend-Developer-for-Android-app-Python-Django-Nodejs_%7E014eb72027eb4e628f?source=rss</guid></item><item><title><![CDATA[IONIC Mobile App Development - Upwork]]></title><link>https://www.upwork.com/jobs/IONIC-Mobile-App-Development_%7E010075b4f6aa3d8406?source=rss</link><description><![CDATA[Looking for some one to develop a small project in IONIC framework, database services/api's will be provided. Design is also ready. looking for fast development with full professional work. only need Android version.<br /><br /><b>Budget</b>: $300
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>App Store category</b>:Business <br /><b>Mobile devices</b>:Phone, Tablet
|
||||||
|
<br /><b>Country</b>: Malaysia<br /><a href="https://www.upwork.com/jobs/IONIC-Mobile-App-Development_%7E010075b4f6aa3d8406?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Looking for some one to develop a small project in IONIC framework, database services/api's will be provided. Design is also ready. looking for fast development with full professional work. only need Android version.<br /><br /><b>Budget</b>: $300
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>App Store category</b>:Business <br /><b>Mobile devices</b>:Phone, Tablet
|
||||||
|
<br /><b>Country</b>: Malaysia<br /><a href="https://www.upwork.com/jobs/IONIC-Mobile-App-Development_%7E010075b4f6aa3d8406?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 02:42:15 +0000</pubDate><guid>https://www.upwork.com/jobs/IONIC-Mobile-App-Development_%7E010075b4f6aa3d8406?source=rss</guid></item><item><title><![CDATA[Android app modification - Upwork]]></title><link>https://www.upwork.com/jobs/Android-app-modification_%7E01130a3fd67240d875?source=rss</link><description><![CDATA[I want to modify this app:<br />
|
||||||
|
https://play.google.com/store/apps/details?id=com.turret.KittyJourney<br /><br />
|
||||||
|
I would like to add a &quot;continue&quot; button, allowing the user to continue playing for a set number if credits, ability to earn credits through watching ads or buying in game currency. There are a couple other things that I would like to change, but these are the most important things. <br /><br />
|
||||||
|
Unity skill is required as this game is created with unity<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $100
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, Mobile App Development, Unity3D <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Android-app-modification_%7E01130a3fd67240d875?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[I want to modify this app:<br />
|
||||||
|
https://play.google.com/store/apps/details?id=com.turret.KittyJourney<br /><br />
|
||||||
|
I would like to add a &quot;continue&quot; button, allowing the user to continue playing for a set number if credits, ability to earn credits through watching ads or buying in game currency. There are a couple other things that I would like to change, but these are the most important things. <br /><br />
|
||||||
|
Unity skill is required as this game is created with unity<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $100
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, Mobile App Development, Unity3D <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Android-app-modification_%7E01130a3fd67240d875?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 02:30:53 +0000</pubDate><guid>https://www.upwork.com/jobs/Android-app-modification_%7E01130a3fd67240d875?source=rss</guid></item><item><title><![CDATA[AIA Long Island Chapter Quote Request - Upwork]]></title><link>https://www.upwork.com/jobs/AIA-Long-Island-Chapter-Quote-Request_%7E01e4cfccac65e1cdf4?source=rss</link><description><![CDATA[Hello.<br /><br />
|
||||||
|
I am looking to get a quote for contact I have. We have several ideas for website designs but will give more specifics for the job. Please see below for the scope of work. They would like to have the following done:<br /><br />
|
||||||
|
- New Wordpress Website with Email Automation Integrated into it<br />
|
||||||
|
- Create an easy way to change graphics and notifications for users<br />
|
||||||
|
- Android Application<br />
|
||||||
|
- Ios Application<br />
|
||||||
|
- Server Setup / Logistics Taken Care of from scratch<br />
|
||||||
|
- Ability to Email Users easily from the server or (Maybe using third part - Aweber, Constant Contact, Etc)<br /><br />
|
||||||
|
The App should look similar to this to give scope of work for mobile platform: <br />
|
||||||
|
https://play.google.com/store/apps/details?id=com.bluebridgedigital.aia <br /><br />
|
||||||
|
Please let me know the fixed amount and breakdown for each platform (Email Vs Website Vs Mobile Platforms)<br /><br />
|
||||||
|
Thank you and look forward to working more with you.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile app features</b>:Review or Feedback Collection, Social Media Account Integration, User Authentication, User Profile Creation <br /><b>App Store category</b>:Education <br /><b>Mobile devices</b>:Phone, Tablet
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/AIA-Long-Island-Chapter-Quote-Request_%7E01e4cfccac65e1cdf4?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Hello.<br /><br />
|
||||||
|
I am looking to get a quote for contact I have. We have several ideas for website designs but will give more specifics for the job. Please see below for the scope of work. They would like to have the following done:<br /><br />
|
||||||
|
- New Wordpress Website with Email Automation Integrated into it<br />
|
||||||
|
- Create an easy way to change graphics and notifications for users<br />
|
||||||
|
- Android Application<br />
|
||||||
|
- Ios Application<br />
|
||||||
|
- Server Setup / Logistics Taken Care of from scratch<br />
|
||||||
|
- Ability to Email Users easily from the server or (Maybe using third part - Aweber, Constant Contact, Etc)<br /><br />
|
||||||
|
The App should look similar to this to give scope of work for mobile platform: <br />
|
||||||
|
https://play.google.com/store/apps/details?id=com.bluebridgedigital.aia <br /><br />
|
||||||
|
Please let me know the fixed amount and breakdown for each platform (Email Vs Website Vs Mobile Platforms)<br /><br />
|
||||||
|
Thank you and look forward to working more with you.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile app features</b>:Review or Feedback Collection, Social Media Account Integration, User Authentication, User Profile Creation <br /><b>App Store category</b>:Education <br /><b>Mobile devices</b>:Phone, Tablet
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/AIA-Long-Island-Chapter-Quote-Request_%7E01e4cfccac65e1cdf4?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 02:13:27 +0000</pubDate><guid>https://www.upwork.com/jobs/AIA-Long-Island-Chapter-Quote-Request_%7E01e4cfccac65e1cdf4?source=rss</guid></item><item><title><![CDATA[Development of Cognitive/Visual Acuity App for iOS and Android - Upwork]]></title><link>https://www.upwork.com/jobs/Development-Cognitive-Visual-Acuity-App-for-iOS-and-Android_%7E01c2b23bdf420bddf9?source=rss</link><description><![CDATA[We are seeking an app developer to create a branded app aimed to test the visual reactive abilities of athletes. This is done by the app displaying random numbers over atop random background colors. The purpose of this is to have athletes recite the random number and color being displayed on the screen. We would like to create two distinct modes: a random mode, with a timed duration, and a coach mode, whereby a coach or trainer manually triggers the change in the random number and shown color. <br /><br />
|
||||||
|
Lastly, we would like to have the capability to have the random number/color sequence displayed on several devices simultaneously (presumably connecting the devices on a wi-fi network, or via bluetooth). This would allow the coach or trainer to position different devices on tripods, so that the athlete can see the random number/color sequence in multiple directions, etc.<br /><br /><b>Budget</b>: $250
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Apple devices</b>:iPad, iPhone <br /><b>App Store category</b>:Education
|
||||||
|
<br /><b>Country</b>: Canada<br /><a href="https://www.upwork.com/jobs/Development-Cognitive-Visual-Acuity-App-for-iOS-and-Android_%7E01c2b23bdf420bddf9?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[We are seeking an app developer to create a branded app aimed to test the visual reactive abilities of athletes. This is done by the app displaying random numbers over atop random background colors. The purpose of this is to have athletes recite the random number and color being displayed on the screen. We would like to create two distinct modes: a random mode, with a timed duration, and a coach mode, whereby a coach or trainer manually triggers the change in the random number and shown color. <br /><br />
|
||||||
|
Lastly, we would like to have the capability to have the random number/color sequence displayed on several devices simultaneously (presumably connecting the devices on a wi-fi network, or via bluetooth). This would allow the coach or trainer to position different devices on tripods, so that the athlete can see the random number/color sequence in multiple directions, etc.<br /><br /><b>Budget</b>: $250
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Apple devices</b>:iPad, iPhone <br /><b>App Store category</b>:Education
|
||||||
|
<br /><b>Country</b>: Canada<br /><a href="https://www.upwork.com/jobs/Development-Cognitive-Visual-Acuity-App-for-iOS-and-Android_%7E01c2b23bdf420bddf9?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 02:04:47 +0000</pubDate><guid>https://www.upwork.com/jobs/Development-Cognitive-Visual-Acuity-App-for-iOS-and-Android_%7E01c2b23bdf420bddf9?source=rss</guid></item><item><title><![CDATA[React Native Developer with In-App purchase experience - Upwork]]></title><link>https://www.upwork.com/jobs/React-Native-Developer-with-App-purchase-experience_%7E01439e7f7105bc60f2?source=rss</link><description><![CDATA[I am looking for a React Native developer who is experienced in in-app purchase integration. I have a subscribing mobile app which fetch the feeds from my own CMS and it works well for now.<br /><br />
|
||||||
|
I am going to add a paid subscription feed category, so only paid users can see them. I think it is quite simple task for the experienced developer.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android App Development, iPhone App Development, Mobile App Development, React Native <br /><b>Country</b>: New Zealand<br /><a href="https://www.upwork.com/jobs/React-Native-Developer-with-App-purchase-experience_%7E01439e7f7105bc60f2?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[I am looking for a React Native developer who is experienced in in-app purchase integration. I have a subscribing mobile app which fetch the feeds from my own CMS and it works well for now.<br /><br />
|
||||||
|
I am going to add a paid subscription feed category, so only paid users can see them. I think it is quite simple task for the experienced developer.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android App Development, iPhone App Development, Mobile App Development, React Native <br /><b>Country</b>: New Zealand<br /><a href="https://www.upwork.com/jobs/React-Native-Developer-with-App-purchase-experience_%7E01439e7f7105bc60f2?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 01:54:30 +0000</pubDate><guid>https://www.upwork.com/jobs/React-Native-Developer-with-App-purchase-experience_%7E01439e7f7105bc60f2?source=rss</guid></item><item><title><![CDATA[Looking for Unity 2D experienced AGENCY to build healthcare app. HIPAA Compliance experienced - Upwork]]></title><link>https://www.upwork.com/jobs/Looking-for-Unity-experienced-AGENCY-build-healthcare-app-HIPAA-Compliance-experienced_%7E0152d90709c56fce34?source=rss</link><description><![CDATA[Dear Agencies! <br /><br />
|
||||||
|
I have an interesting project for you if you feel up for it. I am looking for a team to design an app on UNITY 2D which allows patients to track their emotion about themselves, others, objects, specific scenarios, etc through a simulation &quot;game.&quot; <br /><br />
|
||||||
|
The first release of this iOS/Android/Browser App will provide for usage on a smartphone or tablet an electronic representation of the user’s daily environment, and represent graphically various decisions and interactions the child must have daily. It will allow the child to provide feedback on those interactions, from which the application can discern which interactions are causing the child stress, and may also reveal how the child is dealing with that stress. This application will be a re-suable tool with many upgrades that can add different scenarios such as various school and social extracurricular activities. The goal of MyView will be to help children not just identify and deal with stressful and anxiety provoking situations, but to also increase overall self confidence and self worth.<br /><br /><b>Budget</b>: $15,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Game genres</b>:Education, Role Playing <br /><b>Cross platform game development engines</b>:Unity <br /><b>Kids age group</b>:Ages 6 - 8, Ages 9 - 11 <br /><b>Mobile devices</b>:Phone, Tablet
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Looking-for-Unity-experienced-AGENCY-build-healthcare-app-HIPAA-Compliance-experienced_%7E0152d90709c56fce34?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Dear Agencies! <br /><br />
|
||||||
|
I have an interesting project for you if you feel up for it. I am looking for a team to design an app on UNITY 2D which allows patients to track their emotion about themselves, others, objects, specific scenarios, etc through a simulation &quot;game.&quot; <br /><br />
|
||||||
|
The first release of this iOS/Android/Browser App will provide for usage on a smartphone or tablet an electronic representation of the user’s daily environment, and represent graphically various decisions and interactions the child must have daily. It will allow the child to provide feedback on those interactions, from which the application can discern which interactions are causing the child stress, and may also reveal how the child is dealing with that stress. This application will be a re-suable tool with many upgrades that can add different scenarios such as various school and social extracurricular activities. The goal of MyView will be to help children not just identify and deal with stressful and anxiety provoking situations, but to also increase overall self confidence and self worth.<br /><br /><b>Budget</b>: $15,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Game genres</b>:Education, Role Playing <br /><b>Cross platform game development engines</b>:Unity <br /><b>Kids age group</b>:Ages 6 - 8, Ages 9 - 11 <br /><b>Mobile devices</b>:Phone, Tablet
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Looking-for-Unity-experienced-AGENCY-build-healthcare-app-HIPAA-Compliance-experienced_%7E0152d90709c56fce34?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 01:52:33 +0000</pubDate><guid>https://www.upwork.com/jobs/Looking-for-Unity-experienced-AGENCY-build-healthcare-app-HIPAA-Compliance-experienced_%7E0152d90709c56fce34?source=rss</guid></item><item><title><![CDATA[Develop iOS Game app(mvp) - Upwork]]></title><link>https://www.upwork.com/jobs/Develop-iOS-Game-app-mvp_%7E01599783b0de8636ea?source=rss</link><description><![CDATA[I am looking for an experienced game developer who is available to start immediately.<br />
|
||||||
|
It is quite simple and mvp for now. It will be surely ongoing work. We are planning android version as well after ios. Game logic contains quiz like things. Video stream skill is a must. Please apply with your sample game apps.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Game genres</b>:Adventure, Education <br /><b>Apple devices</b>:iPhone <br /><b>Kids age group</b>:Ages 9 - 11 <br /><b>Popular Apple development APIs</b>:Apple Pay JS <br /><b>iOS programming languages</b>:Objective-C, Swift
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Develop-iOS-Game-app-mvp_%7E01599783b0de8636ea?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[I am looking for an experienced game developer who is available to start immediately.<br />
|
||||||
|
It is quite simple and mvp for now. It will be surely ongoing work. We are planning android version as well after ios. Game logic contains quiz like things. Video stream skill is a must. Please apply with your sample game apps.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Game genres</b>:Adventure, Education <br /><b>Apple devices</b>:iPhone <br /><b>Kids age group</b>:Ages 9 - 11 <br /><b>Popular Apple development APIs</b>:Apple Pay JS <br /><b>iOS programming languages</b>:Objective-C, Swift
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Develop-iOS-Game-app-mvp_%7E01599783b0de8636ea?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 01:48:36 +0000</pubDate><guid>https://www.upwork.com/jobs/Develop-iOS-Game-app-mvp_%7E01599783b0de8636ea?source=rss</guid></item><item><title><![CDATA[Install Comet Chat - Upwork]]></title><link>https://www.upwork.com/jobs/Install-Comet-Chat_%7E012c510c42b1dee20e?source=rss</link><description><![CDATA[I need a programmer to install Comet Chat into my WooCommerce, Wordpress, Marketplace website.<br /><br />
|
||||||
|
I have purchased the white label software and need it implemented across all platforms:<br /><br /><br />
|
||||||
|
Web // Mobile Web <br />
|
||||||
|
IOS (publish to IOS store)<br />
|
||||||
|
Android (publish to Android Market)<br />
|
||||||
|
Desktop<br /><br /><br />
|
||||||
|
There will be some customizations I'll need you to make specific to my website, but generally, the install process is as straightforward as the installation PDF describes. <br /><br />
|
||||||
|
I have attempted to install Comet Chat twice. The first time I was successful, but the most recent time resulted in an error that slowed down my whole website and I was forced to uninstall Cometchat. <br /><br />
|
||||||
|
I'll need you to delete all old instances and directories on my server and install a fresh new copy. <br /><br />
|
||||||
|
You will probably have to stay in frequent communication with the Comet Staff support team to retrieve information relevant to the installation process. You'll be using an email address that I have access to when you do so, so I can be current with the communication back and forth.<br /><br />
|
||||||
|
I will also need you to journal the install process so I can repeat if necessary in the future.<br /><br />
|
||||||
|
Special consideration will be made to those who have successfully installed Comet Chat before.<br /><br /><b>Budget</b>: $148
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: IT & Networking > Network & System Administration
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Install-Comet-Chat_%7E012c510c42b1dee20e?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[I need a programmer to install Comet Chat into my WooCommerce, Wordpress, Marketplace website.<br /><br />
|
||||||
|
I have purchased the white label software and need it implemented across all platforms:<br /><br /><br />
|
||||||
|
Web // Mobile Web <br />
|
||||||
|
IOS (publish to IOS store)<br />
|
||||||
|
Android (publish to Android Market)<br />
|
||||||
|
Desktop<br /><br /><br />
|
||||||
|
There will be some customizations I'll need you to make specific to my website, but generally, the install process is as straightforward as the installation PDF describes. <br /><br />
|
||||||
|
I have attempted to install Comet Chat twice. The first time I was successful, but the most recent time resulted in an error that slowed down my whole website and I was forced to uninstall Cometchat. <br /><br />
|
||||||
|
I'll need you to delete all old instances and directories on my server and install a fresh new copy. <br /><br />
|
||||||
|
You will probably have to stay in frequent communication with the Comet Staff support team to retrieve information relevant to the installation process. You'll be using an email address that I have access to when you do so, so I can be current with the communication back and forth.<br /><br />
|
||||||
|
I will also need you to journal the install process so I can repeat if necessary in the future.<br /><br />
|
||||||
|
Special consideration will be made to those who have successfully installed Comet Chat before.<br /><br /><b>Budget</b>: $148
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: IT & Networking > Network & System Administration
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Install-Comet-Chat_%7E012c510c42b1dee20e?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 01:30:43 +0000</pubDate><guid>https://www.upwork.com/jobs/Install-Comet-Chat_%7E012c510c42b1dee20e?source=rss</guid></item><item><title><![CDATA[High Quality IP Based Audio Cable - Upwork]]></title><link>https://www.upwork.com/jobs/High-Quality-Based-Audio-Cable_%7E01b4ba3f71453e991f?source=rss</link><description><![CDATA[I’m looking for a developer to help create a specialized high quality audio server. The server will take audio in from a line level input, (I am aware that Raspberry Pi devices will need an external soundcard for line in and I have an audio interface for this purpose) This program needs to allow multiple clients to connect to a host on the same network. There will also need to be a way to have multiple channels running concurrently on the same network. After initial setup is complete there should be no end user interaction for the system to work other than applying power to the devices. Basically, this needs to be as simple as an audio cable for the end user. The software can be built for any Raspberry Pi supported Operating system and is not to be restricted to just Android. If developed for Android this App will NOT be listed on Google Play or Amazon<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile devices</b>:Phone, Tablet <br /><b>Google Play Store category</b>:Entertainment
|
||||||
|
<br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/High-Quality-Based-Audio-Cable_%7E01b4ba3f71453e991f?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[I’m looking for a developer to help create a specialized high quality audio server. The server will take audio in from a line level input, (I am aware that Raspberry Pi devices will need an external soundcard for line in and I have an audio interface for this purpose) This program needs to allow multiple clients to connect to a host on the same network. There will also need to be a way to have multiple channels running concurrently on the same network. After initial setup is complete there should be no end user interaction for the system to work other than applying power to the devices. Basically, this needs to be as simple as an audio cable for the end user. The software can be built for any Raspberry Pi supported Operating system and is not to be restricted to just Android. If developed for Android this App will NOT be listed on Google Play or Amazon<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile devices</b>:Phone, Tablet <br /><b>Google Play Store category</b>:Entertainment
|
||||||
|
<br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/High-Quality-Based-Audio-Cable_%7E01b4ba3f71453e991f?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 01:23:34 +0000</pubDate><guid>https://www.upwork.com/jobs/High-Quality-Based-Audio-Cable_%7E01b4ba3f71453e991f?source=rss</guid></item><item><title><![CDATA[Senior Full Stack MEAN and ionic 1 developer needed. - Upwork]]></title><link>https://www.upwork.com/jobs/Senior-Full-Stack-MEAN-and-ionic-developer-needed_%7E01be766990659a8507?source=rss</link><description><![CDATA[We've launched the MVP version of our software and we're gaining great traction. It's time to start adding features and taking it to the next level. The desired applicant will have 10+ years of experience with the majority of that experience in AngularJS, NodeJS, ionic 1 for Apple/Android, Linux, MongoDB, Express, AWS and Firebase. Applicant will have built several projects utilizing MEAN stack as well as led teams that built projects utilizing the same. Please do not apply if you do not have the experience needed in the listed technologies.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Web Development
|
||||||
|
<br /><b>Skills</b>: AngularJS, Express Js, Firebase, Ionic Framework, Linux System Administration, MongoDB, Nginx, Node.js <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Senior-Full-Stack-MEAN-and-ionic-developer-needed_%7E01be766990659a8507?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[We've launched the MVP version of our software and we're gaining great traction. It's time to start adding features and taking it to the next level. The desired applicant will have 10+ years of experience with the majority of that experience in AngularJS, NodeJS, ionic 1 for Apple/Android, Linux, MongoDB, Express, AWS and Firebase. Applicant will have built several projects utilizing MEAN stack as well as led teams that built projects utilizing the same. Please do not apply if you do not have the experience needed in the listed technologies.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Web Development
|
||||||
|
<br /><b>Skills</b>: AngularJS, Express Js, Firebase, Ionic Framework, Linux System Administration, MongoDB, Nginx, Node.js <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Senior-Full-Stack-MEAN-and-ionic-developer-needed_%7E01be766990659a8507?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 01:03:37 +0000</pubDate><guid>https://www.upwork.com/jobs/Senior-Full-Stack-MEAN-and-ionic-developer-needed_%7E01be766990659a8507?source=rss</guid></item><item><title><![CDATA[looking for hybrid mobile app developer for my business - Upwork]]></title><link>https://www.upwork.com/jobs/looking-for-hybrid-mobile-app-developer-for-business_%7E01e99f2e3f7adff026?source=rss</link><description><![CDATA[Hello<br />
|
||||||
|
I have a business project on the new idea and I am going to develop this project as hybrid way (iOS &amp; Android) and web admin side too.<br />
|
||||||
|
Developer should have graphic design skills too.<br />
|
||||||
|
Developer should understand on the business logic well and he should handle many thing on my project.<br />
|
||||||
|
Details will be shared to the selected candidates.<br />
|
||||||
|
Only when you have quite confident, please apply.<br />
|
||||||
|
Thanks<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>App Store category</b>:Business <br /><b>Mobile devices</b>:Phone
|
||||||
|
<br /><b>Country</b>: China<br /><a href="https://www.upwork.com/jobs/looking-for-hybrid-mobile-app-developer-for-business_%7E01e99f2e3f7adff026?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Hello<br />
|
||||||
|
I have a business project on the new idea and I am going to develop this project as hybrid way (iOS &amp; Android) and web admin side too.<br />
|
||||||
|
Developer should have graphic design skills too.<br />
|
||||||
|
Developer should understand on the business logic well and he should handle many thing on my project.<br />
|
||||||
|
Details will be shared to the selected candidates.<br />
|
||||||
|
Only when you have quite confident, please apply.<br />
|
||||||
|
Thanks<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>App Store category</b>:Business <br /><b>Mobile devices</b>:Phone
|
||||||
|
<br /><b>Country</b>: China<br /><a href="https://www.upwork.com/jobs/looking-for-hybrid-mobile-app-developer-for-business_%7E01e99f2e3f7adff026?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 00:54:30 +0000</pubDate><guid>https://www.upwork.com/jobs/looking-for-hybrid-mobile-app-developer-for-business_%7E01e99f2e3f7adff026?source=rss</guid></item><item><title><![CDATA[Emoji app - Upwork]]></title><link>https://www.upwork.com/jobs/Emoji-app_%7E01b5c9fa318fd27263?source=rss</link><description><![CDATA[Looking for experienced emoji app developer<br />
|
||||||
|
Who can create Emoji app for Android and iOS with caption and stickers personalised custom, I will provide all the pictures and the captions and I want the emoji that work in whatsapp , viber line , iMessage,Facebook and keyboard, , I want more like kim Kardashian’s emoji app kimoji <br />
|
||||||
|
If you are able to do that please contact me<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $1,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Web Development
|
||||||
|
<br /><b>Country</b>: United Kingdom<br /><a href="https://www.upwork.com/jobs/Emoji-app_%7E01b5c9fa318fd27263?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Looking for experienced emoji app developer<br />
|
||||||
|
Who can create Emoji app for Android and iOS with caption and stickers personalised custom, I will provide all the pictures and the captions and I want the emoji that work in whatsapp , viber line , iMessage,Facebook and keyboard, , I want more like kim Kardashian’s emoji app kimoji <br />
|
||||||
|
If you are able to do that please contact me<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $1,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Web Development
|
||||||
|
<br /><b>Country</b>: United Kingdom<br /><a href="https://www.upwork.com/jobs/Emoji-app_%7E01b5c9fa318fd27263?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 00:47:04 +0000</pubDate><guid>https://www.upwork.com/jobs/Emoji-app_%7E01b5c9fa318fd27263?source=rss</guid></item><item><title><![CDATA[Convert an existing Activity to Background service in Android - Upwork]]></title><link>https://www.upwork.com/jobs/Convert-existing-Activity-Background-service-Android_%7E01cdb69b9e5b265a73?source=rss</link><description><![CDATA[I have an existing app that gets Google Fit data from user account and sends a basic notification.<br />
|
||||||
|
This test code is done as an Activity with layout that is not used.<br />
|
||||||
|
I want to have this converted into a background service that runs once in a while and gets the steps count and sends a notification.<br /><br /><b>Budget</b>: $15
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile devices</b>:Phone, Tablet <br /><b>Google Play Store category</b>:Entertainment <br /><b>Android programming languages</b>:Java
|
||||||
|
<br /><b>Country</b>: Canada<br /><a href="https://www.upwork.com/jobs/Convert-existing-Activity-Background-service-Android_%7E01cdb69b9e5b265a73?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[I have an existing app that gets Google Fit data from user account and sends a basic notification.<br />
|
||||||
|
This test code is done as an Activity with layout that is not used.<br />
|
||||||
|
I want to have this converted into a background service that runs once in a while and gets the steps count and sends a notification.<br /><br /><b>Budget</b>: $15
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile devices</b>:Phone, Tablet <br /><b>Google Play Store category</b>:Entertainment <br /><b>Android programming languages</b>:Java
|
||||||
|
<br /><b>Country</b>: Canada<br /><a href="https://www.upwork.com/jobs/Convert-existing-Activity-Background-service-Android_%7E01cdb69b9e5b265a73?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 00:44:33 +0000</pubDate><guid>https://www.upwork.com/jobs/Convert-existing-Activity-Background-service-Android_%7E01cdb69b9e5b265a73?source=rss</guid></item><item><title><![CDATA[Apple and android App (athletic app) - Upwork]]></title><link>https://www.upwork.com/jobs/Apple-and-android-App-athletic-app_%7E01a52ad2724c90ff00?source=rss</link><description><![CDATA[Looking for an experienced front end developer. Will need to develop an athletic app from beginning to end. Model phase, frame phase and build phase. From creating the app to releasing it to the App Store and Android store.<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $1,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, Apple Xcode, iOS Development, iPad App Development, iPhone App Development, JavaScript, Mobile App Development <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Apple-and-android-App-athletic-app_%7E01a52ad2724c90ff00?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Looking for an experienced front end developer. Will need to develop an athletic app from beginning to end. Model phase, frame phase and build phase. From creating the app to releasing it to the App Store and Android store.<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $1,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, Apple Xcode, iOS Development, iPad App Development, iPhone App Development, JavaScript, Mobile App Development <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Apple-and-android-App-athletic-app_%7E01a52ad2724c90ff00?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 00:23:11 +0000</pubDate><guid>https://www.upwork.com/jobs/Apple-and-android-App-athletic-app_%7E01a52ad2724c90ff00?source=rss</guid></item><item><title><![CDATA[App Dev - Upwork]]></title><link>https://www.upwork.com/jobs/App-Dev_%7E01e0f83c52dc35e553?source=rss</link><description><![CDATA[The App will only use the phones camera, it will not populate a icon. Message me for more details.<br /><br /><b>Budget</b>: $5
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, iOS Development, iPhone App Development <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/App-Dev_%7E01e0f83c52dc35e553?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[The App will only use the phones camera, it will not populate a icon. Message me for more details.<br /><br /><b>Budget</b>: $5
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, iOS Development, iPhone App Development <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/App-Dev_%7E01e0f83c52dc35e553?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 00:22:10 +0000</pubDate><guid>https://www.upwork.com/jobs/App-Dev_%7E01e0f83c52dc35e553?source=rss</guid></item><item><title><![CDATA[7-day moving average weight tracker with graph, stored on local data - Upwork]]></title><link>https://www.upwork.com/jobs/day-moving-average-weight-tracker-with-graph-stored-local-data_%7E01420abf01e5bd6586?source=rss</link><description><![CDATA[Looking to develop an app that will calculate a moving average based on the previous 7 days worth of weigh ins. On open, ask for a new weight, then calculate a new moving average with that weight. On a 2nd layout, I want a graph of the data: date v weight, and then a scrolling table that has two columns: date and moving average weight. I would like it to have material design, and as simplistic as possible. <br /><br />
|
||||||
|
See the attached screenshot for an example calculation of a moving average calculation. Basically, the moving average calculates the mean average based on the previous 7 days, and drops out the prior 8th day from the calculation.<br /><br /><b>Budget</b>: $250
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/day-moving-average-weight-tracker-with-graph-stored-local-data_%7E01420abf01e5bd6586?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Looking to develop an app that will calculate a moving average based on the previous 7 days worth of weigh ins. On open, ask for a new weight, then calculate a new moving average with that weight. On a 2nd layout, I want a graph of the data: date v weight, and then a scrolling table that has two columns: date and moving average weight. I would like it to have material design, and as simplistic as possible. <br /><br />
|
||||||
|
See the attached screenshot for an example calculation of a moving average calculation. Basically, the moving average calculates the mean average based on the previous 7 days, and drops out the prior 8th day from the calculation.<br /><br /><b>Budget</b>: $250
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/day-moving-average-weight-tracker-with-graph-stored-local-data_%7E01420abf01e5bd6586?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 00:08:05 +0000</pubDate><guid>https://www.upwork.com/jobs/day-moving-average-weight-tracker-with-graph-stored-local-data_%7E01420abf01e5bd6586?source=rss</guid></item><item><title><![CDATA[Android app for posting items for sell, browse, messaging, buying etc. - Upwork]]></title><link>https://www.upwork.com/jobs/Android-app-for-posting-items-for-sell-browse-messaging-buying-etc_%7E01a8809385044e4623?source=rss</link><description><![CDATA[Previous experience on similar project work is proffered. This project requires to build a new app on the Android platform and shall work on all android devices. More details will be discussed once we have agreement.<br /><br /><b>Budget</b>: $100
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile app features</b>:User Authentication, User Profile Creation, Social Media Account Integration <br /><b>Databases</b>:SQLite <br /><b>Mobile devices</b>:Phone, Tablet <br /><b>Google Play Store category</b>:Health & Fitness <br /><b>Android programming languages</b>:Java
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Android-app-for-posting-items-for-sell-browse-messaging-buying-etc_%7E01a8809385044e4623?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Previous experience on similar project work is proffered. This project requires to build a new app on the Android platform and shall work on all android devices. More details will be discussed once we have agreement.<br /><br /><b>Budget</b>: $100
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile app features</b>:User Authentication, User Profile Creation, Social Media Account Integration <br /><b>Databases</b>:SQLite <br /><b>Mobile devices</b>:Phone, Tablet <br /><b>Google Play Store category</b>:Health & Fitness <br /><b>Android programming languages</b>:Java
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Android-app-for-posting-items-for-sell-browse-messaging-buying-etc_%7E01a8809385044e4623?source=rss">click to apply</a>]]></content:encoded><pubDate>Wed, 07 Mar 2018 00:07:45 +0000</pubDate><guid>https://www.upwork.com/jobs/Android-app-for-posting-items-for-sell-browse-messaging-buying-etc_%7E01a8809385044e4623?source=rss</guid></item><item><title><![CDATA[Small APP to navegate trough a names database of vegetables - Upwork]]></title><link>https://www.upwork.com/jobs/Small-APP-navegate-trough-names-database-vegetables_%7E01df7cbbe456b2798c?source=rss</link><description><![CDATA[Small APP contains X screens:<br />
|
||||||
|
1: Loading screen: This screen has to be shown for 5 seconds and contains 1 image and one small text<br />
|
||||||
|
2: Main menu screen: It has 4 links to differents sections<br />
|
||||||
|
3: Section &quot; About this APP&quot;: This screen has a small text<br />
|
||||||
|
4: Section &quot;The autor&quot; :This screen has a small text<br />
|
||||||
|
5: Section &quot;Thanks list&quot; :This screen has a small text<br />
|
||||||
|
6: Section &quot;Full Vegetable list&quot;: This section we will show the complete list of the vegetables. Is posible to click on each vegetable and see detailed information about it. On this list we need to provide to the user a search function. The user can filter the list by the name, the type of the vegetable or the weather it's need. The names is a text field, the type of a vegetable is a enumerate of 4 values and the weather is a enumerate of 7 values. <br /><br /><br />
|
||||||
|
The database is provided in a JSON array of objects like this:<br />
|
||||||
|
Name: String<br />
|
||||||
|
Description: String<br />
|
||||||
|
Type: Integer (1,2,3,4)<br />
|
||||||
|
W1: (boolean) <br />
|
||||||
|
W2: (boolean) <br />
|
||||||
|
W3: (boolean) <br />
|
||||||
|
W4: (boolean) <br />
|
||||||
|
W5: (boolean) <br />
|
||||||
|
W6: (boolean) <br />
|
||||||
|
W7: (boolean) <br /><br />
|
||||||
|
A example of the database is provide attached on a excel file, the freelancer should convert it into JSON but the full database will be provided directly in JSON.<br /><br /><b>Budget</b>: $110
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android App Development <br /><b>Country</b>: Spain<br /><a href="https://www.upwork.com/jobs/Small-APP-navegate-trough-names-database-vegetables_%7E01df7cbbe456b2798c?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Small APP contains X screens:<br />
|
||||||
|
1: Loading screen: This screen has to be shown for 5 seconds and contains 1 image and one small text<br />
|
||||||
|
2: Main menu screen: It has 4 links to differents sections<br />
|
||||||
|
3: Section &quot; About this APP&quot;: This screen has a small text<br />
|
||||||
|
4: Section &quot;The autor&quot; :This screen has a small text<br />
|
||||||
|
5: Section &quot;Thanks list&quot; :This screen has a small text<br />
|
||||||
|
6: Section &quot;Full Vegetable list&quot;: This section we will show the complete list of the vegetables. Is posible to click on each vegetable and see detailed information about it. On this list we need to provide to the user a search function. The user can filter the list by the name, the type of the vegetable or the weather it's need. The names is a text field, the type of a vegetable is a enumerate of 4 values and the weather is a enumerate of 7 values. <br /><br /><br />
|
||||||
|
The database is provided in a JSON array of objects like this:<br />
|
||||||
|
Name: String<br />
|
||||||
|
Description: String<br />
|
||||||
|
Type: Integer (1,2,3,4)<br />
|
||||||
|
W1: (boolean) <br />
|
||||||
|
W2: (boolean) <br />
|
||||||
|
W3: (boolean) <br />
|
||||||
|
W4: (boolean) <br />
|
||||||
|
W5: (boolean) <br />
|
||||||
|
W6: (boolean) <br />
|
||||||
|
W7: (boolean) <br /><br />
|
||||||
|
A example of the database is provide attached on a excel file, the freelancer should convert it into JSON but the full database will be provided directly in JSON.<br /><br /><b>Budget</b>: $110
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android App Development <br /><b>Country</b>: Spain<br /><a href="https://www.upwork.com/jobs/Small-APP-navegate-trough-names-database-vegetables_%7E01df7cbbe456b2798c?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 23:54:55 +0000</pubDate><guid>https://www.upwork.com/jobs/Small-APP-navegate-trough-names-database-vegetables_%7E01df7cbbe456b2798c?source=rss</guid></item><item><title><![CDATA[Bible app - Upwork]]></title><link>https://www.upwork.com/jobs/Bible-app_%7E0181de6822665cdc5b?source=rss</link><description><![CDATA[If you are able to make a bible app better than the best on the market, contact me!<br /><br />
|
||||||
|
I have templates (appearances and &quot;running&quot; of the app). 9 images accompanied by explanations.<br /><br />
|
||||||
|
I would like you to provide me with simple, fast and efficient tools that would allow me<br />
|
||||||
|
to handle the texts, to manage the elements which are related to the texts, etc.<br />
|
||||||
|
Can do it independently without having to go through an external resource.<br /><br />
|
||||||
|
Many updates will be done because there will be added versions, added words, etc. On a regular basis. All at my own pace. So, it's important to be able to deliver updates myself.<br /><br />
|
||||||
|
If you have questions I am at your disposal.<br />
|
||||||
|
Giving explanations in a video would be a major asset.<br /><br />
|
||||||
|
I would like start the project with you this week.<br /><br />
|
||||||
|
Thank you.<br /><br /><b>Budget</b>: $575
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile app features</b>:User Authentication, User Profile Creation, Social Media Account Integration <br /><b>Mobile devices</b>:Phone, Tablet <br /><b>Google Play Store category</b>:Books & Reference <br /><b>Android programming languages</b>:Java
|
||||||
|
<br /><b>Country</b>: Canada<br /><a href="https://www.upwork.com/jobs/Bible-app_%7E0181de6822665cdc5b?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[If you are able to make a bible app better than the best on the market, contact me!<br /><br />
|
||||||
|
I have templates (appearances and &quot;running&quot; of the app). 9 images accompanied by explanations.<br /><br />
|
||||||
|
I would like you to provide me with simple, fast and efficient tools that would allow me<br />
|
||||||
|
to handle the texts, to manage the elements which are related to the texts, etc.<br />
|
||||||
|
Can do it independently without having to go through an external resource.<br /><br />
|
||||||
|
Many updates will be done because there will be added versions, added words, etc. On a regular basis. All at my own pace. So, it's important to be able to deliver updates myself.<br /><br />
|
||||||
|
If you have questions I am at your disposal.<br />
|
||||||
|
Giving explanations in a video would be a major asset.<br /><br />
|
||||||
|
I would like start the project with you this week.<br /><br />
|
||||||
|
Thank you.<br /><br /><b>Budget</b>: $575
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Mobile app features</b>:User Authentication, User Profile Creation, Social Media Account Integration <br /><b>Mobile devices</b>:Phone, Tablet <br /><b>Google Play Store category</b>:Books & Reference <br /><b>Android programming languages</b>:Java
|
||||||
|
<br /><b>Country</b>: Canada<br /><a href="https://www.upwork.com/jobs/Bible-app_%7E0181de6822665cdc5b?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 23:33:20 +0000</pubDate><guid>https://www.upwork.com/jobs/Bible-app_%7E0181de6822665cdc5b?source=rss</guid></item><item><title><![CDATA[web development - Upwork]]></title><link>https://www.upwork.com/jobs/web-development_%7E01baa67a6d1b9c3e8f?source=rss</link><description><![CDATA[Developing an application with corresponding client-facing and administrative CMS, user accounts, and reporting tools utilizing a web-browser based interface, usable across multiple screen sizes, with<br />
|
||||||
|
webservice end-points for use with dedicated mobile apps (iOS and Android). Initial database<br />
|
||||||
|
design, creation, and backend services will facilitate a front-end web-based user interface, allowing<br />
|
||||||
|
for user registration, data input, administrative tasks, dashboard, reporting and analytics, etc.<br /><br />
|
||||||
|
There will be a User Profile, Data Entry Employee, Manager Profile, Data Listing Profile visible to users, Company Profile, Super Admin, Advertiser Profile<br /><br /><b>Budget</b>: $500
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Apple devices</b>:iPhone <br /><b>App Store category</b>:Finance
|
||||||
|
<br /><b>Country</b>: Ukraine<br /><a href="https://www.upwork.com/jobs/web-development_%7E01baa67a6d1b9c3e8f?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Developing an application with corresponding client-facing and administrative CMS, user accounts, and reporting tools utilizing a web-browser based interface, usable across multiple screen sizes, with<br />
|
||||||
|
webservice end-points for use with dedicated mobile apps (iOS and Android). Initial database<br />
|
||||||
|
design, creation, and backend services will facilitate a front-end web-based user interface, allowing<br />
|
||||||
|
for user registration, data input, administrative tasks, dashboard, reporting and analytics, etc.<br /><br />
|
||||||
|
There will be a User Profile, Data Entry Employee, Manager Profile, Data Listing Profile visible to users, Company Profile, Super Admin, Advertiser Profile<br /><br /><b>Budget</b>: $500
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development <br /><b>Apple devices</b>:iPhone <br /><b>App Store category</b>:Finance
|
||||||
|
<br /><b>Country</b>: Ukraine<br /><a href="https://www.upwork.com/jobs/web-development_%7E01baa67a6d1b9c3e8f?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 23:14:17 +0000</pubDate><guid>https://www.upwork.com/jobs/web-development_%7E01baa67a6d1b9c3e8f?source=rss</guid></item><item><title><![CDATA[APP Progect - Upwork]]></title><link>https://www.upwork.com/jobs/APP-Progect_%7E01e98edfdf8a851415?source=rss</link><description><![CDATA[Developing an application with corresponding client-facing and administrative CMS, user accounts, and reporting tools utilizing a web-browser based interface, usable across multiple screen sizes, with<br />
|
||||||
|
webservice end-points for use with dedicated mobile apps (iOS and Android). Initial database<br />
|
||||||
|
design, creation, and backend services will facilitate a front-end web-based user interface, allowing<br />
|
||||||
|
for user registration, data input, administrative tasks, dashboard, reporting and analytics, etc.<br /><br />
|
||||||
|
There will be a User Profile, Data Entry Employee, Manager Profile, Data Listing Profile visible to users, Company Profile, Super Admin, Advertiser Profile<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Web Development
|
||||||
|
<br /><b>Skills</b>: Website Development <br /><b>Country</b>: Ukraine<br /><a href="https://www.upwork.com/jobs/APP-Progect_%7E01e98edfdf8a851415?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Developing an application with corresponding client-facing and administrative CMS, user accounts, and reporting tools utilizing a web-browser based interface, usable across multiple screen sizes, with<br />
|
||||||
|
webservice end-points for use with dedicated mobile apps (iOS and Android). Initial database<br />
|
||||||
|
design, creation, and backend services will facilitate a front-end web-based user interface, allowing<br />
|
||||||
|
for user registration, data input, administrative tasks, dashboard, reporting and analytics, etc.<br /><br />
|
||||||
|
There will be a User Profile, Data Entry Employee, Manager Profile, Data Listing Profile visible to users, Company Profile, Super Admin, Advertiser Profile<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Web Development
|
||||||
|
<br /><b>Skills</b>: Website Development <br /><b>Country</b>: Ukraine<br /><a href="https://www.upwork.com/jobs/APP-Progect_%7E01e98edfdf8a851415?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 23:03:04 +0000</pubDate><guid>https://www.upwork.com/jobs/APP-Progect_%7E01e98edfdf8a851415?source=rss</guid></item><item><title><![CDATA[Social Commerce app - Upwork]]></title><link>https://www.upwork.com/jobs/Social-Commerce-app_%7E01cd7923c5c93ac76d?source=rss</link><description><![CDATA[Looking for Android/iOS developer. Social Commerce site requiring log in, ability to post items, user notifications, list view of items available and messaging.<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Web Development
|
||||||
|
<br /><b>Skills</b>: Android, HTML, iOS Development, Java, JavaScript, Mobile App Development <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Social-Commerce-app_%7E01cd7923c5c93ac76d?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Looking for Android/iOS developer. Social Commerce site requiring log in, ability to post items, user notifications, list view of items available and messaging.<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Web Development
|
||||||
|
<br /><b>Skills</b>: Android, HTML, iOS Development, Java, JavaScript, Mobile App Development <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Social-Commerce-app_%7E01cd7923c5c93ac76d?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 22:46:55 +0000</pubDate><guid>https://www.upwork.com/jobs/Social-Commerce-app_%7E01cd7923c5c93ac76d?source=rss</guid></item><item><title><![CDATA[UI/UX designer for new app - Upwork]]></title><link>https://www.upwork.com/jobs/designer-for-new-app_%7E01430835020e16857f?source=rss</link><description><![CDATA[Need a designer to create mockups and branding for a new app which will be built for IOS and Android<br /><br /><b>Budget</b>: $2,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Design & Creative > Graphic Design
|
||||||
|
<br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/designer-for-new-app_%7E01430835020e16857f?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Need a designer to create mockups and branding for a new app which will be built for IOS and Android<br /><br /><b>Budget</b>: $2,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Design & Creative > Graphic Design
|
||||||
|
<br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/designer-for-new-app_%7E01430835020e16857f?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 22:37:03 +0000</pubDate><guid>https://www.upwork.com/jobs/designer-for-new-app_%7E01430835020e16857f?source=rss</guid></item><item><title><![CDATA[Simple Music Mobile App Development (iOS) - Upwork]]></title><link>https://www.upwork.com/jobs/Simple-Music-Mobile-App-Development-iOS_%7E0152f26834bdfe137b?source=rss</link><description><![CDATA[Simple music mobile app development for iOS and for android later. <br /><br />
|
||||||
|
More details in private message<br /><br /><b>Budget</b>: $50
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: iOS Development, iPad App Development, iPhone App Development, Mobile App Development <br /><b>Country</b>: Hungary<br /><a href="https://www.upwork.com/jobs/Simple-Music-Mobile-App-Development-iOS_%7E0152f26834bdfe137b?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Simple music mobile app development for iOS and for android later. <br /><br />
|
||||||
|
More details in private message<br /><br /><b>Budget</b>: $50
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: iOS Development, iPad App Development, iPhone App Development, Mobile App Development <br /><b>Country</b>: Hungary<br /><a href="https://www.upwork.com/jobs/Simple-Music-Mobile-App-Development-iOS_%7E0152f26834bdfe137b?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 22:25:50 +0000</pubDate><guid>https://www.upwork.com/jobs/Simple-Music-Mobile-App-Development-iOS_%7E0152f26834bdfe137b?source=rss</guid></item><item><title><![CDATA[IOS &amp; Android application for a my wedding - Upwork]]></title><link>https://www.upwork.com/jobs/IOS-amp-Android-application-for-wedding_%7E017660147879e00fb8?source=rss</link><description><![CDATA[Looking to create a native iOS and Android application for my and my fiance's wedding. At a minimum it should include functionality such as: Guest RSVP's, photo sharing, push notifications, information regarding the various events of the wedding.<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $6,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, iOS Development, iPad App Development, iPhone App Development, Mobile App Development <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/IOS-amp-Android-application-for-wedding_%7E017660147879e00fb8?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Looking to create a native iOS and Android application for my and my fiance's wedding. At a minimum it should include functionality such as: Guest RSVP's, photo sharing, push notifications, information regarding the various events of the wedding.<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $6,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, iOS Development, iPad App Development, iPhone App Development, Mobile App Development <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/IOS-amp-Android-application-for-wedding_%7E017660147879e00fb8?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 22:25:45 +0000</pubDate><guid>https://www.upwork.com/jobs/IOS-amp-Android-application-for-wedding_%7E017660147879e00fb8?source=rss</guid></item><item><title><![CDATA[K mobile - Upwork]]></title><link>https://www.upwork.com/jobs/mobile_%7E0139cb0a6a64635a68?source=rss</link><description><![CDATA[Need a social app on iOS and droid, with gps functions.<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $5,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, Apple Xcode, iOS Development, iPad App Development, iPhone App Development, Mobile App Development <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/mobile_%7E0139cb0a6a64635a68?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Need a social app on iOS and droid, with gps functions.<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $5,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, Apple Xcode, iOS Development, iPad App Development, iPhone App Development, Mobile App Development <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/mobile_%7E0139cb0a6a64635a68?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 22:25:27 +0000</pubDate><guid>https://www.upwork.com/jobs/mobile_%7E0139cb0a6a64635a68?source=rss</guid></item><item><title><![CDATA[App developer - Upwork]]></title><link>https://www.upwork.com/jobs/App-developer_%7E01e9463621199176e0?source=rss</link><description><![CDATA[Looking to create a fully functional poker gaming application compatible with android &amp; iOS<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $3,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android App Development, iPhone App Development, Mobile App Development <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/App-developer_%7E01e9463621199176e0?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[Looking to create a fully functional poker gaming application compatible with android &amp; iOS<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $3,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android App Development, iPhone App Development, Mobile App Development <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/App-developer_%7E01e9463621199176e0?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 22:10:24 +0000</pubDate><guid>https://www.upwork.com/jobs/App-developer_%7E01e9463621199176e0?source=rss</guid></item><item><title><![CDATA[Unity 3D Developer for Augmented Reality - Upwork]]></title><link>https://www.upwork.com/jobs/Unity-Developer-for-Augmented-Reality_%7E01fa577c0722d9e726?source=rss</link><description><![CDATA[*Who we are looking for* <br />
|
||||||
|
Unity Developer <br />
|
||||||
|
Required <br />
|
||||||
|
- Mobile App Experience <br />
|
||||||
|
- Ability to code in C# <br />
|
||||||
|
- Proficient Unity Experience <br />
|
||||||
|
- Working with third party integrations in Unity <br /><br />
|
||||||
|
Desired <br />
|
||||||
|
- AR Experience <br />
|
||||||
|
- SLAM Experience <br />
|
||||||
|
- 3D Modeling Experience <br />
|
||||||
|
- SOLID Development Methodology <br />
|
||||||
|
- Computer Vision Experience <br /><br />
|
||||||
|
We are building a markerless augmented reality app that uses GPS to anchor 2D / 3D objects around the world. The apps various features allow users to interact with both content and other users. Specific details are unavailable to the general public at this time. It is helpful to know that our start-up is incredibly well funded. This position pays a competitive salary and includes benefits. Equity subject to vesting will be awarded and promptly granted to the selected candidate.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android App Development, iOS Development, iPhone App Development <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Unity-Developer-for-Augmented-Reality_%7E01fa577c0722d9e726?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[*Who we are looking for* <br />
|
||||||
|
Unity Developer <br />
|
||||||
|
Required <br />
|
||||||
|
- Mobile App Experience <br />
|
||||||
|
- Ability to code in C# <br />
|
||||||
|
- Proficient Unity Experience <br />
|
||||||
|
- Working with third party integrations in Unity <br /><br />
|
||||||
|
Desired <br />
|
||||||
|
- AR Experience <br />
|
||||||
|
- SLAM Experience <br />
|
||||||
|
- 3D Modeling Experience <br />
|
||||||
|
- SOLID Development Methodology <br />
|
||||||
|
- Computer Vision Experience <br /><br />
|
||||||
|
We are building a markerless augmented reality app that uses GPS to anchor 2D / 3D objects around the world. The apps various features allow users to interact with both content and other users. Specific details are unavailable to the general public at this time. It is helpful to know that our start-up is incredibly well funded. This position pays a competitive salary and includes benefits. Equity subject to vesting will be awarded and promptly granted to the selected candidate.<br /><br /><br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android App Development, iOS Development, iPhone App Development <br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/Unity-Developer-for-Augmented-Reality_%7E01fa577c0722d9e726?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 22:06:03 +0000</pubDate><guid>https://www.upwork.com/jobs/Unity-Developer-for-Augmented-Reality_%7E01fa577c0722d9e726?source=rss</guid></item><item><title><![CDATA[App developing from the ground up - Upwork]]></title><link>https://www.upwork.com/jobs/App-developing-from-the-ground_%7E01ae8f406d2e6dc692?source=rss</link><description><![CDATA[I'm trying to find someone that's ambitious and focus on getting the job done someone that don't man put in and the long hours and making some good money now I will be very strict due to scam artist, people that's on here taking others Hardwork money with nothing in return so if you're willing to work hard get the job done and don't mind this great policies and not a scam artist for sure apply Asap<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $3,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, Apple Xcode, iOS Development, iPhone App Development, JavaScript, Mobile App Development, Objective-C, Swift <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/App-developing-from-the-ground_%7E01ae8f406d2e6dc692?source=rss">click to apply</a>]]></description><content:encoded><![CDATA[I'm trying to find someone that's ambitious and focus on getting the job done someone that don't man put in and the long hours and making some good money now I will be very strict due to scam artist, people that's on here taking others Hardwork money with nothing in return so if you're willing to work hard get the job done and don't mind this great policies and not a scam artist for sure apply Asap<br /><br />
|
||||||
|
This job was posted from a mobile device, so please pardon any typos or any missing details.<br /><br /><b>Budget</b>: $3,000
|
||||||
|
<br /><b>Posted On</b>: March 07, 2018 03:00 UTC<br /><b>Category</b>: Web, Mobile & Software Dev > Mobile Development
|
||||||
|
<br /><b>Skills</b>: Android, Android App Development, Apple Xcode, iOS Development, iPhone App Development, JavaScript, Mobile App Development, Objective-C, Swift <br /><b>Location Requirement</b>: Only freelancers located in the United States may apply.
|
||||||
|
<br /><b>Country</b>: United States<br /><a href="https://www.upwork.com/jobs/App-developing-from-the-ground_%7E01ae8f406d2e6dc692?source=rss">click to apply</a>]]></content:encoded><pubDate>Tue, 06 Mar 2018 21:54:02 +0000</pubDate><guid>https://www.upwork.com/jobs/App-developing-from-the-ground_%7E01ae8f406d2e6dc692?source=rss</guid></item></channel></rss>
|
478
tests/data/wbrawner.xml
Normal file
478
tests/data/wbrawner.xml
Normal file
|
@ -0,0 +1,478 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>William Brawner</title>
|
||||||
|
<description>I'm a tech enthusiast trying to learn new things every day. I live and breathe Android, Linux, and cyber security.
|
||||||
|
</description>
|
||||||
|
<link>https://wbrawner.com//</link>
|
||||||
|
<atom:link href="https://wbrawner.com//feed.xml" rel="self" type="application/rss+xml"/>
|
||||||
|
<pubDate>Sun, 18 Feb 2018 19:13:22 -0600</pubDate>
|
||||||
|
<lastBuildDate>Sun, 18 Feb 2018 19:13:22 -0600</lastBuildDate>
|
||||||
|
<generator>Jekyll v3.7.2</generator>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Testing Your Android Apps for Chromebooks - When You Don't Have One</title>
|
||||||
|
<description><p>While I don’t have a Chromebook, I recently bought a Samsung Dex, which for those of you who aren’t aware of what that is, it basically allows you to take your Samsung phone, dock it, connect a mouse, keyboard, and external monitor, and use the phone as if it were a desktop computer. Seeing as I still actively develop and use <a href="https://wbrawner.com/2017/08/28/simple-markdown-v0-1-0/">Simple Markdown</a>, I wanted to take a look at how I could make it compatible with Dex so that I could give it a go. Much to my surprise, Android emulators have the multi-window functionality built-in. Samsung has provided us with a <a href="http://developer.samsung.com/samsung-dex/testing">neat little guide</a> to take a standard emulator and convert it for desktop use, but I’ll give you the quick points below.</p>
|
||||||
|
|
||||||
|
<p>Create an emulator based on the Nexus 6P running Android Nougat.
|
||||||
|
Ensure that you have <code class="highlighter-rouge">adb</code> on your <code class="highlighter-rouge">PATH</code>, and open up the terminal. Run the following:</p>
|
||||||
|
|
||||||
|
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>adb shell
|
||||||
|
</code></pre></div></div>
|
||||||
|
<p>This will drop you into the terminal session for your emulator, where you’ll run the following commands:</p>
|
||||||
|
|
||||||
|
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>su
|
||||||
|
setenforce 0
|
||||||
|
settings put global enable_freeform_support 1
|
||||||
|
cd /data/local/tmp
|
||||||
|
mkdir permissions &amp;&amp; cd permissions
|
||||||
|
cp -a /system/etc/permissions/* ./
|
||||||
|
sed -e "s/live_wallpaper/freeform_window_management/" android.software.live_wallpaper.xml &gt; freeform.xml
|
||||||
|
mount --bind . /system/etc/permissions
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
reboot
|
||||||
|
</code></pre></div></div>
|
||||||
|
|
||||||
|
<p>Once the emulator reboots, run your app. Tap the Recent Apps button and you should notice a new icon next to the close button.</p>
|
||||||
|
|
||||||
|
<p><img src="/uploads/2018/02/freeform_icon.png" alt="Freeform Icon" /></p>
|
||||||
|
|
||||||
|
<p>Tap that, and your app should launch in freeform mode. Last but not least, you’ll need to adjust the view density to get the resolution closer to that of a Chromebook (or Dex). Rotate the emulator into landscape mode and run <code class="highlighter-rouge">adb shell</code> to get into the device’s terminal again. From there, run the following:</p>
|
||||||
|
|
||||||
|
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wm density 160
|
||||||
|
wm size 1080x1920
|
||||||
|
</code></pre></div></div>
|
||||||
|
|
||||||
|
<p>Now, you should be looking at your app as if it were running on a Chromebook! Interestingly enough, I was able to replicate a bug that was plaguing some of my Chromebook users that occurred by resizing the window. Here’s a screenshot of Simple Markdown in action:</p>
|
||||||
|
|
||||||
|
<p><a href="/uploads/2018/02/Simple-Markdown-Freeform.png" target="_blank"><img src="/uploads/2018/02/Simple-Markdown-Freeform.png" /></a></p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Sun, 18 Feb 2018 00:00:00 -0600</pubDate>
|
||||||
|
<link>https://wbrawner.com//2018/02/18/testing-your-android-apps-for-chromebooks-when-you-dont-have-one/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2018/02/18/testing-your-android-apps-for-chromebooks-when-you-dont-have-one/</guid>
|
||||||
|
|
||||||
|
<category>android</category>
|
||||||
|
|
||||||
|
<category>simple markdown</category>
|
||||||
|
|
||||||
|
|
||||||
|
<category>Tutorials</category>
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Simple Markdown January Updates</title>
|
||||||
|
<description><p>I barely managed to squeeze these updates into the end of January, despite a busy post-holiday season for me. Simple Markdown is still not polished enough for me to call it a 1.0 release yet, as there are still plenty of rough edges to smooth out, and a few new features I’d like to add. You can grab the current revision from the <a href="https://play.google.com/store/apps/details?id=com.wbrawner.simplemarkdown">Play Store</a> or the <a href="https://github.com/wbrawner/SimpleMarkdown/releases/tag/v0.3.1">GitHub releases page</a>. In this update, version 0.3.1, you can expect the following:</p>
|
||||||
|
|
||||||
|
<h3 id="tldr">tl;dr</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>A couple of new features</li>
|
||||||
|
<li>Bug fixes</li>
|
||||||
|
<li>Code cleanup</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3 id="new-features">New features</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Settings: you are seeing the beginnings of some customization. I’ll try to keep things simple with it in the spirit of the app, but I also know that it’s nice to have a little control over your apps.</li>
|
||||||
|
<li>Auto-save: files are now automatically saved whenever you leave the app. No need to tap the “Save” button any more! Note: this is enabled by default but can be disabled from the settings.</li>
|
||||||
|
<li>New files: you can now quickly reset your working file to switch into another file. No need to close and re-open the app any more!</li>
|
||||||
|
<li>Auto-capitalization: the editor will automatically capitalize new sentences so you can leave the Shift key in peace!</li>
|
||||||
|
<li>Adaptive icon!</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3 id="bug-fixesreliability-improvements">Bug fixes/reliability improvements:</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Fixed horizontal scrolling for code blocks. This is disabled by default, since it conflicts with the swipe to view the preview or go back to editing feature. For now, you can quickly enable/disable swiping from the menu by tapping “Lock Swiping”, but I hope to make this automatic in the future so you don’t have to think about it anymore. I’ll be sure to write about it when I’ve got it :)</li>
|
||||||
|
<li>Fixed title setting on opening new files.</li>
|
||||||
|
<li>Cleaned up some unneeded/unused code.</li>
|
||||||
|
<li>Added more tests to prevent regressions.</li>
|
||||||
|
<li>Fixed a bug with physical keyboards where holding down Backspace could cause a crash</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>I’m going to continue working on Simple Markdown as I have time, and as always, don’t hesitate to reach out to me if you run into any problems or have any suggestions or requests for improving the app! You can get in touch through the <a href="https://wbrawner.com/contact/">contact page</a> on my site or from the <a href="https://github.com/wbrawner/SimpleMarkdown/issues">GitHub issues page</a>.</p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Sun, 28 Jan 2018 00:00:00 -0600</pubDate>
|
||||||
|
<link>https://wbrawner.com//2018/01/28/simple-markdown-january-updates/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2018/01/28/simple-markdown-january-updates/</guid>
|
||||||
|
|
||||||
|
<category>android</category>
|
||||||
|
|
||||||
|
<category>open source</category>
|
||||||
|
|
||||||
|
<category>simple markdown</category>
|
||||||
|
|
||||||
|
|
||||||
|
<category>Updates</category>
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Webview Memory Leak</title>
|
||||||
|
<description><p>A few months ago, I published an app called <a href="https://play.google.com/store/apps/details?id=com.wbrawner.simplemarkdown">SimpleMarkdown</a>, which, as you can probably guess from the title, is a markdown editor. I had a strange bug that I couldn’t quite figure out no matter how much I searched it and eventually I had to put it on the back burner as I got overwhelmed with work. Gotta pay the bills somehow. Anyways, what was happening was the app would randomly crash due to a memory leak that was happening in the WebView, which is what I use to render the preview of the markdown. I couldn’t quite pin what was causing it, but you can see the full stack trace in the <a href="https://github.com/wbrawner/SimpleMarkdown/issues/7">GitHub issue</a>. The exception message was as follows:</p>
|
||||||
|
|
||||||
|
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Activity com.wbrawner.simplemarkdown.view.activity.MainActivity has leaked IntentReceiver org.chromium.content.browser.accessibility.LollipopBrowserAccessibilityManager$1@9a08817 that was originally registered here. Are you missing a call to unregisterReceiver()?
|
||||||
|
</code></pre></div></div>
|
||||||
|
|
||||||
|
<p>Naturally, this confused me, as I wasn’t registering any IntentReceivers in the Fragment nor in the Activity. This was also a pretty big show stopper, as I myself had lost at least one or two blog posts due to not saving the file before I ran into the crash. I can only imagine how frustrated other users were. I finally had the time to look into this again and I decided that I’d give it another go before just pulling out the preview functionality altogether. I’d rather have a small feature set in a stable app than a feature-packed app that doesn’t do the job it sets out to do properly.</p>
|
||||||
|
|
||||||
|
<p>After a little searching, I came across this <a href="https://github.com/vickychijwani/quill/issues/75#issuecomment-241678135">GitHub issue</a>, where user vickychijwani was experiencing the same issue in a similar app of his called Quill. He discovered that by removing the WebView from its parent View prior to calling <code class="highlighter-rouge">WebView#destroy()</code>, he no longer experienced the crash. I tested this myself, and sure enough, I’m no longer experiencing the crash myself! In fact, I was able to get through writing this blog post from my tablet using SimpleMarkdown and haven’t run into any issues whatsoever. Kudos to you, vickychijwani!</p>
|
||||||
|
|
||||||
|
<p>Before:</p>
|
||||||
|
|
||||||
|
<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="nd">@Override</span>
|
||||||
|
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onDestroyView</span><span class="o">()</span> <span class="o">{</span>
|
||||||
|
<span class="kd">super</span><span class="o">.</span><span class="na">onDestroyView</span><span class="o">();</span>
|
||||||
|
<span class="n">unbinder</span><span class="o">.</span><span class="na">unbind</span><span class="o">();</span>
|
||||||
|
<span class="o">}</span></code></pre></figure>
|
||||||
|
|
||||||
|
<p>You can see here that I was simply expecting for the view to be properly disposed of by simply destroying it. I am using a fragment here though, so this may not be an issue when using a WebView within an Activity. The fix is as follows:</p>
|
||||||
|
|
||||||
|
<p>After:</p>
|
||||||
|
|
||||||
|
<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="nd">@Override</span>
|
||||||
|
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onDestroyView</span><span class="o">()</span> <span class="o">{</span>
|
||||||
|
<span class="k">if</span> <span class="o">(</span><span class="n">markdownPreivew</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">){</span>
|
||||||
|
<span class="o">((</span><span class="n">ViewGroup</span><span class="o">)</span> <span class="n">markdownPreview</span><span class="o">).</span><span class="na">getParent</span><span class="o">().</span><span class="na">removeChild</span><span class="o">(</span><span class="n">markdownPreview</span><span class="o">);</span>
|
||||||
|
<span class="n">markdownPreview</span><span class="o">.</span><span class="na">destroy</span><span class="o">()</span>
|
||||||
|
<span class="o">}</span>
|
||||||
|
<span class="n">unbinder</span><span class="o">.</span><span class="na">unbind</span><span class="o">();</span>
|
||||||
|
<span class="kd">super</span><span class="o">.</span><span class="na">onDestroyView</span><span class="o">();</span>
|
||||||
|
<span class="o">}</span></code></pre></figure>
|
||||||
|
|
||||||
|
<p>The key takeaways from this are that you have to explicitly destroy a WebView (at least in a fragment), as Android doesn’t handle this for you, and prior to doing that, you have to remove it from its parent view.</p>
|
||||||
|
|
||||||
|
<p>Just to play it safe, I’ve added <a href="https://try.crashlytics.com">Crashlytics</a> to the next release, so that I can see any and all crashes, and make sure I squash the bug completely. I’ll be adding a privacy policy for SimpleMarkdown accordingly. Crashlytics only reports the device, version of Android, and stack trace If this makes you uncomfortable with using SimpleMardown, please feel free to build the app from source (it’s not very difficult and you can reach out to me if you need any assistance.)</p>
|
||||||
|
|
||||||
|
<p>Anyways, if you haven’t already, <a href="https://play.google.com/store/apps/details?id=com.wbrawner.simplemarkdown">check out SimpleMarkdown</a> and let me know what you think!</p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Sun, 03 Dec 2017 00:00:00 -0600</pubDate>
|
||||||
|
<link>https://wbrawner.com//2017/12/03/webview-memory-leak/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2017/12/03/webview-memory-leak/</guid>
|
||||||
|
|
||||||
|
<category>android</category>
|
||||||
|
|
||||||
|
<category>open source</category>
|
||||||
|
|
||||||
|
<category>simple markdown</category>
|
||||||
|
|
||||||
|
|
||||||
|
<category>Projects and Experiments</category>
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Simple Markdown v0.1.0</title>
|
||||||
|
<description><p>In my post on <a href="https://brawner.tech/2016/09/16/progressive-web-apps/">Progressive Web Apps</a>, I opened by saying that I had always wanted to get into Android development but hadn’t “taken the time to learn Java and get to it”. So, I decided enough is enough and I want to pursue my goals. I recently read through Donn Felker’s 5-day newsletter on how to become a World-class developer, and one of the things he recommends is to write an app, even if it’s already been done before, to practice and also to have something to put into your portfolio. (Side note: even if you don’t want to be an Android dev or even a dev, I’m sure you can get something out of Donn Felker’s blog and newsletter. You should definitely <a href="http://www.donnfelker.com/">check him out</a>). So, that’s exactly what I did. Donn also recommends getting out into the community, whether that be through blogging, Meetups, conferences, whatever. It’s not so easy for me to get to Meetups or conferences down here in Mexico, so that leaves me to blog for now.</p>
|
||||||
|
|
||||||
|
<p>As part of an initiative to get myself to blog more often, I decided to write a markdown app. The other markdown apps I tried seemed OK, but they all had a thing or two I just didn’t like. Either crashing, having confusing or unappealing interfaces, lacking features, or even sending my personal data back home, I felt the need to come up with my own solution. It’s currently in a beta state but I finally feel comfortable sharing it (after rewriting it about 4 times over). I still have plenty to learn and I’m sure there are places in the code that could be simplified or improved, so if you have any suggestions then please share!</p>
|
||||||
|
|
||||||
|
<p>So, Simple Markdown is an app that, simply put, allows you to write Markdown. There’s no fluff, no extras, and I’m not collecting data on you - it’s just markdown. For those times when you want the app to get out of your way and just let you do your thing, Simple Markdown is there for you. Personally, I prefer to write my blog posts in Markdown, as I find the rich text editor doesn’t always work the way I want it to, especially when I’m dealing with code. Writing the raw HTML can be a little tedious too, particularly when I can’t count on my editor to auto-close the tags (I know, I’m a lazy dev :P).</p>
|
||||||
|
|
||||||
|
<p>The app is open source, licensed under the Apache 2.0 license, so you can <a href="https://github.com/wbrawner/SimpleMarkdown">check out the code</a> and contribute to it if you’d like! I’d also appreciate any feedback on how I can make it or the code better, so if you have any suggestions, feel free to <a href="https://github.com/wbrawner/SimpleMarkdown/issues">open an issue</a> or <a href="https://brawner.tech/contact/">contact me directly</a>! Below you can find a few screenshots of the app in action, and be sure to check it out on the Play Store!</p>
|
||||||
|
|
||||||
|
<p>In addition to getting myself to blog a bit more, I also wanted to get some hands-on time with a few popular libraries like RxJava and Dagger, to name a couple. I listen to the <a href="http://fragmentedpodcast.com/">Fragmented podcast</a> and recently signed up over at <a href="https://caster.io/">Caster.io</a> so I’m always hearing about them but I hadn’t yet given them a chance. Another thing I wanted to put into practice was the <abbr title="Model-View-Presenter">MVP</abbr> architecture, since <abbr title="Model-View-Controller">MVC</abbr> wasn’t doing it for me and I really want to work on testing.</p>
|
||||||
|
|
||||||
|
<p><a href="/uploads/2017/08/Screenshot_1503939483.png"><img class="wp-image-467 size-medium" src="/uploads/2017/08/Screenshot_1503939483.png" alt="" /></a> Opening the app for the first time takes you straight to editing - worry about the file name and where to save it later.</p>
|
||||||
|
|
||||||
|
<p><a href="/uploads/2017/08/Screenshot_1503940322.png"><img class="wp-image-470 size-medium" src="/uploads/2017/08/Screenshot_1503940322.png" alt="" /></a> Typing in Markdown doesn’t do immediate previews (I find them really annoying)</p>
|
||||||
|
|
||||||
|
<p><img class="wp-image-471 size-medium" src="/uploads/2017/08/Screenshot_1503940325.png" alt="" /> Instead, you can just swipe over to the PREVIEW tab or tap on it to see what your Markdown will look like rendered in HTML</p>
|
||||||
|
|
||||||
|
<p><img class="wp-image-468 size-medium" src="/uploads/2017/08/Screenshot_1503939505.png" alt="" /> I’ve included a little help document for those who aren’t familiar with Markdown as well (written in Markdown)</p>
|
||||||
|
|
||||||
|
<p><a href="/uploads/2017/08/Screenshot_1503940343.png"><img class="wp-image-472 size-medium" src="/uploads/2017/08/Screenshot_1503940343.png" alt="" /></a> Saving files is pretty straight-forward</p>
|
||||||
|
|
||||||
|
<p><a href="/uploads/2017/08/Screenshot_1503940616.png"><img class="wp-image-473 size-medium" src="/uploads/2017/08/Screenshot_1503940616.png" alt="" /></a> In landscape mode, you get a live preview of what you’re typing off to the side.</p>
|
||||||
|
|
||||||
|
<p><a href="/uploads/2017/08/Screenshot_1503940801.png"><img class="wp-image-478 size-medium" src="/uploads/2017/08/Screenshot_1503940801.png" alt="" /></a> You can easily share the markdown to other apps as well</p>
|
||||||
|
|
||||||
|
<p>Anyways, please check out the app in the Play Store or the Galaxy Apps Store and give me some feedback :)</p>
|
||||||
|
|
||||||
|
<p><a href="http://galxy.us/wbsm" target="_blank"><img src="https://www.galxy.us/badgeimage" alt="Available on Samsung Galaxy Apps" style="max-width: 100%; height: auto; box-shadow: none;" /></a></p>
|
||||||
|
|
||||||
|
<p><a href="https://play.google.com/store/apps/details?id=com.wbrawner.simplemarkdown&amp;pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1"><img style="box-shadow: none; max-width: 250px;" src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png" alt="Get it on Google Play" /></a></p>
|
||||||
|
|
||||||
|
<p>Legal notice because laws:</p>
|
||||||
|
|
||||||
|
<p>Google Play and the Google Play logo are trademarks of Google Inc.</p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Mon, 28 Aug 2017 00:00:00 -0500</pubDate>
|
||||||
|
<link>https://wbrawner.com//2017/08/28/simple-markdown-v0-1-0/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2017/08/28/simple-markdown-v0-1-0/</guid>
|
||||||
|
|
||||||
|
<category>android</category>
|
||||||
|
|
||||||
|
<category>open source</category>
|
||||||
|
|
||||||
|
<category>simple markdown</category>
|
||||||
|
|
||||||
|
|
||||||
|
<category>Projects and Experiments</category>
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Using Git on a Chromebook</title>
|
||||||
|
<description><p>tl;dr sgit + arc welder = git on chromebook</p>
|
||||||
|
|
||||||
|
<p>Anyone who has used a Chromebook knows the downsides of doing so. As a standard user, there probably aren’t many, unless you’re an iPhone user or a Microsoft Office user (though even Office has online web app versions of its products). As a developer, however, the lack of tools that are easily available is rather disdaining. Now, you can enter dev mode and use crouton, or wipe your Chromebook and replace ChromeOS with Linux, but these have their drawbacks. Using dev mode at all removes the encryption from your device, and, while you can encrypt your chroot if you use crouton, you leave your ChromeOS side completely vulnerable. I am quite a fan of the ChromeOS look and feel so I don’t particularly want to do this nor remove it, which is what led me to find another way around this to still get work done. The solution I am presenting allows you to use git on your Chromebook <em>without</em> needing to tamper with ChromeOS.</p>
|
||||||
|
|
||||||
|
<h2 id="prerequisites">Prerequisites</h2>
|
||||||
|
|
||||||
|
<p>To begin, you’ll need the <a href="https://chrome.google.com/webstore/detail/arc-welder/emfinbmielocnlhgmfkkmkngdoccbadn">ARC Welder</a> app from the Chrome Web Store. This neat little Google tool allows you to take an Android APK and convert it to a useable Chromebook app. With Google bringing the Play Store to Chromebooks over the course of the next year, this method and that app will both be rather pointless, but for those of us who are too impatient to wait, this is a fine strategy. With that downloaded and added to Chrome, you can then head on over to GitHub and grab the APK for <a href="https://github.com/sheimi/SGit/releases">SGit</a>. The reason I get my APKs from there for this process is because the Play Store doesn’t allow you to directly download the APKs for the apps you want, and I’m quite certain that extracting the APKs from your device goes against the Terms of Use. SGit is released under the GPLv3 license, so it’s safe to use for our purposes, and it is a fine Android client for git, that supports HTTP. HTTPS, and SSH (as long as your key isn’t password-protected) for accessing your repos.</p>
|
||||||
|
|
||||||
|
<h2 id="converting-the-app">Converting the App</h2>
|
||||||
|
|
||||||
|
<p>Now that you have the resources, it’s time to convert the APK into a format that the Chromebook can use. Fire up the ARC Welder and add the APK for SGit. All of the default settings will work perfectly fine except for the last. Click on the field that says Additional Metadata and enter the following:</p>
|
||||||
|
|
||||||
|
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{"enableExternalDirectory": true}
|
||||||
|
</code></pre></div></div>
|
||||||
|
|
||||||
|
<p>This will allow the app to access your Chromebook’s files, because by default, it is in a sort of container, isolated from the rest of your system.</p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot-2016-09-29-at-8.32.11-PM.png" alt="A screenshot of the ARC Welder app with the settings filled in to make the SGit app work on a Chromebook" /></p>
|
||||||
|
|
||||||
|
<p>From there, go ahead and download the zip file for this. You might be prompted to select a folder here. If so, then select one that you would want to share with the app. I personally select my entire downloads folder. Once you’ve saved the zip file, go and unzip it somewhere that will be easy for you to find (just not in your Google Drive or any other cloud storage). Now it’s time to install the app.</p>
|
||||||
|
|
||||||
|
<h2 id="installation">Installation</h2>
|
||||||
|
|
||||||
|
<p>Navigate over to <a href="chrome://extensions/">chrome://extensions/</a>. Up in the top right corner, you’ll see a checkbox that says Developer Mode. If you don’t already have this checked, do so now.</p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot-2016-09-30-at-5.49.53-PM.png" alt="The developer mode checkbox" /></p>
|
||||||
|
|
||||||
|
<p>After you’ve checked that, you’ll want to click on the “Load unpacked extension” button, and open the folder where you unzipped the app.</p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot-2016-09-30-at-5.51.53-PM.png" alt="The &quot;Load unpacked extensions&quot; button" /></p>
|
||||||
|
|
||||||
|
<p>You should now see SGit in both your apps and the extension list below. Fire it up and you’re ready to go</p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot-2016-10-02-at-1.02.43-PM.png" alt="" /></p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot-2016-10-02-at-10.11.06-AM.png" alt="A screenshot of me demonstrating the ability of SGit to clone a git repo on a Chrome OS device" /></p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot-2016-10-02-at-1.02.43-PM.png" alt="A screenshot of the various git operations that SGit can perform" /></p>
|
||||||
|
|
||||||
|
<h2 id="extras">Extras</h2>
|
||||||
|
|
||||||
|
<p>Having your code available is nice, but being able to work with it is even better. For this, I am a huge fan of <a href="https://chrome.google.com/webstore/detail/caret/fljalecfjciodhpcledpamjachpmelml?hl=en">Caret</a> (there is also a neat fork of it called <a href="https://chrome.google.com/webstore/detail/caret-t/agiednhnlghobdgpgfdnbdaflnngmoij?hl=en">Caret-T</a>). I myself use it (sometimes even from my Linux box) and highly recommend it. Editing code isn’t everything though - you also need to be able to test it. While you won’t be able to run any PHP or Ruby with this tool, you can do front end development and even full AngularJS apps. It’s called <a href="https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb?hl=en">Web Server for Chrome</a>, and it gives you a basic, easy to configure server to run HTML, CSS, and JS. I also personally use this to do front end work.</p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Fri, 30 Sep 2016 00:00:00 -0500</pubDate>
|
||||||
|
<link>https://wbrawner.com//2016/09/30/using-git-on-a-chromebook/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2016/09/30/using-git-on-a-chromebook/</guid>
|
||||||
|
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Say Time for Chrome</title>
|
||||||
|
<description><h2 id="tldr---say-time-for-chrome-in-the-chrome-web-store">tl;dr - <a href="https://chrome.google.com/webstore/detail/say-time-for-chrome/nfjdpimjabiocgdnlmdonmcdimhbfjhg">Say Time for Chrome in the Chrome Web Store</a></h2>
|
||||||
|
|
||||||
|
<p>One of the features of macOS that I really appreciate is the ability to have the Mac announce the hour. I find it incredibly helpful to stay on schedule and keep track of time. Unfortunately, on Windows and Linux, this isn’t as simple to set up. On Windows, the only method I have found involves using Windows Task Scheduler to run a VBScript/PowerShell script/.bat file/.exe file, which can be a nuisance and in my experience doesn’t work very well and isn’t convenient to configure (I don’t really care to have the hour announced at 2am). On Linux, you can use the saytime package, though I’m not sure it’s available on all distros, so you could use the espeak package, combined with the date package, and come up with a cron job that runs on your preferred intervals, which isn’t so bad but still a bit of an inconvenience to set up. To make things simpler for those of us who aren’t on macOS, I wrote a Chrome extension to do just that!</p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/screenshot-e1474934985410.png" alt="Say Time for Chrome configuration in the extensions menu for Chrome" /></p>
|
||||||
|
|
||||||
|
<p><a href="https://chrome.google.com/webstore/detail/say-time-for-chrome/nfjdpimjabiocgdnlmdonmcdimhbfjhg">Say Time for Chrome</a> allows you to quickly and easily configure your computer to announce the hour to you, every hour. At the moment, it’s only working in English, though if there is demand for it, I would be more than happy to implement other languages as well (provided they are supported by Chrome’s TTS API. If you try it out, please give me some feedback on how to improve it, and report any bugs you find! This is only version 0.1.0 so I hope to make it something very useful someday! Right now this extension is close-sourced, though I plan to open-source it as soon as I have time to clean up the code and add comments to ensure that it all makes sense.</p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Tue, 27 Sep 2016 00:00:00 -0500</pubDate>
|
||||||
|
<link>https://wbrawner.com//2016/09/27/say-time-for-chrome/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2016/09/27/say-time-for-chrome/</guid>
|
||||||
|
|
||||||
|
<category>chrome</category>
|
||||||
|
|
||||||
|
<category>chrome extension</category>
|
||||||
|
|
||||||
|
<category>weekend projects</category>
|
||||||
|
|
||||||
|
|
||||||
|
<category>Projects and Experiments</category>
|
||||||
|
|
||||||
|
<category>Quick Thoughts</category>
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Progressive Web Apps</title>
|
||||||
|
<description><p>For the longest time, I’ve wanted to get into Android development. While I haven’t yet taken the time to learn Java and get to it, I have been looking into progressive web apps. They’re actually rather exciting. Essentially, they seek to make web apps feel like native apps, to improve the user experience and increase conversions. I’m not really selling anything but I do like to provide a positive user experience to anyone who is interested in what I have to say, so I’ve taken the time to set this up. I’ll go over a couple of steps I took to make my <a href="https://interval-timer.wbrawner.com/">interval timer app</a> a progressive web app.</p>
|
||||||
|
|
||||||
|
<p>Before I get into that though, I’d like to show some examples of how it works. You can of course click on the link to see it in action, but here’s the summary:</p>
|
||||||
|
|
||||||
|
<h2 id="the-design">The Design</h2>
|
||||||
|
|
||||||
|
<p>I tried to make look and feel as much like a native app as possible. I’m a huge fan of the Material Design theme in case you hadn’t already noticed, so that was what I decided to go with in making this app.</p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot_20160920-174316.png" alt="The main app view" /></p>
|
||||||
|
|
||||||
|
<p>Now here I had already opened the app and even configured a timer. If I were a first-time visitor, however, I would be prompted to add the “app” to my home screen for easy access.</p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot_20160920-180259.png" alt="A popup on the screen prompts the user to add the app to their home screen" /></p>
|
||||||
|
|
||||||
|
<p>On Android, this integrates quite nicely. As you can see from the first screenshot, the Chrome address bar isn’t visible any longer, so it looks and feels like a native app.</p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot_20160920-180309.png" alt="A screenshot of the home screen of an Android device shows the saved app's icon" /></p>
|
||||||
|
|
||||||
|
<h2 id="the-functionality">The Functionality</h2>
|
||||||
|
|
||||||
|
<p>Another important distinction between web apps and native apps is that native apps can of course be run whether or not you have an internet connection. Some apps require an internet connection to actually serve you any content, but you can still open them up and use some limited functionality. The same is true of this interval timer app, which allows you to open and run it even if you are in airplane mode or have no internet connection.</p>
|
||||||
|
|
||||||
|
<p>Native apps can also send you push notifications if you permit it. This simple interval timer app has no need for push notifications, so I didn’t bother to implement them. My blog, however, can send you push notifications for each new post that I publish if you subscribe to it, so you can see those in action from here:</p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot_20160920-182021.png" alt="A screenshot of an Android phone lock screen shows a notification of a new post from my blog" /></p>
|
||||||
|
|
||||||
|
<p><img src="https://wbrawner.com//img/Screenshot-2016-09-20-at-6.18.01-PM.png" alt="A screenshot of a desktop notification from my blog tor the same new post" /></p>
|
||||||
|
|
||||||
|
<h2 id="the-why">The Why</h2>
|
||||||
|
|
||||||
|
<p>You might be asking yourself why this matters. The simple answer is user engagement. Take, for instance, an eCommerce shop that runs an online store but has no native mobile apps. By improving the design to be simpler and more user-friendly, you’re certain to increase your conversion rates because potential customers are much more likely to buy from your store if it’s easy to use. Using the offline capabilities of the app will allow you to store static assets like CSS and JS files, as well as images, to improve site loading times. Faster site loading times also increase conversion rates so the faster your site loads for the customer, the more likely they are to buy from you. Lastly, by implementing push notifications, you can alert your customers instantly to new products, sales, blog posts, you name it. Getting a push notification will make them more likely to visit your store, and more traffic will also inevitably lead to more conversions. The bottom line: progressive web apps increase conversions. But don’t take my word for it, read <a href="https://developers.google.com/web/showcase/2016/pdfs/flipkart.pdf">Google’s case study of Flipkart</a>, an Indian company who increased their conversion rate by 70% by implementing progressive web app techniques.</p>
|
||||||
|
|
||||||
|
<h2 id="the-how">The How</h2>
|
||||||
|
|
||||||
|
<p>At the core, this technology is powered by <a href="https://developers.google.com/web/fundamentals/primers/service-worker/?hl=en">Service Workers</a>. Service workers are registered to the users browser on the first time they visit the page, initializing the connection. This is how the cache is set up, which allows for offline viewing and increases the page loading speed. I personally read through <a href="https://developers.google.com/web/fundamentals/getting-started/your-first-offline-web-app/?hl=en">Google’s tutorial on them</a> to get started with mine. You can go through the whole tutorial step-by-step to get a good idea of how they work, or do as I did and just jump around to get the pieces that you need. Everyone has their own learning styles so do what suits you best. Feel free to <a href="https://github.com/wbrawner/interval-timer/blob/master/sw.js">take a look at my example</a> (and please provide tips on how to improve it if you see anything), as the whole project is open source. I just went for simplicity, caching the core assets on installation and then adding anything to the cache if it was missed initially.</p>
|
||||||
|
|
||||||
|
<p>For adding the app to the home screen, no code is required, unless you’d like to display a popup to your users inviting them to do add the app. This is because the actual action of adding the app to the home screen falls to the device’s browser. Matteo Spinelli has created a <a href="https://github.com/cubiq/add-to-homescreen">nice little library</a> for creating this popup, which I made use of, and it’s under the MIT license so you are free to do with it as you please. In order to set the icons that will be used for each device, you have to make use of various meta tags in the header. I recommend using the <a href="http://realfavicongenerator.net/">Favicon Generator</a>, as it really makes the entire process as simple as it can get, for Android, iOS, and Windows Phone icons. It even generates the code for you so it’s really a no-brainer.</p>
|
||||||
|
|
||||||
|
<h2 id="wrapping-it-up">Wrapping It Up</h2>
|
||||||
|
|
||||||
|
<p>If you’re interested in learning more about progressive web apps, I’d take a look at <a href="https://developers.google.com/web/progressive-web-apps/">Google’s articles on them</a>. They have a bit more in-depth resources as well as some pretty good tutorials and actual code on how to make your own progressive web app. For my blog, I’m running WordPress, there are a few extensions that I made use of to set up <a href="https://wordpress.org/plugins/chrome-push-notifications/">push notifications</a>, <a href="https://wordpress.org/plugins/offline-shell/">offline caching of static assets</a>, and the <a href="https://wordpress.org/plugins/official-add-to-homescreen/">add to home screen callout</a> (also by Matteo Spinelli). If none of these solutions work for you, it’s never a bad time to hire a freelancer to get the job done for you :)</p>
|
||||||
|
|
||||||
|
<p>If you’re into the Material Design as much as I am, you can also take a look at <a href="https://material.google.com/style/color.html#">Google’s Material Design Color Palettes</a> and this neat <a href="https://www.materialpalette.com/">Material Design Color Palette Generator</a>.</p>
|
||||||
|
|
||||||
|
<p>Got any tips and tricks about progressive web apps? Please share in the comments section below or from the <a href="https://brawner.tech/contact/">Contact page</a>!</p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Fri, 16 Sep 2016 23:46:34 -0500</pubDate>
|
||||||
|
<link>https://wbrawner.com//2016/09/16/progressive-web-apps/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2016/09/16/progressive-web-apps/</guid>
|
||||||
|
|
||||||
|
|
||||||
|
<category>Quick Thoughts</category>
|
||||||
|
|
||||||
|
<category>Tutorials</category>
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Vim and Vundle</title>
|
||||||
|
<description><p>For the longest time, I have neglected to put my vim configuration under some sort of version control. I suppose it’s not been a top priority for me to maintain the configuration that I’ve taken so much care to set up until now. Since I started using vim about a year ago, I’ve really only kept my configuration, along with the plugins that I like, stored on a backup drive and on my server. This is of course not the greatest set up. I admittedly haven’t been using vim as much lately because I’ve sort of viewed it as inferior to the likes of PHPStorm or even SublimeText. Curiosity got the best of me though, and I decided to do some research into whether or not vim could handle some of the functions that my GUI code editors can. To my surprise, vim is more than capable of handling all the tasks I currently use the other editors for, and even has a few goodies that I didn’t think of.</p>
|
||||||
|
|
||||||
|
<p>I do primarily PHP development, so that’s my primary concern when it comes to using a code editor. I stumbled upon <a href="http://blog.joncairns.com/2012/05/using-vim-as-a-php-ide/">this article by Jon Cairns</a> where he outlines several good plugins for vim directed to PHP devs. I didn’t decide to use all of the ones he listed, though I did grab more than half because they are fantastic. In addition to those, I have a few others that I like. Here’s the list (in no particular order):</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/VundleVim/Vundle.vim">VundleVim/Vundle.vim</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/scrooloose/nerdtree">scrooloose/nerdtree</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/Xuyuanp/nerdtree-git-plugin">Xuyuanp/nerdtree-git-plugin</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/jiangmiao/auto-pairs">jiangmiao/auto-pairs</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/alvan/vim-closetag">alvan/vim-closetag</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/shawncplus/phpcomplete.vim">shawncplus/phpcomplete.vim</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/joonty/vim-phpqa">joonty/vim-phpqa</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/ervandew/supertab">ervandew/supertab</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/StanAngeloff/php.vim">StanAngeloff/php.vim</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="https://github.com/kien/ctrlp.vim">kien/ctrlp.vim</a></p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>To manage all of these, I grabbed Vundle, which is what Jon Cairns mentions in his article. I must say, I am quite impressed. If you’re interested in getting started with Vundle, take a look at <a href="https://github.com/VundleVim/Vundle.vim#quick-start">their Readme on their GitHub page</a>. The instructions there are really self-explanatory and easy to follow. I got myself set up with Vundle, and added my favorite plugins to my .vimrc. Once I had that taken care of, I cleaned up my .vim folder to remove all of the plugin files, added my .vimrc file to my .vim folder, initialized it as a git repo, and pushed up to GitLab. Now, whenever I need to move my vim configuration to a new machine, I’m only 3 commands away from getting my favorite setup going:</p>
|
||||||
|
|
||||||
|
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone --recursive https://gitlab.com/billybrawner/vim.git ~/.vim
|
||||||
|
ln -s .vim/.vimrc
|
||||||
|
vim +PluginInstall +qall
|
||||||
|
</code></pre></div></div>
|
||||||
|
|
||||||
|
<p>This pulls down my configuration, moves it to where vim can find it, and installs all of my favorite plugins. I also have all the other benefits of having it under version control like being able to revert changes that I don’t end up liking and having safe backups elsewhere. Given my newly-discovered set of tools and easy-to-manage/setup configuration, I’ve decided to give vim another shot as my main editor.</p>
|
||||||
|
|
||||||
|
<p>If you’d like to check out my vim setup, you can see it at <a href="https://gitlab.com/billybrawner/vim.git">https://gitlab.com/billybrawner/vim.git</a>. If you have any other neat vim tips and tricks, or know of any awesome plugins (particularly related to PHP/WordPress/Magento development), please share them in the comments!</p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Fri, 16 Sep 2016 23:03:58 -0500</pubDate>
|
||||||
|
<link>https://wbrawner.com//2016/09/16/vim-and-vundle/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2016/09/16/vim-and-vundle/</guid>
|
||||||
|
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Recent Downtime</title>
|
||||||
|
<description><p>A week ago I had a bit of downtime, because I decided to switch hosts. Previously, I was using DigitalOcean, with a droplet running Ubuntu 14.04. I paid $10 a month for a 30GB SSD, 1 CPU core, and 1GB of RAM. This used to be alright for me, because I was just running this website, which doesn’t really get a lot of traffic. Recently however, this hadn’t quite sufficed. I’ve been really researching the best way to move some of my work to the cloud. Ideally, I’d like to have a separate server for this, but in the meantime, I’ve been testing out different methods to do so here, and I’m using up too many resources to be able to run both this website and my tests. Because of this, I went ahead and switched over to Linode. With Linode, I get 24GB SSD storage, a 1 core CPU, and 2 GB of RAM at the same price. For me, having a bit more RAM was more important than the 6GB of storage that I lost. I’m nowhere near the limit anyways, so for now, this will do.</p>
|
||||||
|
|
||||||
|
<p>The VPS host wasn’t the only thing I changed, however. As I stated earlier, the DigitalOcean droplet I was on ran Ubuntu 14.04. I decided that I wanted to learn more enterprise-oriented Linux distributions, so I went for CentOS. Not only that, but I wanted more stability and a longer support cycle. So, I’ve noticed a few things that have broken in the migration, but if you happen to come across something that I’ve missed, please use the contact form to send me a message and let me know. I would greatly appreciate it.</p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Tue, 28 Jun 2016 00:00:00 -0500</pubDate>
|
||||||
|
<link>https://wbrawner.com//2016/06/28/recent-downtime/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2016/06/28/recent-downtime/</guid>
|
||||||
|
|
||||||
|
|
||||||
|
<category>Opinions</category>
|
||||||
|
|
||||||
|
<category>Updates</category>
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Geeko in the Terminal!</title>
|
||||||
|
<description><p>In this mini-tutorial, I’m going to show you how to customize the prompt to have a colorful Geeko greet you each time you open up the terminal. For someone who spends the majority of their day in the terminal like myself, it’s fun to customize it. I personally use zsh as my shell, but I’ve also tested this in bash with no troubles whatsoever. To begin, I found an image of Geeko on Google and Googled an image to ASCII art converter. There are plenty of them out there, so find one you like. Copy the output and save that to a file. I’ve got this here:</p>
|
||||||
|
<pre>
|
||||||
|
__╓╦╦╗▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╦╦╦___ µ╦╦____
|
||||||
|
_╓╗▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╦▓▓▓▓▓▓▓▓▓▓╗╦╦_
|
||||||
|
,╓╗▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╩╜╜╜╩▓╦_
|
||||||
|
_╗▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╜,╗▓▓▓▄ ╚▓╦
|
||||||
|
_▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ╫▓▓__╬▌ ▓▓▄
|
||||||
|
,▄▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╬▓▓▓▓_ⁿ╬▓▓▓╩`╓▓▓▓⌐
|
||||||
|
▄╬▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓_ ⁿ╜╬▓▓╦___╓▓▓▓▓▓▀
|
||||||
|
╓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄_ ⁿⁿ╜╜╩╩╜╜ⁿ`_⌐
|
||||||
|
▓▓▓▓▓▓▓▓▓╩╜╜╜╙╜╜╩╬▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╦╦╦╗▓▓▓╩
|
||||||
|
▓▓▓▓▓▓▓╜ ___ ⁿ╚▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╩╩╜ⁿ
|
||||||
|
╓▓▓▓▓▓╜ ╓▓▓▓▓▓▓▓▓╦_ ╙▓▓▓▓▓▓▓▓▓▓╩╩╜╜╜╜╜╩╬▓▓▓▓▓▓▓▓▓▓▓╜ⁿ `ⁿⁿⁿⁿⁿⁿⁿ`
|
||||||
|
╠▓▓▓▓▌ ,▓▓▓▓╩╜╜╩╬▓▓▓▓╕ ╫▓▓▓▓▓▓╩` ⁿ╚▓▓▓▓▓▓▓▓
|
||||||
|
╠▓▓▓▓µ ╠▓▓▓` ⁿ╬▓▓▓╕ ╫▓▓▓▓▓ ╙▓▓▓▓▓▓
|
||||||
|
╚▓▓▓▓▓ ╙▓▓▓▓▓▓▓╦ ⁿ▓▓▓▓ ²╬▓▓▓▓ ╚▓▓▓▓▓
|
||||||
|
╫▓▓▓▓▓ ╙╩▓▓▓▓╜ ╓▓▓▓▓ ⁿ╙╩ ⁿ╙╩▓▓
|
||||||
|
╙▓▓▓▓▓▓__ _▄▓▓▓▓` º
|
||||||
|
`╚▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╩ⁿ
|
||||||
|
ⁿ╙╩▓▓▓▓▓▓▓▓▓╩╜ⁿ</pre>
|
||||||
|
<p>and I’ve saved that to a file called suse-lizard that I store in my .config directory. To print it out on each new terminal window/tab, just add</p>
|
||||||
|
<pre>echo ~/.config/suse-lizard</pre>
|
||||||
|
<p>to your .bashrc (or .zshrc for those of us who use zsh). And you’re done!</p>
|
||||||
|
<h3>Extra:</h3>
|
||||||
|
<p>To get it to print out in color, you can use ASCII escape codes. I won’t bother including all of them in here, because you’re only a quick Google search from finding them, but you can add this little snippet to your rc file to get your Geeko to be printed out in green:</p>
|
||||||
|
<pre>while IFS='' read -r LINE || [[ -n "$LINE" ]]; do
|
||||||
|
echo -e "\033[32m$LINE\e[0m";
|
||||||
|
done &lt; "/home/billy/.config/suse-lizard"</pre>
|
||||||
|
<p>Which gives you an end result of this:</p>
|
||||||
|
|
||||||
|
<p><a href="/uploads/2016/06/Screenshot-2016-06-09-200815.png"><img src="/uploads/2016/06/Screenshot-2016-06-09-200815-300x132.png" alt="geeko in the terminal" width="300" height="132" /></a></p>
|
||||||
|
|
||||||
|
<p>My terminal output on each new tab/window</p>
|
||||||
|
|
||||||
|
<p>Not too shabby! You could even combine this with some sort of fortune/cowsay combo to get Geeko to give you bits of wisdom on each load!</p>
|
||||||
|
</description>
|
||||||
|
<pubDate>Fri, 10 Jun 2016 00:00:00 -0500</pubDate>
|
||||||
|
<link>https://wbrawner.com//2016/06/10/geeko-in-the-terminal/</link>
|
||||||
|
<guid isPermaLink="true">https://wbrawner.com//2016/06/10/geeko-in-the-terminal/</guid>
|
||||||
|
|
||||||
|
|
||||||
|
<category>Tutorials</category>
|
||||||
|
|
||||||
|
</item>
|
||||||
|
|
||||||
|
</channel>
|
||||||
|
</rss>
|
Loading…
Reference in a new issue