Upgrading to Yosemite causes USB Keyboards to stop working

Since Yosemite is now Generally Available, I decided to download it and install it on my Late 2013 Mac Book Pro Retina, 15 inch edition.

That was a mistake.

My USB Keyboard no longer works; and given the internet results, it seems that’s a common problem.

I guess I need to treat Mac OSX releases like I do Windows releases: Always wait for SP1.

I’ll update this post as I know more.

Edit: I’ve tried the steps in this content farm article to reset the System Management Controller, No Dice.

Edit 2: After resetting the SMC and walking away from my computer for 20 minutes (enough time for it to be asleep for 10), I woke it out of sleep and it recognized the keyboard again.

It’s unclear whether resetting the SMC is a requirement; but it does work now.

For reference, I have a Microsoft Natural Keyboard.

Three Small Things A Day

I’ve been on and off the productivity wagon for a while now. Sometimes I’m on, sometimes… well, sometimes I’m off.  I used to think there was some secret to being productive.

There isn’t, but it took me 10 years to realize it.

Along the way, I’ve tried Getting Things Done (think of it like a colon cleanse for your workload —  It hurts while doing it, but you feel great after), I’ve tried Todo lists, I’ve tried the carrot approach (work for 45 minutes, get to take a 15 minute gaming break); I’ve even tried the “Tell my wife what I’m doing so she can heckle me if I don’t get it done” approach.

All of these aren’t secrets to being productive; they are ways to trick my mind into working.  That would work, except that my mind is more stubborn than I am.

One thing has stood out, and I have Jeff Atwood to thank for it:

What three things do you need to do today?

You should be able to instantly answer this simple question, each day, every day, for the rest of your life. Without any tools other than the brain you were born with.

If you don’t have this skill, develop it. Practice, starting today. Right now.

What are you doing right now? Is it going to somehow result in one of those three things getting done today? Will this you get you to where you need to be by the end of the day?

The “Three Things” trick has helped me focus only on what I need to do right now.  Scott Hanselman calls it The Rule of Three, but it’s the same thing:

DO SMALLER THINGS

Paint House is too big and too stressful for a single item on your TODO list. Break it up like Select Color, find Paint Store, Buy Paint, etc. Focus on the Rule of Three. Three Successes for the day, for the week, for the month, for the year. Have a Vision for your week on Monday and Reflect on that Vision on Friday. Find a small thing that you can do in a small amount of time and do it. Accomplish something small, anything and that will buoy you forward to the next thing.

I may not be productive all the time, but I can accomplish three things per day… Maybe that’s the same thing?

Pascal’s Wager and Fixing Bad Code

Objections to SOLID principles (Overheard through the years):

“Why should I have to click “Go to Declaration” on four different methods to figure out what happens?”

“I don’t see how refactoring the code adds business value.”

“We have to move faster; SOLID doesn’t let us do that.”

“All these small methods make it hard to find the code I want to change”

“It’s just a user control. It’s too much work to move the Database logic out!”

“I don’t understand the problem. Why does it matter if the ASCX is big?”

“Using Exceptions for flow control is just how it is; we can’t change it, it’s too brittle.”

“Be careful of making changes; we have customers depending on this code.”

“Fix that for new code going forward, but there’s no sense in fixing the code now.”

“Does it really matter that business logic is aware of the ASP.NET pipeline?”

“What’s an interface? I don’t see how that’s useful.”

Complaints (about the code):

“This code is hard to change.”

“I’ll work the weekend to fix this issue.”

“CODE FREEZE. Don’t check anything in for the next two weeks, so we can test everything.”

“It’d be really nice if it didn’t take so long to build the solution.”

“This code doesn’t make sense, it does too much!”

“We should put in more process to be sure code with bugs doesn’t make it into production.”

Design can be fixed. Code can be refactored. Improving the design of code is like Pascal’s wager: even if you lose, you win. If you hear complaints about improving code, listen for the complaints about the code as well: They’re intertwined.

Author’s Note: All of these objections to SOLID can be attributed to multiple people, some senior, some junior.  I’m not calling out any one company or team or individual: This is an endemic problem in our industry.

