<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans%3A300%2C400%2C600%2C700">jaksuka, Author at veruswealth.net

Moving Into a New House On a Budget

  • May 24, 2019

Are you settling in a new house? How do you start decorating a new home on a budget? Should you buy new furniture?

Let’s discover how to create an inviting new house without digging a deep hole in your pocket.

Plan and Understand Your Budget First

In settling into your new house, you don’t have to splurge. Instead, you should plan and understand your budget first to resist the temptation of splurging. Otherwise, you might end up broke with more debts.

Learn how to set your priorities. What do you need first?

Use a careful, thoughtful approach that matches your finances, needs, and wants to make sure you can settle in space with the decoration and furniture you love and can afford.

Next up, you must decide where to start. Determine which room should be filled first. It can be a little overwhelming but it can also be rewarding when done right.

As a tip, you might want to start filling high traffic areas first. It could be the living room or a room where your family members spend much of their downtime.

Another tip is to stick with the room you want to work with and accomplish the task first before moving to other rooms.

Use Affordable But Cozy Decorations

decorating a new home on a budget diy

You should make your new space a home and you should make it yours. If you are on a budget, you can consider cozy DIY but affordable decorations.

Think about surrounding your home with the texture you love, including wavy wallpapers. Think of textures that you can integrate into a specific room to make it comfortable and cozy but without spending huge. For a larger room, the right texture can offer a cozier feel.

Consider furniture diversity. Do not be afraid of mixing things up a bit. This diversity can make for a vivid interior which is visually engaging and appealing.

In addition, you might want to choose warm colors, such as peach, red, orange, and brown. These colors can make a more inviting and compact space.

Overall, you should have fun with the entire decorating process and consider it as a huge art project.

Consider Reusing Furniture

Another tip to remember is to consider reusing furniture. Those that are still in good shape and condition can be refurbished and repaired.

For example, you can consider cabinet refacing for the bathroom or kitchen cabinets. A little repair here and there can do just fine.

Refacing is a cost-effective remodeling option if the old cabinets are well constructed and can still be used. It can involve changing the current look with a new paint color.

It is more affordable than replacing the old ones with new and custom cabinets. Additionally, it is not just a nature-friendly remodeling option but also a faster method since it retains the old layout of the bathroom or kitchen.

Cabinet repair can include a surface repair that involves fixing small nicks and chips in the wood cabinets with plastic wood fillers. On the other hand, matching the color is another trick if you’re trying to touch up any scraped or chipped cabinet.

Overall, reusing old furniture offers plenty of benefits. It’s one of the best ways to settle into a new home on a budget because you don’t need to buy new pieces.

How does your house look on the outside?

decorating a new home

Being too busy decorating the interior of your home, you might overlook its exterior features. This can directly affect the overall look and appeal of your home.

One of the things you can do is to repaint the outside yourself. In doing so, you don’t just add a new touch to the entire home but also makes it more desirable with your chosen paint color.

You should prepare the landscape, too. Make sure you’re covering the bushes, ground, and any plants just below where you are painting. The same goes if there are hoses, outdoor furniture or grills. Cover them up before painting to avoid the mess later.

Perfect Lawn On A Budget

If you think that it’s hard to accomplish it, think again. Landscape maintenance does not have to break the bank. In fact, it doesn’t have to take a toll on your finances. Just prepare your general supplies and tools and invest some time on the task for a healthy lawn.

Regarding the watering, you should water infrequently but for a longer period of time. As an advice, you can consider watering about an inch of water.

Otherwise, it’ll suffocate and you’ll eventually kill the roots. When this happens, the grass will be prone to damage. In addition, over-watering the lawn will also consume more water and increase your bill.

Pruning is another way to perfect your lawn. However, you should do it at the right time because it can affect the growth of the plants or trees. As a general rule, you can prune during the winter or early spring if you’re pruning ornamental shrubs or trees that blossom in the summer.

In addition, don’t forget weeding. You should pull the weeds together with the roots manually or using a handheld weeder. For better results, you might want to prevent weeds before they show up by using a pre-emergent herbicide to control crabgrass and stubborn weeds.

Perfecting your lawn, reusing old furniture, and repainting the exterior of your new space will help you create a cozy and welcoming space without breaking the bank. Follow these tips and enjoy your new home!

See Also: 5 Simple Tweaks to Make Your Home More Attractive

The post Moving Into a New House On a Budget appeared first on Dumb Little Man.

How to Deal with Anxiety in Just 3 Breaths

  • May 24, 2019

You’re reading How to Deal with Anxiety in Just 3 Breaths, originally posted on Pick the Brain | Motivation and Self Improvement. If you’re enjoying this, please visit our site for more inspirational articles.

Anxiety is a common daily struggle for many. With constant work stress along with competition and comparison fueled by social media, anxiety has become somewhat of a social “norm” in our modern society. In the United States alone, anxiety affects approximately 40 million adults between the ages of 18 to 54, mostly in stressful work and school environments.

Many turn to medicine and doctors, which might seem like the easiest solution. But, what about those who are looking for more independent ways to manage anxiety? Are there easy and practical ways to do so, and do they really work?

The answer is a resounding YES, and it’s as easy as taking three mindful breaths.

Anxiety’s Relationship with Your Breath

Did you know that anxiety is directly related to the way you breathe? Anxiety is an emotional symptom that can be exacerbated or relieved by how you manage your breath. Think about it: when you’re having an anxiety attack, your breathing is very shallow and fast, right? On the other hand, when you’re calm and relaxed, how is your breathing then?

When your mind is stimulated by an arousing emotion (anxiety, in this case), it triggers a chain of responses that turn on your fight-or-flight (sympathetic) nervous system that quicken your breath. When you’re calm and relaxed, however, your brain turns on the rest-and-digest (parasympathetic) nervous system that naturally deepens and lengthens your breathing.

Breathing is science and is extensively connected to the brain via a two-way street. In other words, your emotions alter your breathing, and altering your breathing affects your emotional state too. This means when you can learn how to consciously slow down your breathing, you can actually shift your brain waves from being in an agitated state to being in a relaxed and calm state. In this way, making yourself take slow, deep and mindful breaths can actually trick your brain into releasing calming hormones to combat the feelings of anxiousness.

Try This Breathing Technique:

Imagine your body is like a balloon that slowly inflates and slowly deflates. Keep this image in your mind to get the maximum benefits from this breathing technique.

  1. Close your eyes and breathe in slowly and deeply through your nose, as if you’re filling your whole body with oxygen.
  2. Hold your breath for 3 seconds.
  3. Slow exhale through your mouth like you’re blowing a thin wisp of air, until you have no more air in your lungs to breathe out.
  4. Repeat 3 times.

Watch this Video Demonstration:

[EMBED VIDEO]

Can you feel your brain is calmer and quieter than when you first started? Depending on the severity of your anxiety, it may take more breaths to quiet your mind. If three breaths is not enough, try five or ten until you can feel your brainwaves calming down.

Just remember: breathing is science. When you learn to control your breath, you can proactively induce a calm, relaxed state within your mind no matter what is happening around you.

This breathing exercise is also great for relieving stress or tension in the body if you have trouble sleeping at night due to hyper mental activity.

For more useful tips and videos on how to use your brain better, visit Brain Education TV’s YouTube channel.

You’ve read How to Deal with Anxiety in Just 3 Breaths, originally posted on Pick the Brain | Motivation and Self Improvement. If you’ve enjoyed this, please visit our site for more inspirational articles.

What’s New in Android: Q Beta 3 & More

  • May 24, 2019

Posted by Dave Burke, VP, Engineering

Today Android is celebrating two amazing milestones. It’s Android’s version 10! And today, Android is running on more than 2.5B active Android devices.

With Android Q, we’ve focused on three themes: innovation, security and privacy, and digital wellbeing. We want to help you take advantage of the latest new technology — 5G, foldables, edge-to-edge screens, on-device AI, and more — while making sure users’ security, privacy, and wellbeing are always a top priority.

Earlier at Google I/O we highlighted what’s new in Android Q and unveiled the latest update, Android Q Beta 3. Your feedback continues to be extremely valuable in shaping today’s update as well as our final release to the ecosystem in the fall.

This year, Android Q Beta 3 is available on 15 partner devices from 12 OEMs — that’s twice as many devices as last year! It’s all thanks to Project Treble and especially to our partners who are committed to accelerating updates to Android users globally — Huawei, Xiaomi, Nokia, Sony, Vivo, OPPO, OnePlus, ASUS, LGE, TECNO, Essential, and realme.

Visit android.com/beta to see the full list of Beta devices and learn how to get today’s update on your device. If you have a Pixel device, you can enroll here to get Beta 3 — if you’re already enrolled, watch for the update coming soon. To get started developing with Android Q Beta, visit developer.android.com/preview.

Privacy and security

As we talked about at Google I/O, privacy and security are important to our whole company and in Android Q we’ve added many more protections for users.

Privacy

In Android Q, privacy has been a central focus, from strengthening protections in the platform to designing new features with privacy in mind. It’s more important than ever to give users control — and transparency — over how information is collected and used by apps, and by our phones.

Building on our work in previous releases, Android Q includes extensive changes across the platform to improve privacy and give users control — from improved system UI to stricter permissions to restrictions on what data apps can use.

For example, Android Q gives users more control over when apps can get location. Apps still ask the user for permission, but now in Android Q the user has greater choice over when to allow access to location — such as only while the app is in use, all the time, or never. Read the developer guide for details on how to adapt your app for the new location controls.

Outside of location, we also introduced the Scoped Storage feature to give users control over files and prevent apps from accessing sensitive user or app data. Your feedback has helped us refine this feature, and we recently announced several changes to make it easier to support. These are now available in Beta 3.

Another important change is restricting app launches from the background, which prevents apps from unexpectedly jumping into the foreground and taking over focus. In Beta 3 we’re transitioning from toast warnings to actually blocking these launches.

To prevent tracking we’re limiting access to non-resettable device identifiers, including device IMEI, serial number, and similar identifiers. Read the best practices to choose the right identifiers for your use case. We’re also randomizing MAC address when your device is connected to different Wi-Fi networks and gating connectivity APIs behind the location permission. We’re bringing these changes to you early, so you can have as much time as possible to prepare your apps.

Security

To keep users secure, we’ve extended our BiometricPrompt authentication framework to support biometrics at a system level. We’re extending support for passive authentication methods such as face, and we’ve added implicit and explicit authentication flows. In the explicit flow, the user must explicitly confirm the transaction. The new implicit flow is designed for a lighter-weight alternative for transactions with passive authentication, and there’s no need for users to explicitly confirm.

Android Q also adds support for TLS 1.3, a major revision to the TLS standard that includes performance benefits and enhanced security. Our benchmarks indicate that secure connections can be established as much as 40% faster with TLS 1.3 compared to TLS 1.2. TLS 1.3 is enabled by default for all TLS connections made through Android’s TLS stack, called Conscrypt, regardless of target API level. See the docs for details.

Project Mainline

Today we also announced Project Mainline, a new approach to keeping Android users secure and their devices up-to-date with important code changes, direct from Google Play. With Project Mainline, we’re now able to update specific internal components within the OS itself, without requiring a full system update from your device manufacturer. This means we can help keep the OS code on devices fresher, drive a new level of consistency, and bring the latest AOSP code to users faster — and for a longer period of time.

