How to install a 2 port USB power adapter in an ‘87 BMW

For some reason BMW forgot to put USB power sockets in my ’87 535is.

D70_5615

In addition, while the JVC stereo the previous owner installed has a USB port, I use it for a memory card for music. Lastly, the cig lighter socket in these cars is “always on”.

For these reasons I decided to do a little mod: Adding a 2 port USB power socket. This post explains how I did it and the parts I used.

Here’s the final result:

To start, I went to Amazon.com and bought 4 different cigarette lighter USB power adapters. I wanted to find one that had two plugs, supported Apple’s proprietary USB charging protocol, and would fit well behind one of the blank plates BMW provided on either side of the radio. Amazon’s amazing return policy meant that, as long as I didn’t damage them, I could return the ones I didn’t use.

After carefully pulling all 4 apart, I found that the PowerGen Dual USB 3.1A 15w High Output Car Charger had the following favorable characteristics:

  • Up to 3.1A output.
  • Red LED.
  • A short circuit board. Some of the others had boards that were almost 2 inches long.
  • A USB plug design that would adapt easily to a different bezel (in this case the BMW blank dash plate).

Disassembly of the power adapter was simple: just pry the plastic apart and the innards pop out.

See how the USB connectors hang over the edge of the circuit board? Turns out they extend almost exactly the same as the thickness of the blank plate!  (The blank plate in this picture is a spare that has a hole dilled in it for an alarm LED).

To cut the right sized rectangular holes in the blank plate I needed to use the faceplate from the USB adapter as a template. The USB connectors already fit the original faceplate tightly, but I wanted to make sure the new holes were very-slightly undersized to create an even better mechanical connection.

I used a pair of small Vise-Grips to hold the faceplate in place on the back side of the blank plate (I had to cut the sides of the original faceplate a bit to make it fit) and then drilled a pilot hole in the center of each rectangular opening. I then used a very small flat file to carefully expand the pilot hole and create the new rectangular holes in the blank plate.

I de-soldered the old ground wire and positive wire (spring in the above picture) from the circuit board and soldered in new wires of appropriate length. I then used a hot glue gun to further secure the electronics to the blank plate.

Remember, because I made the holes slightly undersized (10ths of a mm) the USB connectors fit really tightly providing a good mechanical connection.

Untitled

From here it was a simple matter of attaching some plug connectors to the wires on my adapter and their siblings in the dash (which I had previously exposed behind the right hand side plate when installing my Valentine One radar detector hard-mount). I plugged it in and snapped the plate into place.

I have it wired to the same circuit as the radio so that it is only on when the ignition is on. You’ll note that the red LED does a nice job of providing a little illumination of the sockets (that matches BMW’s instrument colors). The hot glue helps diffuse the light a little which is a nice touch.

Hope this helps others.

© Charlie Kindel. All Rights Reserved.

Have a Plan

Yesterday someone asked me to share my thoughts on the secret to building excellent things. I summarized what I know as:

“Put the customer first, have a plan, create a shared mission, get early victories, remove process, and make it fun.” – me, yesterday.

This was the formula my cohorts that built the Windows Phone app platform used. It worked. This is what the small team that created www.milelogr.com did.

“No battle was ever won according to plan, but no battle was ever won without one.”  – Dwight D. Eisenhower

It shocks me how resistant many entrepreneurs are to writing down a plan. It’s like they’ve been beaten down by the “VCs never read business plans, so don’t write one” tripe. Or maybe they were burned by the dense, unapproachable 100 page plans as babies (when they worked at BigCos).

Here’s the secret to planning: The shorter your plan the better.

But always have a WRITTEN DOWN plan.

Elon Musk had a plan for Telsa Motors. In 2006 he wrote a blog post and disclosed the plan as:

  1. Build sports car
  2. Use that money to build an affordable car
  3. Use that money to build an even more affordable car
  4. While doing above, also provide zero emission electric power generation options

