Bokeh is a python module designed for plotting and graphing data in a web browser. I played around with this using Jupyter notebooks, Bokeh server scripts, and embedded in a Flask app.

I was able to generate a plot with a Bitcoin price ticker, which seems like a nice accomplishment for a starter project. I added some buttons to choose alternate cryptocurrencies to chart. It was a good experience, read on for the details.

Read More

Current “NISQ” quantum computers often produce errors when measurements are taken or gating operations are applied, and it is very costly in every sense of the term to deal with them. The ‘N’ in NISQ refers to “noisy; a reference to the fact that they are not capable of error correction.

High error rates are costly because you cannot copy a qubit during critical steps in the computational process. High error rates are also costly because error correction involves either redundancy in systems where there is a premium on qubits to begin with, or sending and receiving signals to and from the control systems into and out of the quantum processor hardware. Keep in mind also that these computations are often run thousands of times to give decisive results since those results are probabilistic in nature, and high error rates tend to increase the number of times these are run.

Read More

The makers of Autopsy and The Sleuth Kit forensic software are offering their Autopsy training course for a month for all those of us who are staying at home due to Covid-19. The course is from Basis Technology and the offer ends on May 15th. Go here for details: https://autopsy.com/support/training/covid-19-free-autopsy-training/

Autopsy is a general purpose toolkit for digital forensic investigations. It provides a GUI for their Sleth Kit software and other software, and is extensible via modules. The nice thing about Autopsy is the ability to automate the process of churning through and organizing large amounts of data like images from laptops and smartphones.

Read More

I recently recorded a podcast on this topic, and provided the obvious answer: because they will be able to do things that conventional computers can never do. I offered huge numbers to convey the potential, and analogies to illustrate the key differences, since the math required to really understand quantum computing is not compatible with audio podcasts.

The podcast, called What is quantum computing and why should we care? was published on HPR.

My strategy was to use an analogy I got from Talia Gershon from IBM. She talks about qubits by having the audience imagine spinning coins. Normal bits in conventional computers are just coins that are laying on a surface with either heads or tails facing up, that we can consider to be like 0 or 1. A quantum bit, or qubit, is a spinning coin. It’s not exactly a heads or a tails, but some combination of both of those possibilities.

The entry level explanation of quantum computing is that two spooky properties of quantum mechanics are used to do things current computers cannot. I mention those two quantum effects by name: superposition and entanglement, and proceed to use the spinning coins on a tabletop analogy to explain them.

Read More

Welcome back for another look at the basics of quantum computer programming. We’re going to continue to use IBM’s excellent programming framework called Qiskit, and Jupyter notebooks to demonstrate with the usual disclaimer that you can code this without the notebook, and the same ideas can be realized in any quantum programming language. If you need a refresher on the basic math of quantum programming, we covered it in the previous two posts, although there is much more to it. If you want to review the entanglement program we wrote, first ran on a local simulator and then ran on a real quantum computer, feel free to review those as well, or maybe just review how to get started uing IBM Q.

The issue for this post is what can a quantum computer do that a conventional computer cannot? If Richard Feynman was the father of quantum computing, then David Deutsch was probably the uncle. Deutsch described a problem that takes multiple steps to solve on a classical computer and can be solved in a single step on a quantum computer. In this post we’ll describe the original version of the problem and show the quantum computer solution with hopefully a solid explanation.

Read More

Mimblewimble is the funny sounding and unconventional blockchain protocol that emphasizes scalability, privacy and fungeability. It is full of Harry Potter lore, cryptography and bright new ideas for cryptocurrency.

Due to the way mimblewimble is constructed, it’s best suited for comparisons to Bitcoin. If you need a quick refresher, consider giving my Intro to Bitcoin podcast a listen. Also, if you’re interested in learning more about the mimblewimble protocol you might want to listen to my Intro to Mimblewimble podcast on HPR as well.

Read More

In the previous post we started to explain how to understand quantum computing from a computer science perspective, even without knowing the underlying quantum mechanics. We did so by explaining that you can consider everything in terms of the math, and we began the process of explaining what happened in the quantum entanglement program we introduced in earlier posts.

It’s a useful technique to keep explaining things in a little more depth as we go down the rabbit hole. You may have noticed that I avoided qubits that are in a state of superposition in the last post, and chose to show the CNOT gate instead of the Hadamard gate. In fact I used |0⟩ and  |1⟩ which are special cases where the qubits will collapse down to 0 and 1 with 100% probability. Qubits that have been put into a state of superposition will have a different probability distribution.

Read More

I won’t pretend to understand the physics of quantum mechanics, it baffles me to be honest. I only know the words that the physics people use to describe what happens. My limited understanding of quantum computing comes purely from a computer science perspective, so that’s all I can try to share.

A quantum bit, or qubit, is conceptually just the particle-wave duality of matter at very small scales. That is to say that a particle does not exist as a tiny billiard ball at a specific place, but rather has a probabilistic existence as a waveform. That’s the case until it is interacted with, otherwise known as being observed, which causes the quantum information to be lost and the probabilistic set of possible values to collapse into a single value.

I’m not going to try to explain why that is, or what is really happening here, since it’s beyond my understanding. Instead, I want to look at just the basic math that we need to understand how the qubits are affected by our gate operations. So let’s stick to the math, and explain exactly what happened in our quantum entanglement program used in our previous posts.

Read More

We ran our quantum enatnglement program on a simulator in the previous post, so it’s pretty obvious what we need to do now. Qiskit is made for interacting with IBM’s quantum resources, so this is going to be easy. Let’s get started!

Qiskit has four main parts: Aer, Aqua, Terra, and Ignis. It is fashionable to name your quantum computing libraries and modules after the elemental forces it seems – others in the industry do it as well. The official qiskit documentation is the place to read up on this, but for our purposes let’s just point out that Aer has the simulator that we used in the previous post and handles management of the backends for us.

Read More

Qiskit is IBM’s open source, quantum computing environment for Python. We can use Qiskit to write programs to run in our local environment and run them on a simulator. We can also run them on IBM’s quantum computing resources via the IBM Q project. This currently includes six 5-qubit machines and one 14-qubit machine.

First we’ll need to install Qiskit, then create an account at the IBM Q site so that we can also run our programs on their quantum computers. You can skip this if you have a quantum computer of your own to use instead. We covered getting started with IBM Q Experience in the previous post. We used the quantum circuit builder to create two quantum registers and apply gates, then measure the result.

Read More

IBM has quantum computers online and available for the general public to use for free. We’re going to look at interacting with them through the online interface, then we’ll dive in and take a look at writing and running programs using their Python framework called Qiskit. There are other great frameworks out there to use, and we’ll get to those, but this is a great place to start.

The first thing to do is to make yourself an account at the IBM Q site so that we can use their quantum computers. Usually people are eager to start playing around with these mysterious devices, but when you get a chance, explore the detailed documentation and learn what they have to offer.

We’re basically programming against a quantum computer at the assembly language level or just higher, in fact you might notice a reference to ‘qasm’ which stands for quantum assembly.

Read More

Scrapy is a scrappy little web scraper you can use to scrape web content using CSS or XPath selectors and even Regex. Using CSS selectors is probably the easiest for people who are familiar with the web, but the hardcore user can even mix-n-match.

We can open a shell, a familiar technique to Python programmers, in order to test our scraping before unleashing it on the world.
$ scrapy shell https://mikeward.net
This opens a shell and the HTTP request and response are now available to us, as you can see below.

Read More