import antigravity

For the past couple of months I’ve been immersing myself in a new role at a new (to me) organization. There are a whole lot of new ideas to explore along with the well-known domains that I enjoy working in. One of the bigger new areas to learn is the language stack, which in this case consists of Python and Django. One of the harder parts about coming into a new language stack is being able to tell the language from the framework, at least in my opinion. Some would argue you should treat the pairing as a cohesive unit and not worry about the distinction, but I think that’s wrong. If you look at the two as inseparable you’ll find yourself wearing blinders when it comes to taking a fresh look at things. There may be justification for intentionally working outside the framework on occasion, for example. There may even be justification for using a different framework in some cases, or even wholesale replacing either the language or the framework in use. Would you insist on replacing the tires on your car with the exact same brand when the originals wore out? Only if they served you well, and if you expected to be driving in similar conditions for the next few years. If you were driving on performance tires and decided to move to Alberta you might opt for something different, though. Not that I’m advocating for any such change in my current environment, I’m just making the case that its important to separate the language from the framework in order to more fully understand all your options.

So I’ve done some work in Django recently, but have been more focused on learning some of the finer points of Python. Not just the syntax of the language itself, but the internals of how it works and handles things like memory management and threading. I’m really enjoying exploring this new language so far, because despite the fact that the syntax is very simple it takes a different way of thinking to do things the Python way. It’s pretty easy to take some complex code you’ve written in another language (likely C++ or Objective-C in my case; possibly Java if I was feeling lazy) and port it to Python, but if you only do that much you’re missing the point, and likely writing some horribly inefficient code even if you’d spent a great deal of time optimizing your algorithms for one of those other languages. To write efficient Python you need to understand the language constructs and the way things are handled internally. You want to let the built-in facilities do as much of the work as possible, because let’s face it, Python is interpreted and won’t be running a race with compiled C++ any time soon if all you do is a straight port. Taking advantage of built-in functionality, much of which is coded in C, is going to make a tremendous difference. In order to use that functionality you have to wrap your head around the new paradigms, and that’s where the fun lies. A different way of thinking! It’s been a long time since I worked with a language for anything more than a toy project that forced me to think in a different way. After almost 30 years of doing this sort of thing (20-something years professionally), that’s pretty refreshing and unexpected. As they say in Python circles, programming really can be fun again!

So what is “import antigravity” all about anyway? Fire up your handy Python interpreter, type it in, and get yourself a good laugh! Or if you don’t know how to do any of that, just type “Python” into Google and teach yourself. If you’re an experienced coder, get ready to enjoy the experience. And if you’ve never written a line of code in your life, stick with it a bit and I think you’ll find that you can have more fun and get more done with Python than that time you tried to learn some C and walked away with a bump on your forehead from hitting your head on the desk repeatedly. For starters, take a look at Learn Python the Hard Way or Google’s Python class. Once you’ve learned a thing or two and want to dive into some real code (you don’t need to understand it all at first, don’t worry) just poke around the Python projects on Google Code or Python projects on GitHub to learn some tricks and secrets.

One of my next big projects might be to try to teach my 9-year-old to code in Python. She’s actually expressed some interest, and there’s even a book out there specifically for teaching kids to program in Python. Hmmm, on second thought, maybe I should write my own. Or perhaps one project at a time is enough for now…

Going Home

Sometime early this year I tore down the blog I used to have here and replaced it with something a bit more professional. There were many reasons that felt right at the time; I hadn’t updated the thing in many months, I was toying with the idea of doing some professional writing, and I was looking for a new job and thought having a work-relevant blog might be nice. I still think having a professional slant to this blog makes a lot of sense, and I’ll be working on more posts along those lines soon. At the same time I was lucky enough to find a job that I truly enjoy again (taking that rationale out of the picture!), and occasionally it’s still worthwhile to revert to the old ways and post something a little more personal.

I recently had a family heirloom moved into my new residence. It’s a piano that belonged to my grandmother, then to my parents, and it was a fixture of my childhood for all of it that I can remember. This piano sat in storage for several years because I had been living in a space that it just wouldn’t fit in, but earlier this year I moved into a much bigger space that was just crying out for a piano. It took a little time to orchestrate since I wasn’t about to move the thing myself, even with the help of my younger-and-larger nephews, but earlier this week it finally arrived. As usually happens I’ve been so busy that I haven’t really had time to appreciate the fact that it was here. Tonight I had some down time, and found myself absent-mindedly grabbing something off of it when it suddenly hit me, and I stopped in my tracks for a good 60 seconds, possibly more. Here it is, the one large thing that remains of my childhood with my parents and grandparents, all of whom passed away years ago.

