Wednesday, November 16, 2011

My remote control for the world

Many moons ago, years before smart phones, handheld computers, and even the Web, I had this conceptual idea for an imaginary device that I called my "remote control for the world." This was around 1985 or so. It wasn't intended to be a full-blown computer with a fancy GUI, but just a simple device to control just about everything you could imagine remotely. More of a scrolling list of devices and objects and a bunch of specific function buttons. Things like turning your home A/C or sprinklers on and off or checking the temperature in your home. Maybe even starting your car or checking its gas gauge. And your bank balance. Just about any setting or indicator that you have a personal interest in. I never bothered to write it up. I'm not sure why. But recently I was reminded of it (wanting to do something remotely) and I realized that even today its still isn't quite feasible with off-the-shelf technology.
The biggest breakthrough has been the Internet and Web, which provides a lot of the communications infrastructure that is needed. Wi-Fi and Bluetooth as well.
Small, hi-res graphical displays make the UI much more practical, but ultimately that was never really a major obstacle. A simple, hierarchical scrolling list and some tactile push buttons would work reasonably well.
We also have RFID for random objects, bad that is more passive and not interactive, yet.
And some household objects and "devices" are intelligent, but we are still in the "dark ages" for most devices and objects that we encounter in our daily lives. Did I lock my door? Sure, some "intelligent homes" can tell you that and control it remotely, but my vintage 1926 apartment door doesn't seem to have an Internet-ready interface.
Sure, you can now finally start your car remotely, but that is still more of a specialized app than a general feature of all devices and objects.
Thinking about my vision in today's world, I would like to "see" in my refrigerator and "see" in the relevant sections of the supermarket, or any store. Sure, we now have web cameras and other cheap cameras, but they still are not ubiquitous enough to make my vision a reality. And most cameras are still relatively low res and not even HD, lot alone photo-quality high-definition.
Yes, some cars now have rear cameras, but I'd like the same for when I'm simply walking down the street. Sure, you could "hack" that, but it's still not quite "there" in terms of a consumer-friendly handheld remote control device.
And I'd like to trivially (without some complicated and messy UI) be able to look around corners and even "through" buildings and walls. Sure, we have a lot of elements of the requisite technology, but we're still not even close to having enough of it off-the-shelf and readily packageable to satisfy my interests.
Right now, right this moment, I'd like to see where the sun is and check the temperature right outside my building. I can sort of do that with a bunch of browser clicks, but not quite and not as easily as with my original vision for my "remote control for the world." In other words, we can roughly approximate a subset of my vision, but not in any full-featured sense.
Maybe a rudimentary version of my remote control might be available in another five years, or ten years, but somehow all of our technological advances over the past 30 years have still not done a great job of integrating our physical environment and everyday devices and objects into one "seamless" network.

Friday, November 04, 2011

Moving on to reading about Ruby

Now that I've finished reading about Apache Hadoop and Apache Mahout, I've decided that I really need to know more than a little about Ruby and Ruby on Rails. I already do know a little, but I need to know a lot more about all the ins and outs and all the details of various features.
I figured I'll start with a basic tutorial just to get that out of the way. Something like Ruby in Twenty Minutes. This also involves downloading and installing Ruby itself on my Windows machine.
I started on the tutorial after downloading and installing Ruby, but realized that I would be much happier starting with the raw language specification since I am basically a compiler guy and I feel more comfortable knowing the strict specifications for white space, line terminators, comments, tokens, keywords, identifiers, literals, etc. before I start working with actual data and control structures. I found the Ruby Draft Specification.
I'll do a quick scan of the spec to get the lay of the land and then go back and go through the tutorial.
I may go back and carefully read the Ruby Wikipedia page first.
There are multiple tutorials, each emphasizing various aspects, including similarities to other programming languages. In my case, I'm actually interested in what language features of Ruby are unique or distinct from features of other languages.
I'd also like to identify one or more modest-sized actual open source Ruby applications so I can see first hand what good/great Ruby code looks like.
I'll focus on information that is available online as opposed to buying actually published books on Ruby,
Ultimately, I'd like to have a hard-core technical answer to the basic question of: What is Ruby good (best) for? I know people use Ruby and Ruby on Rails for user interfaces, but that's not a hard-core answer.

-- Jack Krupansky