Python script for requesting user input repeatedly

 Someone recently asked how to write a Python script that took user input into account and took some action based on the validity of the user input.  Here are some code snippets that I developed for a few different scenarios: 1) A game is being played and it has just ended.  How would you ask the user if they wanted to play again? game_running = True #assuming the game is running play_again = input("Play again? ")  #get user input while True: #restart game if answer is "y" or "Y"         if play_again == 'y' or play_again == "Y":             game_running = True             break         else: #print thank you message and exit the program             print("Thank you for playing!")             game_running = False             break Here if the user answers either "y" or "Y", they get to play the game again.  If they type anything else, they receive a thank you message and the game ends. 2) Create a while loop

Dis-aggregated hardware

This post focuses on dis-aggregated hardware follows my earlier post Open Source Networking: a hierarchical approach .  Hardware dis-aggregation is an important aspect of open networking.  Essentially, dis-aggregated hardware involves software being separated from the underlying hardware.  Similar to a PC or a server where you can boot with a Linux installer CD to Linux, you are able to boot dis-aggregated hardware with an Operating System (OS) installer and install an operating system on it.  Most commercial vendors bundle their hardware with software which means you cannot modify the software or change the OS that it comes loaded with.  Open, dis-aggregated hardware however does not have this restriction. Take for example, Ethernet switches which have two main components: A packet switching/processing ASIC chipset controller A CPU which hosts the software / firmware and the packet switching ASIC. Most commercial vendors bundle the software with their hardware whereas Ethern

Open Source Networking: a hierarchical approach

I have been extremely fortunate to be part of several network cloudification projects over the past 18-24 months.  It's been very exciting to see the changes that disaggregation and open source projects have been making to move an industry forward.  Here I capture some initial thoughts about open source networking. Note: while the on-the-job learning has been immense, I have supplemented this with some terrific courses from The Linux Foundation including LinuxFoundationX: LFS165x Introduction to Open Source Networking Technologies by Reza Toghraee. Networking has come a long way from the widespread use of rigid appliances to perform networking functions such as routing, firewalling, switching, and load balancing.  A key principle behind this transformation is disaggregation , i.e. the de-coupling of the software performing the networking functions with the hardware it is installed on.  The main driver of this transformation is the evolution of

Curious about 5G?

Are you curious about 5G but not sure what it's all about?  Here's a quick summary to bring you up to speed. A quick refresher about 1G through 4G before we get started: 1G refers to the first generation of wireless cellular technologies that brought us our very first cell phones. 2G was a significant improvement from 1G in the way the radio frequency spectrum was used enabling many more users per frequency band.  Importantly for consumers, 2G enabled digitally encrypted conversations and SMS text messages! 3G was a giant leap forward from 2G.  3G enabled consumers to get online using their cell phones. 4G pushed the limits further with improved speeds and increased applications for consumers including IP telephony, high def mobile TV and video conferencing.  So what does 5G promise?  5G promises to dramatically improve speed, latency and scale. It is expected to be 100X faster than 4G (you could download an HD movie in 1 second!). Its data volume capacity is exp

AI, ML, NN and DL: a visual explanation

There appears to be a lot of confusion between the terms Artificial Intelligence (AI), Machine Learning (ML), Neural Networks (NN) and Deep Learning (DL).  Based on research from various popular blogs and articles, here is my attempt at a simple visual explanation:

The Research Process

To answer interesting questions, you need data. You begin with an observation that you want to understand including anecdotal observations.  For example, a certain website layout attracts more visitors to our web page than a different website layout.  From your observations, you generate explanations or theories of those observations, from which you can make predictions or hypothesis.  To test your hypothesis or predictions, you need data. So you collect relevant data (and to do that you need to identify things that can be measured) and then you analyze those data.  The analysis of your data may support your theory or give you cause to modify the theory. As such, the processes of data collection and analysis and generating theories are intrinsically linked: theories lead to data collection / analysis and data collection / analysis informs theories.  The research process is summarized below: (adapted from Discovering Statistics using R by Andy Field et al)

Operationalize Trusted AI with IBM Watson OpenScale