In those moments that I stood there, staring at this ghost from the past, two main things went through my mind. The first was a succession of happy memories and feelings that this piano played at least a background role in, if not a starring one. All the Sunday evenings spent eating pizza from Angelo’s while we watched “The Muppet Show” and laughed. All those Friday evenings spent waiting and hoping my father would make it home. All those after-school days with my grandmother (not the one who originally owned the piano, but the one I was actually much closer to), watching daytime television and eating whatever snack she managed to dig up that day. The big holidays were wonderful too of course, but it’s really the every day that stands out so much more in my mind. The time spent between big events, when life happens. The happy, carefree days of childhood that were magical in so many ways, even if they weren’t perfect.

The other thing that went through my mind were all the things that I wish I could share with my family now. My daughter is growing up, and the only one of them she actually met was my mother, who passed away when my daughter was only 3. She still remembers her Nana, talks about her regularly, and wants to look at pictures of her now and then which warms my heart like few things can. Life has changed a lot in the years since, and there are so many things that I wish could be the same once again. There’s also some new magic in my life, and although I have no real regrets that I can blame myself for, the one thing I wish more than anything would be for my family to have met my fiancée. She has managed to bring magic back into my life, and wonder, and opened me up and shown me new things that I never had a clue even existed in this world. Funny how our new apartment is the reason I can have this piano here with me again, and funny how a box of wood and wire and ivory can provoke so many thoughts and emotions. And above all it makes me even more grateful for the wonderful woman that walked into my life, and made it truly beautiful.

The Innovation District

Boston has an area that was once famous for housing absolutely nothing other than a large barren parking lot.  This particular parking lot happened to be located right on the harbor, which made it especially unpleasant in the winter when wind would come howling across what was essentially a man-made plain, chilling you to the bone and more often than not resulting in your car refusing to start if you left it there too long.  In recent years though the Mayor of Boston (Tom Menino, for those of you unfortunate enough not to live in the Greater Boston area) wanted to transform Boston into the high-tech epicenter of Massachusetts.  The Boston area has always been a high-tech haven, but one peculiarity of this area was that most of that high-tech was concentrated outside the city proper, either along the Route 128 corridor west and north of the city, or in Cambridge, Boston’s next-door neighbor which has been in a mostly-friendly competition with the city for many years when it comes to attracting high-tech companies.  To try to become more competitive, the Mayor established The Innovation District a few years back, in the area formerly best known as the place where car batteries went to die, the air smelled of fish, and not much else of interest took place.

Boston is an interesting place to try to attract high-tech talent.  It has a wealth of institutions of higher learning and no shortage of smart people, but at the same time the culture of the city is definitely unique.  While known nationwide as a hotbed of liberalism, it can also be oddly conservative in some ways.  The City of Boston isn’t exactly known for it’s nightlife (and nightlife friendly laws) for example, but one of the things the city quickly acted on was getting a good selection of restaurants and bars to open up in The Innovation District.  What does that have to do with the high tech industry, you’re wondering?  Simple!  High tech is at its core a casual industry.  This isn’t banking or insurance, where deals happen over lunch while wearing a full suit and tie.  Some of the most important meetings I’ve ever been to have been at a small bar over a pint of beer at 11pm, and the only tie-mandatory-luncheon I’ve ever attended was as a part of a sales call to a school district.  So having a culture that supports the sort of things that high tech requires, where work hours can be as unconventional as the dress code, is actually quite important.  I like to think the planners of this urban renewal project got that, but maybe it was just dumb luck.  Either way, the end result was that the stage was set to attract some of those smaller start-ups that had been springing up in the suburbs, with the siren call of easy public transportation access and more interesting things to do than the local suburban mall could offer.  And so it began.

These days you’re seeing more and more larger, established companies making the leap to The Innovation District, thanks to tax breaks and a thriving high tech culture.  Google, Brightcove, and EnerNOC are a few of the large and growing companies that have either made or are making their move to the new home of Boston high tech.  This is great news for the city, for the companies that are moving there to take advantage of the services and culture it has to offer, and for the employees of these companies that are now choosing to call Boston their home.  There will always be companies in Cambridge and the suburbs (in fact I work for one), but having a central core to the industry will benefit everyone long-term.  I think this is the shot in the arm the area needs to once again attract the titans of the industry and become competitive with Silicon Valley on more than just an academic level once again.  I’m looking forward to seeing the talent and ideas that are sure to thrive in The Innovation District, and the positive effect it will have throughout the industry in Eastern Massachusetts.

