I have trouble understanding how to use an \'expected conditions\' to check for the presence of an element. Given this documentation it is not clear at all how to use this.
The way expected conditions work is by defining a WebDriverWait. You create this with an instance of your WebDriver and a timeout. The WebDriverWait has an until() method which will take an expected condition and will wait until it has been met or until the timeout has passed. So instead of just EC.visibility_of_element_located((By.XPATH, '//*[@id="kernel_indicator_icon" and @title="Kernel Idle"]')) you should use:
WebDriverWait(yourdriver, timeout).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="kernel_indicator_icon" and @title="Kernel Idle"]')))
Edit
I should note that this doesn't return True or False. This will return the WebElement if it has been found and is visible. Otherwise it will raise a TimeOutException. Source