Monday, June 27, 2011

How do u explain things ?

Every practice (of a trade ) has got it's own specialized lingo and when you encounter some issues or new insights , It needs to be communicated in the lingo. To master the lingo of any craft , we need to be a good practitioner as well as a meta analyzer. Most modern professionals (some one who earns a living out of a profession ! )  are too lazy to learn their language and they make communication difficult at the highest level.

In the name of de-jargonization , they beat around the bush to explain things which can be explained succinctly in the lingo of the craft. Jargons are a device which helps one to explain things fast. They are substitutes for a vast body of background information.

This phenomena is prevalent in the Software Industry.



Wednesday, June 22, 2011

Software Engineering - Practice the craft ,the way a doctor practices medicine

Recently , I happen to get into an argument about the interpretation of some statements in a document. Judging holistically , I thought I had a great point there. By beating around the bush , others were adding noise to the argument.

Finally I was forced to say the following , " I practice the craft of Software Engineering , the way a doctor practices medicine. Being a "good" practitioner , There should be attention towards what I am saying ".

After  the "session" , I had a thought .

"How many of us will go to a doctor , If he is practising his craft the way a software engineer practices his own?"





Test Executors - Play with them,You will improve as a Programmer

Currently , I am playing with a proprietary Test Execution System to tweak some Test scenarios . The Kind of constructs in the "mini language" of the Engine contains some techniques which I have not come across till date.

After fiddling with the tool , write some use and throw test executors in C/C++ or C#. This will improve your programming skills. The reason is you will gain more meta knowledge about Programming.



I saw "Named Pipes" years later

Fifteen years ago , when I was into fourth year of my career , I happen to work with a system which uses network communication via Named Pipes in the then nascent Windows NT 4.0 system. Then , I moved to another company and all were amazed that a new guy with skills in Named Pipes Programming is joining them.

Hearsay is that , there were panic among the Programmers about the ways to tackle this new guy. When I heard this , I probed deep into the matter. Most of the top programmers there had gone for an Interview with a Chennai based company. None of them could utter a word about Named Pipes (when this was a question for every one ) !.

Yesterday , I happen to see a wonderful event based system for Firmware testing which uses Named Pipes as a IPC mechanism.

Sunday, June 19, 2011

Technical People and Tyrany of Business

I know an incident where a good techie's personal effort led to a great business opportunity for a company.As the business grew , more and more positions were created around him and he had the ability to occupy any of these positions. But, since these positions were build around him , his movement anywhere will make the system collapse. Slowly and Steadily he is subjugated as a mere low level liasoning manager with the client. People with less ability were appointed as his manager.

Saturday, June 18, 2011

"Kansas Beef" Software Professionals

Some Indian Software services companies pick students straight out of colleges and make them undergo some stringent training program before they get induced into the project. This three/six months program is akin to Buffaloes in Kansas being pumped with some drugs to become beef ready.

Tuesday, June 14, 2011

Financial Accounting/Inventory Control for Small and Medium Businesses

The Package was supporting Journal , Ledger , Trial Balance , Balance Sheet and Printing of Schedules. Since MSDOS was a system with limited amount of memory , tables were partitioned based on months. This helped to have a low memory footprint system. The System supported Multiple companies under a single desktop by having seperate folders for each company. An Inventory system was build and integrated with the package to provide an Integrated Finance/Stock system. A Backup system , Ability to print bills in malayalam and Charting was a unique proposition in those days.

This software had close to eleven installation in and around City of Kochi,India.

Tools :- CA Clipper,Turbo C/C++ , Turbo Assembler .

A Backup/Restore Library for MSDOS

LZ77 based Data compression library was written for this project based on the venerable "Data Compression Book" By Mark Nelson. I Modified Nelson's BitIO module to support 32 bit manipulation at a time using Assembler. Archiving package was written so that , things can be sliced and spliced using PC magazine's SLICE/SPLICE utiltity to floppy disks. The Library was interfaced with CA Clipper using Clipper's Extend System.

Tools:- Turbo C/C++ , CA Clipper

Using Mono to port a C# application to Linux/MAC OS X

A Financial accounting/Inventory software was written using C# and Winforms using Visual studio 2003 compiler. In an attempt to open source it , an experimental port to GNU Linux (Red Hat ) and MAC OS X was undertaken. The System was using a Win32 library written in C/C++ through P/Invoke. The Library was ported to both platforms by recompiling the source (with some tweaks ) using GCC. In a matter of 20 man hours , the whole excersize was undertaken.

Tools:- C# , Mono , GCC , Visual C++ , P/Invoke , GNU Linux , MAC OS X

Using WineLib to port a Win32 Application to Linux

In a project I was consulting , utilities were written by a OEM vendor in a cross platform manner. A particular application was running only on Windows. We could not use Wine because some Linux libraries are to be linked for making this program run under GNU Linux.

WineLib is a set of libraries and a special compiler driver called (winegcc) which can be used recompile your Windows app under Linux. To make the source code compatible with Winelib , I had to spend eight hours. The Application ran correctly under Linux.

