Category Archives: Technology

Noise Cancelling Microphone Rodeo

I’ve been telecommuting for nine months now. There have been a number of changes as I’ve physically separated from the great folks in my company’s office. But the hardest change has been trading out face-to-face conversations for video conferencing. Although it’s never been easier to schedule and join video calls with our existing browsers, phones, built-in cameras and teleconferencing equipment, it’s still no match for being there. There is so much to communicate and perceive that can only be done with the full fidelity of unimpeded senses: micro expressions, vocal timbre, outside-the-camera-frame body language, posture and gestures, knowing looks and eye contact or lack of eye contact, physical presence, proximity and touch and conversation timing and cadence. Even with the best systems so much of this is just lost! In addition, artificial constructs impede natural communication with so many meetings starting with technical difficulties, bad connections, video and sound checks, issues around muting (or not muting) background noises and then there’s latency! It really does requires intentional effort to make sure that remote meeting participants can hear and be heard during a fast-paced conversations, debates and brainstorming. Ugh. Now there are ways to mitigate these problems and I’ll focus on just two. After all, this is an equipment rodeo and I need room to talk about that!

Video Conference Manners

I’ll start with this because with just a few things you can dramatically increase the quality of video conferences. Good protocol applies to whoever is conducting the meeting, whether in the conference room with others, or remote. 

For starters, not every participant can always see all of the other participants. So take a moment at the beginning of a video conference to make sure you all know everyone on the call. Acknowledge and do introductions just like you would if you were in person. Video conferences can feel impersonal if not anonymous so do what you can to keep it personal. 

Second, take a beat every so often to make sure that remote participants understand what is being said and have an opportunity to pipe in. You may not be seeing the normal nonverbal communication that would clue you into their confusion or need to interject. Generally people are a little too polite on calls and we should give even the meekest a seat at the table, virtual as it may be.

Know who’s on the call, give them time to speak and remember that it all sounds much worse on the other end of the wire.

Lastly, think about audio throughout the call. Are there multiple conversations happening? How many microphones are there? Is anyone not able to speak for lack of being heard? Technology has come a long way, but the audio fidelity in video conferences is nowhere near what it is in real life! The human ears are remarkably adept at filtering noise and recognizing sounds. With just your own head’s stereo-on-a-swivel your audio quality will always be better than those on the other end of the wire. Conference microphones are designed to pick up sound efficiently and make everyone sound close, so if you can’t imagine what a room full of people sounds like coming through a single tinny speaker, take time to join a busy meeting and experience it yourself. It will change the way you feel about over-talking, side conversations and natural pauses in the conversation.

Noise-cancelling Microphones

Even with good meeting protocol, having a bad mic can be a meeting killer. Background noise can betray your location or peel back the illusion that your home can be an effective office. Much is said about noise cancelling headphones but it can be difficult to find a noise-cancelling microphone! Don’t assume that your laptop or your webcam’s mic will do a good job. Most mics have one job: pick up sound indiscriminately—they don’t know that a lawnmower or a crying baby is unintentional sound. Thus began my search, when I realized that people could really hear noises from outside my home office. I did take some time to look at sound attenuation solutions for my office, but ultimately you really can’t/won’t change your walls or your door and sound definitely comes through those. So for me the solution had to come from the microphone.

Having some experience with audio engineering and the physics of sound, I was pretty excited about finding a mic solution that could cancel out unwanted noise. And I found some pretty good ones that did not disappoint. They all use “beam forming technology” which uses an array of microphones to identify the loudest sound and cancel out the sounds coming in on the other mics. If you want to see this in action, check out how the Amazon Echo uses this in a noise room and will light up the direction it hears you from. 

There was a point in my research when I had the epiphany that this problem has already been solved for people who take their calls on-the-go and don’t want the background noise of cars, wind or other people. You know, those people who wear bluetooth earpieces all day and you don’t know if they’re talking to you or someone on a call? I realized that to maximize noise cancellation and also get the benefit of proximity effect, I needed limit my search to microphone headsets. All of the headsets that I found with active noise cancellation were also bluetooth. I’m a tough buyer so I had a few key criteria, mostly around what it shouldn’t be, like looking like a headset from Apollo 11.

  • Excellent noise cancellation
  • Doesn’t require a lot of desk space
  • Doesn’t look like I’m doing anything “weird” to get good call quality
  • Doesn’t break the bank

