OCDProgrammer.com

It's Microsoft's World, and I'm just living in it
View Clarence Klopfstein's profile on LinkedIn

Clarence Klopfstein's Facebook profile

This site is under construction...

Categories

New Comments

Referring Sites


Disclaimer

  • This is MY blog. The views represented here are not in relation to anybody else. Please read my full disclaimer for a more complete disclaimer.

A few random links and saved pages

March 12, 2011 22:46 by ckincincy

I have a habit of bookmarking pages as I feel that I need to go back and review the content. 

So, I’m a bit too OCD to have that many random links in my book marks and I’ve had it happen more than once where stuff I bookmarked later disappeared from the web.  Let me share them with you… and at the same time give ma  point of reference!

PC Usability Hacks

Programming Tips

Fun Tips

Hacks

Tech Links

Political/Opinion


Technical Interviews–The Goal

March 7, 2011 08:08 by ckincincy

For the last few years I have been one of the primary people to interview potential new hires.  Interviewing programmers is very difficult because what we do is so vast that knowing it all is impossible.  Over time I learned from the interviews and came down to answering one question.  I will even say that me and a couple co-workers at a previous job got really good at this process.  When we hired a person we knew exactly what we were getting.  If the person was senior, we knew it.  If the person was a mid-level developer that wouldn’t really get much better… we knew it.  If the person wasn’t worth hiring we knew it*.  The results of hiring each has proven our process.

What do you want to figure out about the person sitting next to you?

This can really vary from place to place, but ultimately I have two things I’d like to have answered.

How wide and deep is their knowledge?

How wide and deep is their experience?

What I’ve found is that it is easy for some people to memorize the text book answers.  However figuring this out is very easy, and ultimately answers the second question.  You ask a question and you let them give you the right answer, but then ask them a follow up or two about the same topic.  Generally in relation to how they have used or experienced it on the job. 

Ultimately I’ve found the following process to be very beneficial:

1. 15 minute phone screen.  Is this person worth bringing in for a longer period of time?

2. One hour technical interview that includes a technical code problem. 

I’ve also heard of companies, and I’ve yet to work for one that would allow this, that will give a programmer a simple project to do at home before the face to face interview.

I’ll cover a few things over the next few blog post.  I’ll give a list of programming problems that I’ve seen used and a list of questions that I’ve used.

* Yes, in spite of an entire team of programmers recommending a person not get hired our managers hired them.  Our reservations were soon proven to be accurate. 


Categories: Programming | Work
Actions: E-mail | Permalink | Comments (0) | Comment RSS

No image exist trick

January 3, 2010 20:54 by ckincincy

One of the neat little things I’ve learned on the big project I am on is how to show a default image if the one you need isn’t found.

To give a bit of a background, my last two jobs have been on catalog like websites.  Where you have thousands (on the bigger site… hundreds of thousands) of items in the catalog.  Each with several size variations of the image.  At my prior employer I had a pretty complex algorithm to determine if an image was available.  At the most basis level, querying the the hard drive to see if the file exist.   What I am using now is handled on the client side, and I tend to like the performance a bit more.

In a standard image tag, you have the following:

<img alt=”” src=”someimage.jpg” />

Adding a simple onerror tag to it, gives you a default image if the one you expect to be there doesn’t exist:

<img alt=”” src=”someimage.jpg” onerror=”this.onerror=null;this.src=’default.jpg’;” />

Pretty nice little trick, surprised I had never heard of it.


App_offline.htm – Page Not Found - Solution

December 9, 2009 17:49 by ckincincy

Today while looking over my RSS feeds I saw a post about some changes to the DOTNETBLOGENGINE, while looking over that fellow’s blog I saw a post about App_Offline.htm – Page Not Found.  I took a brief read over the article and it reminded me of a time when I ran into this issue. 

The Problem

The problem occurs when you turn App_Offline on, Internet Explorer (and apparently Google Chrome) will show a ‘pretty’ 404 error page.  Though FireFox will show the contents of the file without issue.

