Friday, August 30, 2013

C++ does not mean C#, dot Net nor JAVA (no JavaScript is not a version of Java either)

I am a C/C++ OOD/OOP Software Engineer who does Multi-Threaded Systems Network design and development. I have designed, sold and created multi-million dollar systems and contracts.

I am not a C# or .NET programmer. And yes there is a difference between C++ and C#. Yes, I know enough about C#, .NET, Java (and JavaScript) to use these languages for minor tasks when needed. No I am not going to change my career because you have an urgent need for a C## programmer and can place me tomorrow.

Why won't I change my career to do C#? Well to put it bluntly C++ level developers become artists who work with oil paints at some point in their life, while a C# and .NET programmers will be house painters for a long time.

Why? My guess is most of the C# programmers have not been trained as Computer Scientist and C#, .NET or HTML are the only languages they have worked in while I have professionally programmed in dozens and I am learning a half dozen new ones to keep my skills up or otherwise I would be a C# programmer and not a C++ Software Engineer.

So no, please don't ask me if it okay to submit my resume for a C# position that wants 8+ years of C++ programming and design experience.

Missing Questions and Standard Formats on Job Sites

So I have been posting my resume and experience on the most better job board sites for a few weeks now. Using these boards has been an experience for a Systems Analyst types such as myself. The basic principle with these site is you give them your name and contact information along with a version of your most current resume along with a standard cover letter. They match your data with jobs their algorithm believes to you are qualified to work in. Well, as I say, that is the theory.

My use and ongoing research shows that it is a flawed method at best. The HR users, recruiters and hiring managers are not getting the best information they need to make a good decision as to hire the poster or not. What they are getting is some words and phrases crammed onto a few pages, often reformatted badly. Anyone here ever decided whom to date from online profile knows the problems facing the applicant and the hiring managers. They just don't have enough of the correct information to make a good decision about who to employ. So what is missing from these sites?

Let's begin with what I don't like and finish up with a few qualified suggestions.

First there is no standard form of resume asked for by the sites. Sure they give suggestions on what your "paper" resume should look like on paper. What they don't give you is a format you should be creating your resume with so that it will be machine readable by their site. Oh sure, they have scanners that parse your typed resume into what they believe is correct. But my name is not "G.729 Intellivoice" and I have not worked at  "Majoring in Computer Science" nor held a position of "improve existing".

The downside of this unstructured process is that I have a few resumes each of which highlights my abilities and career for specific positions. Or if I update my resume and re-submitting it to the parsing engine. I then have to go through and correct all their parsing mistakes. This is dull work which I do not like doing which means I do not do my best effort at using the site because no one likes to beat their head against a wall too often.

Give me a clue in the form of an outline for your parser so I can then explain my story in a form that your parsers will correctly understand.

On the flip side there seems to be no standard form for, or enforcing of, how positions are posted by employers. As a job seeker I am doing the same 30 second review of a job that hiring types are doing of my resume. I am looking for certain items. If I do not see what I am looking for I move on to the next posting. Oh sure, sometimes I just apply for the position anyway because I like what I have read but I am just not sure what the Job is looking for in an applicant.

Yes, yes, calm down now. No need to rant here and now. I know that plenty of job seekers would try to game the system if they knew all the standard forms but who cares? The scammers are pretty easy to spot by a qualified manager so that the scammers can be reported by the posters to the site to keep the under control. A few thumbs down on resume submissions will eventually teach the problem applicants to behave.

There is no interview conducted by the site as to the particulars of the job and work environment. Why not save us all some time and trouble by posting a some valid questions for the applicants and the job posters. What questions you ask then? Well certainly none of those crap (yes, crap) questions about how many ping pong balls will fit in a 747, the weight of a 747 or the take off velocities, V1 or V2, of a 747 on the moon (unless you are an aircraft design engineer.) I am hoping that companies have realized, as I did about 20 years ago, that these standard interview questions the second thing uploaded to the Internet. No, I am asking for are practical questions that will assist in placing the candidate so companies can get on with business.