We plan to update Project Mainline modules in much the same way as app updates are delivered today — downloading the latest versions from Google Play in the background and loading them the next time the phone starts up. The source code for the modules will continue to live in the Android Open Source Project, and updates will be fully open-sourced as they are released. Also, because they’re open source, they’ll include improvements and bug fixes contributed by our many partners and developer community worldwide.

For users, the benefits are huge, since their devices will always be running the latest versions of the modules, including the latest updates for security, privacy, and consistency. For device makers, carriers, and enterprises, the benefits are also huge, since they can optimize and secure key parts of the OS without the cost of a full system update.

For app and game developers, we expect Project Mainline to help drive consistency of platform implementation in key areas across devices, over time bringing greater uniformity that will reduce development and testing costs and help to make sure your apps work as expected. All devices running Android Q or later will be able to get Project Mainline, and we’re working closely with our partners to make sure their devices are ready.

Innovation and new experiences

Android is shaping the leading edge of innovation. With our ecosystem partners, we’re enabling new experiences through a combination of hardware and software advances.

Foldables

This year, display technology will take a big leap with foldable devices coming to the Android ecosystem from several top device makers. When folded these devices work like a phone, then you unfold a beautiful tablet-sized screen.

We’ve optimized Android Q to ensure that screen continuity is seamless in these transitions, and apps and games can pick up right where they left off. For multitasking, we’ve made some changes to onResume and onPause to support multi-resume and notify your app when it has focus. We’ve also changed how the resizeableActivity manifest attribute works, to help you manage how your app is displayed on large screens.

Our partners have already started showing their innovative foldable devices, with more to come. You can get started building and testing today with our foldables emulator in canary release of Android Studio 3.5.

5G networks

5G networks are the next evolution of wireless technology — providing consistently faster speeds and lower latency. For developers, 5G can unlock new kinds of experiences in your apps and supercharge existing ones.

Android Q adds platform support for 5G and extends existing APIs to help you transform your apps for 5G. You can use connectivity APIs to detect if the device has a high bandwidth connection and check whether the connection is metered. With these your apps and games can tailor rich, immersive experiences to users over 5G.

With Android’s open ecosystem and range of partners, we expect the Android ecosystem to scale to support 5G quickly. This year, over a dozen Android device makers are launching 5G-ready devices, and more than 20 carriers will launch 5G networks around the world, with some already broad-scale.

Live Caption

On top of hardware innovation, we’re continuing to see Android’s AI transforming the OS itself to make it smarter and easier to use, for a wider range of people. A great example is Live Caption, a new feature in Android Q that automatically captions media playing on your phone.

Many people watch videos with captions on — the captions help them keep up, even when on the go or in a crowded place. But for 466 million Deaf and Hard of Hearing people around the world, captions are more than a convenience — they make content accessible. We worked with the Deaf community to develop Live Caption.

Live Caption brings real-time captions to media on your phone – videos, podcasts, and audio messages, across any app—even stuff you record yourself. Best of all, it doesn’t even require a network connection — everything happens on the device, thanks to a breakthrough in speech recognition that we made earlier this year. The live speech models run right on the phone, and no audio stream ever leaves your device.

For developers, Live Caption expands the audience for your apps and games by making digital media more accessible with a single tap. Live Caption will be available later this year.

Suggested actions in notifications

In Android Pie we introduced smart replies for notifications that let users engage with your apps direct from notifications. We provided the APIs to attach replies and actions, but you needed to build those on your own.

Now in Android Q we want to make smart replies available to all apps right now, without you needing to do anything. Starting in Beta 3, we’re enabling system-provided smart replies and actions that are inserted directly into notifications by default.

You can still supply your own replies and actions if you want — such as if you are using ML Kit or other ML frameworks. Just opt out of the system-provided replies or actions on a per-notification basis using setAllowGeneratedReplies() and setAllowSystemGeneratedContextualActions().

Android Q suggestions are powered by an on-device ML service built into the platform — the same service that backs our text classifier entity recognition service. We’ve built it with user privacy in mind, and the ML processing happens completely on the device, not on a backend server.

Because suggested actions are based on the TextClassifier service, they can take advantage of new capabilities we’ve added in Android Q, such as language detection. You can also use TextClassifier APIs directly to generate system-provided notifications and actions, and you can mix those with your own replies and actions as needed.

Dark theme

Many users prefer apps that offer a UI with a dark theme they can switch to when light is low, to reduce eye strain and save battery. Users have also asked for a simple way to enable dark theme everywhere across their devices. Dark theme has been a popular request for a while, and in Android Q, it’s finally here.

Starting in Android Q Beta 3, users can activate a new system-wide dark theme by going to Settings > Display, using the new Quick Settings tile, or turning on Battery Saver. This changes the system UI to dark, and enables the dark theme of apps that support it. Apps can build their own dark themes, or they can opt-in to a new Force Dark feature that lets the OS create a dark version of their existing theme. All you have to do is opt-in by setting android:forceDarkAllowed="true" in your app’s current theme.

You may also want to take complete control over your app’s dark styling, which is why we’ve also been hard at work improving AppCompat’s DayNight feature. By using DayNight, apps can offer a dark theme to all of their users, regardless of what version of Android they’re using on their devices. For more information, see here.

Gestural navigation

Many of the latest Android devices feature beautiful edge-to-edge screens, and users want to take advantage of every bit of them. In Android Q we’re introducing a new fully gestural navigation mode that eliminates the navigation bar area and allows apps and games to use the full screen to deliver their content. It retains the familiar Back, Home, and recents navigation through edge swipes rather than visible buttons.

Users can switch to gestures in Settings > System > Gestures. There are currently two gestures: Swiping up from the bottom of the screen takes the user to the Home screen, holding brings up Recents. Swiping from the screen’s left or right edge triggers the Back action.

To blend seamlessly with gestural navigation, apps should go edge-to-edge, drawing behind the navigation bar to create an immersive experience. To implement this, apps should use the setSystemUiVisibility() API to be laid out fullscreen, and then handle WindowInsets as appropriate to ensure that important pieces of UI are not obscured. More information is here.

Digital wellbeing

Digital wellbeing is another theme of our work on Android — we want to give users the visibility and tools to find balance with the way they use their phones. Last year we launched Digital Wellbeing with Dashboards, App Timers, Flip to Shush, and Wind Down mode. These tools are really helping. App timers helped users stick to their goals over 90% of the time, and users of Wind Down had a 27% drop in nightly usage.

This year we’re continuing to expand our features to help people find balance with digital devices, adding Focus Mode and Family Link.

Focus Mode

Focus Mode is designed for all those times you’re working or studying, and you want to to focus to get something done. With focus mode, you can pick the apps that you think might distract you and silence them – for example, pausing email and the News while leaving maps and text message apps active. You can then use Quick Tiles to turn on Focus Mode any time you want to focus. Under the covers, these apps will be paused – until you come out of Focus Mode! Focus Mode is coming to Android 9 Pie and Android Q devices this Fall.

Family Link

Family Link is a new set of controls to help parents. Starting in Android Q, Family Link will be built right into the Settings on the device. When you set up a new device for your child, Family Link will help you connect it to you. You’ll be able to set daily screen time limits, see the apps where your child is spending time, review any new apps your child wants to install, and even set a device bedtime so your child can disconnect and get to sleep. And now in Android Q you can also set time limits on specific apps… as well as give your kids Bonus Time if you want them to have just 5 more minutes at bedtime. Family Link is coming to Android P and Q devices this Fall. Make sure to check out the other great wellbeing apps in the recent Google Play awards.

Family link lets parents set device bedtime and even give bonus minutes.

Android Foundations

We’re continuing to extend the foundations of Android with more capabilities to help you build new experiences for your users — here are just a few.

Improved peer-to-peer and internet connectivity

In Android Q we’ve refactored the Wi-Fi stack to improve privacy and performance, and also to improve common use-cases like managing IoT devices and suggesting internet connections — without requiring the location permission. The network connection APIs make it easier to manage IoT devices over local Wi-Fi, for peer-to-peer functions like configuring, downloading, or printing. The network suggestion APIs let apps surface preferred Wi-Fi networks to the user for internet connectivity.

Wi-Fi performance modes

In Android Q apps can now request adaptive Wi-Fi by enabling high performance and low latency modes. These will be of great benefit where low latency is important to the user experience, such as real-time gaming, active voice calls, and similar use-cases. The platform works with the device firmware to meet the requirement with the lowest power consumption. To use the new performance modes, call WifiManager.WifiLock.createWifiLock().

Full support for Wi-Fi RTT accurate indoor positioning

In Android 9 Pie we introduced RTT APIs for indoor positioning to accurately measure distance to nearby Wi-Fi Access Points (APs) that support the IEEE 802.11mc protocol, based on measuring the round-trip time of Wi-Fi packets. Now in Android Q, we’ve completed our implementation of the 802.11mc standard, adding an API to obtain location information of each AP being ranged, configured by their owner during installation.

Audio playback capture

You saw how Live Caption can take audio from any app and instantly turn it into on-screen captions. It’s a seamless experience that shows how powerful it can be for one app to share its audio stream with another. In Android Q, any app that plays audio can let other apps capture its audio stream using a new API. In addition to enabling captioning and subtitles, the API lets you support popular use-cases like live-streaming games, all without latency impact on the source app or game.

We’ve designed this new capability with privacy and copyright protection in mind, so the ability for an app to capture another app’s audio is constrained, giving apps full control over whether their audio streams can be captured. Read more here.

Dynamic depth for photos

Apps can now request a Dynamic Depth image which consists of a JPEG, XMP metadata related to depth related elements, and a depth and confidence map embedded in the same file on devices that advertise support. Requesting a JPEG + Dynamic Depth image makes it possible for you to offer specialized blurs and bokeh options in your app. You can even use the data to create 3D images or support AR photography use-cases. Dynamic Depth is an open format for the ecosystem — the latest version of the spec is here. We’re working with our device-maker partners to make it available across devices running Android Q and later.



With Dynamic Depth image you can offer specialized blurs and bokeh options in your app

New audio and video codecs

Android Q adds support for the open source video codec AV1, which allows media providers to stream high quality video content to Android devices using less bandwidth. In addition, Android Q supports audio encoding using Opus – a codec optimized for speech and music streaming, and HDR10+ for high dynamic range video on devices that support it. The MediaCodecInfo API introduces an easier way to determine the video rendering capabilities of an Android device. For any given codec, you can obtain a list of supported sizes and frame rates.

Vulkan 1.1 and ANGLE

We’re continuing to expand the impact of Vulkan on Android, our implementation of the low-overhead, cross-platform API for high-performance 3D graphics. We’re working together with our device manufacturer partners to make Vulkan 1.1 a requirement on all 64-bit devices running Android Q and higher, and a recommendation for all 32-bit devices. For game and graphics developers using OpenGL, we’re also working towards a standard, updateable OpenGL driver for all devices built on Vulkan. In Android Q we’re adding experimental support for ANGLE on top of Vulkan on Android devices. See the docs for details.

Neural Networks API 1.2

In NNAPI 1.2 we’ve added 60 new ops including ARGMAX, ARGMIN, quantized LSTM, alongside a range of performance optimisations. This lays the foundation for accelerating a much greater range of models — such as those for object detection and image segmentation. We are working with hardware vendors and popular machine learning frameworks such as TensorFlow to optimize and roll out support for NNAPI 1.2.

Thermal API

When devices get too warm, they may throttle the CPU and/or GPU, and this can affect apps and games in unexpected ways. Now in Android Q, apps and games can use a thermal API to monitor changes on the device and take action to help restore normal temperature. For example, streaming apps can reduce resolution/bit rate or network traffic, a camera app could disable flash or intensive image enhancement, or a game could reduce frame rate or polygon tesselation. Read more here.

ART optimizations

Android Q introduces several improvements to the ART runtime to help your apps start faster, consume less memory, and run smoother — without requiring any work from you. To help with initial app startup, Google Play is now delivering cloud-based profiles along with APKs. These are anonymized, aggregate ART profiles that let ART pre-compile parts of your app even before it’s run. Cloud-based profiles benefit all apps and they’re already available to devices running Android P and higher.

We’re also adding Generational Garbage Collection to ART’s Concurrent Copying (CC) Garbage Collector. Generational CC collects young-generation objects separately, incurring much lower cost as compared to full-heap GC. It makes garbage collection more efficient in terms of time and CPU, reduces jank, and helps apps run better on lower-end devices.

More Android Q Beta devices, more Treble momentum than ever

In 2017 we launched Project Treble as part of Android Oreo, with a goal of accelerating OS updates. Treble provides a consistent, testable interface between Android and the underlying device code from device makers and silicon manufacturers, which makes porting a new OS version much simpler and more modular.

In 2018 we worked closely with our partners to bring the first OS updates to their Treble devices. The result: last year at Google I/O we had 8 devices from 7 partners joining our Android P Beta program, together with our Pixel and Pixel 2 devices. Fast forward to today — we’re seeing updates to Android Pie accelerating strongly, with 2.5 times the footprint compared to Android Oreo’s at the same time last year.

This year with Android Q we’re seeing even more momentum, and we have 23 devices from 13 top global device makers releasing Android Q Beta 3 — including all Pixel devices. We’re also providing Q Beta 3 Generic System Images (GSI), a testing environment for other supported Treble devices. All of these offer the same behaviors, APIs, and features — giving you an incredible variety of devices for testing your apps, and more ways for you to get an early look at Android Q.

You can see the full list of supported partner and Pixel devices at android.com/beta. Try Android Q Beta on your favorite device today and let us know your feedback!

Explore the new features and APIs

When you’re ready, dive into Android Q and learn about the new features and APIs you can use in your apps. Take a look at the API diff report for an overview of what’s changed in Beta 3, and see the Android Q Beta API reference for details. Visit the Android Q Beta developer site for more resources, including release notes and how to report issues.

To build with Android Q, download the Android Q Beta SDK and tools into Android Studio 3.3 or higher, and follow these instructions to configure your environment. If you want the latest fixes for Android Q related changes, we recommend you use Android Studio 3.5 or higher.

How do I get Beta 3?

It’s easy! Just enroll any Pixel device here to get the update over-the-air. If you’re already enrolled, you’ll receive the update soon, and, no action is needed on your part. Downloadable system images are also available.

You can also get Beta 3 on any of the other devices participating in the Android Q Beta program, from some of our top device maker partners. You can see the full list of supported partner and Pixel devices at android.com/beta. For each device you’ll find specs and links to the manufacturer’s dedicated site for downloads, support, and to report issues.

For even broader testing on supported devices, you can also get Android GSI images, and if you don’t have a device you can test on the Android Emulator — just download the latest emulator system images via the SDK Manager in Android Studio.

As always, your input is critical, so please let us know what you think. You can use our hotlists for filing platform issues (including privacy and behavior changes), app compatibility issues, and third-party SDK issues. You’ve shared great feedback with us so far and we’re working to integrate as much of it as possible in the next Beta release.

We’re looking forward to seeing your apps on Android Q!

What’s Happening With GDPR And ePR? Where Does CookiePro Fit In?

  • May 24, 2019

What’s Happening With GDPR And ePR? Where Does CookiePro Fit In?

What’s Happening With GDPR And ePR? Where Does CookiePro Fit In?

Suzanne Scacca

2019-05-23T10:00:59+02:00
2019-05-24T08:34:30+00:00

(This is a sponsored article.) Is privacy an issue on the web? According to this ConsumerMan piece from NBC News a few years back, it is:

The Internet has become a serious threat to our privacy.
— Jeff Chester of the Center for Digital Democracy

Your online profile is being sold on the web. It’s kind of crazy and it’s not harmless.
— Sharon Goott Nissim of the Electronic Privacy Information Center

There are no limits to what types of information can be collected, how long it can be retained, with whom it can be shared or how it can be used.
— Susan Grant of the Consumer Federation of America

While there’s been talk of introducing a “Do Not Track” program into U.S. legislation, the EU is the first one to actually take steps to make the Internet a safer place for consumers.

On May 25, 2018, the General Data Protection Regulation (GDPR) was enacted. Soon to follow will be the ePrivacy Regulation (ePR).

With these initiatives holding businesses accountable for the information they track and use online, web developers have to add another thing to their list of requirements when building a website:

The protection of user privacy.

In this post, we’re going to look at:

  • Where we currently stand with GDPR,
  • What changes we’ve seen on the web as a result,
  • What’s coming down the line with ePR,
  • And take a look CookiePro Cookie Consent tool that helps web developers make their websites compliant now.

GDPR: Where Are We Now?

With the one-year anniversary of GDPR upon us, now is a great time to talk about what the updated legislation has done for online privacy.

GDPR Recap

It’s not like the EU didn’t have privacy directives in place before. As Heather Burns explained in a Smashing Magazine article last year:

All of the existing principles from the original Directive stay with us under GDPR. What GDPR adds is new definitions and requirements to reflect changes in technology which simply did not exist in the dialup era. It also tightens up requirements for transparency, disclosure and, process: lessons learned from 23 years of experience.

One other key change that comes with moving from the previous privacy directive to this privacy regulation is that it’s now consistently implemented across all EU states. This makes it easier for businesses to implement digital privacy policies and for governing bodies to enforce them since there’s no longer any question of what one country has done with the implementation of the law. It’s the same for all.

What’s more, there are clearer guidelines for web developers that are responsible for implementing a privacy solution and notice on their clients’ websites.

Has GDPR Led to Any Changes in How Websites Handle Data?

It seems as though many companies are struggling to get compliant with GDPR, based on a test done by Talend in the summer of 2018. They sent data requests to over a hundred companies to see which ones would provide the requested information, per the new GDPR guidelines.

Here is what they found:

  • Only 35% of EU-based companies complied with the requests while 50% outside of the EU did.
  • Only 24% of retail companies responded (which is alarming considering the kind of data they collect from consumers).
  • Finance companies seemed to be the most compliant; still, only 50% responded.
  • 65% of companies took over 10 days to respond, with the average response time being 21 days.

What Talend suggests, then, is that digital services (e.g. SaaS, mobile apps, e-commerce) are more likely to fall in line with GDPR compliance. It’s the other companies — those that didn’t start as digital companies or who have older legacy systems — that are struggling to get onboard.

Regardless of what actions have been taken by businesses, they know they must do it.

A 2018 report published by McDermott Will & Emery and Ponemon Institute showed that, despite businesses’ inability to be compliant, they were scared of what would happen if they were found not to be:

GDPR report - failure to comply costs

Data on what businesses believed to be the greatest costs of failing to comply with GDPR. (Source: McDermott Will & Emery and Ponemon Institute) (Large preview)

Those that said they feared financial repercussions were right to do so. The GDPR assesses fines based on how severe the infringement is:

  • Lower level offenses result in fines of up to €10 million or 2% of the the revenue made in the prior fiscal year.
  • Upper level offenses result in fines of up to €20 million or 4%.

Some high-profile cases of fines have already popped up in the news, too.

Google received a €50 million penalty for committing a number of violations.

Mainly, the issue taken with Google is that it buries its privacy policies and consent so deep that most consumers never find it. What’s more, a lot of their privacy policies are ambiguous or unclear, which leads users to “Accept” without really understanding what they’re accepting.

Facebook is another company we shouldn’t be too surprised to see in GDPR’s crosshairs.

Their penalty was only for £500,000. That’s because the fine was assessed for grievances issued between 2007 and 2014 — before GDPR went into place. It’ll be interesting to see if Facebook changes its privacy policies in light of the much larger sum of money they’ll owe when another inevitable breach occurs.


It’s not just the monetary fine businesses should be nervous about when failing to comply with GDPR.

Stephen Eckersley of the UK Information Commissioner’s Office said that, after the GDPR went into effect, the amount of data breach reports increased exponentially.

In June of 2018, there were 1,700 reports of companies in violation of GDPR. Now, the average is roughly 400 a month. Even so, Eckersley estimates that there will be double the amount of reports in 2019 than there were in previous years (36,000 vs. 18,000).

So, not only are the governing bodies willing to penalize businesses for failure to comply. It seems that consumers are fed up enough (and empowered!) to report more of these violations now.

Let’s Talk About ePR For A Second

The ePrivacy Regulation has not yet become law, but it’s expected to soon enough. That’s because both GDPR and ePR were drafted to work together to update the old Data Protection Directive.

ePR is an update to Article 7 in the EU Charter of Human Rights. GDPR is an update to Article 8.

EU Charter of Human Rights

The Freedoms laid out by the EU Charter of Human Rights. (Source: EU Charter of Human Rights) (Large preview)

Although they’re separately defined, it’s best to think of ePR as an enhancement of GDPR. So, not only do businesses have to take care with data collected from individuals, the ePR says that they have to be careful with protecting the identity of individuals, too.

As such, when the ePR rolls out, all digital communications between business and consumer will be protected. That includes:

  • Skype chats
  • Facebook messages
  • VoiP calls
  • Email marketing
  • Push notifications
  • And more.

If a consumer has not expressly given permission for a business to contact them, the ePR will prohibit them from doing so. In fact, the ePR will take it a step further and give more control to consumers when it comes to cookies management.

Rather than display a pop-up consent notice that asks “Is it okay if we use cookies to store your data?”, consumers will decide what happens through their browser settings.

However, we’re not at that point yet, which means it’s your job to get that notice up on your website and to make sure you’re being responsible with how their data is collected, stored and used.

What Web Developers Need To Do To Protect Visitor Privacy

Do a search for “How to Avoid Being Tracked Online”:

A sample Google search

Search for “How to Avoid Being Tracked Online” on Google. (Source: Google) (Large preview)

There are over 57 million pages that appear in Google’s search results. Do similar keyword searches and you’ll also find endless pages and forum submissions where consumers express serious concerns over the information gathered about them online, wanting to know how to “stop cookies”.

Clearly, this is a matter that keeps consumers up at night.

The GDPR should be your motivation to go above and beyond in putting their minds at ease.

While you probably won’t have a hand in the actual data management or usage of data within the business, you can at least help your clients get their websites in order. And, if you already did this when GDPR initially was enacted, now would be a good time to revisit what you did and make sure their websites are still in compliance.

Just make sure that your client is safely handling visitor data and protecting their privacy before providing any sort of privacy consent statement. Those statements and their acceptance of them are worthless if the business isn’t actually fulfilling its promise.

