Wednesday, 4 October 2017

How to Enable or Disable the Spell Checker on Android

So everyone knows that their preferred keyboard on Android has autocorrect, but did you know Android also has built-in spell check? If you’re really looking to double down on your spelling—or perhaps get rid of autocorrect altogether—this is a setting you’ll probably want to enable.

How to Change Your Country on Amazon So You Can Buy Different Kindle Books

Book rights, and especially eBook rights, can be messy. UK publishers can’t just start selling books in the US, and vice versa. For most modern books by big authors, you’ll see the hardback and eBook versions being published at pretty much the same time around the world. For older books that were released before eBooks were a big deal, and for smaller authors with publishing deals, however, you’ll regularly find that the eBook version is available in some countries and not others.

Challenges and the way forward in the journey of digitization

Being Digital is all about taking the customer to the blissed state of esteem experience.

How to Type Out Voice Commands for Siri

If it’s too loud around you and you can’t adequately use Siri to quickly look up something real quick, there’s now an alternative to shouting out voice commands—you can now type them out. Here’s how to do it on your iPhone, iPad, and Mac.

Geek Trivia: Many Xbox 360 Owners, Desperate To Fix The “Red Ring Of Death” Failure, Resorted To Wrapping Them In?

Think you know the answer? Click through to see if you're right!

Tuesday, 3 October 2017

How Safari’s New Intelligent Tracking Prevention Works

It’s one of the most discussed new features in High Sierra: Safari’s new Intelligent Tracking Prevention. Advertisers are upset about it, claiming it’s “bad for the ad-supported online content and services consumers love.” Apple is undeterred by the rhetoric. But what does the feature actually do?

How to Upgrade Your Smarthome Connections in Google Home

Google is constantly updating its Google Home and smarthome lineup. Thanks to one recent update, you’ll need to unlink and relink some of your smarthome services in order to keep using them and take advantage of new features. Here’s how to do that.

Not All Ethernet Cables Are Equal: You Can Get Faster LAN Speeds By Upgrading

Wired connections, which use Ethernet cables, are generally faster and have lower latency than Wi-Fi connections. But, just as modern Wi-Fi hardware has advanced, modern Ethernet cables are capable of communicating at faster speeds.

How to Disable GeForce Experience’s Reward Advertisements

NVIDIA’s GeForce Experience software now displays notification advertisements for free-to-play games. If you don’t want notification popups for games you’ve never played appearing when you’re just trying to use your computer, here’s how to disable them.

How to Automatically Enable Wi-Fi When You’re Near a Trusted Network in Android Oreo

You disable Wi-Fi on your Android phone to improve battery life, which is great! But how many times have you forgotten to enable it again, ultimately eating up some of your mobile data when you could’ve been on Wi-Fi? With Oreo, that fear is no more.

How to Stop Your iPhone Dinging Twice When You Get Text Messages

By default, when you get an SMS or iMessage, your iPhone will make a sound once when you receive it, and then again two minutes later in case you missed it. If you read the message after the first ding, it doesn’t ding again.

How to Run Android on Windows With AMIDuOS

There are an increasing number of ways to try out Android applications on your Windows desktop or laptop. But of the various methods I’ve sampled, none combined complete access to Android’s basic functions with ease-of-access quite like American Megatrends’ AMIDuOS.

How to Re-Caulk Areas in Your Bathroom or Kitchen

Caulk is vital in areas like the bathroom and kitchen where water has the opportunity to creep into all sorts of crevices and cause problems. If the caulk in your house is looking a bit aged, here’s how to re-caulk it and give it a fresh, new look.

Geek Trivia: After Community Uproar, Mojang Changed The Food You Feed Minecraft Parrots From?

Think you know the answer? Click through to see if you're right!

Monday, 2 October 2017

What Is the powerd Process, and Why Is It Running on My Mac?

You’re browsing Activity Monitor on your Mac when something catches your eye: powerd. What is that, and should you be worried?

Share a standard Pipeline across multiple projects with Shared Libraries

This is a guest post by Philip Stroh, Software Architect at TimoCom.

When building multiple microservices - e.g. with Spring Boot - the integration and delivery pipelines of your services will most likely be very similar. Surely, you don’t want to copy-and-paste Pipeline code from one Jenkinsfile to another if you develop a new service or if there are adaptions in your delivery process. Instead you would like to define something like a pipeline "template" that can be applied easily to all of your services.

The requirement for a common pipeline that can be used in multiple projects does not only emerge in microservice architectures. It’s valid for all areas where applications are built on a similar technology stack or deployed in a standardized way (e.g. pre-packages as containers).

In this blog post I’d like to outline the possibility to create such a pipeline "template" using Jenkins Shared Libraries. If you’re not yet familiar with Shared Libraries I’d recommend having a look at the documentation.

The following code shows a (simplified) integration and delivery Pipeline for a Spring Boot application in declarative syntax.

JenkinsFile
pipeline {
    agent any
    environment {
        branch = 'master'
        scmUrl = 'ssh://git@myScmServer.com/repos/myRepo.git'
        serverPort = '8080'
        developmentServer = 'dev-myproject.mycompany.com'
        stagingServer = 'staging-myproject.mycompany.com'
        productionServer = 'production-myproject.mycompany.com'
    }
    stages {
        stage('checkout git') {
            steps {
                git branch: branch, credentialsId: 'GitCredentials', url: scmUrl
            }
        }

        stage('build') {
            steps {
                sh 'mvn clean package -DskipTests=true'
            }
        }

        stage ('test') {
            steps {
                parallel (
                    "unit tests": { sh 'mvn test' },
                    "integration tests": { sh 'mvn integration-test' }
                )
            }
        }

        stage('deploy development'){
            steps {
                deploy(developmentServer, serverPort)
            }
        }

        stage('deploy staging'){
            steps {
                deploy(stagingServer, serverPort)
            }
        }

        stage('deploy production'){
            steps {
                deploy(productionServer, serverPort)
            }
        }
    }
    post {
        failure {
            mail to: 'team@example.com', subject: 'Pipeline failed', body: "${env.BUILD_URL}"
        }
    }
}

This Pipeline builds the application, runs unit as well as integration tests and deploys the application to several environments. It uses a global variable "deploy" that is provided within a Shared Library. The deploy method copies the JAR-File to a remote server and starts the application. Through the handy REST endpoints of Spring Boot Actuator a previous version of the application is stopped beforehand. Afterwards the deployment is verified via the health status monitor of the application.

vars/deploy.groovy
def call(def server, def port) {
    httpRequest httpMode: 'POST', url: "http://${server}:${port}/shutdown", validResponseCodes: '200,408'
    sshagent(['RemoteCredentials']) {
        sh "scp target/*.jar root@${server}:/opt/jenkins-demo.jar"
        sh "ssh root@${server} nohup java -Dserver.port=${port} -jar /opt/jenkins-demo.jar &"
    }
    retry (3) {
        sleep 5
        httpRequest url:"http://${server}:${port}/health", validResponseCodes: '200', validResponseContent: '"status":"UP"'
    }
}

The common approach to reuse pipeline code is to put methods like "deploy" into a Shared Library. If we now start developing the next application of the same fashion we can use this method for deployments as well. But often there are even more similarities within projects of one company. E.g. applications are built, tested and deployed in the same way into the same environments (development, staging and production). In this case it is possible to define the whole Pipeline as a global variable within a Shared Library. The next code snippet defines a Pipeline "template" for all of our Spring Boot applications.

vars/myDeliveryPipeline.groovy
def call(Map pipelineParams) {

    pipeline {
        agent any
        stages {
            stage('checkout git') {
                steps {
                    git branch: pipelineParams.branch, credentialsId: 'GitCredentials', url: pipelineParams.scmUrl
                }
            }

            stage('build') {
                steps {
                    sh 'mvn clean package -DskipTests=true'
                }
            }

            stage ('test') {
                steps {
                    parallel (
                        "unit tests": { sh 'mvn test' },
                        "integration tests": { sh 'mvn integration-test' }
                    )
                }
            }

            stage('deploy developmentServer'){
                steps {
                    deploy(pipelineParams.developmentServer, pipelineParams.serverPort)
                }
            }

            stage('deploy staging'){
                steps {
                    deploy(pipelineParams.stagingServer, pipelineParams.serverPort)
                }
            }

            stage('deploy production'){
                steps {
                    deploy(pipelineParams.productionServer, pipelineParams.serverPort)
                }
            }
        }
        post {
            failure {
                mail to: pipelineParams.email, subject: 'Pipeline failed', body: "${env.BUILD_URL}"
            }
        }
    }
}

Now we can setup the Pipeline of one of our applications with the following method call:

Jenkinsfile
myDeliveryPipeline(branch: 'master', scmUrl: 'ssh://git@myScmServer.com/repos/myRepo.git',
                   email: 'team@example.com', serverPort: '8080',
                   developmentServer: 'dev-myproject.mycompany.com',
                   stagingServer: 'staging-myproject.mycompany.com',
                   productionServer: 'production-myproject.mycompany.com')