If essay responses are too hard to handle multiple choice questions could be offered. But really folks, adults should be able to answer a question with a dozen words in writing.


  1. Why are you looking for work now?
    • More money
    • More away time
    • Shorter Commute
    • Change of Scenery
    • A better job
  2. What dates in your employment history are directly related to this position?
  3. Which page or paragraph on your resume should the Hiring Manager be looking at first to show you are the best applicant for this position?
  4. Do you have questions for the Hiring Manager about the job not related to salary?
  5. What are you looking for in Life?
  6. What is your goal after getting hired? 
  7. Do you want a long career with us?
  8. Why are willing or not willing to relocate for this job? 
  9. Are you able to work in a place where developers don't shave, wear sandals to work and don't bathe regularly? (Lord I wish I knew the answer to this one before working in Redmond.)
Notice no questions about Salary or hourly Rate?

  1. How long to your really need me to work for you in this position?
  2. Are you looking for promote from within?
  3. How often does the team serve cake for birthdays? Will there be ice cream too?
  4. What beverages does your company supply?
  5. What is the real dress code?
  6. What happened to the last person who held this position?
  7. Is there any real business reason that I cannot telecommute or work remotely for this job?
  8. Why are you interested in me as an application when I will have to move 2,000 miles to take this job? Are you sure you are using the right resources to locate another candidate closer?
Okay, so my questions are not the greatest but then again I am not the HR type.

If some sort of better scanning, screening and interview was available to applicants and managers then the whole process would work a bit more efficient all around. 






Thursday, August 29, 2013

The Start of Mastering Erlang

I like programming in the Telecom world because most of the folks involved in Telecom are pretty bright. They understand the need for speed and accuracy in the systems software. They understand the true costs of five nines or 99.999% up time.

Searching for work I found that good salaries are being paid to Erlang developers. I picked up three books on learning Erlang from Amazon.


I found the second and third books in this list to be better suited to my needs. The Introduction book is more suited to someone for understanding Erlang. The other two books provide a good combination of explanations filling in where the other book is weaker for me.

I read the first few chapters of each book before installing Erlang itself on my OS X machine. Each of these books has extensive instructions on where to go to download and install the Erlang virtual machine.

I use vi/vim via a terminal window to write my Erlang source code. I usually open a few terminal windows for editing source files and then a one or two more to run the environment in. The use of terminal work allows me access my OS X desktop from SSH sessions throughout the house or while I am on the road.

After about 20 hours of programming Erlang I can get it to do what I want it to do for the most part. The transition from years of procedural programming languages to a functional language is building muscles in my brain where I never thought I had muscles.

What threw me at first was that Erlang does not allow variables to be assigned more than once. This takes a bit of modern thinking to get past but it does work surprisingly well. My test design that I learn new languages with shows that what took several hundred lines in Perl is only going to take about 25 lines in Erlang.  That is one of the advantages of that I am seeing straight away is the shortening of source files means less mistakes from less typing and shorter files to maintain.

The advantage of shorter source file in Erlang seems to also translate into much faster computing. My test design is still very procedural in nature. I have not done a direct comparison as of yet but it does seem to be a good 50% to produce the same result in Erlang.

At the same time I am also reading books on Lisp and Clojure with an eye on Haskell and Schema soon after. Erlang is to me a language cross between Prolog and Lisp with its use of recursion and lists to get the work done.

I still need to begin work on distributed Erlang design and system. I have a few OS X machines available but I need to reassemble 2 or 3 Linux machines to have a good half dozen nodes to work on. Though I have been distracted this week by a desire to download the Android environment and do a little work there.

Plea to Software Recruiters as to Job Skills

Dear IT Recruiter,

How are you? I am fine. You probably contacted me this week about an urgent position you have available right now and could I send you my updated MS Word document right away. Also could I send my best rate, willingness to relocate and all of my references will telephone numbers now as tomorrow will be too late.