This enabled our project to have some kind of Graphics preview of JPEG 2000 stream. The Windows application was using Video for Windows.

Tools:- winegcc , C/C++ , Visual C/C++,WineLib and Other Posix libraries 

Porting a MSDOS Clipper Application to Windows/Linux/MAC OS X

Most of the Applications till mid 90s were written using Clipper,FoxPro or Dbase ( aka Xbase ). A Financial Accounting Software Written for a Homoeopathic laboratory in Clipper was not working under Windows 7. The Clipper application was a 16 bit application and It had issues because of that with Windows 7. The Clipper application was with it's Summer'87 release.

I used DosBox Emulator to port the Summer87 release code to Clipper 5.2 and Compiled with Clipper Compiler. Using Harbour tool , I generated C/C++ code which can be Compiled with Platform's native
compiler . Used Visual C/C++ compiler to generate Win32 Application. An Installation under Linux was also planned using GCC. The same stuff worked with MAC OS X ( Snow Leopard )

Tools:- Clipper,DosBox,Visual C/C++ , GCC (Linux and MAC OS X ) , Harbour

Monday, June 13, 2011

Circuit Simulation Scripting Compiler and IDE (Projects)

Circuit Simulation Scripting System Compiler And Design of IDE. Scripts (a handy sub set of Visual Basic)

Are preprocessed to assembler mnemonics and later assembled Into a binary format to be interpreted by a stack based Virtual machine. The IDE is written in Visual Basic and MFC Regular DLL and Compilation Engine (C/C++ COM DLL) is Interfaced with Visual Basic using COM dual interface.



Team Size: 2



Role: Wrote the Lexical Analyzer and Parser using

GNU BISON and FLEX. Designed the Virtual Machine and the

Interpreter for the same for Windows NT



Software Tools: -

Programming Language: C/C++

Platform: Windows NT

32-Bit Windows Application to 16-bit code interoperability(Projects)


Development of a 32 bit Windows 95 Thunk DLL to Connect a 32 bit Visual Basic 5.0 Application to a 16 bit Graphics Engine written in Visual C/C++ 1.52.


Team Size :- single



Role :- Wrote the Thunk Scripts for All exported function.

Highlights :- Usage of Microsoft Assembler , Thunk Compiler



Software Tools :=

Visual Basic 5.0

Visual C/C++ 4.2 and 1.52

Microsoft Assembler 6.11d

Microsoft Thunk Compiler

Internationalization of 16 bit Windows Software(Projects)

A CAD product  was then a 16 bit software and to widen the market base , the stakeholders decided to support UI in Japanese, Korean and French as well. This involved automatic re-engineering (for instrumentation ) for the source code base.

Team Size: - 2



Role: - Wrote a Visual C/C++ DLL which loads the Localized strings from a Text File.Sophisticated indexing schemes are used to scan strings very fast and to work around 64K array limits. Wrote the DLL and DBCS parsing routines to work with Japanese Kanji Character Set. Wrote the Automatic utilities to
extract message Strings from 30 odd Visual Basic Projects and 7 Visual C/C++ projects to Sort and Classify the Message String. Perl scripts were used to Sort Strings.



Highlights: -

Software internationalization Concepts

Scripting Tools

Memory sharing through DLL's in 16 bit windows





Software Tools: =

Visual Basic 3.0

Visual C/C++ 1.52

Visual C/C++ 4.2 Command Line Compiler

Perl

An Web based Framework for ASP business Model (Projects)

The Framework was written for a (Application Service Provider in the) financial services company with a web based investment advisory platform. The Framework runs in a Load balancing environment and has got a distributed task processor to run daily jobs. The Task Processor runs in the Application worker process to utilize the Object caching mechanism of the framework. The Objects are persisted on to database using a home grown OR/Mapper by using .NET reflection API. The Framework uses Domain Driven Design and FDD to manage the business logic with a MVC (Page Controller – Microsoft Patterns and Practices) front end and uses best practices of the web application development community. One of the hands own project which I did was addition of a domain specific language which could generate .NET IL code on the fly and if needed can be persisted on to a DLL or EXE assembly. Till recently, the site was co-hosting ASP.net and ASP pages under a single authentication and authorization sub system. The framework has got a Object container to cache the recently used object.



The Framework was ported to .NET  3.5.Prototyped some WPF visualization stuff too.



Technologies: = ASP.net/VB.net/C#/Java/SQL server/MSMQ/BFRG (java report generator), scores of third party libraries.

A .NET/iPad Educational Platform (Projects)

EduPad is a chair side education platform (Ocassionally connected application ) for Businesses all across America. The iPad based front end with rich graphical user experience interacts with a Enterprise Infrastructure hosted using .NET stack. Since the product is meant for  Application Service Providers , This is practically speaking a Product Engineering Outsourcing assignment. The deliverable is source code of the whole application and it was challenging from a technical breadth point of view. The project includes subsystems for Data Synchronization , Overlay editing , WCF communication Layer , ASP.net large file uploads/downloads , iPad large file uploads /downloads , Secure access etc


Team size :- 8

Role : Was Primary Architect of the Product from Product Definition to Implementation. Since the whole team contained people who are new to Apple Programming Model, I chiped in to develop a Overlay editor with good UX support as per Apple Human Interface guidelines using Quartz2D.
Tools and Technologies :-

Objective C/C++ , iPhone SDK , ASIHttpRequest , Quartz2d ,Sqlite 3.x , Visual C# ,SQL Server 2008, WCF Web services , ASP.net HTTP Modules , SOAP client implementation using Objective C/C++

Spreadsheet Rules Evaluation Engine (SREE)using C#/.NET(Projects)

Microsoft Excel is a popular tool with business executives. Dell Corporation was interested in using Excel as a Mechanism to input Business forecast related information to their Business intelligence software. The Validation Of Data in the Excel sheet against XML files and RDBMS with semantically correct notification mechanism can only be handled with a Domain specific language, which should be interpreted.The language has got special constructs to symbolically refer to Excel worksheet contents (Cell reference notation), Xml Tags and RDBMS Column names. The Parser Uses Recursive descent to interpret the script. The Compiler was written using C#/.NET.





Role: - Designed the syntax and semantics of the language. Implemented the Parser and run time Engine using C# . Also wrote a Win32 service using C# to trigger Validation at an interval of five minutes. The system monitors a set of folders for incoming spreadsheet files.


Team Size : 1



Software Tools: Visual C#/.NET , ODP.net , Oracle 9i,VBA macros

32-Bit Windows Application to 16-bit code interoperability(Projects)

32-Bit Windows Application to 16-bit code interoperability


Development of a 32 bit Windows 95 Thunk DLL to Connect a 32 bit Visual Basic 5.0 Application to Edwin 16 bit Graphics Engine written in Visual C/C++ 1.52.



Organization : Visionics India Pvt. Ltd.


Team Size :- single



Role :- Wrote the Thunk Scripts for All exported function.

Highlights :-

Usage of Microsoft Assembler ,

Thunk Compiler



Software Tools :=

Visual Basic 5.0

Visual C/C++ 4.2 and 1.52

Microsoft Assembler 6.11d

Microsoft Thunk Compiler

Career Objectives


Looking for Positions where a high level of Technical competency,Business acumen and Software engineering skills are desirable. I will be an ideal candidate for organizations which are in look out for people who can drive engagements which requires core engineering skills , experience in delivering demanding systems/business applications , expertize in building robust computational structures/domain specific Language skills etc., to deliver Products and Services. Excellent track record in pre-sales , technical marketing ,documentation,program/practice management and solutions architecture makes me a candidate suitable for strategic positions.

Distributed Trade Engine for On-line Trading (Projects)


Worked as a member of a group developing Client/Server Application in Windows NT. Application is meant for Stockbrokers to do on-line Trading with National Stock Exchange of India (NSE). The application communicates with the Server Located in Bombay via a VSAT Link using X.25 Packet Switched Network Protocol.

Team Size :- 5



Role :- Wrote the C++ classes to hide the complexity of Oracle Call Interface. Wrote inline Assembler routines to convert data from network byte order to little endian Byte order. Wrote Visual C/C++ front End using MFC and Wrote routines for Network Connectivity using X.25 PSN Protocol library from Eichon Technologies Canada. Also Worked on making a Front End which can swap the back end Database (ODBC API).


 Software Tools :- Visual C/C++ 4.0 ,Borland C++ 5.0 ,Oracle Work Group Server.

Sunday, June 12, 2011

Interrupt Driven Serial Communication (Projects)


A fully functional interrupt driven Serial Communication Library for CA-Clipper 5.2 X-MODEM File Transfer Protocol was implemented using this system. This System is used in couple of places for PC to PC communications.

Team Size : - 1


Software Tools : - CA-Clipper 5.2,Turbo C/C++,Turbo Assembler

Digital Cinema intiative Compliant Server (Projects)

Digital Cinema intiative Compliant Server


DVS is a OEM vendor who is into the business of producing DCI approved JPEG 2000 based boards for Digital media processing , broadcasting. A DCI standard server API is being built on GNU Linux using DVS OEM SDK and Open Cinema Tools .We created this SDK for DVS (to be offered to their clients ), Hanover Germany. The API we created exposed a Coarse Grained Library for rapid creation of DCI compliant Screen Management and Theater Management System.



Role :- Independent consultant



Team Size :- 4



Tools :- C/C++ ( GCC ), CenTOS 64 bit , Qt , DVS OEM SDK , Xerces XML Parser , OpenSSL

iPhone OpenGL ES 2.0 Application (Projects)

iPhone OpenGL ES 2.0 Application


OpenGL ES 2.0 is a subset of OpenGL targeted at Phones and Hand held devices. The Project involved porting an i-Phone based OpenGL 1.1 ES application ( it does not support pixel shader/vertex shader ) to OpenGL ES 2.0. After setting an OpenGL context using Cocoa , we ported some shaders written for OpenGL 2.0 (desktop) to i-Phone. The Project contained a C++ based Vector/Matrix math library compiled along with Objective C modules.



Role :- Independent consultant



Tools :- MAC OS X , Cocoa , OpenGL ES 2.0 , Objective C/C++ , I-Phone SDK 3.x , Xcode (IDE) and GCC

MS Visio To XAML convertor proto-type (Project)


MS Visio is a popular tool among interface designers to sketch the wireframes of the UI interaction schema. Being a structured graphics application , Visio can be used as a good UI modeling tool by using smart shapes technology. VBA macros were written to provide User experience to the designers . VBA macros were packaged along with stencils . A visual C/C++ add-in was written to create a tool bar in the Visio and generation of the XAML code by walking the Visio Object model.



Role: - Wrote the C++ Pluggin and VBA macros to add intelligence to the shapes. Also wrote a quick VBA converter to use as a reference to the C++ converter



Software Tools :- Visual C/C++ , ATL , VSTO , VBA macros

Graphics Engagements for a Tacoma based company. (Projects )

A) UGS Demo


Created a 3D model viewer using WinFX (WPF) and Open Packaging convention.
UGS is a Solid modeling products vendor. The project sponsor was Microsoft

B) Dynamics AX demo

Created a .NET control to be hosted inside Dynamics AX. The project sponsor was Microsoft.


C) Toblerone control

Created a Toblerone control using WPF



D) Conversion of content cloud application to WPF

Worked for  porting an application written using WinForms/GDI+ to WPF.


f)Participated in the production of Custom controls



Software Tools :- C# , WPF2D/WPF3D , Visual C/C++ , ATL , VSTO , VBA macros

Various Graphics Engagements for a CAD Vendor (Projects)


The World's leading CAD software has a series of products housed under the umberlla of  Collaboration Services. This includes file format viewers , Composers (overlay annotation ) and customization of their OEM engine. They also had a portal management software meant for engineering collaboration.


Role: Technology transfer , Liasoning with Client’s technical heads,Mentoring a bunch of C++ , C# developers to scale up to the demandsOf shrink-wrapped product development. Practice management
of API testing setup under my anvil.The development for these products was undertaken from San Fransisco , Ithaca. NY , Atlanta ,Shanghai and Bangalore.

Wrote a Registry capture Tool ( Which will transparently grab registry Entries associated with a ATL/COM component ), Consulted for the development team for writing a  printing engine. The graphics engine used Was HEIDI from Autodesk and HOOPS from Techsoft America .



Had been to Client's place ( San Fransisco and Ithaca office ) for Technology transfer In the month of May,2005



Team Size : 70



Software Tools: Visual C++ , HOOPS3D , HEIDI , C#,OPENGL

POC of a 3D graphics engine for surface modeling (Projects)

Design of a 3D graphics engine for surface modeling

Aim of this project is to write a three-dimensional graphics engine for a huge CAD/CAM/CAE application for Collaborative design and development. A prototype application was developed to test the graphics engine. The tools used are Java3D, Java Beans, InfoBus and OpenGL. Legacy C/C++ code was interfaced with java using JNI.

Role and responsibility:= as part of this assignment, I trained a group of Japanese engineers in Java3D. Designed and developed a library for modeling and rendering of Bezier-curves, bezier-patches,B-spline curves and patches, Non-uniform rational B-spline (NURBS) curves and surfaces.


Team Size :- 8

Platform :- Windows NT/2000

Software Tools :- JDK 1.3

BDK 1.1

Java-3D v1.1

OpenGL 1.2

32-Bit Color graphics Software Rendering system (Projects)

32-Bit Color graphics Software Rendering system


Aim of this project was to teach elements of 3D graphics programming To a group of programmers. This software renders the polygon mesh with Texture coordinates and lighting parameters (using gourard, phong) to the memory. The contents of the memory were later copied to device using a 32-Bit DIB.With minimum effort one of the team members had a port for GNU Linux.Sample programs were written using the rendering systems and OpenGL to Test the OpenGL lighting model implemented by the rendering system.


Role and Responsibility : I was the lead designer for the software Wrote the 3DS Max Plug-in To export the mesh to proprietary file format.Also coded OpenGL Lighting model,Matrix transformation routines and graphics pipeline .



Team Size :- 5


Platform :- Windows NT/2000 ,Red Hat 7.2

Software Tools :- Visual C/C++ , 3DS Max 3.1,OpenGL 1.1

Graphics Engine for an Electronic CAD application (Projects)

The Engine uses advanced GDI concepts like co-ordinate mapping, Transformation, Scaling, Rotation,
Geometric hit testing and off screen Bitmaps. Critical part of the Code is written using inline assembly
Instruction to enhance performance by a factor of two to three. The Engine uses advanced C++ Constructs like persistent objects,Overloading of stream operator to work with our object Database of variable length objects, inheritance to do Canonical search through Object hierarchy etc. Also designed the Vector Pen plotter Font Format and Manipulation routines. The Functionality of classes were Exposed as COM Objects (The Application is developed in Visual Basic . it contains 3 millions lines of VB code and 1 million
lines of portable C/C++ code). Later OPENGL Support was added To the Engine (Instead of GDI).


Team size: 2


Software Tools: -

Programming Language: Visual C/C++, Visual Basic

Platform: Windows NT

32-Bit Graphics Emulator for Windows GDI on Windows 95/98 (Projects)

32-Bit Graphics Emulator for Windows GDI on Windows 95/98


Win95 /98 uses 16 bit co-ordinate system Internally and a  CAD package (Edwin) was having large scale Precision, which Win95/98 graphics Subsystem is unable to handle. The emulator library was written to rectify this situation. This enabled the software vendor to run their Flagship product on win95/98,
thereby widen it user base.


Team size: 1



Software Tools: -

                          Programming Language: C/C++, Visual Basic
                          Platform: Windows NT/Windows 95/Windows 98 

Malayalam Printing on Dot-Matrix printer (Projects)


When businesses began to adopt computers in a big way , there was need to print bills in Malayalam. The Font Editor was Written in Turbo C++ Version 1.00 and BGI. The fonts were loaded into the memory and a Parser was written in Clipper which will print Malayalam and English using suitable escape sequences. ROM font was used to print english in the Dot graphics mode. The C/ASM Library was interfaced with Clipper using EXTEND system. Later the Product was ported to FoxPro for MS-DOS version 2.6


Software Tools :-
                          Turbo C/C++ version 1.0
                          Clipper 5.2
                          Turbo Assembler

MS-DOS Business Graphics (Projects)


Clipper was a Programming Language/Database System development tool which supports Character User Interface. It had a robust C interfacing mechanism using it's EXTEND system. There was need to support charting.

To support charting , a Direct VGA Programming Library was written using Turbo Assembler in a C/C++ callable manner. On top of this , Wrote the code for Line,Ellipse,Rectangle,Triangle,Polygons (with holes) asa base for supporting Line/Bar/Pie charts. The System had a Bmp/PCX viewer as well. Since Clipper was compiled using Microsoft C , there was no support for IEEE 754 floating point , math co-processor were used compute sine and cosine.


Software Tools: -
                              CA-CLIPPER summer87/clipper 5.2
                              Turbo C 2.0
                              Turbo Assembler

Purchased a book @ BarCamp Bangalore 10

I attended a session by Shahikant Joshi about his book and relevence of Sanskrit Maxims for Contemporary life and leadership. The session was filled with nice anecdotes where he mixed Techspeak with some Sanskrit slokas.

In the End , I purchased a copy of his book , "Attitude Shift" . It is a very enjoyable book and I enjoy it for sure.

Friday, June 10, 2011

I will be speaking about SLANGFORDOTNET @ Barcamp Bangalore

I have just finished giving  final shape to my presentation @ BarCamp , Bangalore. This is my eighth Barcamp (all in Kerala ) and first in Bangalore.

The Open Source Compiler SLANGFORDOTNET is hosted @ http://slangfordotnet.codeplex.com




Thursday, June 09, 2011

Formal Employment History

Advisory Consultant at UST Global


March 2011 - Present (4 months)

Engagement Level Practice head with world's leading Chip manufacturer

Practice mangemant of System Software development and Test Automation

Marketing , Pre-Sales and Sales

Talent Sourcing

Practice manager at Cabot Solutions

June 2010 - January 2011 (8 months)

Setup a iPhone/MAC OS X/Enterprise-Mobile integration division

Hiring and Development of Talent pool

Technical Proposals/Business Proposals

Architecture review

Solutions Architect at Envestnet Asset Management


August 2007 - August 2009 (2 years 1 month)

Primary Technical contact for Enterprise Architecture Group

Ownership of Application Framework for all the product lines

Developer support for Product Development

Management of Technical support escalation

Enterprise application Integration (Java and .NET )

Software Architect at IdentityMine

May 2006 - May 2007 (1 year 1 month)

Architecture of Demowares for WPF and WCF

Primary resource for WPF 3D Graphics Programming

Rengineering of Winforms applications to WPF and XBAP

Principal Consultant at Global Symphony Services

December 2004 - August 2005 (9 months)

Liasoning with World's premier CAD software development company

Implementation of Print Engine for their Viewer

OEM customization of the CAD engine

Setting up an API testing practice and API documentation

Technical Architect at SysTalent

November 2003 - November 2004 (1 year 1 month)

Technical architecture of .NET/Java application development and integration

For a leading IT systems vendor based out of Austin,Texas.

Active involvement in Program management.

Senior Consultant at NeST

May 2000 - May 2003 (3 years 1 month)

Enterprise System Software Consultant with multiple projects.

Software Architecture Consulting

Technical Consulting

Assisting COO in technical matters.

Manager for their Digital animation/entertrainment division.

Technical Architect at Visionics India Pvt. Ltd.

June 1997 - April 2000 (2 years 11 months)

Lead developer for the Graphics Engine of a Electronic CAD software.

Interpreter development

Emulation of 32 bit Graphics

Mixed Language Programming using VB and C/C++

Tech lead at Nous Info Systems

November 1996 - May 1997 (7 months)

The development of a National Stock Exchange online trading client.

Visual C/C++ and Borland C/C++ development

Software Integration between Powerbuilder and Symantec C++

Software Developer at Indpendent Sotware consultant

June 1993 - October 1996 (3 years 5 months)

Design and Development of CA clipper based applications with C and Assembler Interface.

Malayalam Font Engine

PC to PC file transfer

VBX control development

Dos Extender Programming

Windows 16 bit programming

Unix programming

Programming Background and exposure

Programming Languages

C/C++ (Visual C/C++,GCC,MINGW32)

C# , Objective C/C++, Java , VB/VB.net , Perl , Python ,Auto IT

GUI front ends

Visual Basic 16/32 ,Win Forms (C#), Delphi, Win32,AWT/Swing (java) , MAC OS Cocoa,iPhone



Web Programming Technologies

CGI/Perl/C++, ISAPI, ASP/ASP.net

Java Servlets/JSP, Ajax.net Web services

C/C++ GUI toolkits (including Cross Platform Toolkits )

MFC, ATL, Qt, OWL, Motif,WxWidgets GTK+/GDK

Graphics API

OpenGL, DirectX , HOOPS , GDI/GDI+ , Xlib , Quartz ( MAC ),XNA

Graphics Shading Languages

GLSL , Cg , HLSL , RSL

Parsing Technologies

expat XML parser, Lex (GNU Flex),

Yacc (GNU BISON), ANTLR (PCCTS)

Web Application Frameworks

Apache struts , Envestnet Application Framework

Web servers / Application servers



IIS, Apache, Tomcat, JBOSS, Oracle JDeveloper

Distributed Technologies

COM/DCOM, EJB , RMI , WCF

Functional Programming Languages

LISP/SCHEME, Prolog

Database APIs

OCI (Oracle), DB-Library, ODBC, OLEDB, ADO, ADO.net, DAO

Database Backend

Oracle 9i/10g, SQL server 7 onwards

(Application development) Postgres SQL, MS Access

Operating Systems

DOS 16/32,Win16/Win32,GNU Linux, MAC OS X , SCO Unix

Mobile Applications development

IOS 3.x/4.x , iPhone SDK , OpenGL ES , Quartz2D ,Cocoa Touch,PhoneGap

Other Libraries

Boost (C++) , OpenSSL (C/C++) , Intel TBB (C++), OpenMP , Cocoa ( Objective C )



Technical Profile


Being a hard-core software engineering person , I have positioned myself as a Platform/Language/Technology agnostic professional. Due to the nature of roles I haveundertaken , exposure to new technologies has been a constant in my life. ( Technology explorations were to ship the software !)



1993-1995

I started my career with MSDOS/Novel Netware based application programming using CA-Clipper. MSDOS allowed programmers direct access to hardware (without writing a device driver !) and I created C/x86 assembler based libraries for Clipper (for other developers as well). The type of things I have undertaken include XMODEM/YMODEM file Transfer Protocol implementation, Malayalam Font Engine (it had fifteen installations !), LZ77 based data compression library , A B-tree library for local database,Clipper/Dbase file recovery tool,Direct VGA graphics programming (using C/x86 assembler) etc. Other things worked include projects on Phar Lap Dos Extended Programming Library for accessing the full capability of 386/486 machines using Microsoft C.

1996-2001

In this time line , I worked with SCO Unix in one project using Xlib/Motif for a three month period. Later , I started working with Visual C++ (32 bit ) to write Multi Threaded applications

for then then new Windows NT 4 platform. The first application was a client for National Stock Exchange (NSE of India ) to do on-line trading ( a clone of Neat ). From 1997 June to May 2000,i worked for CAD software development company in various roles. I was the solo developer of their Internationalization (16/32 bit MBCS ) library. Played the role of primary developer/technical architect for the porting of their 16 bit code to 32 bit windows. The application had 3 million lines of VB code and a million lines of C++ code. I was the project manager in charge of shipping a version of their product (it's a shrink wrapped product !).

( http://visionics.a.se - Electronic Design for Windows ). Other projects I worked include a 32 bit graphics emulator for windows 95 , a undo manager for their product , True type font engine , a Windows meta file emulator , etc. I joined as a senior consultant in a service company (Nest,Cochin ) with a mandate of setting up a Distributed application development practice.

2001-2003

Along with C/C++ , Started working with Enterprise Java stack with Technologies like Java servelets ,EJB/RMI , Java Mail , Java3D and JSP. Went for my first overseas assignment to Hitachi Engineering company to prototype a Nurbs (Non-uniform Rational B-spline) Library.

Worked with GNU Linux for writing a JNI wrapper to a OpenGL sub-set.For a period of eleven month's I was Chief of operations for the digital animation division of Nest technologies ( Shipping episodes for a weekly cartoon animated TV political satire “Akam Porul” was part of my portfolow.)

2003-2011

Along with C/C++ and Java , I started working with C# as well. The kind of projects undertaken include a spreadsheet rules evaluation engine , demos for Microsoft corporation , Solutions architect of a Financial service provider ( had applications in .net and java stack ) etc. Did some consulting assignments on GNU Linux with C++/Qt/WxWidgets. Started working with Objective C and MAC OS X for desktop/iPhone application development.



Business Value Proposition

I would like to introduce myself as a professional who has got good exposure to different Software platforms (Windows/Linux/Unix/MAC OS X) , Business Models (Shrink Wrapped products/ASP/Captives/Services ) and Technology spectrum ( C/C++,JEE , .NET ) in a career spanning more than eighteen years.

Having started my career as a programmer who specialized in low level system programming (C/Assembler for x86) , I have moved from there to Platform nuetral programming (using C/C++) , Enterprise Applications development using .NET/Java stack to Mobile applications development.

From a Solutions selling perspective, The areas where a mutually beneficial engagement can be in areas given below.


a) Practice Management

Expertise In setting up practices of new technologies and platforms. The activities in this area include Setting up Native programming competency (Visual C++/GCC-Linux) , Distributed Objects(DCOM/CORBA/JEE) , Java Technology,, .NET technology and Apple MAC OS X/iPhone/iPad/Android development.


I have good exposure in account management by virtue of having taken up assignments of that nature at various stages of my career. Some of the Clients whom I have interacted include Insurance Service Organization (US), Dell , Autodesk , Microsoft , Intel.




b) Product Engineering Outsourcing


In the case of Product Engineering Outsourcing , Source code is the key deliverable and it requires a different bent of mind to setup and operate teams meant for this. Have had opportunities to work with such projects with Global Shrink wrapped product companies.




c) Engineering Software development (Shrink wrapped products )



