I think I have found an unanswered electronics market: Developer headset.

I have been hearing headphones with a microphone every work day for at least six hours for almost four months.  My headphones are an essential part of work, because they connect me clearly to my remote co-workers, and to my programming pair (someone I cooperatively code with all day).

I want to take a moment to dispel the myth of your built-in MacBook microphone being enough to function as a speakerphone.  It's not.  It's better than most, but I can still hear myself coming out of your speakers, and I can still hear all of the activity going on around you.  It might be sufficient in a pinch, but it is not adequate if you expect to continue using it daily, and certainly not for my own use.

Requirements

There are essential features that I require that do not come in a standard set of headphones:

Headphones must be wireless

I have no desire to be tethered to my computer with a wire.  Many times during meetings, I will prepare food in the kitchen, which would not be possible with wired headphones.

Wireless should use bluetooth

Many headsets that are wireless require a special USB dongle that presents itself to the computer as a sound card and transmits/receives a signal between the computer and the headphones.  My computers all have bluetooth already.  An extra dongle, which takes up a precious USB port, is not necessary if bluetooth is used for the headset transciever.

Battery must last at least 5 hours

I use my current headset all day. I charge it at lunch so that I don't have to plug it in.

Charging cable must be standard

I've had headphones that use some ridiculous custom plug for charging.  I do not want to have to pack this extra, weird cable (and risk losing it!) while traveling.  MicroUSB is preferred.

Headphones must work while plugged in

In a seeming paradox, just in case I forget to charge the headphones, I need to be able to plug in the headphones to charge them while I am using them.  I've had headphones before that would shut down while charging, which is unacceptable.

Headphones must be over-the-ear

By "over-the-ear", I mean "circumaural", such that the cups of the headphones must only touch my head, and not my ears.  I can't have headphones crushing my ears all day.  Likewise, the headphones shouldn't hold themselves on by squeezing my head -- they should rest on top of my head with a comfortable band.

Microphone must include hardware mute button

There has to be a mute button on the unit, or some way to mute recorded audio without using software.  My current headset has both a button and allows me to lift the microphone into a muted position.

A setting must allow me to hear myself speaking mixed into the output audio

The other options are difficult to search for, but this is is the hardest one to discover, for reasons I can't explain.  My current headphones sufficiently isolate sound to the point that my own voice sounds muffled.  The software included with the headset (which only works on Windows), allows the microphone audio to be mixed into the computer sound.  This happens inside the headset so that there is no delay.  I can hear myself when I speak, and it is not so loud as to be overbearing.  When I am unable to use this setting (as on the Mac, which I now use for work), the inability to hear myself causes me to start slurring my speech after a few days of use.  This is an absolute requirement for a headset for me.

Nice to haves

There are a few things that would be nice to have in a set of headphones, features that I've seen in many headphone sets while shopping for the perfect unit.

Active noise canceling

There are often sounds in the room that would be nice to not hear at all: Kids running around, vacuum cleaning, lawn mowers.  An option that can be turned on to reduce these noises with active noise canceling (like my Bose Quietcomfort headphones) would be nice.

Hear-through capability

There are often sounds in the room that would be nice to hear without taking off the headphones.  These sounds should be amplified on demand, obviously with the option to disable it and enable noise-cancellation.

Boom-free noise-reducing mic

I like the concept of a mic that can isolate the source of speech, however in practice, mics on headsets tend to be omni-directional and hear everything in the general area.  Instead, I would like multiple microphones built into the ear cups and a signal processor that can combine their audio in a way that pinpoints and amplifies the sound coming from between them, and eliminates the sound coming from outside them.  I have seen several headsets available with this feature, and their mics are well-reviewed.

Programmable buttons

A couple of buttons on the side of the headset that could trigger actions on the computer would be nice, particularly for hanging up Skype calls.

Good, lightweight build quality

The headphones should have a solid feel, but still be lightweight. Unlike many of the reviewers on Amazon, I tend to treat my equipment with respect.  So the headphones need not be made of steel, but should not be flimsy.

Multipoint pairable with phone

It would be nice if the headset could simultaneously be paired with my phone such that I could touch a button on the headset to answer and hang up calls, and use the headset for audio.

If you see a set of headphones such as these in the wild, please let me know, as I am in the market.

A random thought I had this morning:  There are a lot of trucks that idle in our development.

I woke up this morning to the sound of, well, I don't know what kind of truck.  Whatever it was, it was making some grinding motory racket outside at 6am.

