My tips for people looking for jobs in the programming field

So you are graduating (or have graduated) from college and are now looking for a job? My I know my cousin is in the same boat. I have been giving him some tips to get that extra edge. Here are some of those tips that I have been telling him.

  1. Go on StackOverflow and answer as many questions as possible. Keep to areas you either know or want to know more about. If you can, write solid, tested examples. Otherwise do the research (aka Google, DuckDuckGo) to find an answer for them. Idea is win-win for you. First of all, it increases your reputation on a site where some developers have been hired because of their reputation score and answers. Secondly, an employer can see how you can communicate in written form and how you solve problems. I would highly recommend this be your part-time job (you know after the full-time job of looking for a job).
  2. Let’s face it, everyone can benefit from knowing some web programming these days. That is HTML5, JavaScript, and some minor CSS. Know enough to take on a project with confidence. You don’t have to write the next Facebook or Gmail, just a basic understanding of common UI tricks.
  3. The underlaying code of #2 is important as well. Play with one or two of the most popular frameworks of the area you want to be in.
  4. Joining #2 and #3 together; practice, practice, practice. Keep doing some sort of programming work. Maybe pick up an open-source project you are interested in working with. Grab some small bugs to begin with to gain some rep with the project maintainers.
  5. Network with others in the programming space and build relationships with them especially in the areas you want to focus on. That tends to be the best ways to find jobs. This should be done even before you finish school. Joining a local user group in your related field would be a good place to start.
  6. Read! Read about new methodologies, best-practices, and other technologies. I find Hacker News a great source for stories to read. Also take a look at my other website, Business Developer Talk, for links to articles I feel are relavant for the business developer.

I’ll call this article a work-in-progress. If anyone else any tips please include them in the comments.

Thanks to a few of my Tweeps, @mygeekdaddy, @gmantechi, @eglue, and @the_jamezp for some additional help in building this list.

Calendar Fix for iOS/iCal

This isn’t really a “fix” as it was something that I learned that was causing me a headache. My wife just got a Samsung DROID Charge and was sending me “meeting requests”. These appointments would be automatically added to my calendar without me accepting them. I finally realized that I had both Mail.app and iCal running on my iMac. I looked through the settings in iCal and found a setting called “Automatically retrieve CalDAV invitations from Mail”. After unchecking this, my problem is fixed. I guess, that setting needs to be unchecked so I can see invites before they actually happen.

Validate the Expiration Date of a Credit Card

I needed an attribute to validate the credit card expiration date and couldn’t find any good examples. I have it working now, so others can use it.

Here is the action that does the validation:

    class ExpirationDateAttribute : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            return Convert.ToDateTime(value).Date >= DateTime.Today.AddDays(DateTime.Today.Day * -1 + 1).Date;
        }
    }

In your form model, do the following:

        [Required(ErrorMessage = "Please enter your expiration month.")]
        public int ExpireMonth { get; set; }
        [Required(ErrorMessage = "Please enter your expiration year.")]
        public int ExpireYear { get; set; }
        [ExpirationDate(ErrorMessage="Expiration Date cannot be in the past.")]
        public string ExpirationDate { get { return new DateTime(ExpireYear, ExpireMonth, 1).ToString("MM/yyyy"); }}

What was the name of the last spool file my program created? Here is how to determine that.

I had a problem recently where because of some old programs with built-in O-specs I didn’t really know what the name of the spool file generated is in CL. I found this API that can figure that out for you.

Here is how to use it. First declare your variables:

/* QSPRILSP Fields */
DCL VAR(&RCVVAR) TYPE(*CHAR) LEN(70)
DCL VAR(&RCVVARLEN) TYPE(*CHAR) LEN(4)
DCL VAR(&ERRCODE) TYPE(*CHAR) LEN(8)

/* FIELDS FROM FORMAT SPRL0100 */
DCL VAR(&SPLFNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&USERNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6)
DCL VAR(&SPLFNBR) TYPE(*DEC) LEN(6 0)

Then you need to run this check.

/* &RCVVARLEN NEEDS TO BE SET TO THE SIZE OF &RCVVAR. +
IF YOU CHANGE THE SIZE OF &RCVVAR, CHANGE IT ON THE +
LINE BELOW AS WELL! (CL HAS NO %SIZE BIF!!) */
CHGVAR VAR(%BIN(&ERRCODE 1 4)) VALUE(0)
/* End QSPRILSP Fields */

Then after your spool file is generated, run the following code:

/* Get the last spool file created information */
CALL PGM(QSPRILSP) PARM(&RCVVAR &RCVVARLEN +
'SPRL0100' &ERRCODE)

