whedimer Just another WordPress weblog

30Nov/090

PHP Lib Fully Commented

The first round of commenting for the PHP library is now complete. More commenting is needed to bring it up the the standards that I think are nescessary to call the code "well commented". All the classes, instance variables, methods and functions have autodoc comments. For those who might wonder why the commenting is happening after the writing of the code, it was simply a matter of time. The code was written as part of my Master's project and so proper code standards were ignored to focuse on the problem I was working on. The same sort of thing will happen with automated testing, which is currently being worked on.

17Nov/092

Interviewing for a Software Engineering or Programming Job

Over the last several months I have been filling out applications to various companies in hopes to get an Entry Level Software Engineering position. I'm not going to name specifics of places where I've applied, but I will say I have done  the phone interview beyond the HR  interview, the visit to the company and received the first jobs offer (which I've turned down). Turning down that first job is hard when one is not just looking for a job but the job. The difference between the two is that one will provide an income, but the other will provide a learning experience and a host of other opportunities that do not have a monetary value.

My experience so far shows that if a company's HR contacts you within a month after submitting an application, they are serious about hiring "soon", and only means your resume stands out from most of the others.  If you get a second interview with a non-HR person then your experiences and ability have some merit to the company. Sometimes the HR department can assess merit and sometimes they cannot. Either way, the non-HR interview is to confirm what you have placed on the resume is actually true and assess the personality of the individual.

The next step is usually a in-person interview, but if this occurs 2-3 weeks from your initial contact with the company, chances are they are desperate for someone, or they are a small company. In an in-person interview, you'll likely get a whiteboard test, but ask so that you can prepare yourself, such a practicing writing on a board or explaining code verbally.  Always ask the format of the interviews. After an in-person interview, an offer or a non-acceptance letter comes.

Signs that a company is not good for a first Programming Job

  1. Does not past the Joel Test. In most cases you probably wait until going to the company to ask or observe the answers to the test.  Up until the end of this interview most questions presented to you are aimed to assess your ability.
  2. An offer without a visit
  3. Incomplete Benefits
  4. No assistance in moving. It can cost several thousand dollars to move. Say you get paid a 40k salary, but incur 5k in moving costs (room/board and travel while looking for a place, moving truck costs, gas, moving cars). You really have 35k for the first year.
  5. No beginning training. In an entry level position, they'll likely treat you like a person who has ability, but no skill. Ability is unapplied knowledge gained in artificial environments, while skill is gained through experience in the real world. Entry level positions assume no prior real-world experience and thus, no skill. However, sometimes companies are looking for real world experience in entry level jobs and therefore not all entry level positions are really entry level (or perhaps it's my misunderstanding).
  6. Small company, whatever small means to you. For me it means a company too small to provide a full or nearly full benefits package.
  7. Offering a salary below market price without compensations or not accounting for standard of living differences. For example, if the national average for the position is the range $30k-40k and the standard of living where the company is located is 50% higher than the national average, then the salary range should increase.  I've found that sometimes companies don't always adjust to standard of living differences.
  8. Lack of passion and/or detached personality. Many times the people hiring are asked by their bosses to hire someone and they can see it as a waste of time. It is also a sign of lack of interview or interpersonal skills. If your interviewer has good communication skills they make the interviewee more comfortable and more expressive and help his/her case better.

I am sure there are others, but this is what I have found. I hope it is accurate or useful to some people.

29Oct/090

PHP lib

I created a PHP library for my Master's PILOT and had been debating on whether to release it to the public in a GPL license. I finally realized that there are many others PHP libraries out there with many more features and proven uses and so the chances of my library being used in any significant way is small. So why release it then? It might teach someone something and would increase the quality of the library with potential public eyes on it. I spent some time creating a script that automatically creates an tarball of the latests version from the repository and can be found at download.whedimer.com/snapshot/wlib_php. Stable releases will eventually come.

Criticism on the library is welcome so long as the language used is civil and specific towards a particular aspect (no vague or general criticisms please). Keep in mind I have little professional experience and so keep your expectations low.

28Oct/090

Scattered Knowledge

I am constantly annoyed how with technical topics that no single site exists as the primary source of information. Perhaps I never ran across those sites while Googling various topics and solutions to problems. (Yes, there are books that are often better than any website, but my interest lies in free information).  Occasionally I find websites that have an extensive database of information regarding some topic. This information is usually of a less technical information where the data is not used to solve  problems but to make particular decisions. For example website containing a database of reviews of apartments or some other product generally provide some indication of quality or what expectations to have due to the typical separation between advertised "facts" and the actual practical use of the product or service.

LaTeX

Technical problems are often specific to particular application, but the basics of any technical concept could be easily recorded and left for anyone with enough drive and of enough technical background to learn. For example, LaTeX has its own language and syntax for typesetting a documents. There are books and online sources to education one self about LaTeX, but I've yet to come across a comprehensive website with all possible documentation you could ever want.

The LaTeX project has a listing of guides by other people including a link to the well-organized wikibook on LaTeX. The wikibook has examples for everything, but is more of a summary on how to various layouts using a more casual and less technical  language. My only gripe withe  wikibook and virtually all LaTeX guides is that when a package needs to be used to accomplish a particular goal,  the dependencies on packages are not obviously marked nor are any limitations mentions.

For instance, ideally when using a syntax highlighting package it would be nice to provide an abstraction to whatever library is be used. Various syntax highlight packages use   different syntaxes. One package may loose support or another may gain better features over time. Having a custom wrapper would avoid spending time converting from one syntax highlighting package to another,such as the time spend writing a conversion program or running a regex find/replace.

lstlisting package

The lstlisting package cannot be used (or least haven't found a way to) in a \newenvironment definition.  Why? I don't know. The built in environments (e.g. \begin{it}...\end{it}) work in custom environments, so why wouldn't the lstlisting environment work? Are built-in environments somehow fundamentally different than custom ones? If so, why?  All these questions have to be answered to fully understand how to get the lstlisting package to work in a custom environment and I really don't feel inclined to investigate all that just to make my LaTeX document less dependent on the particular syntax highlighting package I decided to use. My goal is to learn the typesetting interface and not have to deal with the internal workings. Perhaps  advance features or functions demand some level of knowledge in the internal workings, but that just seems wrong. Or is it?

23Oct/090

Purpose

Welcome to the Whedimer blog. Expect to find posts recording my efforts in computer programming and documentation. While there are many development blogs out there the goal is not to compete with them.  Nearly all of the good development and tech blogs out there are authored by people with a decent amount of professional experience. However with the case of this blog, the author is one with little professional experience. Some facts about the author:

  • graduate and undergraduate degree in computer science
  • two internships (one software engineering, one research) and one graduate research assistantship
  • liberal arts education
  • web development experience (graduate school work)

Expect addional posts convering various topics in the future.

Filed under: Basics No Comments