Here is the contents of my App_Offline.htm file:

image

Google Chrome shows this as a result:

image

Internet Explorer will show a page similar to this:

image

But Firefox shows the page as you would expect:

image 

 

The Solution

Now I remembered the solution pretty much immediately, you have to make the size of the file hit a certain limit.  I took a look around the web and found this article which puts the size at 512k.  That page recommends fixing this with some comments in the code.

Here is what my new App_Offline.htm file looks: 

image

Now you can see that the three browsers mentioned above will display the page as you would expect:

image

image

image

A Conclusion

Now, during my time of writing this blog post I got an email from Ben.  He gives a good justification for using his HTTPModule that his post talked about.  When you use App_Offline, all files are inaccessible.  Your site is down.  Now if you have some admin pages, or if you wanted to edit his solution to white list some IP, so you can test the solution without the general public seeing it using an HTTPModule sounds like a fantastic idea.  It, however, is not something you should implement to fix the 404 Page Not Found error.


P3P Header

December 9, 2009 03:00 by ckincincy

 

One thing I learned over the past few months had to do with sharing a website from one site to another via an iFrame.  The problem arises when the domains don’t match.  If your primary site is example.com and the site in the iFrame is exampleinaniframe.com, by default exampleinaniframe.com cannot set cookies or execute certain JavaScript.  Browsers see this as a potential hijacking and throw a security error.

The fix for this is pretty simple, but not simple all at the same time.  There is a header you can add to  your site telling browsers that it should allow it to be put in an iFrame.  Those are called P3P Header’s.  Now the hard part to this is that a search online returns a lot of conflicting answers to what your header should look like.  Then one night, as I was trying to figure out how to do Facebook development, it hit me.  That is how Facebook works.  All of those applications you use in Facebook are really hosted on another site, you just see it seamlessly via an iFrame.  Now since Facebook has 350,000,000 users I figured they probably have this figured out.

A brief search found this very simple and concise P3P header, all you have to do is include this somewhere early in your page load life cycle (global.asax, httpmodule, basepage, etc…):

HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");

That will tell the user’s browser to not throw a security exception and allow the site to function as needed.


Project In Review – Reducing ViewState

November 25, 2009 03:00 by ckincincy

In a .NET world ViewState can get out of hand in a hurry.  In some of our more intense pages the ViewState created by controls could reach well into the 50% range of the page size.  A brief search by a coworker found this solution.

The main thing to take from this article is to insert this snippet of code in your page, or custom base page:

    protected override PageStatePersister PageStatePersister
    {
        get
        {
            return new SessionPageStatePersister(this);
        }
    }

This little beauty of code can reduce the ViewState by 90+%, which is significant.

Now the obvious limitation to this is that your real ViewState is now stored in session, so this will add some overhead to your web application.


Project In Review

November 22, 2009 17:41 by ckincincy

So at work I just finished up a rather large project.  It is live and customers are using it.

What I am going to try and do is recap some of what I’ve done and learned over the past few months so others can learn, and I can easily recall :-)

Some of the post will be rather trivial in nature, so bear with me.


Finding Talent is Hard

October 4, 2009 21:31 by ckincincy

At my current employer, I am the round One interview.  I don’t negotiate or care about salary.  I just talk about .NET.  I have 20 standard questions I ask each and every person, then I throw in a few question specific to their resume. 

Now keep in mind these aren’t hard questions to answer.

What is the difference between session state and viewstate? 

What is the life cycle of an ASP.NET page? 

I don’t go into these interviews looking for a person to know every one of the answers, but there are a few that I consider critical.  I just want to measure their depth and breadth of knowledge of the .NET framework.  What I’ve come to realize is finding talent is hard.  So when I browsed to FoxNews.com and saw this article, I know exactly what they are talking about.  You’d think with unemployment hovering around 10% that talented people would be available.

