Sep 07 2017
The first thing you need to know about our newest Mojo is that his cat's name is Galadriel, co-ruler and Lady of Lothlorien. We're tempted to leave it at that, but he's also got a pretty interesting background.
After getting his degree in Biology from Cal Poly, San Luis Obispo, Jordan worked as a researcher at Boston Children's Hospital. Along the way, he discovered he preferred crafting software tools to simplify his work than actually performing research tasks. Jordan then worked towards a CS degree through Oregon State University. When he isn't programming, Jordan enjoys gaming, climbing rocks, and hitting the slopes.
My first degree was in Molecular Biology and began my career as a researcher at Boston Children’s Hospital. After about a year of research, I decided that the result of my work felt too academic and I wanted to contribute to something more tangible.
Looking back on my experience, I remembered taking a class in Bioinformatics, where I was able to work with a group of computer science students to develop software to annotate genes in Drosophila biarmipes (fruit flies). The result was a product that could be reused to speed up the process of studying DNA segments from any species.
I decided I wanted to get experience writing software myself and found the post baccalaureate degree in Computer Science from Oregon State University. My first projects were basic reagent calculators to speed up experimental prep in the lab but I quickly came to realize that I needed another environment to practice my new skills.
I left Boston Children’s to work for a small company in Charlestown, MA, 1 Beyond, Inc., that specializes in video systems. I completed two major software based projects in my time a 1 Beyond:
Automate, an automated recording system that can be configured in a browser and controlled in one of 3 ways: in the browser, by a third party control device, or on a calendar schedule. A recording consists of setting the room state, “Scenario”, and starting a recording. A Scenario consists of routing video inputs to the control unit, setting presets in the room's cameras, and controlling the tracking state of the 1 Beyond Autotracker camera.
Collaborate, live video switching for conferences consisting of multiple participants in a room, such as a board room. Collaborate listens for signals from a microphone system (push-to-talk, voice activated, and ceiling array varieties) and moves an appropriate camera to the active speaker then sets the live video input to the conferencing codec to that cameras source.
I developed an application to interface with live video conferencing software, like Skype and Zoom, that provides live camera switching to the active participant. It relied on microphone input to discern who was talking in a room and moved the appropriate camera to the speaker before switching the live video input going to the conferencing system. This project threw me in the deep end to learn how to interface with a variety of hardware devices over serial and network connections. It became a profitable product for my previous employer.
The tangible result of my efforts, especially when it provides a useful service. In addition, I love the problem-solving challenge it poses.
What I like least is...
Segmentation Fault (Core Dumped)
I think an engineer needs problem-solving skills first, followed by, attention to detail and creativity.
A breadth of knowledge is great but engineering is a practical discipline and I believe the skills above best inform the application of that knowledge.
The ability to create something new and interesting and sharing it with the world.
Back to the Collaborate project. After the product's first release, 1 Beyond approached Shure Inc., a prominent manufacturer of microphone systems. I was tasked with adding their beam-forming ceiling array microphone to the list of supported mic systems. This presented a much different challenge than the table-top microphones I had dealt with before.
Because it was in the ceiling it had to be very sensitive and would pick up very slight noises in a room.
Many configurations consisted of multiple autonomous ceiling arrays in a room, as each one only had 8 individual channels of audio.
Because of their sensitivity, echo cancellation was necessary for use in live video conferencing. This meant I had to learn a bit more about audio to use the ceiling arrays.
I addressed the first problem by going back to my knowledge of biological systems. Attenuation is a common occurrence in biological systems and I decided I could use something similar to control extraneous noise in the room. The active presenter is controlled by a central queue and the first person in the queue is given the focus of the conference. When a "mic on signal comes from a ceiling array the microphone is added to a timer queue called Add Queue. Any subsequent off signal prior to timer elapses caused the removal of the microphone from the Add Queue. If the timer elapses the microphone is added to the primary queue and, if first, given the focus of the meeting. There is an analogous remove queue.
I used threading and mutual exclusion locks to solve the second problem. Each array is given its own thread for network communication with the controller. They are given first-come-first-served access to the appropriate queues by acquiring a key to the corresponding mutex.
The last problem was addressed differently depending on the situation. Each array had its own echo reduction channel, to which far end audio could be directed for cancellation from the automix channel. If there was only one array in the conference you could simply direct the audio to its echo reduction. If there were 2 or more ceiling arrays you would send the far end audio to their echo reduction as before but this would present another issue. They ceiling arrays would pick up the echoes from participants assigned to another array. This made it necessary to bring in another piece of hardware that provided an automix function. The automix channels of all ceiling arrays would be sent to this mixer, which would provide a second level of automixing. During a conference, when Collaborate received a mic-on instruction, it would check whether or not this ceiling array was active in the second level of automixing before moving the microphone to the add queue. In this way, extraneous noise from the far end and from echoes in the room would be handled.
I’ve really only worked on solo projects up until now, with small exceptions in school. I am excited to work as a part of a team of engineers as I believe my engineering skills were beginning to plateau at my previous job.
I am excited to have people to discuss project requirements with to flesh out problem areas in a project. I'm also excited to receive feedback from others on the code I produce. My career development has lacked peer review and I think I will quickly learn about inadequacies in my development process that I can refine.
Those that match my Google search.
A satellite phone to contact rescuers.
Alternatively, a Nintendo Switch loaded with Zelda: Breath of the Wild.
I think it’s likely artificial intelligence. I don’t think Cylons are around the corner but job displacement will likely be an issue in many fields, especially transportation. It is not only an interesting technical issue but also an ethical one.
Gliding down a mountain on fresh powder with friends.