This past week, some neighbors have been having work done on their roofs.  The trucks that pull up outside simply leave their engines running.  I'm not sure why.  Maybe they need to be able to make a quick getaway if it starts to rain and they're on the roof?

The groundskeeping crew leaves their trucks by the side of the road.  They're not idling, but the mowers and the leaf blowers they use all day are nearly incessant.  Especially the leaf blowers.  I have a theory that when the crew gets tired, they just turn on the leaf blowers and wander around.  Outside my house.  Where I'm trying to concentrate.

It seems like just in our neighborhood we're consuming a crazy amount of gas, probably unnecessarily.  If there are communities like ours all over the world, that's simply a stupid amount of gas being wasted.

I think science should invest time in genetically engineering energy-producing grass.  Grass doesn't seem to be doing anything else than eating up our fuel supply and wasting our weekends cutting it.  Maybe grass should work for a living?

I'm down this rabbit hole.

My business debit card has expired.  I have purposefully allowed this to happen so that I can close the account.  The services that are still attached to it and that I want to keep alive need to be moved to a new account.  One of those services is web hosting.

I noticed that of all of the expenses, web hosting is the largest one.  I spend $25 per month for one virtual server at Rackspace, while simultaneously spending $20 per month for three virtual servers at Digital Ocean.  One of the Digital Ocean servers sits empty, waiting for the transfer of content from the server at Rackspace.

So, to save $300 per year, I've decided to migrate all of my personal web content to the preallocated Digital Ocean server.  Last night.

Server Configuration

The new server is an Ubuntu LTS server.  I'm running all of my web sites (there are 97 of them) via Nginx on this server, whereas I was running Apache on the old server.  There is an exchange here of configurability for performance.  Apache is easier to configure, and Nginx is less resource-hungry.

Nginx uses fastcgi to route requests to php-fpm.  I've configured fastcgi to use TCP instead of unix sockets because, counterintuitively to me, TCP is faster and more reliable.

Incoming requests first hit HAProxy, which proxies the request to Varnish, which proxies the request to Nginx.  Varnish caches built pages only on asymptomatic.net, since I haven't taken the time to see what other domains could benefit from a caching proxy -- there are probably many.  The manual expiry of cached pages is quite complex, even on this domain.

I have managed to configure HAProxy to failover to proxying directly from Nginx in the case that Varnish doesn't answer.  This would have come in handy last night when Varnish decided to vanish for about 7 hours.  Routing directly to Nginx is not ideal, but it's better than all of the sites going down.

What I'm looking for now is a simple monitoring tool to ensure/alert that any of these services go down.  Pingdom will alert me when the site itself isn't available, but it will not tell me when Varnish isn't doing its job properly and HAProxy is circumventing it.

Remaining Migration

Of the 97 domains hosted on the server, there are a handful that still need to move.  Some of them are simply just other domains that need re-pointed to this server.  Others are more complicated node-based services that I will need to configure directly in HAProxy so as not to need to use an odd port for the service.

I am pleased with the configuration of the environment so far.  Apart from the mysterious Varnish outage, things are running smoothly.  I have bumped the available memory on the server to increase the grease between rubbing components.

What I might consider, as an experiment, is using Varnish's file storage backend instead of the malloc backend.  Since Digital Ocean's servers are all using SSDs, write speeds should be reasonably quick.  If reads are likewise speedy, there might not be a lot of difference between malloc and file based stores, and I'd be able to keep more cache alive.  This would allow me to use the cache on more domains, since memory is in limited supply, whereas disk space is more easily obtained.

Soccer is upon us again, and I'm coaching Abby's team.  This year, I've decided to sign up as head coach, which is a big step in my head, but probably not much more than I've done in previous seasons.  Conceptually, I wanted to be able to run practices and games in a way I see fit.  It's not that prior coaches didn't do a good job - we took the field - just that I have some changes in mind for how to run things.

This season we'll be using incentives for the players on the field.  I've acquired a bunch of little soccer ball patches to give out to the kids that perform well at practice and games.  I hope this will give them some incentive to do their best, whereas in seasons past, I feel like they haven't all given their best effort for lack of it feeling like it meant much to participate.

I'm slowly constructing a training schedule.  I think this is one of the more important changes this year.  With only three training sessions before our first game, we need to fit in some quality training time.  And that's a distinction I'd like to make on the first day: We're running training sessions not practices.  Practice is what you do when you repeat the same things every day to get better.  We won't practice every day, so I'm going to be doing something else.  I'll show the players what they can practice at home, but focus our training on how players should work together during the game.

