From dcbf928eda3652de4db4d736abbf6538bb509619 Mon Sep 17 00:00:00 2001
From: Billy Brawner
Are you feeling too connected? Do you find yourself heading to bed to get some sleep, but instead scrolling through your phone for hours? 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, hate smartphones?
+If you answered yes to any of the questions above, you are the target audience for Light Phone 2, a crowdfunding project that’s currently raising a ton of money on Indiegogo.
+The first Light Phone was created by Joe Hollier, an artist, and Kaiwei Tang, a product designer. The two met at an NYC-based Google incubator in 2014. While trying to think up the “next big app,” 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.
+ +The two invented the Light Phone, an e-ink device that looks like a small Kindle. 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.
+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 navigation app would be helpful, or maybe a weather service app.
+But there are some things that will absolutely not be on the phone, like all social media apps, advertising, email, and news feeds.
+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 going out on a date, 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.
+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.
+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 burner phone. It also seems a tad overpriced when you consider a Kindle, which is roughly the same concept but without a SIM card, costs $100.
+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.
+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.
+ +Light Phone 2 Specs | +|
---|---|
Dimensions: | 91mm x 55mm x 6.5-7.5mm thick | +
OS: | LightOS (modified Android) | +
Connectivity: | 4G LTE, Wifi, GPS | +
Memory: | 1 GB DDR3 RAM / 8GB eMMC | +
Sensor: | Proximity | +
Battery: | 500mAh, 5 days standby; A few hours talk time. | +
Color: | Black/White | +
Material: | Anodized Aluminum | +
Weight: | 80g (estimation) | +
Processor: | Qualcomm MSM8909W | +
Display: | E-Ink | +
SIM Card: | Nano SIM | +
Connector: | USB-C | +
Language: | English | +
Other: | Vibrator, Loud Speaker, Headset jack | +
Some Spotify users are reportedly receiving emails 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.
+Starting a Spotify account is easy: download the app, 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.
+To remove these limitations, you need to pay for a premium Spotify account, currently set at $9.99 per month for individuals or $14.99 per month for a family account.
+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).
+There are more than 159 million Spotify users around the world, and according to numbers published by the company in December, 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.
+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 Github, a request with which Github complied.
+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 selling shares in Spotify stock 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.
+One of the lead developers of Spotify’s software is Ludvig Strigeus, whose original claim to fame was the creation of uTorrent. 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.
+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.
+ +According to TorrentFreak, 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 the official app from the Google Play Store. 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.
+]]>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 Home devices in the UK now support hands-free calling over Wi-Fi.
+The search giant had previously suggested 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.
To celebrate the launch, Google is slashing the price of the smaller Home Mini to just £39 (down £10).
+The limited time offer runs from now until March 12th via the official Google Store and retailers John Lewis, Argos, and Currys PC World.
+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.
+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 your mum (it is Mother’s Day in the UK next week, remember), even if your Home has more than one registered user.
+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.
+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 Google Home Max which is still exclusive to the US market.
+ +After announcing during MWC 2018 that more Android smartphones will eventually support Google Lens, Google kept its word and started rolling out the feature for devices that have Google Photos installed.
+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 Samsung, LG, Huawei, Motorola, HMD Global/Nokia, and Sony.
+Lens will also be available for iOS devices, but Google did not say when the roll out would start.
+++ +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: https://t.co/KCChxQG6Qm
+
+Coming soon to iOS pic.twitter.com/FmX1ipvN62— Google Photos (@googlephotos) March 5, 2018
The road getting to this point has been a long one. Google first announced 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 in November, 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.
+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.
+Lens was very much experimental and temperamental, but Google continues to make fixes and add more features. The Next Web 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.
+Google teased features 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.
+]]>I have a soft spot for Microsoft Excel. There’s just something extremely pleasing about a working set of calculations, or even a cheeky vlookup.
+The thing is, knowing how to change the number of decimal places and putting together a good color scheme can only get you so far. If you want to really harness the power of Excel, you need to know your onions when it comes to VBA.
+Fortunately help is at hand, and it’s even on offer. Today’s deal is the Microsoft VBA Bundle. If you’re looking to advance your career prospects, stellar Excel game is a great card to have in your hand.
++Really harness the power of Excel
The bundle is made up of two extensive courses: Microsoft VBA and Advanced VBA. The focus is on real applicability in business rather than just understanding the functionality of Excel. The creators, Excel for Business, want to give you skills you can really use to wow your clients or paymasters.
+During the first of these CPDUK certified courses you get acquainted with using VBA to harness Excel. By the end you’ll be creating subroutines and automating your processes.
+In the second course you really kick on to the next level, and learn how to manipulate Excel in all sorts of ways. You’ll be able to use input boxes and message boxes to interact with users, create cross-functional flowcharts, and even customize the right click menu.
+ +If you like the sound of this data wizardry, your timing is on point. Usually valued at $69 each, you can get both courses in the bundle for just $29.99. No complex formula required to work out that you’re saving 78% on the retail price.
+We think this deal only lasts until Thursday, so join the 1,000+ people already enrolled by hitting the button below.
+ +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 the AAPICKS HUB.
+Google’s list of Android Enterprise Recommended devices grew a bit larger today as Nokia announced the newest trio of additions: the Nokia 8 Sirocco, Nokia 7 Plus, and Nokia 6. They join the Nokia 8 and bring the total number of Android Enterprise Recommended devices to 25.
+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.
+++ +We are excited to announce that in addition to #Nokia8, we have three new smartphones, #Nokia8Sirocco, #Nokia7plus and the new #Nokia6 to be included in the #AndroidEnterprise Recommended program. https://t.co/4eISZyKmsx pic.twitter.com/oCBCcUbcMR
+— Nokia Mobile (@Nokiamobile) March 5, 2018
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.
+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.
+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.
+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.
+The Nokia 8 Sirocco and Nokia 7 Plus will launch sometime in April. The Nokia 6 will launch in the U.S. in May.
+]]>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.
+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 Jedediah Smith.
+But is there really anything to worry about here? As with most things, the answer is yes and no — it’s complicated.
+ +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. This paper drew a link between nighttime “blue light” exposure and interruptions to peoples’ circadian rhythms, 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.
+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.
+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.
++If exposure to blue light alone was hazardous, you'd be at great risk just by being outside during the day.
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). 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.
+ +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.
++We evolved with systems that associated blue light with daytime, and a lack of blue light with night
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.”
+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.
+ +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.
+What’s really changed is that we now have a lot of light sources — including, but definitely not 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?
+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 Call of Grand Theft Mario before you turn in for the night.
+The most obvious change may also be one of the most effective: get away from the tech as you get close to bedtime.
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.
+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.
+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).
+None of this addresses the potential problem of growing LED use in home lighting. Not all LED lighting has 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.
+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.
+For further reading, please check the following on blue light’s effect on your health and NASA’s response to the problem (no, really).
+How concerned are you by blue light? What steps do you take to limit your exposure?
+]]>UPDATE 03/06/2018, 3:30 P.M. EST: Facebook made a statement regarding this BlackBerry lawsuit. The statement comes from Paul Grewal, the deputy general counsel for Facebook:
++“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.”
It seems that Facebook is not mincing words when it comes to this particular lawsuit.
+Original Article: Today, in a Los Angeles Federal Court, BlackBerry, Ltd. filed a lawsuit against Facebook, Inc. for infringing a patent on its messaging technology. The lawsuit calls out Facebook Messenger as well as Facebook-owned properties like WhatsApp and Instagram.
+According to the lawsuit, BlackBerry 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.
+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 BlackBerry Messenger (BBM) 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.
+However, if BlackBerry is suing Facebook specifically over technology present in BBM, shouldn’t it also be suing Google, Apple, and the many other companies that have similar messaging apps? Or is there something specific about Facebook’s properties that brought on this lawsuit?
+Unfortunately, until the full lawsuit transcript goes online, we can only speculate what BlackBerry is after.
+As of now, Facebook has made no public comment on the lawsuit. We’ll update this post as soon as any new information surfaces.
+]]>While most of the world thinks of Amazon’s Alexa and Google Assistant when it comes to virtual assistants, 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 some big plans when it comes to translation), but you can’t ask the systems a question in Chinese.
+Huawei 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.
+XDA Developers found that, apparently, Huawei has a virtual assistant called HiAssistant that will roll out in future Chinese-market Huawei smartphones, such as the P20 and P20 Plus. The information comes from firmware files taken from the Chinese version of Huawei’s Mate 10 EMUI 8.1 release, which is based on Android 8.1 Oreo.
+Now, there are some caveats here. First, the assistant will only run on devices with the Kirin 970 SoC, 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.
+Some Chinese users might know of the app HiVoice 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 Google Now.
+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.
+Likely to be included with HiAssistant will be HiVision, which seems to be a clone of Google Lens. 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.
+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 the launch of the P20 and P20 Plus 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.
+]]>Over at XDA Developers, Android enthusiasts have been working tirelessly to round up all the rumors of upcoming features in Android P, 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 Bluetooth input device, like a wireless mouse or keyboard.
+You can read the recent XDA blog post 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 whenever Android P makes its debut.
+Technically, rooted devices have had this feature for quite a while. Simply root your phone, download the Bluetooth Plus app, and then take your pick from any of the Bluetooth mouse/keyboard apps available on the Google Play Store.
+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.
+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.
+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.
+Now, the real question is: will it be Android Pie, Android Pop, or Android Popsicle?
+]]>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.
+The more tests you have, the more confident you will be that you didn’t screw anything up.
++Yeah, Ok, I get it, but what if I don’t have any tests, where do I start?
Great question.
+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.
+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.
++Hold up … but I know I didn’t break my home page. Why should I test it? Why is this important?
You said you didn’t have any tests. Are you sure you’re sure you didn’t break it?
+Thought so, probably not.
+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.
+What would happen if you didn’t catch that in development?
+BOOM! CRASH!
+Exactly.
+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.
+Yes, it might hit production servers. Ok, when you test manually you probably were hitting production servers too. Yikes. It is what it is.
+The key thing to remember here is that you now have a test covering you to ensure your app launches.
+Ultimately the next thing you should be testing is your most used screens:
+Once you get some tests around these screens (do they load, do they work when interacted with) then you can refactor.
+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.
+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 …
+Nothing else matters more than the end user experience.
+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.
+User’s don’t care about your cool tech stack if your app doesn’t work.
+To the user, if the app doesn’t work, it’s garbage.
+… and …. well … at that point, let the 1-star reviews come flooding in.
+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.
++
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 here.
++ +]]>
“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 going out to the bar.
+Stop wasting time reading news websites, Reddit, surfing Facebook or Instagram for hours.
+You have the time. Its right there in your hands. Use it.
+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 …
+The average American spends 3 hours a day watching TV.
+3 HOURS A DAY!
+Some reports show an upwards of five hours a day.
+Let us be conservative and stick with 3 hours.
+That’s 21 hours a week!
+90 hours in a month!
+1,095 hours in a year.!
+That’s over 45 days of watching TV for 24 hours straight!
+This is just watching TV. This does not include time spent looking at your phone!
+That’s just insane.
+“I don’t have time.”
++
Pffft. Whatever.
++
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.”
+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.
+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.
+You know what? I bet you most of these folks have “more time” than most.
+Why? How?
+They optimize their life to maximize their time.
+Furthermore, I bet you they read more books than most too.
+Imagine being one who catches the bus at 6:30 am after dropping the kids off at early-drop off and/or daycare/preschool. So what do they do with that next 10–30 minutes of commuting time (before and after work)? 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 FacebookInstagramRedditNewsetc.
+They have the time & you have this same time.
+Maybe you don’t commute via train, maybe you drive to work.
+Same thing.
+Use that time to learn, grow, etc. Maybe you work at home? That’s cool. Listen to books/podcasts while driving/walking to the grocery store or dentist/or wherever you’re driving.
+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. That’s 10-15 minutes a day. 10-15 minutes a day for 30 days is 5 to 7.5 hours. 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.
+“I don’t have the time.” Yeah. Ok.
+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.
+Maybe you don’t have a ton of time for meal prep. Ok, I get it. Then follow intermittent fasting – 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.
+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.
+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.
+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.
+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).
+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.
+One thing I advise is to try to get up earlier – before anyone else. 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.
+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).
+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.
+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.
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.
++
Make it happen.
++
+
Photo credit: @loic
+]]>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:
+<TextView + ... + android:visibility="@{post.hasComments ? View.Visible : View.Gone}" />+
As Joe Birch accurately pointed out in his article – this has a code smell and it just feels gross.
+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… you’re not rigorous about your testing.
+Removing logic from XML Views is quite easy with custom BindingAdapters. Early adopter and DataBinding aficionado, Lisa Wray, posted about this back in 2015: Pro tip: More data binding — Easy view visibility in XML! I heard you guys l….
+In short, you create a binding adapter in Java (or Kotlin as I’ve done below) and drop it into your project.
+@BindingAdapter(“isVisible”) +fun setIsVisible(view: View, isVisible: Boolean) { + if (isVislble) { + view.visibility = View.VISIBLE + } else { + view.visibility = View.GONE + } +}+
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:
+<TextView + ... + app:isVisible="@{post.hasComments()}" />+
The logic for the hasComments code is now kept inside of the View Model which can be easily unit tested.
+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:
+@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) +}+
You’re going to put this in your androidTest folder.
+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.
+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).
+Furthermore … your ViewModel is not riddled with Android package references (which can make it harder to test). Which brings me to …
+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.
+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.
+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.
++]]>
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 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.
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).
+So how do I get so much stuff done?
+Time optimization, 100%.
+Don’t get me wrong … I’m not some zen-productivity-master, not at all. I just value my time.
+The way I see it is like this:
+Time is your life.
+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.
+Hint: It’s not that much.
+After seeing that number it catapulted me into action. To check yours go here: http://www.countmydays.com/
+I’m not being morbid about life, it’s merely factual.
++
My friend replied back with a shocked face:
++I calculated the waking hours I had left in my life.
+Holy cow, this freaks me out …
I know the feeling. Every time I look at the number, it’s smaller. It never goes up.
+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.
+There’s a popular blog post titled The Tail End 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).
+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.
+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.
+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.
+Unfortunately, even though this information is quite eye opening, sometimes people will still avoid doing what they want to do due to fear.
+Fear of failure.
+Fear of rejection.
+Fear of success (yes, it’s really a thing).
+One of my favorite things to use to combat fear is to utilize a technique known as “Fear Setting“. I picked this up from Tim Ferriss, and you can watch a video on it here – Fear Setting by Tim Ferriss (Ted Talk). 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 –
++We suffer more often in imagination than in reality. – Seneca
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.
+Lastly, Steve Jobs has a quote that I often refer to:
++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. – Steve Jobs, Stanford 2005 Commencement Speech
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 this speech. It always helps course correct me when I’m wandering in the sea of life.
+Yeah, I know … you’ve heard that life is short, but seeing it in numbers is humbling and action inspiring, no doubt.
+So, how do I get so much done?
+I remind myself that life is finite.
++
I’d like to thank Kaushik Gopal for reviewing this article.
++]]>
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 thinks it’s only pertinent to re-establish what TDD is.
+TDD by definition is: Test Driven Development. TDD is a software development process.
+
+Key word: process.
The process of TDD is comprised of 5 steps:
++
Then … repeat the steps for each new feature/update/fix/etc. 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.
+Let us keep the full TDD process in mind when walking through this example …
+This means writing your test first, even before particular UI elements exist. In this case I’ll do it with Espresso, the defacto Android UI testing framework along with jUnit as the driver.
+Step 1: Create the Test
+I’ll create a test like so:
+ +As you can see, the buttonx 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:
+ +The id, buttonx, 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:
+Step 2: Run The Test
+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 …
Step 3: Write The Code
+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 …
Step 4: Run the test(s)
+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 …
Step 5: Refactor
+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.
I’ve followed TDD to implement a feature/change a chunk of code/fix a bug/etc that is on the UI using Espresso.
+Most importantly – I used TDD a process to implment it.
++
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. TDD is a software development process. Alas, there are some folks who feel that TDD represents something different. Let’s chat about those opositional points of view.
+I completely disagree with this because TDD is a software development process. 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 Wikipedia entry for TDD I found the following under the definition of Part 1 – Add a test:
++The developer […] can write the test in whatever testing framework is appropriate to the software environment.
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.
+The reason most folks oppose following TDD with UI testing is because it’s slow, which brings me to the next item …
+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 I rely on CI 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).
+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.
+I’ve seen this mentioned a few times, and it’s mainly because having slow running tests is an anti-pattern … 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 MVP pattern. 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.
+I say this because you need to verify what your customer is going to see … because …
+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. 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. At that point all your work is moot.
+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
+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.
+This has been going around for the last few years. I’ve been through the TDD inception/rediscovery in 2003 by Kent Beck 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. The hard part is … TDD is hard. 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).
+Back in 2014, Martin Fowler, Kent Beck and DHH hosted a series of online videos where they discussed if TDD was dead or not. You can find them here – Is TDD Dead? 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.
+I’m not here to argue if TDD is dead. I’ll leave that up to you to determine.
+However, I do hope that this article does prove the point that TDD can be possible with UI development.
++
Yes.
+Remember, TDD is a software development process that can be applied anywhere in software.
+As always, please leave comments below. Thank you for reading.
+]]>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).
+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 screengrab. 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.
+Let me explain why …
+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.
+ ++
+
Therein lies the magic …
+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.
+This is problematic when you are dealing with horizontal space. Longer text entries will overflow onto other widgets and you’ll have a problem.
+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.
+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 ….
+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.
+Simply scroll through the files and check to see if anything is broken.
+This can result in huge time savings when you make a feature change, add a new screen, etc.
+As usual, the Fabric team is making this as easy as possible. It’s one file to setup after the installation that anyone on your team can run once it’s checked into github (setup once, setup everyone forever).
+Once installed you can start taking screenshots in your tests with the following Screengrab.screenshot(“screenshot_name”);
+@Test +public void testTakeScreenshot() { + Screengrab.screenshot("before_button_click"); + + onView(withId(R.id.fab)).perform(click()); + + Screengrab.screenshot("after_button_click"); +}+
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.
+Then we click on a button, then take another screenshot.
+Almost done …
+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.
+The screengrabfile was generated when you installed screengrab. You’ll want to add the following information to the screengrab file:
+# 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+
This configures screengrab to run the US Ensligh locale and the Italian locale.
+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:
+$&gt; ./gradlew assembleDebug assembleAndroidTest
Now that the application and test app are built you’re ready to kick off screengrab. Execute the following command:
+$&gt; screengrab
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:
+ +When screengrab is done your screenshots will be stored in the fastlane/metadata/android/images directory of where you ran the screengrab command.
+Viola! Open the file to see how everything went. Here’s an example:
+ ++
The screengrab tool integrates with the Ffastlane toolsuite right out of the box.
+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 continuous integration 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. Check out fastlane for more detailed info.
+The screengrab tool has a few additional use cases:
+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.
+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.
+Why?
+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.
+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.
+]]>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 defeated and burned out. 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.
+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.
+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.
+The rule of thirds is as follows …
+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:
As soon as you realize that this is the way the world works, the easier things become.
+Give a presentation on XYZ Topic at your local MeetUp? Most may like it, some may hate it, and some are indifferent.
+You can’t make everyone happy … and that’s ok.
+Thats why this world is great. We all have different opinions, emotions and things we enjoy. Everyone is unique.
+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.
+]]>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. Google Play Music. Spotify. Pandora. Rdio (RIP)
+ +The way we educate is changing.
+Kahn Academy. Code.org. Code Academy. MIT/Standford/Etc Free Online Classes.
+The way we research things changed about two decades ago.
+The Internet. Wikipedia. Blogs.
+They’re all on-demand.
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.
Many industries are getting disrupted by the on-demand economy.
+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.
+Don’t like a song?
+Too bad. Listen to it.
+Don’t like this ad?
+Too bad. Listen to it.
+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.
+Can’t listen to it now?
+No problem. Listen to it later when you have time.
+Can’t listen to the whole show?
+No problem. Listen to the rest when you have time.
+Miss something?
+No problem. Hit rewind and listen to it again.
+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.
+This is exactly why podcasts are becoming popular.
+Podcasts are On-Demand Radio.
Download it and listen to it when you have time. Today. Tomorrow. Next week. Whenever.
That is why Podcasts are becoming popular.
+If you’re an Android Developer/Mobile Developer you might like my podcast – Fragmented. Its a podcast about Android Development that I host with Kaushik Gopal.
+]]>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 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.
+Schedule. Schedule. Schedule. Stick to a schedule when starting out. It will save you.
+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!
+I then get the tea/coffee 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.
++Distractions are abound in your house, you need to limit your exposure to them.
+
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.
+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.
+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.
+Don’t have equipment?
+Go for a run. Do Calisthenics, etc.
+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.
+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.
+Cabin fever is real.
+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.
+Get out of the house.
+Plan to work out of the house 1-2 days a week.
+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.
+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.
+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.
+Try to meditate. Not into meditation? Try the free 10 day guided meditation from headspace.com (download the app and try it out).
+If you haven’t noticed yet, this is all mainly mental.
+As for your typical day to day work routine …
+
+You are going to have to communicate about 3x-4x as hard as you did before.
That’s the way it is.
+Being remote means you have to be way more proactive.
+Don’t hear from your boss/teammate/etc and you’re stuck?
+Pick up the phone. Text. Call. Blow up the slack channel. Anything. i.e. – Clear your own road.
+When you’re remote you’re not visually there and sometimes you have to be loud before others respond. Voice your opinions.
+The goal is to communicate very well.
+Its all mental.
+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.
+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.
+Finally, if you ever have a question about remote working – email me – I’ll help. I’ve been through probably almost anything you’ve been through working remote.
+]]>Hmmph.
+Thankfully, I was able to fix the issue. Here’s how I did it – hopefully it works for you too:
+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 the virtual device. To find out the cause of the problem, start the virtual device from VirtualBox …
+I then started the device in VirtualBox and received the following error:
+VERR_SUPLIB_OWNER_NOT_ROOT
with the text saying “Cannot start device” or something like that. The key was the error message constant:
++VERR_SUPLIB_OWNER_NOT_ROOT
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.
+I noticed that Genymotion was installed in the /Applications folder. Ok, cool. I took a look at the permissions via the CLI with:
+>ls -al+
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).
+The error message states that the owner is not root. You can typically fix this with the diskutil command:
+> diskutil verifyPermissions /+
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:
+> diskutil repairPermissions /+
After running these commands I was able to start my Genymotion device as the user has been changed back to ‘root’.
+If that did not work you can try changing the owner manually like this, which changes the owner:
+> sudo chown root Applications+]]>