The power of such a concisely written plan cannot be underestimated.

The plan for the Windows Phone 7 Application Platform, including the developer experience, fit on a single page. Yes, we had a 30+ page document that discussed all sorts of ideas and details, but the plan itself, the thing that served as our North Star fit on a single page. It concisely described all the things good plans cover:

  • Your purpose (some call this the mission)
  • How you’ll behave (your principles or tenets)
  • What’s important and what’s not (your framework for making tradeoffs, aka priorities)
  • Who’s responsible for what, and who’s not
  • When you’ll do things, and in what order

Our one page plan was the North Star that 100s of people across 4 Microsoft divisions marched towards over the 18 months we had dedicated to the project. As we headed north we ended up going a bit west and maybe a bit east, but we never went south. And that is why a plan is so important.

Have one. And make it as concise as you possibly can.

I’ve written a post dedicated to a great framework for planning: The 5Ps: Achieving Focus in Any Endeavor.

© Charlie Kindel. All Rights Reserved.

Businesses Buy Differently

My post on Why Nobody Can Copy Apple has become one of the most read posts I’ve ever written (thanks @gruber). Many commenters are asking me “Can you describe more what the behaviors are that are different when building for business vs. consumers?” There are many, but central is the sales motion: the approach and process an organization uses to sell product. The sales motion for businesses is diametrically different than the sales motion for consumers.

One of my favorite truisms is

“People don’t buy things, people are sold things.”

Businesses buy products differently than consumers. But, just like consumers, they only really buy things that are sold to them:

“Businesses don’t buy things, businesses are sold things.”

How do businesses buy things differently? I love this answer by Steve Jobs from an interview he did in 2010 (emphasis mine):

“What I love about the consumer market, that I always hated about the enterprise market, is that we come up with a product, we try to tell everybody about it, and every person votes for themselves. They go ‘yes’ or ‘no,’ and if enough of them say ‘yes,’ we get to come to work tomorrow. That’s how it works. It’s really simple. With the enterprise market, it’s not so simple. The people that use the products don’t decide for themselves, and the people that make those decisions sometimes are confused. We love just trying to make the best products in the world for people and having them tell us by how they vote with their wallets whether we’re on track or not.” – Steve Jobs, June 1, 2010

A commenter on my Why Nobody Can Copy Apple post did a great job of explaining this in more detail:

“The problem is that the business…are attempting to maximize their profit, so they want to buy bulk, cheap product that fulfills all of the criteria they come up with. And these criteria they come up with are universally profit-driven or simply stupid. They want X features, Y functionality, because they need to do aX and aY with the product. They don’t care about bX and bY, which in this case are the entire experience of the product, because it’s not something that is quantitated in the corporate machine.”

Organizations that build product for businesses must SELL in a way that is compatible with the way the business BUYS. The organization, say Microsoft’s Interactive Entertainment Business (IEB), or Microsoft’s Business Division (MBD), needs a sales motion that fits the customer.

IEB, which makes Xbox, has a sales motion centered around allowing the end-user viscerally engage with the product at retail (fed by ‘air cover’ marketing and advertising) . In MBS’s case, selling, say Microsoft SharePoint, the sales motion is about having an army of Microsoft sales people (literally tens of thousands of employees are salespeople) call on CIOs and other “business decision makers” to convince them the speeds & feeds of the product address some pain point.

These sales motions and the sales force behind them are radically different.

Another of my favorite truisms is

“Ideas are worthless. Execution is everything. But getting people to pay for something is MORE everything.”

To be successful (profitable), an organization that builds something must be driven by how the product is sold. The product managers, designers, engineers, testers, and middle-managers all end up being highly influenced by the sales motion.

Therefore, in an organization focused on the consumer, every single person is attuned to the motion of sales. Which is a consumer focused motion (typically online or retail). If they are asked to focus on business customers at the same time, they lose focus. And a loss of focus creates mediocre products. Likewise, a business product organization that also has to sell to consumers will suffer a lack of focus.