Once that part of the compliance piece is in place, here’s what you need to do about cookies:

1. Understand How Cookies Work

Websites allow businesses to gather lots of data from visitors. Contact forms collect info on leads. eCommerce gateways accept methods of payment. And then there are cookies:

Cookies are pieces of data, normally stored in text files, that websites place on visitors’ computers to store a range of information, usually specific to that visitor — or rather the device they are using to view the site — like the browser or mobile phone.

There are some that collect bare-bones details that are necessary to provide visitors with the best experience. Like preserving a logged-in session as visitors move from page to page. Or not displaying a pop-up after a visitor dismissed it on a recent visit.

There are other cookies, usually from third-party tracking services, that pry deeper. These are the ones that track and later target visitors for the purposes of marketing and advertising.

Regardless of where the cookies come from or what purpose they serve, the fact of the matter is, consumers are being tracked. And, until recently, websites didn’t have to inform them when that took place or how much of their data was stored.

2. Don’t Use Cookies That Are Irrelevant

There’s no getting around the usage of cookies. Without them, you wouldn’t have access to analytics that tell you who’s visiting your website, where they come from and what they’re doing while they’re there. You also wouldn’t be able to serve up personalized content or notifications to keep their experience with the site feeling fresh.

That said, do you even know what kinds of cookies your website uses right now?

Before you go implementing your own cookie consent notice for visitors, make sure you understand what exactly it is you’re collecting from them.

Go to the CookiePro website and run a free scan on your client’s site:

CookiePro website privacy scan

CookiePro offers a free website privacy scan. (Source: CookiePro) (Large preview)

After you enter your URL and start the scan, you’ll be asked to provide just a few details about yourself and the company. The scan will start and you’ll receive a notice that says you’ll receive your free report within 24 hours.

Just to give you an idea of what you might see, here are the report results I received:

CookiePro scan

CookiePro runs a scan on all data collection elements and trackers. (Source: Cookie Consent) (Large preview)

As you can see, CookiePro does more than just tell me how many or which cookies my website has. It also includes forms that are gathering data from visitors as well as tags.

Be sure to review your report carefully. If you’re tracking data that’s completely unnecessary and unjustified for a website of this nature to get ahold of, that needs to change ASAP. Why put your clients’ business at risk and compromise visitor trust if you’re gathering data that has no reason to be in their hands?

CookiePro scan results

CookiePro’s cookies report tells you what purpose they serve and where they come from. (Source: Cookie Consent) (Large preview)

Note: if you sign up for an account with CookiePro, you can run your own cookie audit from within the tool (which is part of the next step).

3. Provide Transparency About Cookie Usage

GDPR isn’t trying to discourage businesses from using cookies on their websites or other marketing channels. What it’s doing, instead, is encouraging them to be transparent about what’s happening with data and then be responsible with it once they have it.

So, once you know what sort of cookies you’re using and data you’re handling, it’s time to inform your visitors about this cookie usage.

Keep in mind that this shouldn’t just be served to EU-based visitors. While those are the only ones protected under the regulation, what could it hurt to let everyone know that their data and identity are protected when they’re on your website? The rest of the world will (hopefully) follow, so why not be proactive and get consent from everyone now?

To provide transparency, a simple entry notice is all you need to display to visitors.

For example, here is one from Debenhams:

Debenhams cookies notice

This is an example of a cookies notice found on the Debenhams website. (Source: Debenhams) (Large preview)

As you can see, it’s not as simple as asking visitors to “Accept” or “Reject” cookies. They’re also given the option to manage them.

To add your own cookies entry banner and advanced options, use CookiePro’s Cookie Consent tool.

Signup is easy — if you start with the free plan, it takes just a few seconds to sign up. Within an hour, you’ll receive your login credentials to get started.

Cookie Consent dashboard

A peek inside the CookiePro Cookie Consent Dashboard. (Source: Cookie Consent) (Large preview)

Before you can create your cookie consent banner, though, you must add your website to the tool and run a scan on it. (You may have already completed that in the prior step).

When the scan is complete, you can start creating your cookie banner:

Create banner with Cookie Consent

Creating a cookie banner within the Cookie Consent tool. (Source: Cookie Consent) (Large preview)

By publishing a cookie consent banner to your website, you’re taking the first big step to ensuring that visitors know that their data and identity is being protected.

4. Make Your Cookie Consent Form Stand Out

Don’t stop at simply adding a cookie banner to your website. As Vitaly Friedman explained:

In our research, the vast majority of users willingly provide consent without reading the cookie notice at all. The reason is obvious and understandable: many customers expect that a website ‘probably wouldn’t work or the content wouldn’t be accessible otherwise.’ Of course, that’s not necessarily true, but users can’t know for sure unless they try it out. In reality, though, nobody wants to play ping-pong with the cookie consent prompt and so they click the consent away by choosing the most obvious option: ‘OK.’

While ePR will eventually rid of us of this issue, you can do something about it now — and that’s to design your cookie consent form to stand out.

A word of caution: be careful with using pop-ups on a mobile website. Although consent forms are one of the exceptions to Google’s penalty against entry pop-ups, you still don’t want to compromise the visitor experience all for the sake of being GDPR compliant.

As such, you might be better off using a cookie banner at the top or bottom of the site and then designing it really stand out.

What’s nice about CookiePro is that you can customize everything, so it really is yours to do with as you like. For example, here is one I designed:

Cookie Consent preview

A preview of a cookie consent banner built with Cookie Consent. (Source: Cookie Consent) (Large preview)

You can change:

  • Text color
  • Button color
  • Background color.

You can write your own copy for each element:

  • Header
  • Message
  • Cookie policy note
  • Cookie policy settings
  • Accept button.

And you get to decide how the banner will function if or when visitors engage with it.

5. Educate Visitors on Cookies

In addition to giving your cookie consent banner a unique look, use it as a tool to educate visitors on what cookies are and why you’re even using them. That’s what the Cookie Settings area is for.

With Cookie Consent, you can inform visitors about the different types of cookies that are used on the website. They then have the choice to toggle different ones on or off based on their comfort level.

That’s what’s so nice about CookiePro taking care of the cookie scan for you. That way, you know what kinds of cookies you actually have in place. All you have to do, then, is go to your Cookie List and choose which descriptions you want to display to visitors:

Cookie List feature in CookiePro

CookiePro lets you educate visitors about cookies used on the site. (Source: Cookie Consent) (Large preview)

Just make sure you explain the importance of the most basic of cookies (“strictly necessary” and “performance) and why you recommend they leave them on. The rest you can provide explanations for in the hopes that their response will be, “Okay, yeah, I’d definitely like a personalized experience on this site.” If not, the choice is theirs to toggle off/on which kinds of cookies they want to be shown. And the Cookie Consent tool can help.

In other words, a cookie consent bar is not some superficial attempt to get consent. You’re trying to help them understand what cookies do and give them the power to influence their on-site experience.

Wrapping Up

There’s a lot we have to be thankful for with the Internet. It closes geographic gaps. It presents new opportunities for doing business. It enables consumers to buy pretty much anything they want with just a few clicks.

But as the Internet matures, the ways in which we build and use websites become more complex. And not just complex, but risky too.

GDPR and ePR have been a long time coming. As websites gather more data on consumers that can then be used by third parties or to follow them to other websites, web developers need to take a more active role in abiding by the new regulations while also putting visitors’ minds at ease. Starting with a cookie consent banner.

Smashing Editorial
(ms, yk, il)

Congratulations to the finalists of the Indie Games Showcase from Google Play

  • May 24, 2019

Posted by Patricia Correa, Director, Platforms & Ecosystems Developer Marketing

Google Play Indie Games Showcase Announcements gif

Back in March we opened submissions for the Indie Games Showcase, an international competition for games studios from Europe*, South Korea, and Japan who are constantly pushing the boundaries of storytelling, visual excellence, and creativity in mobile.

We were once again impressed by the diversity and creativity that the indie community is bringing to mobile, and we’re happy to announce the 20 finalists.

Check out the local websites to learn more about the finalists and the events.

European illustration with Eiffel Tower and Matryoshka dolls

Europe

Europe Finalists logos for Indie Games Showcase

AntVentor by LoopyMood (Ukraine)

CHUCHEL by Amanita Design (Czech Republic)

#DRIVE by Pixel Perfect Dude (Poland)

Fly THIS! By Northplay (Denmark)

Fobia by Tapteek (Russia)

G30 – A Memory Maze by Ivan Kovalov (Russia)

Gold Peaks by Afterburn (Poland)

Grayland by 1DER Entertainment (Slovakia)

Hexologic by MythicOwl (Poland)

Lucid Dream Adventure by Dali Games (Poland)

OCO by SPECTRUM48 (United Kingdom)

Ordia by Loju (United Kingdom)

Peep by Taw (Russia)

Photographs by EightyEight Games (United Kingdom)

Rest in Pieces by Itatake (Sweden)

Returner Zhero by Fantastic, yes (Denmark)

see/saw by Kamibox (Germany)

STAP by Overhead Game Studio (United Kingdom)

Tesla vs. Lovecraft by 10tons (Finland)

Tiny Room Stories: Town Mystery by Kiary games (Russia)

mt.Fuji and other Japanese emblems

Japan

Japan Finalists logos for Indie Games Showcase

ALTER EGO by 株式会社カラメルカラム

Infection – 感染 – by CanvasSoft

Jumpion – Make a two-step jump ! by Comgate

Lunch Time Fish by SoftFunk HULABREAKS

MeltLand by 個人

ReversEstory by 個人

キグルミキノコ Q-bit -第一章– by 個人

SumoRoll – Road to the Yokozuna by Studio Kingmo

Escape Game: The Little Prince by 株式会社 Jammsworks

Kamiori – カミオリ by TeamOrigami

Bear’s Restaurant by 個人

クマムシさん惑星 ミクロの地球最強伝説 by Ars Edutainment

ゴリラ!ゴリラ!ゴリラ!by Gang Gorilla Games

Girl x Sun – Terasene – Tower defence & Novel game by SleepingMuseum

タシテケス by 個人

Destination: Dragons! by GAME GABURI

Cute cat’s cake shop by 個人

Persephone by Momo-pi

Hamcorollin’ by illuCalab.

Food Truck Pup: Cooking Chef by 合同会社ゲームスタート

Korean space needle and temple

South Korea

South Korea Finalists logos for Indie Games Showcase

다크타운 – 온라인 by 초콜릿소프트

Bad 2 Bad: Extinction by Dawinstone

셧더펑 : 슈팅액션 by Take Five Games

Cartoon Craft by Studio NAP

Catch Idle by HalftimeStudio

Hexagon Dungeon by Bleor Games

Hexonia by Togglegear

Mahjong – Magic Fantasy by Aquagamez

Maze Cube by IAMABOY

Road to Valor: World War II by Dreamotion Inc.

Onslot Car by Wondersquad

ROOMS: The Toymaker’s Mansion by HandMade Game

Rhythm Star: Music Adventure by Anbsoft

7Days – Decide your story by Buff Studio

Seoul2033: Backer by Banjiha Games

Super Jelly Pop by STARMONSTER

UNLINK Daily Puzzle by Supershock