Then when you do find somebody worth hiring, its not a done deal.  Due to the extremely tight market when you find a developer you want, you are battling with other companies.  Even meeting salary expectations isn’t enough, because of the market the employee can pick and choose which company they want to work for, with little risk of letting a good opportunity pass them by. 

Now just so this post isn’t one big rant I want to throw my thoughts out on a few aspects of this topic.

What does this mean for companies?

1. It means you need to be willing to pay top dollar.  This isn’t a market where you can negotiate down a persons salary.  If they say it is going to take 80K to get them on board, then you need to be prepared to pay 80K.

2. It means you better pay the employees you have.  I’m new to my job, and while money was far from the primary or only factor, it was a factor.  Companies need to pay the employees they don’t want to lose top dollar.  This, surprisingly, isn’t a market where a 5% raise guarantees an employee sticking around.

3. The cost of development has gone up.  The out-sourcing movement has had its affect on the market and there is no India to turn to to drive cost down.  Talented workers are expensive workers.

What can be done about it?

1. Training must be encouraged.  As the previous article stated in another way, you aren’t going to take the factory worker and plug them into these jobs.  People like me have been constantly learning for years to get to where we are.  They need to understand that just because they were a lead worker on their factory line, they will have to be the follower in their new line of work.

2. Government incentives.  I think this is a place where a focused tax benefit could come in handy.  Give companies a significant tax break for hiring entry level workers for these positions.  It cost money to train them and their newbie mistakes cost money.  Give companies a reason to hire relatively new people.

3. College for all.  Yep, the small government Republican just said that.  We need to find a way to get more people into college.  We can’t compete if we don’t have the skills to compete.

What does this mean for the worker?

1. Don’t be afraid to look around.  One of the big causes of the tight job market is that people are afraid to switch jobs.  I’ve never been one to play into this fear much.  I know that with some risk comes reward. 

2. Don’t be afraid to ask for more money.  Lets be real here when I say, they don’t have much of a choice in the matter.

3. Stay up to date on your skills.  This is why there is an allusion of age discrimination in the IT field.  People get comfortable in what they are doing and when technology moves on, they can’t find a job when they need one. 

With all of that being said, my employer is still looking to hire several .NET developers.  If you are interested contact me and let me know.  Going through me, does offer some incentive as I do get a referral bonus.  Not that I’d take it any easier on you in the phone interview, but it sure does make me like you more :-).

[Referenced article in PDF form]


Maker vs. Manager

September 13, 2009 18:49 by ckincincy

Being new to my current company, one of the big differences I’ve had to adjust to is meetings.  For a while we had a daily 10AM meeting and then occasionally we’d have another meeting at some point in the day.  Paul Graham wrote a great article on the topic that hits the problem well. 

The basic concept is that makers work in 3 to 4 hour chunks.  When a maker gets into work, they really don’t like distractions for three to four hours.  From a programmer’s stand point, this is very true.  There isn’t much you can accomplish in 40 to 60 minute chunks.  Its about that time frame when you’ve fully identified the problem and are ready to start writing some final code to fix the issue at hand.  Then managers work in hour chunks.  Each hour starts fresh with what is on tap.  So a meeting doesn’t really hurt their day because it is just what they need to do that hour.

You can read the source article here.  If for some reason that is no longer available, here is a PDF of the same article.


CINNUG March Meeting – Alan Stevens

March 29, 2009 18:20 by ckincincy

Alan Stevens presented at CINNUG this month, and I have to say his presentation was powerful. 

Being a pretty devout Christian man I have heard a lot of sermons and presentations about things and this presentation was a top tier level presentation.  Very practical about how a career evolves. 

It is WELL worth the time it takes to watch the video, if you create a Vimeo account you can download the source file for offline viewing. 

I’m sure if you visit Alan Stevens blog or Twitter account he will let it be known when his PowerPoint file is online… check that, you can download the 66MB file here (but his link seems broke, so I’ll update if it changes). Here is the PowerPoint.

Again, well worth the watch.