Extensive exposure to Engineering Software development in areas like

CAD/CAM Software development , 3D vector Graphics/Visualization etc .

Was deeply involved in writing a Graphics Engine for EDWin (http://visionics.a.se ) , a Computer Aided Geometric Design package of Hitachi Engineering Company and a pivotal role with Autodesk's Design Review product line (2D/3D integration).






d) Cross Platform Programming , Software Porting , Software Re-engineering



Has got extensive experience in developing Cross Platform apps using ANSI C/C++,Qt/WxWidgets/Gtk+ for Windows , Linux and MAC OS X. Has worked on DOS/Windows migration,Windows16/Windows32 migration , Win32/Win64 migration,Win32/Linux64 migration using Wine , etc. Has got good exposure to Java on various platforms and C# on Linux and Mac OS X using Mono. Another area of expertise is Software re-engineering.






e) Enterprise Applications development and Mobile Integration



I have got involved in a huge application with Apple's iPad and .NET as the backend for OMS . This is an example of Occasionally connected Applications. Previous assignments in this area include Windows CE/Desktop integration,Sales force Contacts management. Have authored

synchronization frameworks for these applications. Has worked as a Technical architectfor Dell Inc.'s Austin office's outsourced projects and was a solutions architect for Evestnet , Trivandrum.




f) Technical Marketing , Pre-sales and Proof of concepts app.



Have got extensive experience in Pre-sales , Business negotiations where technical accumen is necessary,Has liasoned with companies who are into core product engineering and has associated with a company which has produced demoware for Microsoft (for their then , upcoming .NET 3.0 fx ).





g) Computer Graphics and Media/Entertainment related Software development



Has got extensive experience with Computer Graphics Programming , Visualization,Plug-in development for Industrial strength Graphics products , Software rendering ,Image processing and is a keen follower of the trends in that Industry. Another projectparticpated include development of a DCI (Digital Cinema Initative ) compliant server using GNU Linux and CENT OS.



h) Domain Specific Languages



Has got good skill sets in Compilers/Interpreters and Translation Tools

like Lex/Yacc , ANTLR etc. Has written DSLs in the area of Circuit

Simulation , Large Spreadsheet Validations , XBase reporting and

Configuration files. I am also the author of Open sourced .NET compiler

SLANG4.net ( http://slangfordotnet.codeplex.com )




I) Business Domains



Has worked with business domains like Finance ( Financial Accounting , Asset Management ,Financial Analytics ) , Inventory Management, Stock Market ( NSE online trading ) , Payroll etc.

Above all , I am still a hands on guy who can write code for Native Applications ( C/C++/Objective C) , Virtual Machine Platforms (Java/.NET ) and Interpreted languages (Perl/Python ). I am actively involved in taking technical sessions with K-MUG , BarCamps , Linux user groups , Pycon and Colleges etc.









Professional Profile

A Software Product Engineering/Re-engineering professional with good Business accumen,Technical competancy and Software Engineering Skills. Suitable for Roles where technical involvement is high.

The areas of Competance include

Shrink Wrapped Product Engineering
Product Engineering Outsourcing (Services)
Software Re-Engineering/Portability
Enterprise Software development.
Engineering Software development.

Proven skill set in following technical domains

Cross platform C/C++ development (Windows/Linux/Mac OS X)
Enterprise Business Application development ( using .NET/Java stack)
Computer Graphics ( Software Rendering / OpenGL/DirectX )
Programming Language Translation (Compilers/Interpreters)
CAD/CAM software development
Mobile Application/Enterprise Integration ( iPhone/Android/JEE/.NET)


Exposure to Business models include

Shrink wrapped product development,Application Service Providers,
Managed Services , Captive Operations,Staff Augmentation



Managerial responsibilities undertaken includes