The Shared library documentation mentions the ability to encapsulate similarities between several Pipelines with a global variable. It shows how we can enhance our template approach and build a higher-level DSL step: vars/myDeliveryPipeline.groovy

vars/myDeliveryPipeline.groovy
def call(body) {
    // evaluate the body block, and collect configuration into the object
    def pipelineParams= [:]
    body.resolveStrategy = Closure.DELEGATE_FIRST
    body.delegate = pipelineParams
    body()

    pipeline {
        // our complete declarative pipeline can go in here
        ...
    }
}

Now we can even use our own DSL-step to set up the integration and deployment Pipeline of our project:

Jenkinsfile
myDeliveryPipeline {
    branch = 'master'
    scmUrl = 'ssh://git@myScmServer.com/repos/myRepo.git'
    email = 'team@example.com'
    serverPort = '8080'
    developmentServer = 'dev-myproject.mycompany.com'
    stagingServer = 'staging-myproject.mycompany.com'
    productionServer = 'production-myproject.mycompany.com'
}

The blog post showed how a common Pipeline template can be developed using the Shared Library functionality in Jenkins. The approach allows to create a standard Pipeline that can be reused by applications that are built in a similar way.

It works for Declarative and Scripted Pipelines as well. For declarative pipelines the ability to define a Pipeline block in a Shared Library is official supported since version 1.2 (see the recent blog post on Declarative Pipeline 1.2).

How Neutral Density Filters Work and How to Use Them For Better Photography

Taking good photographs isn’t just about framing your subject and learning composition. Learning how to control how much light enters your camera and for how long can help you take photos that elude the average photographer. Neutral density filters are a powerful tool towards that end. Here’s what they are and how to use them.

The Only Safe Way to Update Your Hardware Drivers on Windows

Want to update your computer’s hardware drivers? Get your driver updates from Windows Update or your device manufacturer’s website. Here’s how.

How to Log In to a Windows Desktop Without a Keyboard

Have you ever had your keyboard break down on you, or your computer simply refuses to accept its input? It’s especially frustrating if this happens while the computer is off, since you can’t input your password to get access to Windows. Thankfully, Microsoft has included a way to access your data (and hopefully fix your problem) using only a mouse or a touch screen.

The Cheapest Ways to Stream NBA Basketball (Without Cable)

I love NBA basketball. Every year, I get really excited around the beginning of September because I know tip-off is approaching. This year, I also had to figure out how I’m going to watch the Bulls (lose almost every game) with a combination of streaming packages. That’s fun. And slightly depressing.

Why Can’t I Listen to Radio If My Phone Has an FM Receiver In It?

FCC Commissioner Ajit Pai just publicly called on Apple to activate the FM receiver chips found in iPhones for public safety reasons. Many Android phones also contain dormant FM chips. But, if your phone has an FM receiver, why can’t you already listen to the radio on it?

Geek Trivia: The Precursor To The Bright Yellow On-Screen “First Down” Line In Football Was A Tracker Used In?

Think you know the answer? Click through to see if you're right!

What is really going on behind Surat's high-tech, labour-intensive diamond industry?

The diamond market is deserted. Young people are now moving into the textile industry. In the meantime, the world’s luxury seekers keep Surat’s diamondmakers busy.

How Philips is transforming into a health tech trailblazer

Philips' transformation from being a trusted electronics brand into a healthcare services company is not an aberration, reckon branding experts.

Designing chips for the world from India

Semiconductor chip design has moved to India to a significant degree. And some innovative solutions have been developed by domestic startups for aircrafts, mobile phones, and in the internet-of-things space

7 reasons why you should not invest in bitcoins, cryptocurrencies

After the big crash, cryptocurrency prices are slowly starting to stabilise. Should you use this crash as an opportunity to buy into the market?

How to keep your money safe if you want to invest in cryptocurrencies

People who want to experiment with cryptocurrencies should keep their initial investments very low, say around 2-3% of the investment corpus.

Why Indian govt's big push for electric cars is making auto industry nervous

The electric technology is still in the works, charging stations are missing and price is still a hurdle. But “bulldozed” by the govt, Motown is still bracing for an electric rush.

Sunday, 1 October 2017

The Best File Extraction and Compression Tool for Windows

If you’re a Windows user, you probably need to install a tool for creating and extracting archive files. Windows only features built in support for ZIP files, but third-party tools add support for other common types of archives like RAR and 7z. They also offer built-in encryption features, allowing you to securely protect archives you create with a passphrase.

Geek Trivia: Canada And Which Of These U.S. States Have Very Similar Population Sizes?

Think you know the answer? Click through to see if you're right!