Skip to content. | Skip to navigation

Sections
You are here: Home Resumes The Interview Process

The Interview Process

The principal work product of a software engineer consists of his or her software and documentation.

But in the proprietary business environment, all this work product is the property of the proprietary business employer. The software engineer may move on in his career, but the work product stays behind. It stays behind as assets of the former employer, closely held behind the closed doors of patent, copyright and trade secrecy.

The software engineer, wishing to demonstrate his technical skills and body of work, is left with little sample material to offer a new employer. Absent a portfolio of demonstrable work product, the software engineer is typically asked to prove his abilities during the interview process by means of technical questions, programming puzzles, and whiteboard coding sessions.

Happily, none of this applies to me. Virtually all my work over the past 20 years has been in the for-profit, non-proprietary industry quadrant, consisting of free software, copyleft publications, and Libre services. My entire body of software is freely available for examination and reuse by anyone, and my entire body of publications is available for readership and verbatim copying.

As an engineer I take pride in my professional accomplishments, and believe my body of work speaks for itself. For this reason I think little of the traditional interview process in the for-profit, proprietary environment.

Employers, clients, colleagues, partners and others wishing to work with me should rationally first review my software, my publications, my services and my reputation.

Index

1  Code Samples

In addition to the mentioned software collection, here I provide pointers to some select smaller pieces of software that can be easier and faster reviewed as samples of my code.

The reasons for selecting these particular samples, include:

  • They are widely distributed and widely used.
  • They have proven to be useful.
  • They are all part of some bigger picture. I am glad to have contributed.

1.1  Data Communications and C Language – FCS Implementation in PPP RFCs

In late 1980s I posted various pieces of C code on Usenet’s comp.protocols.tcp-ip hoping that they will be useful to others.

One of those pieces of code was part of a Fast Frame Check Sequence (FCS) Implementation.

The author of the PPP protocol chose to include that code in an appendix to RFC-1134.

Subsequent updates to that RFC, RFC-1171, RFC-1331, ... have continued to include that code as an appendix.

Part of that little code which evolved to become part of a reference implementation for something relatively useful and important is included below. The complete code can be found in the appendix of the above mentioned RFCs.

Clearly it is not anything terribly exceptional, but I am happy to have participated in moving things forward on that front.

C.1.  FCS table generator

   The following code creates the lookup table used to calculate the
   FCS-16.

   /*
    * Generate a FCS-16 table.
    *
    * Drew D. Perkins at Carnegie Mellon University.
    *
    * Code liberally borrowed from Mohsen Banan and D. Hugh Redelmeier.
    */

   /*
    * The FCS-16 generator polynomial: x**0 + x**5 + x**12 + x**16.
    */
   #define P       0x8408

   main()
   {
       register unsigned int b, v;
       register int i;

       printf("typedef unsigned short u16;\n");
       printf("static u16 fcstab[256] = {");
       for (b = 0; ; ) {
           if (b % 8 == 0)
               printf("\n");

           v = b;
           for (i = 8; i--; )

               v = v & 1 ? (v >> 1) ^ P : v >> 1;

           printf("\t0x%04x", v & 0xFFFF);
           if (++b == 256)
               break;
           printf(",");
       }
       printf("\n};\n");
   }

1.2  Multilingualization (m17n) And elisp – Persian Input Methods In Emacs 24

I have been using emacs since 1986. When support for bidirectional (bidi) text was included in Emacs 24 in 2011, I jumped in and added two input methods and Persian language support to emacs. These are now part of Emacs. Complete documentation for these input methods is available on-line at:

Persian Input Methods – For Emacs And More Broadly Speaking
شیوه‌هایِ درج به فارسی‌
http://mohsen.1.banan.byname.net/PLPC/120036

That emacs lisp code is now distributed with emacs24 – usually in leim/quail/persian.el.

The latest Persian Input Methods code is available at: http://www.persoarabic.org/emacs/persian-input-methods.tar

The significance of this implementation and its inclusion in emacs is that it can pave the way towards a different model for inputing text in Persian.

1.3  Games and Puzzles – Tic-Tac-Toe etc.

As part of an interview process, I was asked to write a Tic-Tac-Toe game. I typically don’t play such games and usually refer the requester to my sample codes mentioned above.

But in this particular case, I spent a few minutes looking into Tic-Tac-Toe.

In the spirit of:

Good Programmers Write Good Code – Great Programmers Put Good Code to Better Use.

I started with:

 apt-cache search tic | grep -i tac | grep -i toe

Which produced:

debian5# apt-cache search tic | grep -i tac | grep -i toe
gomoku.app - Extended TicTacToe game for GNUstep
nettoe - networked version of Tic Tac Toe (3x3 Grid) for the console
tictactoe-ng - fun, simple, tic tac toe game
tictactoe - tic-tac-toe game written in Ruby
wmtictactoe - Dockable Tic Tac Toe game

So, there are several FOSS implementations for console and Gnome etc.

Then I looked a bit to see if there is a Tic-Tac-Toe for emacs. I did not find one. But I found an implemenatation in Common Lisp.

I spent an hour or so, and ported that to Emacs Lisp.

The fully functioning game is now in: http://mohsen.1.banan.byname.net/resumes/theInterviewProcess/tic-tac-toe.tar

To see what the portation involved:

diff tic-tac-toe.el tic-tac-toe-original.lisp

To play the game:

  • Download the tic-tac-toe.tar file.
  • tar xf tic-tac-toe.tar
  • (load-file “tic-tac-toe.el”)
  • M-x tic-tac-toe
  • Respond to the prompts in the mini-buffer.

Perhaps later I’ll make it be a standard emacs package.



Document Actions
Libre/Halaal Internet Services Provided At LibreCenter By Neda

Member of By* Federation Of Autonomous Libre Services

This web site has been created based exclusively on the use of Halaal Software and Halaal Internet Application Services. It is part of the By* Federation of Autonomous Libre Services which in turn are part of the Halaal/Libre By* Digitial Ecosystem which incorporate the following software components: