Welcome to Aleksandar Jakšić's Home Page


Popeye
Aleksandar Jakšić
Software Engineer
e-mail: ajaksic@hotmail.com
www: http://ajaksic.info/
Aleksandar Jaksic

[ Home | Resume | References | Projects | Humor ]


Software Development CycleSoftware Development Cycle


Wisdom from Above

A man is flying in a hot air balloon and realizes he is lost. He reduces height and spots a man down below. He lowers the balloon further and shouts, "Excuse me, can you tell me where I am?"
The man below says, "Yes, you're in a hot air balloon, hovering 30 feet above this field. You are between 40 and 42 degrees North latitude, and between 58 and 60 degrees West longitude."
"You must be an engineer," says the balloonist.
"I am," replies the man. "How did you know?"
"Well," says the balloonist, "everything you have told me is technically correct, but it's of no use to anyone."
The man below says, "You must be in management."
"I am," replies the balloonist, "but how did you know?"
"Well," says the man, "you don't know where you are, or where you're going, but you expect me to be able to help. You're in the same position you were before we met, but now it's my fault."


Hard Core...

Normal people believe that if it ain't broke, don't fix it.
Engineers believe that if it ain't broke, it doesn't have enough features yet.

There are 10 kind of people, those that know binary and those that don't.

Question: What's the difference between a beginning programmer and an expert programmer?
Answer: A beginning programmer thinks there are 1000 bytes in a kilobyte, and an expert programmer thinks there are 1024 meters in a kilometer!

Old programmers never die, they just GOSUB and don't RETURN.

"Keyboard not found. Press < F1 > to RESUME."
(used to appear in common BIOSes as a real error message)

Before software can be reusable it first has to be usable.


Jokes Demonstrating the Natural Superiority of Engineers

Three lawyers and three engineers are traveling by train to a conference. At the station, the three lawyers each buy tickets and watch as the three engineers buy only a single ticket. "How are three people going to travel on only one ticket?" asked one of the three lawyers. "Watch and you'll see," answers one of the engineers. They all board the train. The lawyers take their respective seats but all three engineers cram into a restroom and close the door behind them. Shortly after the train as departed, the conductor comes around collecting tickets. He knocks on the restroom door and says, "Ticket, please." The door opens just a crack and a single arm emerges with a ticket in hand. The conductor takes it and moves on. The lawyers saw this and agreed it was quite a clever idea. So after the conference, the lawyers decide to copy the engineers on the return trip and save some money. When they get to the station, they buy a single ticket for the return trip. To their astonishment, the engineers don't buy a ticket at all. "How are you going to travel without a ticket," asks one perplexed lawyer. "Watch and you'll see," says one of the engineers. When they board the train the three lawyers cram into a restroom and the three engineers cram into another one nearby. The train departs. Shortly afterward, one of the engineers leaves his restroom and walks over to the restroom where the lawyers are hiding. He knocks on the door and says, "Ticket, please."


The Evolution of a Programmer

High School/Jr.High:

  10 PRINT "HELLO WORLD"
  20 END

First Year in College:

  program Hello(input, output)
    begin
      writeln('Hello World')
    end. 

Senior Year in College:

  (defun hello
    (print
      (cons 'Hello (list 'World))))

New Professional:

  #include <stdio.h>
  void main(void)
  {
    char *message[] = {"Hello ", "World"};
    int i;
 
    for(i = 0; i < 2; ++i)
      printf("%s", message[i]);
    printf("\n");
  }

Experienced Professional:

  #include <iostream.h>
  #include <string.h>
 
  class string
  {
  private:
    int size;
    char *ptr;
 
  string() : size(0), ptr(new char[1]) { ptr[0] = 0; }
 
    string(const string &s) : size(s.size)
    {
      ptr = new char[size + 1];
      strcpy(ptr, s.ptr);
    }
 
    ~string()
    {
      delete [] ptr;
    }
 
    friend ostream &operator <<(ostream &, const string &);
    string &operator=(const char *);
  };
 
  ostream &operator<<(ostream &stream, const string &s)
  {
    return(stream << s.ptr);
  }
 
  string &string::operator=(const char *chrs)
  {
    if (this != &chrs)
    {
      delete [] ptr;
      size = strlen(chrs);
      ptr = new char[size + 1];
      strcpy(ptr, chrs);
    }
    return(*this);
  }
 
  int main()
  {
    string str;
 
    str = "Hello World";
    cout << str << endl;
 
    return(0);
  }

