• Innovation Outsiders

    The vast majority of big pillar innovation work being done in corporate america is relegated to innovation outsiders – groups external to the core product delivery teams (Labs, Innovation Teams, etc.). They are expected to find a business partner or a sponsoring executive that can fund their work to incrementally transform existing products. This approach has been historically fraught, both at more traditional as well as companies renowned for their technical innovation. The difficulty is driven by myriad issues including difficulty aligning roadmaps, funding, awareness and accommodating technical risk. This post lays out a hypothesis that you must reverse the flow of innovation, have it driven by transformative products and let the technical innovation derive from that.

  • Course Complete!

    So… it has been a while since my last update. This spring’s semester wrapped up well for both me, as well as the students in my Python for social scientists course.

  • Computation Frameworks for the Social Sciences (aka I’m teaching a class)

    This spring I am teaching my first course! It is a pretty small seminar, 8-10 graduate students, but they all seem excited about the material. It is a “Programming for Political Scientists” course that will use Python to both teach people how to write good software as well as show them how people are using software in the discipline currently. I hope to spend the first half of the course covering basic software engineering and computer science concepts before moving on to some specific applications. Hopefully, by the end of the course all of the students will have built something that they can use to further their research agendas (e.g. a web scraper to supplement a data set).

  • Rook

    As I said in my last post, I am working on setting up a statistical web service using R. I decided to use the Rook library to do so and wanted to give a brief overview of how Rook works for others who might be interested.

  • Rook and R Webservices

    Recently I have been working on setting up a webservice that does some non trivial statistical work. Normally, my go to when building web services is Ruby/Rails due to ease of use, then I offload anything computationally intensive to something more optimized (e.g. a C or Java application on the same box). In this case however, partly because of my co-author’s skill, partly discipline norms, and a whole lot of R being awesome for this sort of thing, the statistical work is going to be done in R.

  • Exponential Growth and Resource Consumption

    In August, while on the road moving to Duke, I heard a great interview on NPR with David Suzuki. During this interview he talked about the relationship between anything that grows exponentially and the resources that it consumes. In particular he focused on how we are likely to misperceive the remaining level of resources because humans are bad at understanding exponential growth (see anything by Kurzweil).

  • Getting into Git

    This monday, I was asked by [Mike Ward(https://web.duke.edu/methods/)] to give a talk to his ICEWS group at Duke about the wonders of source control and how to get started using git. I was excited to do it because I am a big fan of git and use it on almost everything that I create myself (yes I use it on my CV…). While the opportunity to introduce it to others was great, I went into it a little bit of trepidation because in the past when I have talked about git or other DVC systems, my audience is at least sold on the idea of version control… because they are software developers. That was not the case for this audience, but I think I may have converted them nonetheless.

  • Bullet Plugin for Rails

    Recently I have been working on improving the performance in one of my clients Rails applications, trying to get page load times down. Looking at the query log it was obvious that there was way too much activity going on for what was being rendered on the page–there were N+1 queries all over the place. This was nothing a few joins (or eager loads as the rails folks like to say) wouldn’t fix. So after changing the queries to make sure that all the necessary data was gathered in just one pass, I wondered how many other places this was cropping up in the application. That is when I stumbled upon flyerhzm‘s Bullet Gem.

  • LAMP Development for Windows

    I have been doing development in PHP for a long time and have yet to find a really satisfactory solution on Windows. When I recently flattened my home PC and had to restart I thought I would try a new setup and here is what I’m using. Its pretty good to me so far, and I think I’m going to run with it for the time being:

  • Building Grammars in .NET

    As I’ve shown before (here, here, and here), the Microsoft .NET Speech API allows you to quickly and easily build applications that take advantage of the good folks at Microsoft Research‘s work on speech recognition. The general process is that you can construct a grammar that the engine will recognize for you, and then event handlers for those recognized events will be triggered. This process then, will only be as effective as the grammars that you can construct for the the SpeechRecognitionEngine. In this post I’ll show you some of the things that you can do to construct Grammars in C#.

  • Getting your C# app to run in the System Tray

    While making some additions to the Speech Framework, I needed to figure out how to get my WPF application to run in the system tray. For the speech framework, the sys-tray is a natural place for the application to run, as we ideally don’t want to see any UI and the application should be always on. I opted out of a service, because I did want the rich UI of an application and for it to show up in task manager, etc. It was very straightforward, but I thought I’d write up the steps for future reference.

  • Javascript, Flash and cross-browser clipboard fun

    Recently I have been wrestling with writing some code that will manipulate text on a user’s clipboard in a web browser. I thought I would share my findings here for others who might be interested in the same topic.

  • Miles per Gallon vs. Gallons per Mile

    A new study by Richard Larrick of Duke’s Fuqua School of Business, recently published in Science magazine shows that most people have the wrong intuition about how to save gas. This is because they misunderstand what the “miles per gallon” statistic actually represents. As a result of this they may not be doing the optimal things to decrease their gas consumption.

  • Speech Plugins: Weather

    In this entry we’ll look at building a basic plugin for a speech engine (Microsoft Speech III), that will respond to simple queries about the weather. For this tutorial we will be using the Yahoo Weather API. Note that if you are just interested in how to use their API, it should be easy enough to extract what you’re interested without doing the previous tutorials.

  • Microsoft Speech III: Setting up a pluggable infrastructure

    This post will build on the work done in Microsoft Speech II, where we saw how to interact with our computer via voice. In this tutorial we will build a plugin infrastructure which we will use to add functionality to our Speech Project in the future. While we won’t be adding any new functionality in this tutorial, we will be refactoring what we had into a “Personality” plugin. Please note that these ideas aren’t uniquely mine and I borrow heavily from Matthew Cochran’s excellent tutorial on the subject of plugins – I just adapted them for the speech project’s purposes.

  • Microsoft Speech II: Getting your computer to listen

    In this post I’ll show you how to take our simple project from the first example, Microsoft Speech I, and get it to understand input spoken into a microphone. Note that everything I’m showing can be found in the MSDN pages for the Speech API. Before we get started, make sure you have a microphone and it’s hooked up to your PC and all that other obvious stuff….

  • Microsoft Speech I: Getting your computer to talk

    This is the first of what will hopefully be a series of posts that detail my explorations with the Microsoft Speech recognition and synthesis libraries built into Vista. I am working on automating certain parts of my home and (after seeing Iron Man), realized that I needed to see if I could get my house to talk with me. Now I’m not trying to write an app that I can chat with in such a way that it would pass a the Turing test, but I would love something that could respond to simple voice commands. I imagine sitting in my living room reading, discovering a word that I’m not sure the definition of, and yelling at my house to look it up for me. We’ll see how far I get.