Why we built BeamWriter

I give a lot of presentations. Before BeamWriter, involving the audience in impromptu polls, sharing additional information or getting questions from people online – or without having to pass a microphone around – could be anything from a hassle, to expensive to not possible.

BeamWriter was built to address this – make it super easy to involve the audience when giving a presentation or exhibiting at a trade show.

StageWithBWQuestions
BeamWriter in action at the Telenor Top Management gathering in 2016. Questions from the audience are projected on the screen on the left.

Once installed on your iPhone or iPad, creating an account and starting beaming takes a few minutes at most.

BeamWriter screen with list of Beams
Your ‘Beams’. Icons allow you to project on a big screen, edit, clear, delete or delegate Beams. By tapping a beam or a Folder such as ‘Deep Learning’, the service is broadcast and visible to your audience.

Your audience don’t have to log in – they pick up your Beam automatically when the app is running.

BeamWriter picked up a Poll service
Telenor Research are beaming a vote (poll) service which has been picked up by our phone.

I now find that enriching my presentations and engaging my audience is easy enough that I don’t need an event team to support. I don’t need a bespoke polling solution or text-messaging solution for questions, and sharing a link to a copy of my presentation or collecting the email addresses of the audience, is feasible even when alone at a trade show.

Download 'How To' guide (69 downloads)

Check the BeamWriter Page for more!

Machine Learning at the edge – Training Neural Networks on the phone

 

 

Neural Network Training on handwritten characters
Training a neural network to recognise handwritten digits using SNNetwork.swift

You may not consider training your machine learning model on a mobile phone a very likely or viable approach. After all, a phone is a pretty limited computer, both in memory and processing capacity.

For some applications, where the size of say – a neural network – is limited, it could however, be extremely useful. Incremental improvements to a model that is specific to the individual user, could be made on the fly without incurring network overhead or the latency or cost from centralised processing. (The alternative would be to upload the data to the cloud, do the training there and re-download the trained model.)

To test this out we have implemented a classic neural network as a Swift class – SNNetwork.swift and powered it by our Matrix library (see this post). We have packaged SNNetwork with two other classes you will need – SMatrix.swift and MLGenerics.swift in a ‘try-it’ application; NNTester.

Please feel free to download and unzip NNTester. (53 downloads)

 

NNTester runs in Xcode on your Mac. It uses example data from MNIST for character recognition.

MNIST

Each character is a 20 x 20 pixel matrix, unrolled into a 400 element vector where each pixel’s grayscale value is a Double. When you check out startTraining() in the MasterViewController class in NNTester, you will see that the neural network is created with a 400 (rather than 784 as in the illustration above) node input layer and a 10 node output layer.

Once trained, the neural network will take a 400 element input vector and produce a 10 element output, where the element with the highest value between 0 and 1 is interpreted as having the highest probability of being the input digit.

So if for instance, a handwritten digit is input as a 400 element pixel vector and the output vector is [0.01, 0.2, 0.05, 0.01, 0.005, 0.7, 0.003, 0.008, 0.004, 0.01], the element with the highest probability is the 6th, and the classifier would conclude that the input vector corresponds to a 6. Running a trained network in ‘feed-forward’ mode like this is done with a simple function call. If snnetwork is an instance of SNNetwork, then snnetwork.h(inputVector x : [Double]) -> [Double] will give you the ouput vector or ‘hypothesis’ given the x input vector.

Finally – don’t be confused by the fact that NNTester is a Mac application. By including SNNetwork.swift, SMatrix.swift and MLGenerics.swift in your iOS projects, you can start training or using pre-trained neural networks on the phone. SNNetwork contains code to save trained networks and read them in again, so you can also choose to train on the desktop and deploy the trained network to the phone.

The software is free for you to use as you please – we have released it under the GNU Lesser public license. If you want support from us – we are happy to provide that on commercial terms. Or if you would like to tell us how you have used the code, we would love to hear from you.  Get in touch on contact@societas.mobi.

Happy Coding!

Bjørn Taale

BeamWriter at the Telenor Top Management Gathering 2016

BeamWriter was used to share links, allow participants to request copies of presentations and send in questions to sessions.

stagewithBWIntro
The participants are asked to send in questions using BeamWriter
controlRoomWithiPad
The Event Team beamed a “Chat” service using an iPad. Participants questions were moderated by “accepting” or “rejecting” them before they became visible in the browser on mac to the left in the picture. The screen from this mac was then put up on the big screen.
StageWithBWQuestions
Questions are visible on the left screen, and addressed by the Panel. As an alternative to displaying the questions on the big screen, the debate leader could have carried the beaming iPad or iPhone, or simply had the webpage open on a device.

Get BeamWriter for iOSGet BeamWriter for Android Download 'How To' guide (69 downloads)

BeamWriter with new ‘Ask Beam’ and improved Web access

Screenshots of the Ask service in action
Left: The Beamer is beaming an Ask service. The questions come in from the audience to the ‘Unanswered’ list . By tapping a question in any of the lists, it is blown up as depicted on the right, for easy reading and sorting.

With ‘hot off the press’ version 2.2, BeamWriter adds a question-answer service to its suite of engagement tools.

‘Ask’ lets you receive questions from the audience and manage these in an easy-to-use interface. Tap a question for easy reading and sorting.

As for other services, you can let the audience access ‘Ask’ by enabling a Web Code. A ‘Beamee’ who is unable to pick up the beam – because he is in a remote location or because his device doesn’t support Bluetooth Low Energy – can input the Code at www.beamwriter.com to access the service.

webAsk2
Left: The Beamee enters a web code at www.beamwriter.com and is redirected to the service as depicted on the right.