Microsoft has done an admirable job in setting up IEB to be mostly consumer focused. This is why the Xbox and related products are pretty damn good. But IEB’s products are not as consistently excellent because they depend on other parts of Microsoft that are not as consumer focused.

Windows? Not so much. And the reason, at the end of the day is the bifurcation of focus between business customers and consumer customers.

Comments encouraged. Keep ‘em clean.

© Charlie Kindel. All Rights Reserved.

"Write Once…" is Anti-Customer

Just as in the ’90s, there’s a bunch of hype these days around solving the cross-platform development problem. Mobile platform fragmentation is killing developers, and if only every device supported some common language or technology engine we could all Write Once and Run Anywhere.

If only.

WORA was, is, and always will be, a fallacy. WORA reminds me of the mole in whack-a-mole. It just keeps popping up and the realities of competing platform vendors keep whacking it back down. What drives me crazy is not the “Run Anywhere” part that most people throw out and replace with something else (like “Optimize Everywhere” , “Suck Everywhere”,  “Test Everywhere”, or “Outsource the optimization“).

It is the “Write once…” part that’s the most dangerous. We all wish the world was rainbows and unicorns, and “Write once…” implies that there is a world where you can actually write an app once and it will run on all devices. But this is precisely the fantasy that the platform vendors will never allow to become reality. Stop asking for it.

Mobile fragmentation is going to get significantly worse over the next few years. While this fragmentation will be bad for end users in some cases, it will be particularly bad for developers.”
Me on LockerGnome, Oct 22, 2012

HTML5 is awesome in many ways. If applied judiciously, it can be a great technology and tool. As a tool, it can absolutely be used to reduce the amount of platform specific code you have to write.  But it is not a starting place. Starting with HTML5 is the most customer unfriendly thing a developer can do.

“We start with the customer and we work backward” – Jeff Bezos

“… you gotta start with the customer experience and work backwards to the technology.” – Steve Jobs

Like many ‘solutions’ in our industry the “Hey, write it once in in HTML5 and it will run anywhere” story didn’t actually start with the end-user customer. It started with idealistic thoughts about technology. It was then turned into snake oil for developers.

Not only is  the “build a mobile app that hosts a web view that contains HTML5″ approach bass-ackwards, it is a recipe for execution disaster. Yes, there are examples of teams that have built great apps using this technique, but if you actually look at what they did, they focused on their experience first and then made the technology work. What happens when the shop starts with “we gotta use HTML5 running in a UIWebView” is initial euphoria over productivity, followed by incredible pain doing the final 20%.

The problem is each major platform has its own UI model, its own model for how a web view is hosted, its own HTML rendering engine, and its own JavaScript engine. These  inter-platform differences mean that not only is the platform-specific code unique, but the interactions between that code and the code running within the web view becomes device specific. And to make matters worse intra-platform fragmentation, particularly on the platform with the largest number of users, Android, is so bad that this “Write Once..” approach provides no help.

The father of WORA: James GoslingI blame James Gosling. He foisted Java on us and as a result Sun coined the term Write Once Run Anywhere. (Joking!)

Developers really want to believe it is possible to “Write once…”.  They also really want to believe that more threads will help. But we all know they just make the problems worse. Just as we’ve all grown to accept that starting with “make it multi-threaded” is evil, we need to accept “Write once…” is evil.

There is no “Write once…”. I wish there were. I know you wish there were too. But I wish my daughter had a baby unicorn to ride too.

There is, however, “Focus on creating the best possible user experience on each device and try to get as much code re-use as you can along the way.”

Focus on the experience, try to get code re-use.

Not as catchy, but far, far, more realistic. And helpful.

Edit: February 22, 2013 – Shortened title to make it less inflammatory.

© Charlie Kindel. All Rights Reserved.