Learn It Now!

One of the challenges of a career in technology (likely careers in most fields these days, but I won’t presume to know the details of fields that I haven’t worked in myself) is the need for constant learning.  If you’re in technology you’re likely the sort of person who enjoys learning new things, and would quickly become bored in a career that wasn’t one that required lifelong learning.  But a full-time career isn’t a 40-hour-a-week job if you want to excel at it, and sometimes you may even want to learn a bit about a topic that isn’t directly applicable to your current position.  Perhaps you’re looking ahead and want to build skills for the position you want to achieve next, or you’re just plain curious about a new topic.  Whatever the case may be the challenge is always the same, and it’s not a willingness or a capacity to learn something new.  It’s finding the time to dedicate to research and studying in order to become competent in the new domain.

One great resource I’ve found to get jump-started on a new topic is iTunes U.  There are a lot of classes available on a wide variety of topics, many are offered by well-known and even world-class institutions of higher learning, you can view the sessions anytime you’re free (great for 2am cram sessions), and best of all the sessions are all 100% free.  These aren’t all quick overview sessions either, some are entire college-level courses from places like Harvard University and Stanford University.  If you’ve got an iPad and a copy of the free iTunes U App, you’ll find a world of possibilities at your fingertips.

Staying up-to-date in today’s technology field can be demanding, but the tools that are available to help are pretty impressive.  Besides iTunes U there are sites like Khan Academy.  Even TED Talks can be great; They’re typically at a 30,000-foot level, but I often use them to help get a quick overview of new ideas, or to find new ways of thinking about things that I might not have considered before.

Happy Learning!

 

Resources:

The Evolution of Apple

If you had asked me at the turn of the last century what I thought of Apple Computer (now known simply as “Apple”, since just like the musicians Sting and Prince they’re now too cool to need more than a single word identifier), I would have actually scoffed.  “Completely irrelevant,” I would have said, “no different than 15 years ago, it’s just that now they finally have to admit defeat.”  Who would have guessed that all these years later I’d sit here typing this on my MacBook Pro, with my iMac in the other room, two iPhones and an iPod within reach, an AppleTV sitting under my television, and an iPad charging on the kitchen counter?  What changed?

Things started to change for me when OS X was introduced.  I’d enjoyed playing around with a few Linux distributions (SuSE was a particular favorite, despite my Linux-nerd friends insisting that going with anything other than Debian was a clear sign of mental impairment) but hadn’t done much real Unix work since my college days.  It was a fun OS to play with, much deeper and more flexible than DOS or the variants of Windows that were available at the time.  And the old Apple System Software was laughable and couldn’t even be compared in my biased brain.  But a real Unix box that I could buy for a reasonable sum, ready to drop on my desk and start playing, now that was interesting.  But there was still the problem of those damn Motorola RISC chips with their wrong-endianness.  You could claim they were supercomputer-class all you wanted, they still felt damn slow to me compared to a middle-of-the-road big-box Intel PC running Windows.  But then light dawned, and Intel CPU’s became the choice for the next generation of Macintosh computers.  I bought the very first iteration of the iMac that was released, and within 6 months had replaced every single Windows box I owned with a Mac.

What made me make the switch?  A lot of things, in retrospect.  I was a tech nerd and liked the Unix-on-Intel workhorse, but there’s no denying the machines were sexy.  Anyone who is into technology always likes new toys, and the OS X-based Mac was a new shiny toy that made the old Windows boxes feel very clunky by comparison.  Both are perfectly fine of course, but that newness really spoke to me.  I wanted something different, and for the first time in a long time I felt like I had a choice of viable computing platforms.  I’ve since gone back to work on Windows platforms professionally and have no problem doing so, but I do like my OS X still.