/* SINCE CL HAS NO SUCH THING AS A DATA STRUCTURE, I'VE +
PUT ALL OF THE FIELDS INTO ONE BIG &RCVVAR FIELD, +
AND WILL SPLIT IT INTO SUBFIELDS BELOW: */

CHGVAR VAR(&SPLFNAME) VALUE(%SST(&RCVVAR 9 10))
CHGVAR VAR(&JOBNAME) VALUE(%SST(&RCVVAR 19 10))
CHGVAR VAR(&USERNAME) VALUE(%SST(&RCVVAR 29 10))
CHGVAR VAR(&JOBNBR) VALUE(%SST(&RCVVAR 39 6))
CHGVAR VAR(&SPLFNBR) VALUE(%BIN(&RCVVAR 45 4))

Note: I did not originally write this code, but is documented here for me to easily find in the future. It was from an article in System i Network.

Creating a SubReport in SQL Server Reporting Services

I am documenting this here because this is very difficult to find anywhere online.

When you are creating a report in Visual Studio, one of the options you have is to create a subreport. I tried to make one a year ago and gave up after failing to get it to run correctly. This time around though, I finally figured out what I was missing.

Here is what you need to do:
* create your report and subreport as you normally would.
* Add parameters to the subreport and make sure to pass those same parameters in the subreport control on the “master” report.
* Here is where I had problems. On your .aspx page add OnSubreportProcessing="ReportViewer1_SubreportProcessing" to <LocalReport>
* Then in your .aspx.cs file add the following method:

protected void ReportViewer1_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
 {
 report_vw_ActionLogTableAdapter actionTA = new report_vw_ActionLogTableAdapter();
 DataSet ds = new DataSet();
 ds.Tables.Add(actionTA.GetActionLogDataByServiceRequestID(e.Parameters["ServiceRequestID"].Values[0]));
 ReportDataSource dataSource = new ReportDataSource("CustomerService_ActionLog", ds.Tables[0]);
 e.DataSources.Add(dataSource);
 }

Replace __CustomerService_ActionLog__ and __actionTA.GetActionLogDataByServiceRequestID__ with your appropriate values.
There you have it!

Comments? Feedback? Leave a comment!

Is it a Podcast or Something Else?

I have been thinking about this and have some thoughts on the whole thing.

The internet started out with most people not knowing or understanding it. Today they can’t live without it. Blogging was something that was around before 1998 (when I started blogging), back then no body knew about it or could understand why you would put your journal online. Around 2005 (or so), a blog network was sold to AOL for multi-millions and many are making a living from it now.

Now we have podcasting. We are in the exact same position now we were then. The one problem? The community is divided. We have the Twit’s calling it netcasts, we have Podshow (ahem, Mevio) getting rid of the podcast. Then we have companies like RawVoice and FarPoint Media (and many others) that are sticking to podcasts (at least at this time).

I think the problem is “What is a podcast?” Is it the show itself (wither it is video, audio, or other files)? Is it the style it is created in (independently produced by non-professionals)? Or is it the delivery mechanism? Once people finally agree on that (and I don’t think they will at this point), it can grow more easily with the united message.

I think podcasting is the delivery mechanism. My primary intended distribution is via subscribers in a podcatcher. They have other options like downloading and “streaming” from the website, but the intention is to have them receive it automatically. Thus my show is delivered via podcast. I consider networks like Mevio and FarPoint (BluBrry is not a network… yet) to be compared to companies like ABC, CBS, or Fox. Those networks provide the delivery mechanism (bandwidth) to distribute out to the people. They help out the the marketing and the other aspects that the production company doesn’t have as much experience with. Now BluBrry is not a network. Why? They provide to the production companies the tools they need to operate the company and treat it like a network of it’s own. BluBrry gets advertising and the tools you need to market and support your show.

I feel that BluBrry, FarPoint, and a few others are doing this right in this rapidly changing technology. Treat it as a boot-strap organization and quickly change to adapt to the changing technology trends. While it is true that they don’t have the money to easily to this, these networks find new and creative ways to adapt and to bring new perspectives as a whole to the industry. I really don’t know what to think of Podshow. They are a media network, but I think they dived in head-first instead of walking in from the shallow end first to make sure the water was okay to swim in.

Bringing this back to me.. am I a podcaster? Yes! Am I a blogger? Sort of. Am I a developer? Yes. What will be on my business card? Independent Media Creator. The sales pitch? “My show features some of the best independent music from around the world along with music news, some humor, and the occasional rant. It is delivered via podcast or you can stream it off the website.”

This is just my opinion which is subject to change. Unlike the politicians, I am willing to accept I am wrong and reserve the right to change what I think based on feedback. Hopefully it all makes sense. I know my brain doesn’t put thoughts to words the best sometimes.