Let me say that I like recruiters. I understand their job. I know that most of their emails and phone calls go unanswered. I understand that many job seekers put fluff in their resumes or post of jobs they are not qualified for in some way. I know recruiters are under pressure to fill positions or be on the street looking too. So let me offer so advice about how you can get me to accept your offer to offer my resume and skills to a hiring manager.
  1. I am a university trained Computer Scientist and professional Software Engineer who spent years in college reading books and attending classes to get a degree that included much more than web programming. I have a background in Physics, Chemistry, English and English literature. This could be construed as your first clue that I am not a moron.
  2. I have not ridden a bicycle in about five years though according to you I will need months of training to relearn to ride a bicycle again. Skills I have not used in as a Software Developer are the same a the skill of riding a bicycle or swimming. It might take me a week to train to swim a mile or ride fifty miles I have not lost my skills because I have not used them. If you give me a bicycle to ride I will be riding in seconds, though it may take me a few months to work my way up to Tour de France level.
  3. I can design and develop Multi-Threaded software which means that I can do complex software engineering tasks. 
    1. I can design and write Multi-Threaded network software which means I can do very complex software engineering tasks.
    2. I can design and write recursive Multi-Threaded network software which means I can do very, very complex software engineering task.
    3. I can design and write recursive Multi-Threaded database telecom codecs with network software which means I can do very, very, very complex software engineering task.
    4. I can calculate the duration of human Space Flights from Earth to Mars and back which means I am a Rocket Scientist that can also design and write the software to get you there and back safely along with supply you with reading material, movies to watch, telephone and Internet (Deep Space or Interplanetary)  during your voyage.
  4. I have trained in a few programming languages; 360/70 Assembler, COBOL, FORTRAN, X86 Assembler, C, C++, Ada, PASCAL, Prolog, BASIC, Perl, Java, Lisp, Erlang, Clojure, BBx, Bourne shell, Haskell, JavaScript, MASM, Ruby, Smalltalk, Visual Basic, Windows PowerShell and DOS Batch.
    1. I write Browsers. I don't write web sites.
    2. If I need a better language I can learn one in about 80 hours. I can modify or extend existing languages. I am trained to write new languages if need be.
    3. If your client is using a language such as A, B, R, Snobal or other such rare and esoteric languages I can probably look up the language's family and tell you if I could learn the language. It might be better for you to know something about obscure languages in the job requirements to make your job easier.
  5. I know my data structures: Bags, Sets, Queues, Lists, Trees (Tries), Binary Trees, n-way Trees, Tables, Stacks, Maps, Arrays, Hashes, Records, Unions, Dictionaries, Associatives Arrays, Strings, Vectors, Linked Lists, Doubly Linked Lists, Graphs, nodes, edges and Heaps. I use these data structures to properly design my software to work both correctly and efficiently.
  6. I have patents for my work with Multi-Media file processing across networks. If you need a file processed such as .PDF, JPEG, GIF, Postscript, TIFF, RIFF, TGA, BMP PCX, PSD, CVS, CGM, WMF, bitmap, MPEG, mpeg-1, mpeg-2, mpeg-4, AVI, Quicktime,  AU, MIDI, SND, WAV and AIFF. If the file has a standard I can design and develop software to read, analyze and write them from point A to point C with point B being a point in between points A and C where I can divert the file stream.
  7. I am an ITU audio codec developer. That means I understand telephone, sound and video across wired and wireless radio networks. G.711, G.726, G.729, G.723, H.323, VoIP, A-Law, u-law (mu), PCM;  H.262, H.264 video too.
  8. I have read, understood, used, designed and programmed from a few specifications; RFC's 542, 760, 768, 783, 791, 793, 822, 903, 937, 959, 1055, 1067, 1098, 1157, 1225, 1350, 1388, 1487, 1631, 1889, 1945, 2058, 2138, 2326, 2821, 3261, 3550,  3801, 4353, 4960 and others. If you do not know what an RFC is please consider reading one.
  9. I understand and use computer and communications protocols at a programming level; HTTP, SIP, RTP, RTSP, SNMP, RTCP, SMPP, SMTP, POP, FTP, NTP, ARP, ICMP, PPP, SMB, TCP/IP, UDP, Datagram, IGMP, RPC, SSH, MGCP, RSVP and IMAP.
  10. I understand and work in the OSI Model from the Data link layer (2), Network layer (3), Transport Layer (4), Session layer (5), Presentation layer (6) to the Application layer (7). I am not an electrical engineer so I usually do not work at the Physical layer (1).
    1. I pretty much began my career doing C and assembler programming building NetBIOS, NetBEUI, MS-Net, PC-Net, IPX/SPX, SMB, Window for Workgroups stacks on 128/256 Kilobit per second LANS using CheaperNet before the "Internet" arrived in homes.
    2. 802.3, 802.3a, 802.3e, 802.3u, 802.3af, 802.4, 802.5, 802.7, 802.11, 802.15.4/5
    3. I know the differences between Ethernet, CheaperNet, Token Ring, Bus, Star, Mesh, Tree and Daisy chain networks on the physical and logical topologies.
    4. I know the difference between a bridge and a switch.
    5. Even better, I know how to fix these when someone cuts the wires.
  11. I have programmed in Windows 1, 2, 3, 95, Windows for Workgroups, OS/2, NT, 98, 2000 and 7. Windows has not changed since NT. It is still the same basic architecture. The same skills it took to write assembler, C and C++ in NT are the same skills it takes to write C and C++ in Windows 7 and 8. Yes, perhaps there are few new exciting features but the underlying Operating System concepts have not changed since NT.
  12. I can program in several Operating Systems simultaneously such as OS X, Windows, Unix, Linux, Android. Not to mention several languages and frameworks at the same time.
  13. An IDE is just a fancy editor. I can program in vi, vim, edit and edlin. Some IDE's have debuggers in them. A software engineer can us most any debugger put in front of them in about an hour of work.
    1. I don't need an expensive IDE to create a program and makes files. I can do it from the command line for most systems after being shown the particulars for the OS.
    2. After using an IDE for a year that is pretty much the limit of learning. Having 8 years experience using an IDE does not mean the same as using a programming language for 8 years.
  14. I am a Software Development Engineer with specialites. If you need an application programmer then say that. Each SDE is different. 
    1. I am Systems, Network and Telecom Software Development Engineer which means I prefer to write software at the systems level, networking level with a telecommunication flavor. 
    2. I am good a GUI or UX/UI design but I do not like developing the software as the specifications are often fickle.
  15. Try not to contact me before reading and understanding my resume and the job description. If you have to spell out ACRONYMs to me because you don't understand them then why are you calling me? Look them up before calling me; please.
  16. I have a lot of experience in Computer Science and the design, creation and development of software. This would mean that I am well past the Journeyman level of work experience and knowledge. 
    1. Try not to approach me to do work for a manager that is looking for a recent grad or apprentice programmer.
    2. I don't write web pages; I design and write Web browsers; there is a difference.
  17. I am not a Database Administrator though I do know how to create software to query databases in SQL or NoSQL or COBOL if you put a gun to my head. This means that I am not a database caretaker it means I am use databases. Same way you might live in a house not be a Builder nor a carpenter. I don't need to be a DBA to use a database.
  18. JavaScript is not the same as JAVA.
  19. I can use Visio. Visio is not a programming language per se.
In conclusion if you are looking for a good Software Development Engineer with Systems, Network, Telephone, Telecom or VoIP experience looking for work in the SE US or Internationally then just be sure to read and understand both your job description and my resume before you ask me to apply for a position that has nothing to do with my skill set and then tell me I need to take less money because I am not fully qualified.