몬스터파크 온라인 by OVENCODE

WhamBam Warriors by DrukHigh

언노운 나이츠 by teamarex

We will welcome all finalists at events in London, Seoul, and Tokyo, where they will showcase their games to an audience of players, press and industry experts, for a chance to win the top prizes.

The events are open to the public, so if you would like to meet these games developers, try out their creations, and help choose the winners, sign up on the regional websites.

Congratulations to all finalists!

* The competition is open to developers from the following European countries and Israel: Austria, Belgium, Belarus, Czech Republic, Denmark, Finland, France, Germany, Italy, Netherlands, Norway, Poland, Romania, Russia, Slovakia, Spain, Sweden, Ukraine, and the United Kingdom (including Northern Ireland).

How useful did you find this blog post?


Creating Your Own React Validation Library: The Features (Part 2)

  • May 23, 2019

Creating Your Own React Validation Library: The Features (Part 2)

Creating Your Own React Validation Library: The Features (Part 2)

Kristofer Selbekk

2019-05-23T13:00:16+02:00
2019-05-23T21:35:41+00:00

Implementing a validation library isn’t all that hard. Neither is adding all of those extra features that make your validation library much better than the rest.

This article will continue implementing the validation library we started implementing in the previous part of this article series. These are the features that are going to take us from a simple proof of concept to an actual usable library!

  • Part 1: The Basics
  • Part 2: The Features
  • Part 3: The Experience (Coming up next week)

Only Show Validation On Submit

Since we’re validating on all change events, we’re showing the user error messages way too early for a good user experience. There are a few ways we can mitigate this.

The first solution is simply providing the submitted flag as a returned property of the useValidation hook. This way, we can check whether or not the form is submitted before showing an error message. The downside here is that our “show error code” gets a bit longer:

<label>
  Username
  <br />
  <input ...getFieldProps('username') />
  submitted && errors.username && (
    <div className="error">errors.username</div>
  )
</label>

Another approach is to provide a second set of errors (let’s call them submittedErrors), which is an empty object if submitted is false, and the errors object if it’s true. We can implement it like this:

const useValidation = config => 
  // as before
  return 
    errors: state.errors,
    submittedErrors: state.submitted ? state.errors : ,
  ;

This way, we can simply destructure out the type of errors that we want to show. We could, of course, do this at the call site as well — but by providing it here, we’re implementing it once instead of inside all consumers.

Show Error Messages On-Blur

A lot of people want to be shown an error once they leave a certain field. We can add support for this, by tracking which fields have been “blurred” (navigated away from), and returning an object blurredErrors, similar to the submittedErrors above.

The implementation requires us to handle a new action type — blur, which will be updating a new state object called blurred:

const initialState = 
  values: ,
  errors: ,
  blurred: ,
  submitted: false,
;

function validationReducer(state, action) 
  switch (action.type) 
    // as before
    case 'blur':
      const blurred =  
        ...state.blurred, 
        [action.payload]: true 
      ; 
      return  ...state, blurred ;
    default:
      throw new Error('Unknown action type');
  

When we dispatch the blur action, we create a new property in the blurred state object with the field name as a key, indicating that that field has been blurred.

The next step is adding an onBlur prop to our getFieldProps function, that dispatches this action when applicable:

getFieldProps: fieldName => (
  // as before
  onBlur: () => 
    dispatch( type: 'blur', payload: fieldName );
  ,
),

Finally, we need to provide the blurredErrors from our useValidation hook so that we can show the errors only when needed.

const blurredErrors = useMemo(() => 
    const returnValue = ;
    for (let fieldName in state.errors) 
      returnValue[fieldName] = state.blurred[fieldName]
        ? state.errors[fieldName]
        : null;
    
    return returnValue;
  , [state.errors, state.blurred]);
return 
  // as before
  blurredErrors,
;

Here, we create a memoized function that figures out which errors to show based on whether or not the field has been blurred. We recalculate this set of errors whenever the errors or blurred objects change. You can read more about the useMemo hook in the documentation.

Time For A Tiny Refactor

Our useValidation component is now returning three sets of errors — most of which will look the same at some point in time. Instead of going down this route, we’re going to let the user specify in the config when they want the errors in their form to show up.

Our new option — showErrors — will accept either “submit” (the default), “always” or “blur”. We can add more options later, if we need to.

function getErrors(state, config) 
  if (config.showErrors === 'always') 
    return state.errors;
  
  if (config.showErrors === 'blur') 
    return Object.entries(state.blurred)
      .filter(([, blurred]) => blurred)
      .reduce((acc, [name]) => ( ...acc, [name]: state.errors[name] ), );
  
  return state.submitted ? state.errors : ;

const useValidation = config => 
  // as before
  const errors = useMemo(
    () => getErrors(state, config), 
    [state, config]
  );

  return 
    errors,
    // as before
  ;
;

Since the error handling code started to take most of our space, we’re refactoring it out into its own function. If you don’t follow the Object.entries and .reduce stuff — that’s fine — it’s a rewrite of the for...in code in the last section.

If we required onBlur or instant validation, we could specify the showError prop in our useValidation configuration object.

const config = 
  // as before
  showErrors: 'blur',
;
const  getFormProps, getFieldProps, errors  = useValidation(config);
// errors would now only include the ones that have been blurred
Note On Assumptions

“Note that I’m now assuming that each form will want to show errors the same way (always on submit, always on blur, etc). That might be true for most applications, but probably not for all. Being aware of your assumptions is a huge part of creating your API.”

Allow For Cross-Validation

A really powerful feature of a validation library is to allow for cross-validation — that is, to base one field’s validation on another field’s value.

To allow this, we need to make our custom hook accept a function instead of an object. This function will be called with the current field values. Implementing it is actually only three lines of code!

function useValidation(config) 
  const [state, dispatch] = useReducer(...);
  if (typeof config === 'function') 
    config = config(state.values);
  

To use this feature, we can simply pass a function that returns the configuration object to useValidation:

const  getFieldProps  = useValidation(fields => ( 
  password: 
    isRequired:  message: 'Please fill out the password' ,
  ,
  repeatPassword: 
    isRequired:  message: 'Please fill out the password one more time' ,
    isEqual:  value: fields.password, message: 'Your passwords don’t match' 
  
));

Here, we use the value of fields.password to make sure two password fields contain the same input (which is terrible user experience, but that’s for another blog post).

Add Some Accessibility Wins

A neat thing to do when you’re in charge of the props of a field is to add the correct aria-tags by default. This will help screen readers with explaining your form.

A very simple improvement is to add aria-invalid="true" if the field has an error. Let’s implement that:

const useValidation = config => 
  // as before
  return 
    // as before
    getFieldProps: fieldName => (
      // as before
      'aria-invalid': String(!!errors[fieldName]),
    ),
  
;

That’s one added line of code, and a much better user experience for screen reader users.

You might wonder about why we write String(!!state.errors[fieldName])? state.errors[fieldName] is a string, and the double negation operator gives us a boolean (and not just a truthy or falsy value). However, the aria-invalid property should be a string (it can also read “grammar” or “spelling”, in addition to “true” or “false”), so we need to coerce that boolean into its string equivalent.

There are still a few more tweaks we could do to improve accessibility, but this seems like a fair start.

Shorthand Validation Message Syntax

Most of the validators in the calidators package (and most other validators, I assume) only require an error message. Wouldn’t it be nice if we could just pass that string instead of an object with a message property containing that string?

Let’s implement that in our validateField function:

function validateField(fieldValue = '', fieldConfig, allFieldValues) 
  for (let validatorName in fieldConfig) 
    let validatorConfig = fieldConfig[validatorName];
    if (typeof validatorConfig === ’string') 
      validatorConfig =  message: validatorConfig ;
    
    const configuredValidator = validators[validatorName](validatorConfig);
    const errorMessage = configuredValidator(fieldValue);

    if (errorMessage) 
      return errorMessage;
    
  
  return null;

This way, we can rewrite our validation config like so:

const config = 
  username: 
    isRequired: 'The username is required',
    isEmail: 'The username should be a valid email address',
  ,
;

Much cleaner!

Initial Field Values

Sometimes, we need to validate a form that’s already filled out. Our custom hook doesn’t support that yet — so let’s get to it!

Initial field values will be specified in the config for each field, in the property initialValue. If it’s not specified, it defaults to an empty string.

We’re going to create a function getInitialState, which will create the initial state of our reducer for us.

function getInitialState(config) 
  if (typeof config === 'function') 
    config = config();
  
  const initialValues = ;
  const initialBlurred = ;
  for (let fieldName in config.fields) 
    initialValues[fieldName] = config.fields[fieldName].initialValue 
  const initialErrors = validateFields(initialValues, config.fields);
  return 
    values: initialValues,
    errors: initialErrors,
    blurred: initialBlurred,
    submitted: false,
  ;

We go through all fields, check if they have an initialValue property, and set the initial value accordingly. Then we run those initial values through the validators and calculate the initial errors as well. We return the initial state object, which can then be passed to our useReducer hook.

Since we’re introducing a non-validator prop into the fields config, we need to skip it when we validate our fields. To do that, we change our validateField function:

function validateField(fieldValue = '', fieldConfig) 
  const specialProps = ['initialValue'];
  for (let validatorName in fieldConfig) 
    if (specialProps.includes(validatorName)) 
      continue;
    
    // as before
  

As we keep on adding more features like this, we can add them to our specialProps array.

Summing Up

We’re well on our way to create an amazing validation library. We’ve added tons of features, and we’re pretty much-thought leaders by now.

In the next part of this series, we’re going to add all of those extras that make our validation library even trend on LinkedIn. Stay tuned!

Smashing Editorial
(dm, yk, il)

15 Benefits to Outsource Document Management

  • May 23, 2019

Outsourcing is a significant breakthrough, which started in the late 90’s in North America and Europe. Different aspects and processes in businesses were outsourced, including documents from public, classified, and restricted archives. Without a doubt, outsourcing is an efficient method that enables businesses to focus on core processes.

Why It Matters

The rise of document management outsourcing isn’t that surprising, considering that most companies view their document management solution as an inconvenient part of their functional operations. Companies are aware that it cause an unnecessary delay from time to time. Aside from delays, document management also results in an even more disorganized process.

These inconveniences can lead to errors and redundancies that could easily be avoided by consulting experienced document management experts. These people can provide a holistic solution and approach to your enterprise content management, which plays a fundamental role in the control of the information in your company. The effectiveness of your document management system can have a negative or positive impact on your business processes.

After determining the importance of document management, it is natural for us to know more about what is it and how you can make the most out of its benefits when the process is done as it should be.

What Exactly Is Document Management?

document management
Via sodapdf

Document management is often referred to as Document Management Systems (DMS). This process uses document management software to store, manage, and track electronic documents. In other cases, it is used on images of paper-based information captured through the use of a document scanner, as well as other file types. The system comprehensively shows how your organization stores, manages, and tracks its electronic copy of documents that is applicable in modern or paperless settings.

Document management is one of the precursor advancements to content management. But before it became mainstream, document management was available exclusively in a stand-alone basis like imaging, workflow, and archiving brethren. In the first few years of the document management system, it’s not considered as necessary as other functions. It all changed when businesses discovered the benefits document management system offers,especially when a reputable outsourcing company is hired to do the job.

To date, outsourcing firms provide some of the most basic functionalities to content management such as imposing controls and management capabilities onto otherwise “stagnant” documents. In addition, they now have the capability to create software or programs that can handle more complicated procedures in the document management process. This is extremely convenient at times when you have piles of documents and you have to look for a specific file immediately.

Top Benefits of Outsourcing Document Management

document management outsource

Outsourcing document management is an effective way to help business owners so they can divert their attention and full potential in more essential divisions of the company.

Most, if not all, outsourcing companies can provide the equivalent level of effectiveness in services at a much lower cost. This aspect of outsourcing document management is of vital importance because business and company owners are looking for means to save as much as possible. But, of course, companies need not bargain on the quality of results. Therefore, outsourcing document management is a high common ground that meets both budget and quality of results. You may found very useful information provided by John Mancini here about outsourcing document management.

It’s a cost-effective strategy that allows small to large businesses to save and make use of their budgets in more critical areas of the company.

In general, outsourcing is a great way to save more bucks since you can use the budget in other means that you’d find more profitable. For instance, instead of investing in a few sets of computer or devices, you can use the extra money for office improvement. Subsequently,the outsourcing company will be the one responsible for the machines that the outsourced employees will use. Simple changes like this yield considerable improvements in budget allocation.

It eliminates the risk and burden of launching solution.

When you do choose to outsource, you can cut off the time spent in brainstorming to find the best solutions for your company’s requirements. The document management outsourcing firm can evaluate the demands of your business and find suitable strategies that tailor fits your needs.

Outsourcing helps save space or storage.

document management outsource business
Via eleadersnetwork

Having document management done by a dedicated team is an excellent way to keep office space and room. The documents can either be collected in cloud storage (soft files) or file cabinets if the company prefers printed copies. It’s also a good option if you want to make your office look more ergonomic and organized. The CIO will give you some valuable information about the benefits of outsourcing.

Outsourcing document management requires a little to less employee involvement.

Another great benefit of utilizing outsourcing for document management is the fact that you can cut off the number of employees who will be handling the documents. Also, you don’t need to hire more people to manage the records as the outsourcing company will do it for you.

Get your document management handled by the experts.

Most outsourcing firms are well-trained in providing efficient methods of document management. Thus, there is a higher chance that you’d get the results your company deserves. Moreover, these outsourcing firms choose document managers who are highly skilled and professional in handling different types of files, using dedicated software suitable for your business functions and the industry you’re in. I found this article very useful on Amplexor about document management from the experts view.

Outsourced documents pass industry compliance.

Since experts handle the materials involved, you are ensured that each file passes the industry compliance. Most outsourcing firms offering the service require quality assurance checks to determine if any material needs revision depending on the industry standards.

It’s an efficient way to create reports.

Organizing, validating, and disseminating the reports is another time-consuming factor that causes a delay in the performance of other vital tasks. These tasks normally takes a great deal of time.This is why it’s highly beneficial to use outsourcing firms that offer efficient reports daily, weekly, and quarterly. I think every business platform needs outsourcing firm. Please visit this page of Nytimes to get some ideas of its benefits.

It’s a useful method for maintaining document copies.

It’s true that outsourcing document management can save space and storage in the office. But it doesn’t mean that the document managers will get rid of old files to give room to the new one. In fact, the outsourcing firm will find ways to efficiently save and maintain copies of documents, whether they are created recently or years ago.

An efficient strategy to improve the workflow of the business.

Overall, outsourcing business processes is a great way to enhance the workflow. It makes the tasks easier and the results better. It is suitable for almost all types of businesses across different industries, making it a flexible technique for successful management of the company.

Outsourcing document management is a scalable process.

Document management services can be easily scaled up or down based on your company’s demands and specifications. A professional outsourcing bureau offering this service usually provides a complementary product development team to meet all your company’s future needs. I have this video for you to learn how it works.

Expert management of documents requires shorter turn around.

What makes outsourcing document management even more beneficial is the fact that it requires a quicker turnaround time. Expert document managers can handle more files in a shorter period. In addition to that,

Outsourcing document management provides maximum security and privacy.

Outsourcing document management is not well received in the first few years of its launch. It is due to privacy and security concerns that most business owners have. As time goes by, business owners learned to trust the system because of the advancements in features and security settings. Using a document management system has now become more secure and packed with state-of-the-art features that keep documents in a safe place.

Get accuracy in results.

Utilizing document management services yields excellent and accurate results. Companies offering document management services use techniques and tools that generate accurate reports. These reports are used to analyze the data and determine which files or documents were processed.

Software automation at its finest

Software automation is utilized in document management by outsourcing firms. A large portion of the process relies on a document management software. Every company offering document management services use different software and automation process, depending on the needs of the business or client. This video contains informative ideas for the beginners.

In a modern business setting, there are growing volumes of documents, especially if the company has been around for quite a long time. Thus, it requires commitment and hard work to manage these files accordingly. From reducing the risk of losses to improving employee efficiency in meeting deadlines, there are great benefits that should convince you to outsource document management to a professional record management provider. They can address various company priorities as necessary.

Choosing where to focus your company’s energy and resources is a crucial step to reaching progress. Thus, it’s vital to select a company that you can trust when outsourcing document management for your business. With all of the business transactions happening, it is so easy to feel swarmed and overwhelmed, especially if you are short with manpower. However, if you’re able to pick a trusted firm to handle these, your business processes could go smoothly and more systematic than ever.

See Also: 5 Tips to Stop Wasting Money on Substandard Services When Outsourcing

The post 15 Benefits to Outsource Document Management appeared first on Dumb Little Man.

What’s New in Android: Q Beta 3 & More

  • May 23, 2019

Posted by Dave Burke, VP, Engineering

Today Android is celebrating two amazing milestones. It’s Android’s version 10! And today, Android is running on more than 2.5B active Android devices.

With Android Q, we’ve focused on three themes: innovation, security and privacy, and digital wellbeing. We want to help you take advantage of the latest new technology — 5G, foldables, edge-to-edge screens, on-device AI, and more — while making sure users’ security, privacy, and wellbeing are always a top priority.

Earlier at Google I/O we highlighted what’s new in Android Q and unveiled the latest update, Android Q Beta 3. Your feedback continues to be extremely valuable in shaping today’s update as well as our final release to the ecosystem in the fall.

This year, Android Q Beta 3 is available on 15 partner devices from 12 OEMs — that’s twice as many devices as last year! It’s all thanks to Project Treble and especially to our partners who are committed to accelerating updates to Android users globally — Huawei, Xiaomi, Nokia, Sony, Vivo, OPPO, OnePlus, ASUS, LGE, TECNO, Essential, and realme.

Visit android.com/beta to see the full list of Beta devices and learn how to get today’s update on your device. If you have a Pixel device, you can enroll here to get Beta 3 — if you’re already enrolled, watch for the update coming soon. To get started developing with Android Q Beta, visit developer.android.com/preview.

Privacy and security

As we talked about at Google I/O, privacy and security are important to our whole company and in Android Q we’ve added many more protections for users.

Privacy

In Android Q, privacy has been a central focus, from strengthening protections in the platform to designing new features with privacy in mind. It’s more important than ever to give users control — and transparency — over how information is collected and used by apps, and by our phones.

Building on our work in previous releases, Android Q includes extensive changes across the platform to improve privacy and give users control — from improved system UI to stricter permissions to restrictions on what data apps can use.

For example, Android Q gives users more control over when apps can get location. Apps still ask the user for permission, but now in Android Q the user has greater choice over when to allow access to location — such as only while the app is in use, all the time, or never. Read the developer guide for details on how to adapt your app for the new location controls.

Outside of location, we also introduced the Scoped Storage feature to give users control over files and prevent apps from accessing sensitive user or app data. Your feedback has helped us refine this feature, and we recently announced several changes to make it easier to support. These are now available in Beta 3.

Another important change is restricting app launches from the background, which prevents apps from unexpectedly jumping into the foreground and taking over focus. In Beta 3 we’re transitioning from toast warnings to actually blocking these launches.

To prevent tracking we’re limiting access to non-resettable device identifiers, including device IMEI, serial number, and similar identifiers. Read the best practices to choose the right identifiers for your use case. We’re also randomizing MAC address when your device is connected to different Wi-Fi networks and gating connectivity APIs behind the location permission. We’re bringing these changes to you early, so you can have as much time as possible to prepare your apps.

Security

To keep users secure, we’ve extended our BiometricPrompt authentication framework to support biometrics at a system level. We’re extending support for passive authentication methods such as face, and we’ve added implicit and explicit authentication flows. In the explicit flow, the user must explicitly confirm the transaction. The new implicit flow is designed for a lighter-weight alternative for transactions with passive authentication, and there’s no need for users to explicitly confirm.

Android Q also adds support for TLS 1.3, a major revision to the TLS standard that includes performance benefits and enhanced security. Our benchmarks indicate that secure connections can be established as much as 40% faster with TLS 1.3 compared to TLS 1.2. TLS 1.3 is enabled by default for all TLS connections made through Android’s TLS stack, called Conscrypt, regardless of target API level. See the docs for details.

Project Mainline

Today we also announced Project Mainline, a new approach to keeping Android users secure and their devices up-to-date with important code changes, direct from Google Play. With Project Mainline, we’re now able to update specific internal components within the OS itself, without requiring a full system update from your device manufacturer. This means we can help keep the OS code on devices fresher, drive a new level of consistency, and bring the latest AOSP code to users faster — and for a longer period of time.

We plan to update Project Mainline modules in much the same way as app updates are delivered today — downloading the latest versions from Google Play in the background and loading them the next time the phone starts up. The source code for the modules will continue to live in the Android Open Source Project, and updates will be fully open-sourced as they are released. Also, because they’re open source, they’ll include improvements and bug fixes contributed by our many partners and developer community worldwide.

For users, the benefits are huge, since their devices will always be running the latest versions of the modules, including the latest updates for security, privacy, and consistency. For device makers, carriers, and enterprises, the benefits are also huge, since they can optimize and secure key parts of the OS without the cost of a full system update.

For app and game developers, we expect Project Mainline to help drive consistency of platform implementation in key areas across devices, over time bringing greater uniformity that will reduce development and testing costs and help to make sure your apps work as expected. All devices running Android Q or later will be able to get Project Mainline, and we’re working closely with our partners to make sure their devices are ready.

Innovation and new experiences

Android is shaping the leading edge of innovation. With our ecosystem partners, we’re enabling new experiences through a combination of hardware and software advances.

Foldables

This year, display technology will take a big leap with foldable devices coming to the Android ecosystem from several top device makers. When folded these devices work like a phone, then you unfold a beautiful tablet-sized screen.

We’ve optimized Android Q to ensure that screen continuity is seamless in these transitions, and apps and games can pick up right where they left off. For multitasking, we’ve made some changes to onResume and onPause to support multi-resume and notify your app when it has focus. We’ve also changed how the resizeableActivity manifest attribute works, to help you manage how your app is displayed on large screens.

Our partners have already started showing their innovative foldable devices, with more to come. You can get started building and testing today with our foldables emulator in canary release of Android Studio 3.5.

5G networks

5G networks are the next evolution of wireless technology — providing consistently faster speeds and lower latency. For developers, 5G can unlock new kinds of experiences in your apps and supercharge existing ones.

Android Q adds platform support for 5G and extends existing APIs to help you transform your apps for 5G. You can use connectivity APIs to detect if the device has a high bandwidth connection and check whether the connection is metered. With these your apps and games can tailor rich, immersive experiences to users over 5G.

With Android’s open ecosystem and range of partners, we expect the Android ecosystem to scale to support 5G quickly. This year, over a dozen Android device makers are launching 5G-ready devices, and more than 20 carriers will launch 5G networks around the world, with some already broad-scale.

Live Caption

On top of hardware innovation, we’re continuing to see Android’s AI transforming the OS itself to make it smarter and easier to use, for a wider range of people. A great example is Live Caption, a new feature in Android Q that automatically captions media playing on your phone.

Many people watch videos with captions on — the captions help them keep up, even when on the go or in a crowded place. But for 466 million Deaf and Hard of Hearing people around the world, captions are more than a convenience — they make content accessible. We worked with the Deaf community to develop Live Caption.

Live Caption brings real-time captions to media on your phone – videos, podcasts, and audio messages, across any app—even stuff you record yourself. Best of all, it doesn’t even require a network connection — everything happens on the device, thanks to a breakthrough in speech recognition that we made earlier this year. The live speech models run right on the phone, and no audio stream ever leaves your device.

For developers, Live Caption expands the audience for your apps and games by making digital media more accessible with a single tap. Live Caption will be available later this year.

Suggested actions in notifications

In Android Pie we introduced smart replies for notifications that let users engage with your apps direct from notifications. We provided the APIs to attach replies and actions, but you needed to build those on your own.

Now in Android Q we want to make smart replies available to all apps right now, without you needing to do anything. Starting in Beta 3, we’re enabling system-provided smart replies and actions that are inserted directly into notifications by default.

You can still supply your own replies and actions if you want — such as if you are using ML Kit or other ML frameworks. Just opt out of the system-provided replies or actions on a per-notification basis using setAllowGeneratedReplies() and setAllowSystemGeneratedContextualActions().

Android Q suggestions are powered by an on-device ML service built into the platform — the same service that backs our text classifier entity recognition service. We’ve built it with user privacy in mind, and the ML processing happens completely on the device, not on a backend server.

Because suggested actions are based on the TextClassifier service, they can take advantage of new capabilities we’ve added in Android Q, such as language detection. You can also use TextClassifier APIs directly to generate system-provided notifications and actions, and you can mix those with your own replies and actions as needed.

Dark theme

Many users prefer apps that offer a UI with a dark theme they can switch to when light is low, to reduce eye strain and save battery. Users have also asked for a simple way to enable dark theme everywhere across their devices. Dark theme has been a popular request for a while, and in Android Q, it’s finally here.

Starting in Android Q Beta 3, users can activate a new system-wide dark theme by going to Settings > Display, using the new Quick Settings tile, or turning on Battery Saver. This changes the system UI to dark, and enables the dark theme of apps that support it. Apps can build their own dark themes, or they can opt-in to a new Force Dark feature that lets the OS create a dark version of their existing theme. All you have to do is opt-in by setting android:forceDarkAllowed="true" in your app’s current theme.

You may also want to take complete control over your app’s dark styling, which is why we’ve also been hard at work improving AppCompat’s DayNight feature. By using DayNight, apps can offer a dark theme to all of their users, regardless of what version of Android they’re using on their devices. For more information, see here.

Gestural navigation

Many of the latest Android devices feature beautiful edge-to-edge screens, and users want to take advantage of every bit of them. In Android Q we’re introducing a new fully gestural navigation mode that eliminates the navigation bar area and allows apps and games to use the full screen to deliver their content. It retains the familiar Back, Home, and recents navigation through edge swipes rather than visible buttons.

Users can switch to gestures in Settings > System > Gestures. There are currently two gestures: Swiping up from the bottom of the screen takes the user to the Home screen, holding brings up Recents. Swiping from the screen’s left or right edge triggers the Back action.

To blend seamlessly with gestural navigation, apps should go edge-to-edge, drawing behind the navigation bar to create an immersive experience. To implement this, apps should use the setSystemUiVisibility() API to be laid out fullscreen, and then handle WindowInsets as appropriate to ensure that important pieces of UI are not obscured. More information is here.

Digital wellbeing

Digital wellbeing is another theme of our work on Android — we want to give users the visibility and tools to find balance with the way they use their phones. Last year we launched Digital Wellbeing with Dashboards, App Timers, Flip to Shush, and Wind Down mode. These tools are really helping. App timers helped users stick to their goals over 90% of the time, and users of Wind Down had a 27% drop in nightly usage.

This year we’re continuing to expand our features to help people find balance with digital devices, adding Focus Mode and Family Link.

Focus Mode

Focus Mode is designed for all those times you’re working or studying, and you want to to focus to get something done. With focus mode, you can pick the apps that you think might distract you and silence them – for example, pausing email and the News while leaving maps and text message apps active. You can then use Quick Tiles to turn on Focus Mode any time you want to focus. Under the covers, these apps will be paused – until you come out of Focus Mode! Focus Mode is coming to Android 9 Pie and Android Q devices this Fall.

Family Link

Family Link is a new set of controls to help parents. Starting in Android Q, Family Link will be built right into the Settings on the device. When you set up a new device for your child, Family Link will help you connect it to you. You’ll be able to set daily screen time limits, see the apps where your child is spending time, review any new apps your child wants to install, and even set a device bedtime so your child can disconnect and get to sleep. And now in Android Q you can also set time limits on specific apps… as well as give your kids Bonus Time if you want them to have just 5 more minutes at bedtime. Family Link is coming to Android P and Q devices this Fall. Make sure to check out the other great wellbeing apps in the recent Google Play awards.

Family link lets parents set device bedtime and even give bonus minutes.

Android Foundations

We’re continuing to extend the foundations of Android with more capabilities to help you build new experiences for your users — here are just a few.

Improved peer-to-peer and internet connectivity

In Android Q we’ve refactored the Wi-Fi stack to improve privacy and performance, and also to improve common use-cases like managing IoT devices and suggesting internet connections — without requiring the location permission. The network connection APIs make it easier to manage IoT devices over local Wi-Fi, for peer-to-peer functions like configuring, downloading, or printing. The network suggestion APIs let apps surface preferred Wi-Fi networks to the user for internet connectivity.

Wi-Fi performance modes

In Android Q apps can now request adaptive Wi-Fi by enabling high performance and low latency modes. These will be of great benefit where low latency is important to the user experience, such as real-time gaming, active voice calls, and similar use-cases. The platform works with the device firmware to meet the requirement with the lowest power consumption. To use the new performance modes, call WifiManager.WifiLock.createWifiLock().

Full support for Wi-Fi RTT accurate indoor positioning

In Android 9 Pie we introduced RTT APIs for indoor positioning to accurately measure distance to nearby Wi-Fi Access Points (APs) that support the IEEE 802.11mc protocol, based on measuring the round-trip time of Wi-Fi packets. Now in Android Q, we’ve completed our implementation of the 802.11mc standard, adding an API to obtain location information of each AP being ranged, configured by their owner during installation.

Audio playback capture

You saw how Live Caption can take audio from any app and instantly turn it into on-screen captions. It’s a seamless experience that shows how powerful it can be for one app to share its audio stream with another. In Android Q, any app that plays audio can let other apps capture its audio stream using a new API. In addition to enabling captioning and subtitles, the API lets you support popular use-cases like live-streaming games, all without latency impact on the source app or game.

We’ve designed this new capability with privacy and copyright protection in mind, so the ability for an app to capture another app’s audio is constrained, giving apps full control over whether their audio streams can be captured. Read more here.

Dynamic depth for photos

Apps can now request a Dynamic Depth image which consists of a JPEG, XMP metadata related to depth related elements, and a depth and confidence map embedded in the same file on devices that advertise support. Requesting a JPEG + Dynamic Depth image makes it possible for you to offer specialized blurs and bokeh options in your app. You can even use the data to create 3D images or support AR photography use-cases. Dynamic Depth is an open format for the ecosystem — the latest version of the spec is here. We’re working with our device-maker partners to make it available across devices running Android Q and later.



With Dynamic Depth image you can offer specialized blurs and bokeh options in your app

New audio and video codecs

Android Q adds support for the open source video codec AV1, which allows media providers to stream high quality video content to Android devices using less bandwidth. In addition, Android Q supports audio encoding using Opus – a codec optimized for speech and music streaming, and HDR10+ for high dynamic range video on devices that support it. The MediaCodecInfo API introduces an easier way to determine the video rendering capabilities of an Android device. For any given codec, you can obtain a list of supported sizes and frame rates.

Vulkan 1.1 and ANGLE

We’re continuing to expand the impact of Vulkan on Android, our implementation of the low-overhead, cross-platform API for high-performance 3D graphics. We’re working together with our device manufacturer partners to make Vulkan 1.1 a requirement on all 64-bit devices running Android Q and higher, and a recommendation for all 32-bit devices. For game and graphics developers using OpenGL, we’re also working towards a standard, updateable OpenGL driver for all devices built on Vulkan. In Android Q we’re adding experimental support for ANGLE on top of Vulkan on Android devices. See the docs for details.

Neural Networks API 1.2

In NNAPI 1.2 we’ve added 60 new ops including ARGMAX, ARGMIN, quantized LSTM, alongside a range of performance optimisations. This lays the foundation for accelerating a much greater range of models — such as those for object detection and image segmentation. We are working with hardware vendors and popular machine learning frameworks such as TensorFlow to optimize and roll out support for NNAPI 1.2.

Thermal API

When devices get too warm, they may throttle the CPU and/or GPU, and this can affect apps and games in unexpected ways. Now in Android Q, apps and games can use a thermal API to monitor changes on the device and take action to help restore normal temperature. For example, streaming apps can reduce resolution/bit rate or network traffic, a camera app could disable flash or intensive image enhancement, or a game could reduce frame rate or polygon tesselation. Read more here.

ART optimizations

Android Q introduces several improvements to the ART runtime to help your apps start faster, consume less memory, and run smoother — without requiring any work from you. To help with initial app startup, Google Play is now delivering cloud-based profiles along with APKs. These are anonymized, aggregate ART profiles that let ART pre-compile parts of your app even before it’s run. Cloud-based profiles benefit all apps and they’re already available to devices running Android P and higher.

We’re also adding Generational Garbage Collection to ART’s Concurrent Copying (CC) Garbage Collector. Generational CC collects young-generation objects separately, incurring much lower cost as compared to full-heap GC. It makes garbage collection more efficient in terms of time and CPU, reduces jank, and helps apps run better on lower-end devices.

More Android Q Beta devices, more Treble momentum than ever

In 2017 we launched Project Treble as part of Android Oreo, with a goal of accelerating OS updates. Treble provides a consistent, testable interface between Android and the underlying device code from device makers and silicon manufacturers, which makes porting a new OS version much simpler and more modular.

In 2018 we worked closely with our partners to bring the first OS updates to their Treble devices. The result: last year at Google I/O we had 8 devices from 7 partners joining our Android P Beta program, together with our Pixel and Pixel 2 devices. Fast forward to today — we’re seeing updates to Android Pie accelerating strongly, with 2.5 times the footprint compared to Android Oreo’s at the same time last year.

This year with Android Q we’re seeing even more momentum, and we have 23 devices from 13 top global device makers releasing Android Q Beta 3 — including all Pixel devices. We’re also providing Q Beta 3 Generic System Images (GSI), a testing environment for other supported Treble devices. All of these offer the same behaviors, APIs, and features — giving you an incredible variety of devices for testing your apps, and more ways for you to get an early look at Android Q.

You can see the full list of supported partner and Pixel devices at android.com/beta. Try Android Q Beta on your favorite device today and let us know your feedback!

Explore the new features and APIs

When you’re ready, dive into Android Q and learn about the new features and APIs you can use in your apps. Take a look at the API diff report for an overview of what’s changed in Beta 3, and see the Android Q Beta API reference for details. Visit the Android Q Beta developer site for more resources, including release notes and how to report issues.

To build with Android Q, download the Android Q Beta SDK and tools into Android Studio 3.3 or higher, and follow these instructions to configure your environment. If you want the latest fixes for Android Q related changes, we recommend you use Android Studio 3.5 or higher.

How do I get Beta 3?

It’s easy! Just enroll any Pixel device here to get the update over-the-air. If you’re already enrolled, you’ll receive the update soon, and, no action is needed on your part. Downloadable system images are also available.

You can also get Beta 3 on any of the other devices participating in the Android Q Beta program, from some of our top device maker partners. You can see the full list of supported partner and Pixel devices at android.com/beta. For each device you’ll find specs and links to the manufacturer’s dedicated site for downloads, support, and to report issues.

For even broader testing on supported devices, you can also get Android GSI images, and if you don’t have a device you can test on the Android Emulator — just download the latest emulator system images via the SDK Manager in Android Studio.

As always, your input is critical, so please let us know what you think. You can use our hotlists for filing platform issues (including privacy and behavior changes), app compatibility issues, and third-party SDK issues. You’ve shared great feedback with us so far and we’re working to integrate as much of it as possible in the next Beta release.

We’re looking forward to seeing your apps on Android Q!

Visual Studio Code Remote Development may change everything

  • May 23, 2019

DevContainer using RustOK, that’s a little clickbaity but it’s surely impressed the heck out of me. You can read more about VS Code Remote Development (at the time of this writing, available in the VS Code Insiders builds) but here’s a little on my first experience with it.

The Remote Development extensions require Visual Studio Code Insiders.

Visual Studio Code Remote Development allows you to use a container, remote machine, or the Windows Subsystem for Linux (WSL) as a full-featured development environment. It effectively splits VS Code in half and runs the client part on your machine and the “VS Code Server” basically anywhere else. The Remote Development extension pack includes three extensions. See the following articles to get started with each of them:

  • Remote – SSH – Connect to any location by opening folders on a remote machine/VM using SSH.
  • Remote – Containers – Work with a sandboxed toolchain or container-based application inside (or mounted into) a container.
  • Remote – WSL – Get a Linux-powered development experience in the Windows Subsystem for Linux.

Lemme give a concrete example. Let’s say I want to do some work in any of these languages, except I don’t have ANY of these languages/SDKS/tools on my machine.

Aside: You might, at this point, have already decided that I’m overreacting and this post is nonsense. Here’s the thing though when it comes to remote development. Hang in there.

On the Windows side, lots of folks creating Windows VMs in someone’s cloud and then they RDP (Remote Desktop) into that machine and push pixels around, letting the VM do all the work while you remote the screen. On the Linux side, lots of folks create Linux VMs or containers and then SSH into them with their favorite terminal, run vim and tmux or whatever, and then they push text around, letting the VM do all the work while you remote the screen. In both these scenarios you’re not really client/server, you’re terminal/server or thin client/server. VS Code is a thick client with clean, clear interfaces to language services that have location transparency.

I type some code, maybe an object instance, then intellisense is invoked with a press of “.” – who does that work? Where does that list come from? If you’re running code locally AND in the container, then you need to make sure both sides are in sync, same SDKs, etc. It’s challenging.

OK, I don’t have the Rust language or toolkit on my machine.

I’ll clone this repository:

git clone https://github.com/Microsoft/vscode-remote-try-rust

Then I’ll run Code, the Insiders version:

C:github> git clone https://github.com/Microsoft/vscode-remote-try-rust   

Cloning into 'vscode-remote-try-rust'...
Unpacking objects: 100% (38/38), done.
C:github> cd .vscode-remote-try-rust
C:githubvscode-remote-try-rust [main =]> code-insiders .

Then VS Code says, hey, this is a Dev Container, want me to open it?

There’s a devcontainer.json file that has a list of extensions that the project needs. And it will install those VS Extensions inside a Development Docker Container and then access them remotely. This isn’t a list of extensions that your LOCAL system needs – you don’t want to sully your system with 100 extensions. You want to have just those extensions that you need for the project you’re working on it. Compartmentalization. You could do development and never install anything on your local machine, but you’re finding a sweet spot that doesn’t involved pushing text or pixels around.

Reopen in Container

Now look at this screenshot and absorb. It’s setting up a dockerfile, sure, with the development tools you want to use and then it runs docker exec and brings in the VS Code Server!

image

Check out the Extensions section of VS Code, and check out the lower left corner. That green status bar shows that we’re in a client/server situation. The extensions specific to Rust are installed in the Dev Container and we are using them from VS Code.

Extensions

When I’m typing and working on my code in this way (by the way it took just minutes to get started) I’ve got a full experience with Intellisense, Debugging, etc.

Intellisense from a container running Rust and VS Code Remote Containers

Here I am doing a live debug session of a Rust app with zero setup other than VS Code Insiders, the Remote Extensions, and Docker (which I already had).

Debugging in VS Code a Rust app within a DevContainer

As I mentioned, you can run within WSL, Containers, or over SSH. It’s early days but it’s extraordinarily clean. I’m really looking forward to seeing how far and effortless this style of development can go. There’s so much less yak shaving! It effectively removes the whole setup part of your coding experience and you get right to it.


Sponsor: Manage GitHub Pull Requests right from the IDE with the latest JetBrains Rider. An integrated performance profiler on Windows comes to the rescue as well.


© 2018 Scott Hanselman. All rights reserved.

How to Decorate your Home

  • May 22, 2019

Some people have a strong gut feeling for home decor. They exactly know what to buy and where to place it. They can also visualize the colors and they’re never afraid of change.

Then, there are those people who always have their interior designer’s phone number on speed dial. They want to try a lot of things but don’t have the eye for designs. If you are one of those people who always prefer to search Pinterest before making any major renovations, I feel you. I also fall in the second category.

However, home decor has never been a headache for me. I love to experiment. I always research thoroughly before trying anything new and it works well for me. After meeting many interior designers and surfing on the internet, I have compiled some secrets and easy decorating tips.

Read on to find out what those tips are.

Vibrant Walls

home decorating tips

When we enter our home sweet home, the first thing we notice is the color. The walls cover a significant part of our house. Whether we want to add energy to a dull room or calm a hectic one, we just need to change the color combination.

Use the 50/150 Rule. For the perfect color, mix one batch of paint 50% lighter than the base color. Keep the other one 150% darker than the base color and create a tint.

If the budget does not allow to paint the whole house, change the color of just one wall. We can decorate the window wall or backside of your bed instead.

Fancy Floors

easy home decorating

No matter how hard our day is, our little nest welcomes us with open arms. As soon as we put our first step on our favorite rug, we suddenly feel comfortable even after a long hectic day.

We must not forget our roofs and floors while thinking about renovations. Nowadays, floor paintings are trending.

Any pastel color, light blue, light green, light pink or yellow may suit the floors. It depends on the color shade we have applied to our walls. We can also buy fancy carpets to make our floors look beautiful.

Rocking Roofs

easy home decorating tip

We often take our roofs for granted while decorating the house. We forget that even ceilings can change the entire look.

It is essential to renovate our roofs with the help of p.o.p, designer cuttings, and hanging lamps. We can also decorate our roofs with some carved woods or beadboard ceiling.

I have seen hanging hammock in a few houses and I find it super cool. There are many ‘how to’ videos available on Youtube. Apart from that, we can try different colors to make our walls look gorgeous. Bright colors always win the race.

Comfy Corners

easy home decorate tips

Don’t forget to free a small corner for some ‘me time’ at the time of renovation. An intersection near the window is preferable. Put a cozy chair, stool, lamp, and a lot of books in that corner.

Have some light or transparent curtains on the window and enjoy the sunshine every day. This corner can lighten up the entire day and can fill us with all the positive vibes. We can sit there to write our daily journal or listen to our favorite tracks!

We can also hang a wind-chime or dream catcher to decorate the free space.

Kempt Kitchen

easy home decorate tip

The kitchen might be an expensive room to renovate. Sometimes, we may feel that a complete renovation is not necessary or practical.

If so, there are many ideas of kitchen makeovers we can consider. We can deep clean the walls, refresh the paint, add lights, replace cabinets or sink, and add new accessories.

To change places of furniture can also make a huge difference. We can also grow some green plants in the kitchen by placing ceramic pots or vases.

Blissful Bedrooms

easy home decorating tips bedroom

We spend 1/3rd of our life in the bedroom. Thus, it is imperative to design it carefully to make it a relaxing place.

Comfort should be our priority when it comes to bedrooms. Start decorating the room with the best bed, good-quality mattress, and comfortable pillows.

Our choice of color is also crucial. Colors reflect our personality. Bright colors like yellow or orange can expand our thinking while light colors like blue or white can calm us down.

So, choose accordingly. Apart from the furniture and colors, bedroom lightings also play a vital role. It helps us to set the right mood and encourage us to start our days positively.

Radiant Rooms

easy home decorating tips radiant rooms

Whether it is your living room, dining room or guest room, each has different characteristics. So, each room should be decorated with attractive colors, matching curtains, and creative art pieces.

Refurbish the old furniture to get a new look with the least budget. If there is no issue with the closed beds, try having a canopy or bunker bed in the kids’ room. Fairy lights and neon lamps are also famous for instant makeovers. I have placed a bench attached to the window which I use to store excess luggage and as a sitting area.

Home is our little world. We can do whatever we want to do according to our convenience.

Beaming Bathrooms

easy home decorating tips bathroom

Last but not the least, let’s discuss bathroom renovations.

It is important to have a spacious and bright bathroom. We generally feel tired of walking into our outdated bathrooms every day. We always dream for a change. So, what we should do is to change all the tiles first.

Replace the old tiles with new ones and change the lighting. Start using white bulbs and avoid the yellow lights if possible. Nowadays, hanging pendants and light bars are stealing the heart of many.

We can also buy some unique bathroom accessories and place them near the bathtub. We can replace our old cloth hangers with a ladder or creative hooks to make it more stylish.

See Also: 5 Features to Achieve a Peaceful Home

I believe that our home communicates with us every day. Each wall, floor, door or window know us in and out. We feel happy and safe in our home sweet home. So, it is crucial to keep it pretty.

Home decorations are always subjective. The ideas may differ from person to person. These are my set of plans. I hope you can relate to them and use some of these ideas for decent decorations. Have a happy, super positive, and cozy life in your small world.

The post How to Decorate your Home appeared first on Dumb Little Man.