My background is software development. However, a long-standing question is if I should stay in the field or move on something else while I'm young enough to do it. After all, I haven't coded in a few years. And that wasn't even a language you've heard of (nor do you want to).
Back when I was in school, my focus was in artificial intelligence. You can still go back and look at all of my old AI posts on this blog, and there are a LOT of them. Lately, though, my focus has moved around, a bit outside of software development, but within the field as well. And I've been thinking about two things: embedded programming and data science.
Embedded programming has gotten big lately, thanks to Apple and their iPod/iPhone/iPad lineup. These are built on the popular ARM processor, which I am also a bit interested in. But is this all there is to embedded programming? Not even close. You have automotive computing, GPS devices, hi-tech watches, 'smart' thermostats, emergency control devices (such as on dams), DVD/Blu-Ray players, and so on. It's a rather large market.
But what is data science? I think O'Reilly says it best. Simply put, it's taking a massive amount of data and creating a story around it. If you don't think that's important, then why are Google, Amazon, and Facebook focusing a vast amount of resources on it? Data is at the center of their businesses.
My next question is how I cam combine the two. Well, good news: embedded programming is really built up around C and data science uses a lot of Python. The reason this is good news is that C and Python can talk and extend each other. The upcoming Raspberry Pi is built on Linux which is built on C. Even if I build up my C and Python skills and decide not to go into either embedded programming or data science, both are popular and useful languages. As the Raspberry Pi devices have an ARM processor, it's a win for learning more about that, anyway.
In a way, it all comes back to artificial intelligence. Imagine a robot built around a bunch of ARM processors, receiving and acting on a massive amount of data at a time. Or a smart house embedded with ARM processors, constantly fine tuning its routines based on the family's habits. Both examples require the use of embedded computers as well as the ability to work on massive data sets in real time.
For the moment, I'm holding off on C until the new version is released. I believe that will be next year. The Pi devices won't be out until next month at the earliest. So that leaves Python, which is a good way to get back into programming after a long hiatus.
Because of all of this, I'm (once again) reevaluating where I want to live. Indianapolis isn't the best place for software developers. Silicon Valley would be ideal, but I don't want to have to choose between buying a million dollar home versus commuting 90 minutes each way each day. Boston might be my best place, as it's very tech-friendly and is close to my ideal environment. I can deal with the cold.
The future looks interesting.