Expert Programmer:

  [
  uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
  ]
  library LHello
  {
      // bring in the master library
      importlib("actimp.tlb");
      importlib("actexp.tlb");
 
      // bring in my interfaces
      #include "pshlo.idl"
 
      [
      uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
      ]
      cotype THello
   {
   interface IHello;
   interface IPersistFile;
   };
  };
 
  [
  exe,
  uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
  ]
  module CHelloLib
  {
 
      // some code related header files
      importheader(<windows.h>);
      importheader(<ole2.h>);
      importheader(<except.hxx>);
      importheader("pshlo.h");
      importheader("shlo.hxx");
      importheader("mycls.hxx");
 
      // needed typelibs
      importlib("actimp.tlb");
      importlib("actexp.tlb");
      importlib("thlo.tlb");
 
      [
      uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
      aggregatable
      ]
      coclass CHello
   {
   cotype THello;
   };
  };
 
 
  #include "ipfix.hxx"
 
  extern HANDLE hEvent;
 
  class CHello : public CHelloBase
  {
  public:
      IPFIX(CLSID_CHello);
 
      CHello(IUnknown *pUnk);
      ~CHello();
 
      HRESULT  __stdcall PrintSz(LPWSTR pwszString);
 
  private:
      static int cObjRef;
  };
 
 
  #include <windows.h>
  #include <ole2.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include "thlo.h"
  #include "pshlo.h"
  #include "shlo.hxx"
  #include "mycls.hxx"
 
  int CHello::cObjRef = 0;
 
  CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
  {
      cObjRef++;
      return;
  }
 
  HRESULT  __stdcall  CHello::PrintSz(LPWSTR pwszString)
  {
      printf("%ws", pwszString);
      return(ResultFromScode(S_OK));
  }
 
 
  CHello::~CHello(void)
  {
      // when the object count goes to zero, stop the server
      cObjRef--;
      if( cObjRef == 0 )
          PulseEvent(hEvent);
      return;
  }
 
  #include <windows.h>
  #include <ole2.h>
  #include "pshlo.h"
  #include "shlo.hxx"
  #include "mycls.hxx"
 
  HANDLE hEvent;
 
  int _cdecl main(int argc, char * argv[]) {
      ULONG ulRef;
      DWORD dwRegistration;
      CHelloCF *pCF = new CHelloCF();
 
      hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
 
      // Initialize the OLE libraries
      CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
      CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
          REGCLS_MULTIPLEUSE, &dwRegistration);
 
      // wait on an event to stop
      WaitForSingleObject(hEvent, INFINITE);
 
      // revoke and release the class object
      CoRevokeClassObject(dwRegistration);
      ulRef = pCF->Release();
 
      // Tell OLE we are going away.
      CoUninitialize();
 
      return(0); 
  }
 
  extern CLSID CLSID_CHello;
  extern UUID LIBID_CHelloLib;
 
  CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
      0x2573F891,
      0xCFEE,
      0x101A,
      { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
  };
 
  UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
      0x2573F890,
      0xCFEE,
      0x101A,
      { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
  };
 
  #include <windows.h>
  #include <ole2.h>
  #include <stdlib.h>
  #include <string.h>
  #include <stdio.h>
  #include "pshlo.h"
  #include "shlo.hxx"
  #include "clsid.h"
 
  int _cdecl main(int argc, char * argv[]) {
      HRESULT  hRslt;
      IHello   *pHello;
      ULONG    ulCnt;
      IMoniker * pmk;
      WCHAR  wcsT[_MAX_PATH];
      WCHAR  wcsPath[2 * _MAX_PATH];
 
      // get object path
      wcsPath[0] = '\0';
      wcsT[0] = '\0';
      if( argc > 1) {
          mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
          wcsupr(wcsPath);
      }
      else {
          fprintf(stderr, "Object path must be specified\n");
          return(1);
      }
 
      // get print string
      if(argc > 2)
          mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
      else
          wcscpy(wcsT, L"Hello World");
 
      printf("Linking to object %ws\n", wcsPath);
      printf("Text String %ws\n", wcsT);
 
      // Initialize the OLE libraries
      hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
      if(SUCCEEDED(hRslt)) {
          hRslt = CreateFileMoniker(wcsPath, &pmk);
          if(SUCCEEDED(hRslt))
              hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
 
          if(SUCCEEDED(hRslt)) {
              // print a string out
              pHello->PrintSz(wcsT);
 
              Sleep(2000);
              ulCnt = pHello->Release();
          }
          else
            printf("Failure to connect, status: %lx", hRslt);
 
          // Tell OLE we are going away.
          CoUninitialize();
      }
 
      return(0);
  } 

New Manager:

  10 PRINT "HELLO WORLD"
  20 END