Practice Management , Program management , Process management
,Product Management


Roles played include

Technical lead ,Technical Architect , Solutions Architect
Principal Consultant, Project Manager,Practice Manager ,
Enterprise Architect

Overseas assignments @

Hitachi Engineering Company (Omika,Japan)
Autodesk inc. ( San Fransisco/Ithaca , USA )
Real Time Technologies ( Munich,Germany)

Wednesday, June 08, 2011

Workaround vs Work around

I happen to see a Q&A session , where the audience were raising a series of question and a Subject Matter Expert trying to give his perspective. The Answers were dotted with the term Workaround in most of the issues. I assume It is awkward to use the term Workaround ( it is some kind of a fix ) in a public fora.

Actually , what he might have intended to say is we have to work on the problem or work around the problem.

Any thoughts ?

Being Serious and Ambitious - Is it Sign of a "Hollow Man" ?

I have seen people grooming themselves by copying attributes from "successful" people whom they encounter. They are so "religious" about this that they slowly gets detatched with the people around and go into a "cocoon" of sort.

This gives aura of seriosness and achieving goals becomes their sole purpose. I suspect this is part of a grooming anomaly which they might have been subjected into. Every meeting for them is some kind of transaction towards achieving their goal. In the name of fun , they will acquire some hobbies as a facade
to masqurade the real reason behind pursuing the very activity they are in !.

Hollow people generally tend to be Serious and Ambitious . This is my thought and what about yours ?!



Theory Of Perspectives

Mutually exclusive combination of Perspectives has to tile on a area (or volume ) to give some kind of shape to practice of a discipline. Howmuch ever smart a person or a instituition is , Only some of the perspectives will be visible  to them.

The fundamentals ( model ) of any discipline will be based on some central dogma. Homo Economicus is the basis for economics , Evolutionary biology has some , FSM/CFG/Turing Machine/Lambda Calculus for Computer Science etc.

The Process and Practice shape each discipline and here the Perspective ( Or subjective view ? ) varies. This is the root cause of any conflict .

Job Interview is a place where this is clearly visible and too often the cause of mis-hire is lack of overlap between perspectives of interviewer and interviewee.

That is why some have to prepare for interview the way they prepare for exams. Preparation does help. If this is true , the Interviewer has been fooled into a paradise !

All is illusion , thus spoke Bhagwan Krishna.

COM Programming - Essential Stuff to Know

The Component Object Model aka COM was a hot technology once upon a time. It was a good intellectual challenge in those times . Recently , I had a discussion with a friend of mine regarding what is essential COM knowledge.

Here was my list

                 a) Fundamental Interfaces like IUnknown,IClassFactory(2) , IDispatch,
                     IConnectionPoint , IMalloc , IPersistStorage/IPersistStream etc
                 b) COM threading model ( Apartment,Free,Both , neutral )
                 c) COM Client Programming
                 d) COM Interop with C#
                 e) Variant , SafeArray
                 f)  ATL


                 
                      

Sunday, June 05, 2011

Software Testing Techniques by Boris Beizer

This weekend , I flipped through the pages of "Software Testing Techniques" by Boris Beizer. This book was written in the early 90s and it was a time when Software Testing as an Independent discipline was uncommon.

I would consider that as a book written for Software Testing Automation Tool Writer. The amount of information and rationale of taxonomy inside the book will make you a better programmer !!.

He covers things in a Semi formal way which will appeal to a Programmer who cares to know the anomalies which can come while he is at  work.A reasonably good grounding in Program Translation and Language runtimes will be an added advantage while going through the book.

Wednesday, June 01, 2011

Stamp Collection and Scripting - A Parallel

Yesterday , I happen to see some one writing a Script from scratch in a Scripting Language called Auto IT. I felt that this will take that person more time to ramp up to the speed.

I told the person about an old adage about Stamp Collection ( Philately )

"The Best way to have a good stamp  collection is Theft"

A good scripting language expert is some one who steals Script from the existing code base or from the public domain. Writing script from Scratch should be a last resort for us.


Reading Marketing Manuals , Product Brochures and Financial reports

The best way to train young engineers in scheme of things around  is to make them read the above stuff and discuss about it. This is my thought and I have not started applying it anywhere so far. My Hunch tells me that It might work really well.


"Joining Logistics" - a meme I encountered.

The most difficult part of any new Job is to "survive" the Induction Program. Things are very messy in most cases that the time and effort taken to complete it is humongous. One soul sarcastically coined a term (or meme !) called "Joining Logistics".

"Learn and Do" vs "Do and Learn"

When you are dealing with Analytical stuff , Learn about something before you do is the optimal method. Certain Procedural stuff can only be learned while doing things. Examples are Bicycle riding , Car driving , Project management , General management (You learn by doing things !).

For learning a programming language , a new mathematical technique  or a technical domain , we need to do lot of homework before venturing into the real stuff. Some people who are good in the "Learn and Do" model make things messy by applying this model to all stuff , be it procedural or analytical.

Plunge into something , You will emerge with a new set of knowledge and skill seems to be a better model. This is also known as Do and Learn or Learn As I Do method.