There’s been a lot of talk lately about what’s next with Apple, now that Steve Jobs is gone.  Things have been changing and will continue to change to be sure.  But if there’s one thing that’s a constant in technology it’s change, just as in life.  Apple was saved by a mere $150M investment by Microsoft once upon a time.  Today Apple has more cash on-hand than the Federal Reserve.  That’s quite a turnaround by any measure, but just like Microsoft before them, Apple is now the target everyone is gunning for.  It’s tough to predict what the Next Big Thing will be.  I’ll always think the iPod was the one thing that put Apple on the dramatic recovery road they wound up on, and if you look at sales figures today the iPod is clearly on the wane, having been displaced by the iPhone (why have a phone and a music player when you can have one device that does both?).  I don’t think the loss of Steve Jobs will be the undoing of Apple, and I don’t know if there will be an undoing of Apple any time soon, if ever.  But the odds are, someday, there will be something better.  That’s not reason to be sad or doubt technology, that’s reason to look toward the future with high expectations and anticipation.  Then again, look at Nintendo.  For a company that started out selling playing cards over 100 years ago, I’d say they’re doing pretty well as a technology company.  Maybe if Apple starts to stumble in computers again they should look into playing cards?

Googweil

I spent a few years sitting in an office next to Ray Kurzweil, developing reading software for people with disabilities.  It was a very challenging, interesting, and exciting time for me, not only because of the fun projects I got to work on but also because of the smart and talented people I got to work with.  Ray was definitely a key member of that smart and talented roster.

A couple of days ago I heard that Ray had joined Google, where he was going to work on some unspecified natural language processing projects.  This was interesting not only because of the type of project (natural language processing is something I was involved with for many years thanks to Ray, and I still have a lot of interest in), but also because of the unusual nature of this partnership.  Ray has a long history of starting successful companies, so why would he now decide to join one of the largest and most established giants in the technology field?  And what does Google have in mind to put his talents to use on?  As Bill & Ted would say, strange things are afoot at the Circle-K, and I’m intrigued to see what sort of fruit this partnership will bear.

Mobile Mania

You know what I really like about iPhone apps (please don’t send me hate mail if you’re an Android or Windows Phone fan, I’m sure this same argument applies to those platforms too but I’m an unabashed Apple fan)?  The simplicity.  I love that although the device itself is far more powerful than that Commodore 64 I learned to program on decades ago, it’s still relatively simple enough that I can get the whole thing inside my head.  With each subsequent release of the iOS SDK it gets harder and harder, sure, but for now at least it’s still possible for a single developer to turn out really innovative, engaging applications in all sorts of genres.  To do something similar on the Windows Desktop platform, for example, takes many times the effort and often multiple people, as there’s just too much for one person to really know the ins and outs of the whole system.  But the iPhone is still a developer’s dream.  Powerful yet simple.  Elegant yet sophisticated.  You can pick up a couple of books and develop your first app in a week.  I remember when I first went from DOS to Windows programming how I thought I’d never crack the mysteries of Win32s and COM.  Eventually I did, but I gained some gray hair and lost a little sanity in the process.

A lot of iPhone apps are nothing more than a GUI front-end for a bunch of back-end web services.  That’s nice because if you develop a reasonable SOA architecture you can almost get an iPhone app for free, all you need to do is build the “V” in the big-picture MVC architecture (bear with my metaphor here, you still need a model and controller in the iPhone app but they’re relatively thin in these cases – the heavy lifting is done behind the nice REST API that you or someone else developed).   I love that you can develop a set of web services that can be shared between your web app, desktop app, and multiple flavors of mobile apps.  You can fix a bug in those services (if you made one – You don’t make bugs in your code, right?) and all your apps are fixed without a need to recompile and redistribute them all.  More importantly, you can easily achieve functional parity across platforms and focus on UX, which is precisely where the platforms should differ.  An Android user isn’t going to want to suffer through alien iPhone UI concepts and vice-versa, after all.

If you want to though you can simply treat the device as a standalone computer and write a game or an application that is entirely resident.  That’s very powerful, and something that until fairly recently couldn’t be done adequately with a web application (HTML 5 to the rescue!).  When you’re somewhere without access to the network you’re going to be happy that you have some applications that can operate standalone, trust me.  And there’s an entirely different mindset that comes with developing these types of applications, and I think in order to truly be an outstanding Engineer, you need to be more familiar with the hardware than many who simply write for the browser are.  You need to get under the hood a bit and understand the hardware.  With a browser-based app you can avoid that.  Understanding how hardware works will make you more effiecient, and is definitely one of those things that can help a smart Engineer move into the realm of a superstar.

Oh, and in the spirit of Apple, there’s one more thing.  I have a real soft spot for manual memory management.  And for C.  And even the humble beginnings of OO as debuted in Smalltalk.  So put all those things together and what do you get?  Objective-C and Cocoa Touch of course!  Keep your new-fangled ARC.  I’m going to do things the old-fashioned way.  Oh, wait.  There is that whole shiny Grand Central threading model to explore…

