However, they subsequently renamed themselves "Atlantis Partners" and later to "Workbridge Associates". I've heard they have more names as well. Each individual group has the same churn rate - they hire people to man the phone banks to harass employers with nonstop phonecalls and resume blasts. The recruiters do not know anything about the profession and know less about each individual company they target. Instead, they get their leads through trolling Craigslist, Monster.com and other job boards and attempt to sell overpriced recruiting.
I've recently been made a target as an employer as well. When I informed them that I would not work with them and asked them politely not to call me, they instead subjected me to random phonecalls from different salespeople from different affiliates all trying to get an "in". It truly leaves a bad taste. There are so many good, honest, patient, and knowledgeable recruiters in the world, why work with someone like Workbridge?
| permalink | related link |




( 3 / 33 )I just realized I'd hate to write out the code to sort through a list of strings and find the longest one. So I tried to do it in LINQ. Here's what I got:
List<string> words = new List<string>();
... fill in a bunch of data ...
var v = (from s in words orderby s.Length descending select s).Take(1);
The "orderby s.Length" clause sorts by string length. Descending takes longest ones first and shortest ones last. The part I didn't know was the ".Take(1)" function - that's interesting! So, basically, I get the first string returned by the select statement.
Of course, now you have to take a "var" and turn it into a string object. Here's a shortcut:
IEnumerable<string> list = v as IEnumerable<string>;
if (list != null) {
foreach (string s in list) {
return s;
}
}
| permalink | related link |




( 2.8 / 85 )As much as I'd welcome an upgrade to Windows, I doubt I'll be interested in what Microsoft is producing.
1) The new UI has a nifty "translucent" look to everything. However, this makes it virtually impossible to glance at text - now you have to study it carefully to make sure the background isn't distorting your words. This is part of the reason I haven't grown attached to Vista, and I'm sad to see it isn't changing much in the next release.
2) Every individual part of the default UI is now more cluttered. What used to be a simple "folder" window now has tons of options, hyperlinks, and buttons. In many cases, the icons now randomly jump in size depending on what Windows thinks you have in the folder - you can go from tiny icons to huge ones, and funny "1-5 star" ratings systems interjected if the folder contains some music or video files.
3) The control panel now attempts to hide stuff it thinks you don't want to see. This causes two problems: first, it's harder to find the correct choice to make since you have to bypass all the choices it thinks you want to see; and secondly, when you make a choice, it's hard to know if you've found the correct place to make it. For example, It takes a very long time now to find "network connections", when it used to be very simple to bring up a list of all network adapters on your computer and select the one you wanted to check.
I would be very interested in an OS that would reduce the amount of unnecessary garbage that clogs up the user interface. Ubuntu and Mac OSX both do well in this regard.
| permalink | related link |




( 2.8 / 240 )In the olden days, it was possible to compare strings like so:
string s1, s2;
if (s1 = s2) then begin
PrintLn("Strings match!");
end else begin
PrintLn("Strings don't match.");
end;
Of course, we're no longer in the Turbo Pascal era. What happens when you compare two strings using the == symbol in .net? It wraps a call to String.Equals. However, it also returns true if both strings are null!
string s1, s2;
if (s1 == s2) {
Console.WriteLine("S1 and S2 are equivalent according to String.Equals(). They could be null!");
} else {
Console.WriteLine("S1 and S2 have different values, or one is null and the other is not null.");
}
Another way to run this test is to use s1.equals(s2) to see if they match - but wait! Null pointer exceptions!
string s1 = null;
string s2 = "Test";
if (s1.Equals(s2)) {
Console.WriteLine("Poof! Null Pointer Exception!");
}
Of course, there's a simple answer. There is one and only one correct way to compare strings. Here it is:
string.Equals(s1, s2, StringComparison.CurrentCultureIgnoreCase)
That also gets rid of the "case sensitivity" bug :)
| permalink | related link |




( 3.2 / 286 )It's really easy to sum numeric values. You write this:
SELECT SUM(revenue) FROM orders
Every so often I wish I could write a similar query for strings. For example, wouldn't it be neat if we could get a list of employees by department like this?
SELECT TO_LIST(name), department FROM employees GROUP BY department
As it turns out, there's a way to do this, but it's a little bit tricky. You have to use an XML feature to do something it wasn't really designed to do. By converting results into XML and back, you can produce lists exactly the way you might want. Here's what the query looks like:
SELECT department
, SUBSTRING(
(SELECT ', ' + name
FROM employees e2
WHERE e2.department = e1.department
FOR XML PATH(''))
, 2, 999) AS list_of_names
FROM employees e1
GROUP BY department
Why does this work? First, you're doing a main query that just lists all the departments. So you get a list like this:
department
-----------
Sales
Accounting
Development
Then, for each record in this list, we do a subquery listing "', ' + name" for each record. That produces these results internally:
field1
-----------
, Bob
, Chris
, Alex
The XML path with a blank parameter turns that into a gigantic text string, like so:
field1
------------------
, Bob, Chris, Alex
And of course the Substring removes the first two characters. The end result is that you get exactly the list you expect!
| permalink | related link |




( 3 / 233 )Next

Calendar



