Click here to Skip to main content
15,884,099 members
Articles / All Topics

A Coder Interview with Lewis Collins

Rate me:
Please Sign up or sign in to vote.
4.93/5 (5 votes)
5 Dec 2013CPOL5 min read 14.4K   2   1
Lewis Collins (Senior Software Consultant at Plantronics) discusses his background, project, interest, pet peeves, and just what you can do with a decent headset.

Who are you?

My name is Lewis Collins; I am based in Wiltshire in the South of England. I love computer technology and software and I still am in awe of it every day despite having worked in the industry now since graduating in 1998! I have a BSc (Hons) in Software Engineering Management from Bournemouth University and hold Chartered Engineer status with the British Computer Society.

What do you do?

I am a Senior Software Consultant at Plantronics. In this role I help develop tools and SDKs, working with different teams to support an ever widening set of user scenarios that our customers require. The scenarios cover areas such as Unified Communications, Call Centers, Enterprise and mobile applications.

I contribute to Innovation projects to create and test new device concepts that may lead to new applications, interaction styles and use cases. It is a very exciting time at Plantronics as we are allowing hackers early access to these concepts to try them out at hackathon events. The teams at these events have come up with some great ideas for both our existing and concept devices (check out some here)! I am involved in creating SDKs and motion-sensing demo apps to show the sensor features, including a head-controlled music mixer app and breakout game, and sometimes attend events to provide technical support.

Finally, I support developers through the Plantronics Developer Connection (PDC) and work with software vendors and technology partners to integrate their solutions with Plantronics devices and SDKs. As part of this I code sample apps and blog/forum content to show how our unique product features can be used, like SmartLock and Spokes EZ Demo .

What is your preferred development environment?

I have tried a lot of languages, platforms and environments, but my preferred today is Visual Studio – the newest I can get: 2013. And language: a nice high-level one: C# .NET. I just like that the .NET Framework has done so much of the hard work for me.

(C# .NET is actually reminiscent of the first Object-Oriented language I used and loved which was Borland Pascal 7.0 with Objects).

What was your first programming language?

HP BASIC – Copying out computer game listings on an HP-85 personal computer (the Ski Game)! (I was about 5).

What new tools, languages or frameworks interest you?

I am interested in developing mobile apps and I will be taking an Android course in January with a colleague.

I am also planning to learn a 3D physics engine to create some new 3D graphics demos!

What is one thing you think a new developer should know?

The devil is *always* in the details! (There’s no escaping that).

Also, to believe error messages!

Finally, if something worked before but doesn’t now, just comment out increasingly large swathes of code until it compiles/runs again (i.e. go back to first principals!) Then add bits back in again until you discover the problem.

(Sorry that was 3 things)!

What is your coding pet peeve?

My coding pet peeve is when developers over complicate code. I fight against this constantly by functionally decomposing to (what I think is) the right level, give functions and variables very obvious (long) names and adding comments!

I usually just think of headsets as something to listen to, or talk into. What am I missing by not programming for them?

As well as high-quality audio endpoints, Plantronics devices also offer features to control and interact with all sorts of applications involving voice, as well as providing sensor data to achieve some labor-saving user scenarios. Here is a list of ideas for how the Plantronics devices and Spokes software platform can be used:

  • Buttons on Plantronics headsets can be used to connect or disconnect calls and switch calls in a call queue.
  • Headset attached/detached: call agent ready/not ready for Call Centre ACD applications.
  • Button press to connect to a push-to-talk service.
  • Button press to start other voice recognition services.
  • Spokes call state information from around 13 popular enterprise softphone products plus caller id and programmatic call control of the mobile paired with your Plantronics product can enrich the UC experience in your app.
  • Sensor data from Plantronics devices can be used for gesture control of apps, or for tracking user’s interaction with a system:
    • Proximity: I approach my desk, I leave my desk – what user scenario could this trigger in your app?
    • Wearing sensor: I am wearing my headset, and am not wearing my headset – can this trigger a custom action or presence update in your app?
    • Wearable Concept 1 headset (see http://pltlabs.com/):
      • Head angles: track users’ head angles and gestures in real-time or build up a trend analysis over time.
      • Accelerometer: track user’s footstep count (pedometer), detect free-fall, detect multi-taps on the unit as an alternative user interface.

How can I get started doing it (What tools do I need, etc.)?

For Windows

Samples available in: C++, C#, JavaScript / Java / Other languages via Spokes REST/HTTP service or C# middleware app exposing WebSocket / Socket

Tools needed: Windows XP, Vista, 7, 8 (Desktop), 8.1 (Desktop), Visual Studio versions 2008/2010/2012/2013

Note: the SDK install comes with a device emulator, however people have had mixed mileage with this product, therefore I recommend developing with a real Plantronics device. You can choose any product from Section D. of the Spokes install notes .

To see which product supports which feature, check out this matrix (PDC membership required).

For Android

Sample available in: Java

  • Tools needed: Android SDK, ADT Plugin / Eclipse (optional).  
  • This blog post shows how to access a subset of headset events using the Plantronics XEVENT.

For Desktop Linux

Sample available in: Python

We don’t have an SDK for Desktop Linux, but we have this blog post describing how to intercept button events as USB HID messages (note: this will only expose call control, mute etc. not the full range of Plantronics sensor features):

Hackathon Wearable Concepts

Samples available (at hackathons) in: Objective-C (iOS SDK), C# (Windows SDK)

Plantronics "wearable concept" devices have been appearing at hackathons this fall 2013 (next event to be confirmed). Plantronics provides the devices to develop on and you can use the PC or iOS SDKs. Check out PLT Labs and watch for event announcements on PDC.

Other platforms

Watch for announcements on PDC.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer CodeProject Solutions
Canada Canada
The CodeProject team have been writing software, building communities, and hosting CodeProject.com for over 20 years. We are passionate about helping developers share knowledge, learn new skills, and connect. We believe everyone can code, and every contribution, no matter how small, helps.

The CodeProject team is currently focussing on CodeProject.AI Server, a stand-alone, self-hosted server that provides AI inferencing services on any platform for any language. Learn AI by jumping in the deep end with us: codeproject.com/AI.
This is a Organisation

4 members

Comments and Discussions

 
General'Also, to believe error messages! ' Pin
Brendan Costigan8-Dec-13 22:26
Brendan Costigan8-Dec-13 22:26 
That is so true.

How often I have looked at a message and said it can't be that and spent hours looking for something else. Finally I find the problem and it is what the error message said at the begining.
All round good guy.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.