The Anti-Social Network

I finally saw the film “The Social Network” on a flight back from Peru (which is a whole other long story that doesn’t belong on this blog…).  I had heard a lot of good things about it, and it was certainly a topic that interested me, but it seemed there was always something better, more important, or more distracting to do.  Being strapped into a plane seat for 9 hours left me with precious few other distractions, so I figured it was time to catch up on some two-year-old cinema.

The film was enjoyable, even though it was sort of like watching “Titanic” (another film I never saw) in that you already knew exactly how it was going to end.  The fun was entirely in the journey and the characterizations.  The acting was great even if there was a bit of scenery-chewing, and the story was one that everyone in technology dreams about at some point; Coming up with the next Killer App.  There’s a lot of folklore around this particular story and a lot of astonishment at how quickly the first version of Facebook was created, but the truth is that’s usually how it works.  The best Engineers are orders of magnitude more productive than the merely decent Engineers, and pushing out a new product in a weekend isn’t all that uncommon.  Getting a product to market is actually often much more complex and time-consuming.

There are two really interesting things about this story.  The first is that the concept that was explored was a social network that replicates the college experience on a computer.  You could argue that it would take a truly anti-social person to want to develop such a thing, but in order to develop it in the first place this person had to have a lot of insight into the mechanics of social interaction, and what makes it interesting and addictive to humans in the first place.  The sheer number of members and dollars involved in the Facebook empire at this point is a pretty strong argument that not only are those mechanics compelling, but that they were captured in an accurate way in the software powering that site.

The second interesting thing is that in many ways, the money that appears to be the focus of the battles depicted in the film isn’t really the point.  The conflict is more about ego, and ownership, and control, rather than money.  Money is a consideration to be sure, but I walked away from the film thinking that this project, like all truly revolutionary ones, got where it was because of passion, not because of dollars.  There was a vision, and a lot of work to make that vision a reality, and although the money was nice it wasn’t the point when the project started.  I’ll leave it as an exercise to the viewer to decide if money eventually became the point, but at the beginning, I don’t think it was.  At the beginning it was all about doing something better and faster than anyone else.  And that is the kind of attitude that makes great things happen, not a desire for another billion dollars.  The desire for another billion dollars results in safe bets.  The desire to do something great takes risks, and the rewards will come if they’re not the reason for making the bet in the first place.

Posted in Art

Data Visualization

There’s a lot of chatter about data these days.  All sorts of interesting new terms are coming into the lexicon, things like “NoSQL” and “Big Data” and yes, even “Data Visualization”.  What exactly is data visualization?  It’s a fancy way of describing a relatively simple concept, which is showing data in ways that make it quickly and easily understandable at a high level.  You can grok it with a glance, if you will.  For a simple example take some Excel data that you show as a line graph.  That line graph makes it easy for you to quickly get a feel for the data without necessarily needing to know the specific data points themselves.  But more importantly, it makes relationships between the data points obvious in ways that viewing raw numbers never would have revealed.  Sometimes the results can be head-slapping, when you instantly see a graphical representation of some data that makes a cause-and-effect relationship immediately apparent, even if you’d been studying the data in spreadsheet form for months with no real “A-Ha!” moment.

Infographics are one form of data visualization, and one that many people can  probably relate to.  But the real power of data visualization lies in flexible frameworks that allow you to display the data in all sorts of formats, perhaps even formats that the designer of the framework hadn’t even intended.  Different data sets may call for different ways of viewing them, and some of those means of viewing them may not make sense for other data sets.  For such a seemingly simple topic, data visualization can get fairly complex.

I have some ideas for interesting data visualization tools that I plan on experimenting with in the coming weeks.  If I come up with some interesting things I’ll follow up and post more on it here.  In the meantime, go ahead and poke around with all those funny menus in Excel that you never really explored.  There’s a lot in there, and you may just find yourself looking at your data in a while new way.

For a fun fictionalized version of what Data Visualization can do, check out the book “Mr. Penumbra’s 24-Hour Bookstore” by Robin Sloan.  You can get a copy here:

http://www.amazon.com/Mr-Penumbras-24-Hour-Bookstore-Novel/dp/0374214913

Technology, Business, Art, & Language

“Why those four things”, you might be asking yourself.  The answer, as it turns out, is quite simple.  This is my blog, it’s not a democracy, and those are four things that I have a lot of interest in!  So if you find that list of topics too eclectic for you, feel free to sort by category.  Once I post some articles that actually have relevant tags, that is…