monster’s new instant job search beta
Since I'm currently job hunting, a few times a week I bounce around between the different job sites out there to see if there are any decent opportunities close to where I live, or if I do actually have to commute to NYC to find good work. Today I was checking out monster after persuing a lead that made it's way to my Inbox early this morning to discover Monster's new Instant Job Search.

The Instant Job Search is a simple ajax app that lets job seekers do basic keyword searches of available jobs on the fly, without the use of a submit button. You specify your zip code, and search radius, and get results sort of quickly (avg. search time for me was between 2-5 seconds, not blazingly fast by any means, but quicker than a page refresh of course. I quickly typed in "Ajax" to get two listings of the same job for a .NET Developer in Connecticut. Well I'm not a .NET guy, so I expanded the radius from 35 to 70 miles (which includes NYC of course) and got 12 returned results, most of which I can work with.
Some interesting findings
This new little app works like an auto-complete and begins searching once you type in two characters in the Keywords field. As I said before there isn't a submit button, so it seems like every time you add a letter, it sends a request. And when you enter another character, it cancels that request and replaces it with a new one. So this is my quesiton. What's the point of this app? By sending requests with each keystroke and trying to return any data any chance it gets, theoretically if a user types slowly and is a hunt and peck type, they could actually using more bandwidth than if they had a page refresh since the server is returning more than the typical auto-complete string array.
Json meets AHAH
Ok, I'm sure you're saying "what's the big deal?" It's just lightweight data and folks who hunt and peck will never notice. And I'll agree with you. The WTF is what's returned by the server when you run your query, a line of JSON then some AHAH style HTML. Huh? Here's my query.
-
http://my.monster.com/JobSearch/InstantFeeder.aspx?_location=12528&_keywords=ajax&_radius=70&_sort=rank&_pagenum=1&_pagesize=1
And here's the JSON / AHAH hybrid that was returned
-
{"jobs":{"returned":12,"found":22,"pagenum":1}}
-
<table class="ijsResult" id="ijsresult_1" xmlns:fo="http://www.w3.org/1999/XSL/Format">
-
<td style="vertical-align:top;">
-
<span style="display:none;" id="ijsmeta_1">{'jobid':46098442 , 'positionid':36388017, 'displayoptions':}</span>
-
<div class="colItemNumber">1.
-
<br /></div>
-
</td>
-
<td style="vertical-align:top;">
-
<div class="colDetailedDateActive">
-
<span style="display:none;" class="colApplied" id="ijsapplied_1">A</span>
-
<span style="display:none;" class="colFiled" id="ijsfiled_1" onclick="IjsEvent({etype:'delfromfile',value:1});return false;">F</span>7/25/2006</div>
-
<div class="colDetailedJobTitle">
-
<span style="display:none;" id="ijsstar_1">
-
<img src="http://media.monster.com/mm/usen/icons/10x10_arrow.gif" border="0" alt="" />
-
</span>
-
<a href="http://jobsearch.monster.com/getjob.asp?JobID=46098442&WT.mns_pth=1001" target="_blank">Java Developer with XML and Web Services exp</a>
-
</div>
-
<div class="colDetailedSummary">Java developer for exciting Software Company This position is open as of 7/26/2006. Not a fit for this position? Java Developer with XML and Web Services exp Location ...<a href="http://jobsearch.monster.com/getjob.asp?JobID=46098442&WT.mns_pth=1001" target="_blank">[more]</a> <span class="colSaveToFile" id="ijssavetofile_1"><a href="javascript:return false;" onclick="IjsEvent({etype:'savetofile',value:1});return false;">[save to file]</a></span></div>
-
</td>
-
</tr>
-
</table>
Pretty weird eh? Every time results are returned there is a parsing error due to syntax issues with the JSON string. And then other errors related to various DOM issues ie. "uncaught exception: Permission denied to set property Window.status" and "Error in parsing value for property 'right'. Declaration dropped."

What I don't understand is why the use of a hybrid return data set in the first place? All of the XHTML is formatted in the same way so why bloat things up with the redundant code? That same data could be in XML or JSON and be totally trimmed down. Below is an example of a JSON version of the same data. The JSON string equates to 592 bytes as opposed to the HTML version that is a much heftier 1,749 bytes. You get the point.
-
{"jobs": {
-
"meta": {
-
"returned": 1,
-
"found": 22,
-
"pagenum": 1},
-
"result": [
-
{"jobid": 46098442,
-
"positionid": 36388017,
-
"displayoptions":,
-
"itemNumber":1,
-
"ijsapplied": "A",
-
"ijsfiled": "7/25/2006",
-
"detailedJobTitle": "Java Developer with XML and Web Services exp",
-
"detailedCompanyName": "CyberCoders",
-
"detailedLocation": "Harrison, New York",
-
"detailedSummary": "Java developer for exciting Software Company This position is open as of 7/26/2006. Not a fit for this position? Java Developer with XML and Web Services exp Location ..."}]}
How to make a beta annoying to debug
Three words, lousy code formatting. The javascript errors took me to this line
-
return"";},SafeEval:function(s){return eval("["+s+"]")[0];},CookieGet:function(ckey){var carr=document.cookie.split(/\s*;\s*/);for(var nvk in carr){var nvsplit=carr[nvk].split(/=/);if(nvsplit[0]==ckey){return nvsplit[1];}}
Coding grammar
I can't stress enough the importance of well formatted code. When you are writing in any language, english included, poor formatting equals improper grammar. Thissentence,isinenglishandcanberead!eventhoughitisnotnaturalYadig? If a highschool student wrote a paper that was difficult to read, they'd get a lousy grade even if it was the most most amazing piece of work in the entire history of literature. The same applies to coding. Yes, when I typed in my query the app returned the results I was expecting. But from such a large company as monster.com, I was hoping for more.