Today, I want to recommend a series of Youtube videos called Crash-Course Computerscience produced in cooperation with PBS. Over the course of around 40 videos you learn about the basics of computerscience and as a physicist I had a few true “heureka”-moments while watching. Also check out other crash-course series by Hank Green and collegues, like Crash Course Psychology or Crash Course World History
Category: Technology
An older piece from Steven Levy on how Apple incorporates machine learning and AI into its products. Very interesting read.
At the moment I am working on a series of videos intended to raise awareness among students for common language mistakes within scientific writing. This campaign mainly focusses on so-called ‚Denglisch‘, which is a neologism comprised of ‚Deutsch‘ – German and ‚Englisch‘ – English. However I am not going to delve into the details of the subject matter here, instead I want to give you a glimpse of what to think about when you are designing informational media
Know your Audience
The first and most important step is to lean back and think about your audience. Who are you designing for, what is their relationship with your product? What are you trying to achieve for them? And how are they going to use the thing you do?
Conceptualize
Once you have found out about your audience, try to make a concept. Write down ideas and storyboards. Try to narrate a story using specific examples. Do some brainstorming with collegues, talk about how you are trying to achieve certain effects and discuss stylistic choices.
Do lean Development
Last but not least: Produce. But don’t shy away from producing something while everything else is not perfect. You will learn the most about the media you are creating and about the audience you are targeting by doing lean research and development. What I mean by that is, that you should start producing once producing is possible. Try to use as few resources as possible and make prototypes of your product. Shoot with a smartphone instead of an expensive camera, use cheap effects, do rudimentary lighting, use a cheap built in microphone, but just do it. Producing will help you understand the production toolkit you need and will teach you a lot about what works and what doesn’t work. Maybe you have to change how you produce, maybe you have to change the whole concept in order to achieve what you were shooting for. The worst thing you could have done is to go for the highest production value and then find out that your concept is trash.
Furthermore this way enables you to get your product out the consumers, you can learn about whether there is an actual need you are fulfilling. You can also begin to estimate what size the audience is that you are producing for and how much enthusiasm you are generating. From here you can start refining your concept, your message, your production. Now is the time to buy a more expensive microphone, to produce your idea with higher production value.
I’ve been recently to a conference at RWTH Aachen and I truly enjoyed serving as a student volunteer there. As a bonus I was invited to visit the labs of the Human Computer Interaction Group of Prof. Borchers as well as their FabLab and I was super-impressed.
Fab Lab is short for fabrication laboratory and is basically a room full of computer controlled tools with the aim to make basically everything you can imagine. There are tools to 3D print plastics, to laser-cut wood and much more. It enables rapid prototyping and production of tools for various disciplines. In fact it’s even open to the public. You have to sign a sheet of paper, make your plans public and create something.
Why is this great?
Basically its a superb tool to do lean research and development. A huge part of research is finding creative new ways to measure things or find out about things or use methods that are not mass-fabricated and are very specific to the task. Being able to prototype solutions before manufacture the real deal in a short amount of time is a breakthrough. Imagine there is a part for a machine you are not sure about how it should look like – prototype it! Imagine you want to test usability of a product – prototype it! Imagine you want to repair something as fast as possible – produce it! Imagine you need a new solution and nobody sells it to you – invent it!
Why do we need more of them?
Basically thats what scientists have been doing all along, but these techniques are much faster than anything else before them. The thing is it’s not really about perfection. In the end you probably will have to order parts from a mechanical workshop or professionally mass produce, but using FabLabs can speed up the whole process of finding solutions. Because it enables a lean iterative way of research that was not really possible before.
Reading this, you probably think of a mechanical engineering student who 3D prints gears. However I firmly believe that this technology is beneficial to all kinds of research and development. Think of social science students who want to investigate the influence of relief-maps on visually-impaired people. Think of psychology students who are eager to know more about how we interact with certain things. Think of your dad who desperately wants a new handle for the garage door or a small startup who wants to test an idea with a small group of people.
The possibilities are manyfold and I believe that establishing new Fab Labs at every university or city is a great way to benefit everyone.
This guide is inspired by the tremendous walkthrough on TechPolyMath. It walks through building and installing the TensorFlow binary from source on a macOS system. Mostly I am publishing this also as a reference for myself but others might find it useful
The following assumptions were made, using a 2016 MacBook Pro:
- macOS High Sierra
- Intel Core i5 Processor
- TensorFlow 1.4.1
- Python 3.6.2
- JDK 8u151
- Bazel 0.5.4
Note that the resulting binary we build will be optimized for CPU support only.
Installing Prerequisites on macOS
Install Java Development Kit
At the time of publication, Bazel required the Java Development Kit 8.0. If it is not already installed follow these steps.
- Download the DMG image that containers the JDK installer from Oracle’s Java SE Development Kit 8 Downloads page.
- The file should be named something like
jdk-8u151-macosx-x64.dmg
- Mount the DMG image, double-click the installer, and follow the guided prompts.
Install Dependencies with Anaconda
It is strongly recommended that you use a virtualenv or Conda environment to isolate the packages and installation of TensorFlow from source. This enables you to maintain multiple combinations of package versions for various projects or experiments.
Since I use Anaconda, I created a new environment by executing the command conda create -n tensorflow python=3.6
Install Bazel
Instead of using the popular Homebrew System, I used anaconda. Basically I wanted to get by with as few tools as possible and since I am a Macports user I tried to avoid homebrew. You can refer to the Bazel documentation for alternatives.
- From a Terminal, change into your newly created environment
source activate tensorflow
- Use
anaconda search bazel
to get the right version from conda-forge - Install using
conda install --channel https://conda.anaconda.org/c3i_test2 bazel
- Confirm Bazel is installing by verifying the output of
bazel version
I ran into a weird bug, where tensorflow wouldn’t compile with the conda-forge version of bazel 0.8.1, so had to use the next best version available.
Install Python Dependencies
TensorFlow requires the following Python packages:
- six
- NumPy
- wheel
If these are not present on your machine or current environment execute the following to install:
git clone https://github.com/tensorflow/tensorflow
This will take a short while depending on your Internet connection bandwidth due to the repository’s size (~250 MB).
Most of the time you want install a release version rather than trunk. You can display the available releases and check out one using the following commands (example is TensorFlow release 1.4, since it is the newest release):
git checkout r1.4
Configure and Build the TensorFlow pip Package
Frank Hinek from TechPolyMath posted a script that is based on the work of Sasha Nikiforov and a Stackoverflow post with a few minor modifications to support Anaconda environments.
Clone the build_tf.sh script gist to the same directory containing the TensorFlow source:
chmod u+x build_tf.sh
Execute the script to configure and build the TensorFlow pip package using all of the CPU optimizations available for your CPU:
pip install /tmp/tensorflow_pkg/tensorflow-1.4.1-cp36-cp36m-macosx_10_7_x86_64.whl
Verify Installation
The last step is to confirm that TensorFlow is now installed and working as expected. Before proceeding be sure that you change to a directory other than the one that contains the TensorFlow source tree. We want to import the pip installed package and not the one in the source directory.
Launch the python
interactive shell and execute the following commands:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello)
If the system outputs the following, then TensorFlow is installed and working:
Hello, TensorFlow!
Uninstall everything you don’t need anymore
JDK8
Take a look at this nice page documenting how you get rid of all traces of Java by Oracle: Uninstall Java, Uninstall Java JDK
Conda Dependencies
conda uninstall openjdk
conda uninstall bazel
conda uninstall libcxx
conda uninstall libcxxabi
Tensorflow git Repository
sudo rm -rf tensorflow
And finally you’re done, have fun with your newly compiled and optimized tensorflow on your Macbook. As you will probably notice it’s somewhat faster now. Personally I wonder if MPI support would make any difference on the Macbook, so maybe I try that next.