So here they are, in order of my preference. If you’d like to see more, consider something from one of these lists. All of three are good. I feel like I was picking from the best available.

Plantronics Voyager 5200

My overall favorite. Although initially I didn’t like the design because it seemed bulky, my wife and daughter thought that it was the best looking and head-on, the profile is pretty small. What won me over was that in the testing this mic did the best job out cancelling out unwanted noise. The packaging was really nice, maybe too nice with its pull tab and magnetically-closing flap. The earpiece’s build is solid, but flexible and comfortable to wear for long periods. My favorite part is the ear tip that sits loosely in your ear rather than being shoved inside it. $80 on Amazon.

Sennheiser Presence

I really like Sennheiser. I have their e835 microphone and studio headphones and I can’t say enough good about this brand. So I really wanted this bluetooth headset to win. But it didn’t. The noise cancellation was good, but not as good as the Plantronics. I liked that it was small and it has this clever open/closed switch to turn it on and off. It was pretty light too and could actually just hang from being pressed inside my ear but it also came with an over-the-ear hanger as well. The packaging was simple and understated, which I also liked. $92 on Amazon.

Jabra Steel

This one was a surprise for me. I didn’t think much of it when I ordered it—it seemed too simple but the rugged design and manly-man packaging made me feel like wearing this would make my life better! I gave it a shot but overall the audio quality and noise cancellation weren’t as good as the others. If I kept this, I would only wear it when working in my shop or if I was digging a hole or something. It seemed pretty indestructible and I wouldn’t worry about carrying it in my pocket or dropping it. $60 on Amazon.

Testing Method

As I was most concerned about the mic quality, I tested each one with semi-scripted scenarios that included different kinds of background noise so I could compare them side-by-side as much as possible. I also evaluated ease-of-use, fit, price and packaging. I had some success with attempting to record all of them at once, but I ultimately gave up on that approach in favor of time. The recordings are available here for reference if you’re interested.

Reading Guide for Software Estimates

We’ve all been there. A lot. Before your next argument about a project estimate starts, take a minute to get everyone on the same page. Estimates are in important part of business AND estimates are often wrong. Yes, both of these truths can exist in the same universe!

My favorite insight from this set of articles was from John Cutler, “What job are you hiring estimation to do?” This perspective is perhaps the most valuable thing to keep in mind as your team works through your next estimate.

Investing in professional development

There’s some debate still about these 20x developers out there, complete geniuses that gave rise to the “rock-star” moniker that every company seemed to advertise for. I’ve remained a touch skeptical–not that there aren’t amazing software engineers, I know several — but I’m skeptical because we still don’t have a really good, accessible ways to measure human contribution to software. Lines of code, commits and story point velocity are readily available. Regressions, debugging and runtime numbers can be gathered as well, but we know that all this still doesn’t paint the whole picture. Also add in the real-world impact that other factors outside of development have on performance as well: good product management, architecture and QA among them, but also deadlines, poor communication and bad management. With all of these variables, it’s going to be pretty tough to accurate gauge order-of-magnitude differences between programmers in the real world. And frankly, I don’t know that you need to because in your gut you already know.

“The differences arising from individuals in any given study will drown out any differences you might want to attribute to a change in methodology.” — Steve McConnell

Back in 2011 Steve McConnell responded to criticisms of his 10x programmer claim thoughtfully by pointing out what he was seeing in the studies that have already been done, most not even focused on individual contribution. What he found was that “the differences arising from individuals in any given study will drown out any differences you might want to attribute to a change in methodology.” In short, it nearly totally depends on who’s on your team. However, over-emphasis on this leads to ignoring methodology and tooling altogether and focusing instead on individual development and hiring, which would be short-sighted. My point here is that on the balance, the latter should constitute a more significant portion of team building efforts.

The trouble arises when you commoditize development. While there are many software tasks that require no planning or design, there is much more that requires careful thought. As Yevgeniy Brikman said in support of the 10x developer, “It’s not about writing more code; it’s about writing the right code. You become a 10x programmer not by doing an order of magnitude more work, but by making better decisions an order of magnitude more often.”

“It’s not about writing more code; it’s about writing the right code. You become a 10x programmer not by doing an order of magnitude more work, but by making better decisions an order of magnitude more often.” — Yevgeniy Brikman

