Saturday, February 13, 2010

Oh for some programming....!


Warning: Geek ahead!

When was the last time you wrote a program?

The last serious program I wrote was a Linear Predictive Coder. It was in the third year of my engineering. Eight years ago.

It was not much of a program really (going by what a lot of my coder buddies do for a living that is). It was some few hundred lines which me and Dabba at college put together in a rush of sincerity. We could have simply downloaded it off the web and tweaked it. Instead D and me spent hours at the library poring over books to understand what the hell predictive coding did and after a semester of sweat, toil and missed siestas put together something which took a perfectly intelligible audio snippet and made it sound like some guy badly in need of a gargle.

The interesting part was, it worked. It took a high bit-rate audio stream, converted it into an extremely low bit-rate stream and then reconstructed it to the great delight of my Design Lab professor. He was so delighted, that he remembered us all through and would've given both of us solid reco's had we asked.

Dabba is now Doctor Dabba (soon to be Mr. Doctor. Dabba...yes guys, he is getting married) and still does some sort of signal processing for a living.

I on the other hand went off into circuits.

Mind you, I love my job. I love making transistors work. I love the fact that my job gives me the same rush that missile designers get. Months of toil and perseverance checking and double-checking things and it all either goes up or stays down. All in five minutes.

What I do miss is the programming. I dislike the fact that I can no longer discuss the relative merits and demerits of emacs/gvim or nedit. I dislike the fact that there is hardly anything I can do on command-line using something that is free or open source. I hate it that I hardly ever see the “segmentation fault – core dumped” message.

Ok, I see it sometimes, but that means that now instead of solving the problem myself, I have to call Cadence customer support.

Yep, these days the closest I get to programming is with MATLAB. And that is mostly to plot stuff. I just submitted an assignment and my “program” basically plotted two streams. All the other intelligence was reserved to the discussion of the kinks and curves in the two plots that I had to write by hand and append.

If MATLAB could, it would've deleted itself, annihilated all its handles in the registry and crashed my computer. Its like asking Superman to do the dishes.

The frustrated programmer within me surfs avidly about the pros and cons of MATLAB, Octave, Scilab and Sage. I have half a mind to take up a really math intensive course under a sadistic prof only to have the pleasure of writing one big code in .... something. (Ok, I am taking this too far I know).

But I am afraid, after almost eight years of doing analog design, I have come to the sorry conclusion, that programming and analog design don't mix. At-least for the designers.

People always did not think so.

In my previous company, a verification guy (verification is all coding and scripting) decided to do some analog design for a change and for the next three years all the analog designers cursed the day his boss gave him analog work. He decided that a lot could be automated. And then automated it. The bosses loved it but all the analog guys hated his guts. While it created some efficiency, it threw off all the touchy-feely intuition that all analog guys need to cultivate.

Designing a circuit started to look like writing enough checking scripts. The problem was the scripts would check all the nook and crannies of the circuit but would take an entire day doing it. When the result came out, the designer would think that some minor tweaking would get the results in line only to find out the next morning that some other spec is being missed now. Simple circuits would get held up because no designer bothered to think but blindly tweaked and ran scripts.

By the time I left that organization, none of his scripts were being used. He went back to verification.

Simply said, programming and analog design don't mix. I wish they did. They don't.

And I look sadly at the range of programming compliers and mathematical programs lying in my core2duo macbook...... and write this blog.

printf(“Hello World\n”);