Bonus: On Hacker News today, a similar story titled “Worse is Better” is making the rounds.

Glassdoor to users: You can Delete your Account, if you can figure out how

I opened up my inbox to see the following email from Glassdoor:

Changes are left as an exercise for the reader.
Changes are left as an exercise for the reader.

Before this email, I didn’t realize I had an account with Glassdoor, so proceeding to their site (and then resetting my password), I found that I did.

I started to peruse their Terms of Service, and I noticed this line (screenshot):

12. Termination
These Terms remain in effect while you use Glassdoor and, for Members, as long as your account remains open. You may delete your account at any time. We may suspend or terminate your account or your access to parts of Glassdoor, without notice to you, if we believe that you have violated these Terms. All provisions of these Terms shall survive termination or expiration of these Terms except those granting access to or use of Glassdoor. We will have no liability whatsoever to you for any termination of your account or related deletion of your information.

I can delete my account? Great! But how?

In “Me” menu, there appears to be only one applicable option: Account Settings:

Screen Shot 2014-10-10 at 9.13.48 AM

Clicking on it, I see this screen:

Screen Shot 2014-10-10 at 9.14.51 AM

Unsurprisingly, there are no options to delete my account on that page.

I contacted Glassdoor yesterday and again today about deleting my account. Let’s see if they respond. At first blush, however, it seems like Glassdoor is Hotel California.

Bonus: Googling for Hotel California brings up that at one time, Hotel California was taken as a song about Satanism.

Update:  Deleting your account is a manual process (although they never tell you that, or how), but If you contact Glassdoor and ask them to delete your account, they will:

Screen Shot 2014-10-10 at 12.56.57 PM

Make Things. Ship them.

A developer recently skype’d me out of the blue and asked me what ‘best practices’ would make them a developer.

Make Things. Ship them.

Everything I’ve learned as a developer has come from making things and shipping them. In my professional life, I’m batting about .700 for shipping.  In my personal life? .250.

I have plenty of projects in various stages of completion, but none that are actually finished. I get to a certain point and just stop working on them. Here are just a few projects I haven’t finished:

Edit It: An editing tool for Stack Overflow that flags the most recently asked questions that need the most editing work. It uses an editing score to determine which ones need help (misspellings, grammar). It uses a spelling module and the Stack Overflow API.

Stack Stats: If your Stack Overflow profile page looked like BF2s.com (anyone else remember BF2s.com?)

JSTrek: A JavaScript clone of EGATrek.

OpenGrok support for TFS: (This one is actually ‘written’, just in the other 80% of programming: Debugging and testing)

Restore Gene fixes for AWS: Have you heard of Restore Gene? There are a few fixes I’ve made for that project, but haven’t shipped them.

Freelancer+: (think Uber for Tech freelancing. I know, pulling the uber card is a tiring meme, but who said I was original?)

Out of all these projects, I’ve learned a little; but I’ve always stopped before the crucial learning moment: Before shipping them. Before making them real in the eyes of the outside world.  Fear sets in. What if it sucks? What if people don’t like it? What if nobody cares?  How can I be good enough? I’m not a real programmer.

Every project that has propelled me forward has been a project I shipped.

I learned Perl through maintaining and shipping 10 websites in 10 weeks that used Perl as their backend.

I learned C# and Winforms through creating and shipping a rather crappy tracking system in college during my senior year co-op.

I learned ASP.NET MVC by shipping not one, but two versions of a CMS. One is no longer in use (the maintenance programmer decided to go a different direction), and the other I’ll probably scrap for WordPress, but they’re there. They were shipped.

I learned Python by shipping a CMS add-on for producing regularly updated content about Stocks.

I learned JavaScript and Angular by working with an awesome team to ship folios.fool.com, a portfolio management tool written in JavaScript with AngularJS and C# with NancyFX.

I learned how to be a DBA by saying “yes”, and taking over DBA Work.  Now, in addition to programming, I’m quickly becoming a DBA (though more of an accidental DBA).

I learned how to be a dad by having kids.

Shipping teaches.  You can program all day and night, but until that magic moment arrives when you ship, you haven’t taken the next step. You haven’t really learned.