This is why I prefer the title software engineer. Writing good applications is really about a mind well-suited for building: choices, compromises and the collective wisdom of personal experience and industry best practices. Don’t commoditize development. It’s a highly-talented and highly-compensated profession. It’s not about nuturing a team, it’s about providing the humans working around you with the best possible resources to be successful, innovative and frankly, fun to be around. Yes, tools matter, and methodology matters–they matter a lot and they can have a big impact on the quality and speed of your work, but investing in these while sacrificing investment in the professional development of the individuals on the team… well… that’s as bad as it sounds.

 

Supporting Teaching Principles in K–12

GoReact aids in teaching and learning by facilitating top principles recommended by the Coalition for Psychology in Schools and Education.

The Coalition for Psychology in Schools and Education CPSE, working with the support of the American Psychological Association, identified and validated a set of principles from psychological science as the “most essential for facilitating successful classroom teaching and learning.”

While all of the principles are worthy of review and resonate with great teaching that we practice or have experienced, I wanted to highlight two that jump out as being especially easy when using GoReact to capture performance and provide appropriate feedback. Although these principles were directed at preK-12 specifically, many of our customers have shared their successes implementing these concepts when targeting young adult and adult students both inside and outside of formal education.

Continue reading Supporting Teaching Principles in K–12

Last Night I Missed Broadcast TV

Fresh off the Boat is a new show on ABC. It looked funny so I decided to watch it with my wife. But the Comcast app on my iPhone was having problems streaming the commercials. We watched the first two commercial breaks one and half times each. And for some reason the airplay streaming wasn’t working so I couldn’t watch it on my television. Off to a bad start, but undaunted, I downloaded the ABC app. After spending a minute proving that I had ABC through my Comcast account, the show streamed to my TV just fine. But each commercial break included a promo spot for the very show I was watching. Do they even know what show I’m watching? If they did, shouldn’t they stop advertising the show and just show it to me? When the baby woke up and we had to take a break for minute, we got to watch the commercial break again with another promo, before I could resume.

These apps are very careful to make sure that you see each commercial break at least once. And I wouldn’t mind so much if each commercial break didn’t show the same commercials. The exact same commercials. It’s like the apps are really commercial apps and not show apps. I just want to watch the show. Is there an app for that?

Maybe next week I’ll just watch the show live. Where is my cable box? Wait, isn’t ABC broadcast over the airwaves? In HD? I wonder if it will have better commercials…

Rapid Design Prototyping

I’ve enjoyed listening to the Startup Podcast over the past couple of weeks. It’s encouraging to listen in on seemingly normal guys as they put together a brand new company. In episode #13 they talk about rapid design prototyping with Google Venture’s design team. The team walks them through a design sprint to discover what their mobile app should be.

Fake it ’till you make it… or don’t.

In Gimlet’s case they should not build a mobile app, and I can’t tell you how many months of development time I’ve saved by NOT BUILDING an idea that we’ve had. In a relatively short amount of time you can design out a website or app and see if it’s going to really meet your needs or if it’s just a cute idea. The world is full of cute ideas – I don’t want those. I want a great idea that can work.

Save yourself some time, developer. Don’t build it until you’ve seen it.

 

Ownership

Screen Shot 2013-12-23 at 10.32.56 AM

I’m learning Python and needed a decent IDE to get my work done – I’m so spoiled! I installed PyCharm and have found it sufficient. Today, after several days of using it, I finally noticed that the tip of the day is blank! This is fine, I unchecked the box, but what I wanted to point out was the missed opportunity: the tip of the day is your chance to educate the user on helpful functionality, to increase product retention through brand loyalty. And what is done with this opportunity?

Tips not found. Make sure you installed PyCharm Community Edition correctly.

Nope I won’t. If you can’t take ownership of this problem (first take: don’t show the tip by default if it isn’t working) at least in the tone of the presentation, then I know enough able you to move forward.  Disable the feature and wait for the functionality to be proven in the future.  This is a very matter-of-fact approach that could be softened by different messaging:

Woah.  I can’t find any tips!  Click _here_ if you have some time to help diagnose what happened with your install.  In the meantime we’ve disabled this feature, you can get to it again from the Help menu.

See, I already want to buy whatever software would give me this kind of lip service!

Four Not-So-Secret Ingredients of Moab

Today I was reviewing the Moab documentation for an upcoming training and I ran across several feature gems that I thought were worth calling out. I’ll call them some of the “not-so-secret ingredients” that makes Moab great.

Scheduling with Partitions
Moab uses partitions to logical divide available resources in your environment. This allows you to separate geographically or by hardware configuration. For example, because a given job can only use resources within a single partition, you may want to create a partition to group nodes on the same local switch so that you can guarantee the fastest interprocess communication speed. Another cool benefit of partitions is the ability to set partition-specific policies, limits, priorities and scheduling algorithms, though this is rarely necessary.

Green Computing
In an effort to conserve power, Moab can automatically turn off idle nodes until they are needed again. This can be a significant savings if you’re not maxing your capacity all the time. To save on time, Moab can keep a pool of nodes on standby so that there is no delay when additional resources are needed. Moab comes with reference scripts for IPMI, but can be configured to work with iLO, DRAC and xCAT as well.

Fairshare
Using configured targets, you can use historical resource utilization as a factor for job priority. In essence, this would prevent a user with relatively infrequent workload to get buried in the backlog of jobs from much busier users. This kind of thinking extends to groups, accounts and other groupings as well. There are a number of configuration settings for fairshare that allow you to tweak performance to your needs, such as caps, evaluation timeframe, and consumption metrics.

Reservation Groups
You can associate multiple reservations through reservation groups. This allows each reservation to share the same variables. These variables can then be used in job triggers to automate tasks like email notification, script execution and internal Moab actions, such as creating another reservation. Of course, you can always override the inheritance by setting a variable locally on an individual reservation in the group.

How Adaptive Decides to Develop a New Feature of Moab

If you’re reading this wondering why we chose to do one feature over another, please note that you’re not the first (or the last) to shake your fist while shouting this question! We hope that all of our customers are this passionate about our software. I know I am with the products I use, so we expect nothing less!

Unfortunately for you though, we don’t often reveal much about the planned features on our product roadmap. What little we do reveal are those things that we are most confident about delivering. Frankly, we don’t show more because we don’t want to disappoint you! We have a very complex product with a lot of integrations and moving parts. Sometimes it can take a good while to create and test additional functionality. Oftentimes delivery is influenced by changes in the market, current technologies, and planetary alignment. We’d hate for any of our customers to become dramatically attached to a favorite promised feature, and then disappoint them by delivering a different, though equally valuable feature.

I admire many of the approaches taken by the 37Signals team and ran across this line from David Hansson about the dangers of over-promising,

“It’s better to turn customers away than to placate their instincts and lure them in with vague promises. It’s incredibly rare that a single feature will truly make or break your chance with a customer. If your software is a good enough fit, most people can make do without that one or two things that they’d like to see.”

I want to break down some of our process around how we choose which features to develop, but it’s very interesting to talk about why we choose certain features. I love a line I hear from Simon Sinek, “People don’t buy what you do they buy why you do it.” But this is a topic for another day. So here are the four steps we use to get the right features in the development pipeline: discovery, organization, prioritization, and timing.

Discovery

Determining the next Moab feature can be overwhelming and it often feels as though we’re looking for a good read while standing in the middle of the Library of Congress. But we relish the fact that we are not alone! We hear our customers loud and clear and know exactly which areas of the product they’d like to see improvements in. We are working on some ideas to improve the quality of feedback we’re getting on this channel. We also work together with our partners to discover and evaluate new synergies and approaches. We are constantly looking for emerging technologies and market opportunities that align with our corporate strategies. And we regularly reflect on our own failures and search for better solutions. There is no shortage of good ideas, and we try to collect them all.

Organization

In order to ensure that we deliver real value with each release, we group all of these ideas into initiatives that address end-to-end functionality and practical use cases. We understand from experience that cherry-picking our favorite little features from various areas isn’t viable over the long-term. We try to make sure that we can deliver well thought-out solutions through the features that we provide; something that we can be confident will have a positive impact on our customers and their ability to accomplish to their goals. Once we’ve organized each of the ideas into feature initiatives, we also evaluate iterative approaches that would allow us to iteratively plan for work that might ultimately take more than a single release.

Prioritization