By our first practice I will have our team mantra finalized.  I know what I want it to consist of, but not how to shorten it into something memorable and effective.  Essentially, the idea is that every player is playing the game mentally all the time.  On the field, you need to be thinking about what you're going to do with the ball even when you don't have it, so that when you get the ball, you don't need to think.  I think this will effectively address some issues we've had in the past like players kicking the ball away and multiple players running to the ball instead of just one.  It should keep players looking up at their surroundings and engaged during the entire game, not just when they have the ball.

This season I want to encourage the team to become a passing team, with as many one-touch passes as possible.  I want them to grow to intuit passing routes, which I think will be my teaching focus for the season.

I'm currently planning on breaking up my three training days into basics, attack, and defense days.  Our first training session will help us get a feel for the players' abilities and how we can position them on the field during a game.  We'll drill heads-up dribbling, sprinting to the ball, shooting, down-field passing, and throw-ins.  We'll also need to identify a keeper, which always seems difficult.  I don't think I want to let the slowest kid volunteer for keeper like we have in seasons past, at least, not for entire games at a time.

One of the more challenging aspects of coaching is finding succinct ways to convey information to the players, but the same thing can be said, and is probably even more true, of conveying information to parents via email!  If I don't reduce the message to its essence, they don't bother trying to understand.

We're already seeing how fall soccer is an extra sport to keep some kids warm between other fall sports, which is kind of depressing.  Some players won't be able to attend soccer matches because they've got practices for other sports at the same time.  Why did they sign up for both?  I don't think it's fair to the kids that show up every game to have to sub out for kids that show up when they feel like it.  I realize this is just rec league soccer, but for some kids (like Abby), it's all they do, and these multi-sport kids that don't really care about soccer are taking away from those kids.  I'm sure I need a different perspective on this, because it simply seems inequitable.

I got a set of 6-foot goals to use at our training, and a set of pinnies to break the team into three small groups for some of our drills.  We've got balls from the league.  I need to check if we have cones or not, which we'll need on our first day.  Apart from the cones, I think we're good for equipment.

Here's looking forward to a good first session.

This year I've bought into a season ticket package with some other guys to go to Philadelphia Eagles football games.  I went to a couple of games last year with them, and it was a good time, so I was enthusiastic when they offered the opportunity to join them for the rest of the season.

As part of the season ticket package, there are tickets to home pre-season games.  Typically these games are on Thursday night, which makes them difficult to schedule to attend.  Combined with the fact that the big name players don't play, there isn't a big demand in our group for these tickets.  As a result, I requested all four of our tickets for the Jets game, and took Berta and the kids.

The game was entertaining.  It wasn't as busy as a regular season game by a long shot, but it was busier than any pre-season game I'd been to before.  I would say that that stadium wasn't quite half full.

I tried to convey all of this to the kids while we were heading into the stadium.  We took the train, which was probably a mistake, but always seems so convenient to Berta's work to get in and out of the city, which I really hate driving to myself.  Abby was amazed at the number of people that were in the subway with us headed toward the game.  I told her that it was just one subway train, and it that there would be many more people at the game itself.  She seemed impressed.

It's hard to convey the difference in atmosphere between pre-season and regular season games.  There isn't the same sense of urgency. The same energy isn't there.  The pageantry remains, but the crowd isn't as enthusiastic.  It's an odd thing.

Riley spent most of the game complaining about how he doesn't like football, "It's boring."  Instead of watching Philadelphia play the Jets, he watched the jets on approach to Philadelphia International Airport.  There were 25 that he counted.

I also wanted this to be an opportunity for Berta to see what the games were like to attend, since I'd be doing this every other week or so during the season.  There are some things that are a pain, like how you can't bring a purse into the stadium unless it's completely transparent.  The game itself, if you like football, balances a lot of that out.  The food prices are insane at the stadium, though.  I don't care how good you think Chickie and Pete's Crabby Fries are, that's too much to pay.  On regular games, we usually just grab a sandwich outside the stadium and pack it into the game in a clear bag.  Anyway, the game isn't always so expensive to attend.

There was a bit of a bother getting home since I hadn't taken into account the returning train schedule, and we got the kids to be a little later than we'd like.  Abby and Riley both commented about how they disliked the city -- it was dirty, polluted, full of weird people...  I was a bit sad that I have yet to convey the wonder (this is not the best word, but good enough for now) that I see in the city to the kids.  Maybe they will appreciate it more when they're older. 

Still, the evening was entertaining, and we survived.  Now the kids have been to a pro football game.  Hopefully they'll look back on it as the positive experience I was hoping for.