Monthly Archives: July 2013

“That’s Academic!”

As I’ve noted on my showcase website, my Grandpa used to say, “School is like a gold mine.  You get what you dig out of it.”  It took me a long time to grok what he meant by that.  But, after activating cellphones for a year and realizing if I didn’t get a college degree, my life wasn’t going to improve much, I began to understand.

So, I went to school and I studied.  First Film, then on to Computer Science.  In my Computer Science courses I worked hard to understand topics such as x86 assembly, topics that other students were all, “When are we ever going to need that?” about.  I worked to learn them because I thought I needed them to be successful in industry.

Now, I get there are different priorities in Academia Vs. Industry.  Academia is about papers, Industry is about products.  When I went back to Graduate School I didn’t have an understanding of that so, well, I remember being in a hallway talking to a fellow seasoned veteran who came back to school, asking him if he knew where his rear was after taking some exam.  He said he didn’t know and he also said, “You know something?  I thought when I came here I was going to teach these people a thing or two.”  “These people” meaning University Professors.  I don’t recall if I told him at the time he wasn’t alone in his line of thinking but, he wasn’t.

I don’t know how we both were so naive in our thought process before going to Graduate School.  After all, if we knew so much why were we there trying to earn our advanced degrees?

Academia didn’t care about what I did in industry.  But, my professional experience was useful because I was able to put together projects with speed that impressed both my fellow students and my professors.  But it wasn’t the product that was important, it was the theory that led to the creation of the product.

What I find sad is, how little the Industry I’ve worked in cares about Academia.  I’ve heard, “That’s Academic!” used as a slur or as a way to deride an idea or approach.  I’ve seen intuition used to solve problems instead of facts and critical thinking.  And I’ve seen unmaintainable code bases emerge as result.

Knowledge.  Understanding.  Ideas.  Research.  These come from an, what I would call, Academic mindset and I know Industry would do well to pay attention to Academic knowledge.  Not just shooting from the hip to make a product.  Not piecing together code from open source websites to make what you’re trying to make go.

I don’t know people’s reasons for getting into Software Engineering and I don’t want to cast aspersions about.  But I’ve hit this attitude that Academics aren’t important enough times that I do want to push the argument that Academics do matter.  How ever the Academic knowledge is acquired, it does matter.  Especially if you want quality, maintainable, efficient code.

What Obsolete Innovation: 4 min

My mom’s old 8-track player always fascinated me.  I never heard it, was never sure how it worked but it was big.  With buttons!  Best of all it was hidden away and embedded in a big ole’ chest.

Thinking now I wish that thing had been in the basement of my Grandparent’s house where my cousins and I would play make believe.  I bet we would have come up with some inspired uses for it.  After all, down there is where we ran subway trains that were powered by burning incense.

Write Once Debug Everywhere

When I was just starting out in the field of Software Engineering there was only one player I needed to concern myself with: Windows XP.  In a way, those were the days.  I didn’t have to worry about how my code would behave on this platform vs. that.  Because of the common operating system my software, just worked, or didn’t because the platform it was running on was the same.

Vista was a myth in my world but then came Windows 7 and I had to encounter User Account Control.  This was tricky problem for the company I worked for because, by design, we stored all our data in globally accessible Memory Mapped Files.  Problem was you needed elevated privileges to create Global file mappings and that was not a guaranteed condition we could expect. So, we began to make some changes…

I doubt I could count how many platforms and environments I have to worry about now during development as they include ranges of web browsers, operating systems with varying endian-ness and word sizes.  Some are bigger troubles than others but by golly they’ve left me nostalgic for the consistency and stability of my XP days.

The most nefarious of the issues today is this idea of being able to write code in one language and compile it across platforms and have it just work.  Java comes to mind, as the JVM is implemented across several platforms.  It was also in regards to Java that I first heard the statement, “Write once debug everywhere.”  Well, I recently hit the same thing with Xamarin and building for Windows Vs. iOS.

My management loves the idea of Xamarin and its promise of write your C# code once and have it run anywhere.  It’s great in theory.  But again, what’s the difference between theory and practice?  In theory nothing in practice everything.  Fact is, when you change the environment software is operating in you are likely to change it’s behavior.  This is true for JavaScript, Java and Xamarin.  To be fair C ends up with issues too (I’m looking at you stricmp and strcasecmp) but at least in the C case, and in my anecdotal experience, they’ve been things that end up not compiling which is a different class of errors to those that break at runtime.  Those runtime errors are the buggers too cause you’re left with problems of trying to write something that will make all platforms happy which can be quite a daunting task.  Then you get cascading consequences of making changes and the bug count begins to rise.

I don’t like repeating myself so I don’t like it when I have to do the same job only for platform “X” this time in the language of platform “X”.  Yet, there are advantages, such as being able to use the affordances of platform “X” without regard to platforms “Y” and “Z” and that’s nice.  And being able to change one platform without worry of breaking another because the code bases are separate.  I guess my point is, as with most tools, shared code across platforms is no Silver Bullet.