We can’t do it all. We wish we could, and we try, but we really can’t! We know how much we can accomplish in a given amount of time, and we’re always on the lookout for techniques and processes that will improve our development velocity, but we know that it won’t be enough to get everything we all want. Through prioritization we can ensure that the most impactful features are delivered first. This is the phase where we have to argue for our favorites and sometimes let them go. Some of the factors that we consider are: time to implement, degree of innovation, how competitors approach the problem, number of affected customers, bang for the buck, and how long we’ve already been waiting.

Timing

We all know from our own personal experience that if we simply work off a priority list, we can miss opportunities to innovate and optimize. For example, I missed seeing the new movie Pacific Rim last week because I didn’t consider rescheduling a high-priority but time-insensitive appointment. By the way, I am not sure if I’m worse off now, so maybe this is a bad example. But as we work out the implementation details of each new feature and its components, we discover multiple opportunity paths that can all lead to “good” delivery outcomes. We take time to plan these out so that we can rest assured that our timing optimizes our efforts and make changes as needed.

Once the timing of each epic’s features is nailed down, we hand the execution off to our capable Engineering team and monitor the progress as we work towards the next release. We can talk more about the engineering process in yet another blog post, but hopefully this gives some insight into our approach on feature planning.

Cloudifying Your Datacenter

Whether VMware, HP’s Cloud Service Automation, xCAT or any of the other myriad provisioning solutions, there are so many progressive stages of private cloud. Although that term remains somewhat nebulous, the pieces are familiar:

1. Standardization and consolidation of hardware and infrastructure
2. Virtualization and automation (most of us are around here)
3. Self-service infrastructure (next step)
4. Service lifecycle management
5. Service brokering and hybrid environments

The barriers are also ever present, among them manpower, optimization, guaranteed SLA enforcement and accounting – each increasing the difficulty of making progress or really even getting a good understanding of the end-game for your private cloud. The best place to start your push to cloud is a strong focus on return on investment. Gathering an accurate understanding of current costs and demand is a significant first step, and from there a hope can build around the potential for cost savings. It is no stretch to claim between 10 and 100 times faster deployments, depending on your current setup! Our research has shown that our customers are spending 2-3 times more in manpower and hardware before moving to a cloud.

Another strong selling point for cloud and a potential for savings is the concept of a self-service portal. We’ve all dreamed of facilitating users, in a safe way, so that then can request and manage their own workload without requiring much IT team. Another bonus is the addition of chargeback concepts to help manage resources in an accountable manner. Workload placement and migration is another level of management that is expensive and time-consuming to handle manually. Even setting up the rule sets and auditing policies can be overwhelming.

So if you are focusing on a consolidation of hardware into a single datacenter, consolidating deployment efforts and processes, looking to increase your ROI on your infrastructure, decreasing IT staffing and computing investments or just wanting to add additional machines and VMs without staffing up, Adaptive Computing’s line of cloud solutions can help your success.

Self-service Portal
Using Moab’s service templates, actual service consumers can ask for what they need, when they need it. With chargeback you can govern accountability for resource uses, which will limit overuse and waste. Remember that a free cloud is a recipe for failure. Self service is what makes a your datacenter a cloud, and can facilitate 10-100x increases in deployment speed.

Continuous Optimization
Move from automation to orchestration. VM sprawl, just like server sprawl, can fill up your datacenter quickly! Do you want your VMs to be scattered across your datacenter for better performance, or would you like to consolidate so that you can take advantage of licensing constraints or VLANs. Don’t overlook the value of accurate initial placement with granular service allocation policies that can target by processors, memory, chipset, software licenses or other arbitrary metadata. Also, you can always reserve pockets of your datacenter for certain kinds of work, or work from certain users. Once those services are running, they can be locked down on that hypervisor to secure high availability and security. Now all this can be done manually, but let’s be honest, it’s a lot of work, and your ability to keep in sync with upcoming needs will be limited by staffing and the other fires and stuff your IT staff it doing. You don’t want to just add capacity like we have in the past. Now is the time to efficiently allocate what we already have with a variety of policies around placement, overcommit and allocation.

Integrating Moab in Your Cloud
Dip your toe, try this out. We know that you may want to keep one foot in the traditional IT infrastructure model, or even outsourced IaaS . We know that this perpetuates inconsistent development environments, disparate architectures and different management and security, so pick a single small group to focus on. You want to provide all the capabilities (optimization, chargeback, service catalog, etc.) for a each grouping one at a time so that you can demonstrate the ROI as you work to cloudify (bring standardization, automation and self-service) your datacenter.