Lessons learned from my Holiday Coding Project

One of my favorite things to do during the holidays is a coding project. Between work and family commitments it is possible to do side projects during the year but harder to just immerse yourself into a problem. My only criteria for the projects is that the technologies that I use have to be different than what I use at work. Normally I pick a technology that I am interested in and then find a project for it. Although I have learned a lot that way the approach I took this year was a lot better.

So here is a quick list of what I learned in how to do my annual holiday project:

  • Be mission driven instead of technology focused. Normally I would think of a technology that I want to learn about and then find a problem to apply it to. This year there was a problem that has been on my mind that I wanted to address. Looking at a problem first you end up finding the best technology to address the problem which is often different than the original technology.
  • Measure twice, cut once. If I was working on a project during crunch time I would use the best solution that I could think of and code away. However, with more time I could look at different alternatives before deciding. For example, I could look at different NLP papers for different approaches. Doing this seems like a waste of time when you don’t have a lot of it. Yet it resulted in me getting more done in less time because I could think about the trade-offs before I write the first line of code. That way I saved time from short-sighted algorithms or rewriting buggy code.
  • Go back to school. Academic papers contain so many great insights that I will probably continue to read these to learn about new topics instead of just blogs. For this project, I spent a lot of time reading about word sense disambiguation, sentiment analysis and opinion mining. Funny how a simple question could lead to reading about so many different things. I have also been a long-time fan of MOOCs. Often I will listen to Udacity lectures to come up to speed on a topic and at times even do some of the assignments. That is how I became familiar with TensorFlow.
  • Manage the clock. Maybe it is because I have been watching so much football (good luck next year UW) but I was always careful to manage my time throughout the project. I was firm that I needed to be code complete a few days before my vacation was over. My original thinking is that the project would go from something fun to a chore if I was trying to complete it while I was busy with work and other life commitments. The added benefit is that I became ruthless in prioritizing my time and even cut “cute” features to focus on what was most important.
  • Focus on Minimal and Viable. When I talk to people building new products they always talk about the MVP. Once you start digging into details it is clear that they are preparing for a moon landing. Focus on the shortest path to viable and feel free to use lots of open source code.
  • Not all open source projects are equal. Open source software has made it possible to create something amazing quickly. Before standing on the shoulder of giants you should make sure that the giant is in shape. For me that involved a few things including when was the last time someone worked on the project, why did the person create the project, has anyone contributed to it, etc. However, I found the most important check was to read the code itself. Was it readable, have error checking and do what it claims to. In a few instances, I leveraged repos that haven’t been touched in years but were of good quality.

This post could easily have been longer but these were a few things that popped out at me. At this point you might be wondering what did I create? Well I had so much fun with this one I will probably release it in the coming weeks and will create another blog post discussing the problem being solved and the solution I proposed. Now I need to finish getting ready for CES… everyday life continues. 🙂

Talk to you soon,

Orville | Twitter: @orville_m

Fixing Python Errors When Installing Tensorflow on El Capitan

While installing TensorFlow on a Mac running El Capitan I kept getting one of those crazy Python errors that are impossible to decipher. Thanks to Stackoverflow which always saves me while coding I found out the problem. It is apparently “due to the System Integrity Protection introduced in OS X El Capitan.” The fix is copied below for the next time I run into this error. Thank you for the tip Kof.

sudo pip install --upgrade $TF_BINARY_URL --user python

The Impact of Bad Pricing 

I am traveling home form Orlando where I presented at Microsoft’s Worldwide Partner Conference. It was great fun and I learned a lot from our partners. Since over 4,000 people from the Seattle area are here I had to change my travel routine. In this case that means traveling on American Airlines to get home.

American Airlines has an interesting checked baggage pricing structure that I listed below:

  • One bag is $25. That is standard.
  • Two bags are $60. Ok, this is reasonable to charge more for the second bag.
  • Three bags are $210. Really going to charge that much for 3 bags.

Orlando is the home of Disney World so there are a lot of families meaning lots of bags. So of course a lot of people try to put huge bags in the overhead bin. This causes so many delays and frustration for the people waiting.

Hopefully American Airlines could adopt more reasonable price discrimination so they discourage a lot bags without creating problems for the travelers.

On the runway,

Orville 

Deleting Documents from Solr

Often when using Solr, I forget what the command is to delete documents so I’m just keeping it here. This command will both delete the documents matched by the query and commit the deletion.

http://hostname/solr/update?stream.body=<delete><query></query></delete>&commit=true

Query is format field:value. To delete all of your documents enter *:*

BTW – if you do this from a browser make sure that you close the browser window when you are finished.  I once had Firefox crash and then when it came up I opted to recover the closed windows.  This instantly executed this command and deleted all of my documents.  it was not a good feeling.

Talk to you soon,

Orville | Twitter: @orville_m

Compilers and Civics

Like many others in technology, I have always loved that I can impact the world by the products that we make.  I currently work on Visual Studio and I enjoy being able to meet our customers in different parts of the world.  However, even as we think globally the greatest impacts on our lives are local decisions.  What does the future of your city look like?  How safe is your neighborhood?  Can you easily travel around?  Is there a sense of community?  These are just a few of the questions that many of us ponder as we consider where to live (especially when there is a family involved).

For these reasons and many more I applied to be a member of my city’s planning commission and thankfully I was accepted.  The city council from the mayor on down have a great history with the city and are looking to make the city an even better place than it is now.  As this is my first time being involved in local government I am really looking forward to working with the smart people on the commission and learning a lot in the process.

If you ever thought about getting involved in your community my advice would be to just go and do it.  Think globally, act locally.

Talk to you soon,

Orville | Twitter: @orville_m

Creating and Sustaining Profitable Growth

Clayton Christensen always has interesting strategy papers.  I came across this presentation that has some useful information for those who are focused on bringing disruptive technologies to market.  Some items might be considered contrarian.  For example, when searching for the right business model “good money is impatient for profit, but patient for growth.” (Slide 26)

http://www.slideshare.net/lionzshare/clayton-christensen-world-innovation-forum

Talk to you soon,

Orville | Twitter: @orville_m

Visual Studio 2012 Launch

I’ve been really bad about blogging lately because I was focused on the Visual Studio 2012 launch.  In my opinion it is the best development tool but I’m biased. 🙂  This was originally going to be a blog post about the great features in Visual Studio 2012 but since I took too long to post, several great posts have already been written.  So here are a few tidbits from the march to launch.

Discussing Visual Studio 11 (beta)

Tim and I were having too much fun talking about development and the evolution of Visual Studio.  Notice that product was still under its codename.

Bytes By MSDN – Orville McDonald and Tim Huckaby

Note: I would have preferred to embed video but basic WordPress is not a fan of that. 😦

TechEd Europe 2012

In Amsterdam giving a tour of the product.  Must say this is the hardest presentation to give because the product is so broad and the time is so short.  Just not enough time to discuss everyone’s favorite feature in any level of depth.

What’s New In Visual Studio 2012

Visual Studio 2012 Launch Keynote

Here I am on stage during Jason Zander’s keynote.  It was a fun time as you can see from my smile below.  You can actually watch the video at the launch site.

MS-Visual-Studio-2012-09-12-442

Talk to you soon,

Orville | Twitter: @orville_m