text:
I appreciate the idea - I've had some bad experiences with recruiters myself, and the temptation to shame them to the world certainly has some raw emotional appeal. But I've also had wonderful experiences with recruiters, that resulted in great jobs that lasted for years. So I have some concerns:1) Specifically seeking out bad reviews is likely to attract angry rants. Yelp has their share of bitter people lashing out because they can, and anonymous content tends to encourage it. How do you intend to combat that behavior?2) People grow and improve. I don't want to be judged for my work or my behavior from my early days in the field. How are you going to be sure this isn't unfairly capturing the worst moments of someone's career just because they are new at it and haven't learned any better yet?
 >2) People grow and improve. I don't want to be judged for my work or my behavior from my early days in the field. How are you going to be sure this isn't unfairly capturing the worst moments of someone's career just because they are new at it and haven't learned any better yet?Or are currently in a bad company which forces/encourages this kind of behavior. I wouldn't mind recruiting company reviews though. Because there would be a few on my blacklist.
 Only one on my blacklist is Cyber Coders. They just sent me a listing for a Davenport Machine Operator four states away, based on my skills. My skills are all in software development. No idea why this recruiter thinks I'd be a good fit for operating a giant piece of machinery.
 They're just spamming heavily and hoping you maybe know someone who knows someone :)
 Ah yes, the tried and true "you do my job for me" method.
 I thought Cyber Coders hire directly?
 We actually asked ourselves the same questions. The natural evolution of this tool would be to allow for reviews of recruiters/agencies.Regarding point 1) there are ways to fight unjustified negative reviews (e.g. "I didn't get a job, this agency sucks!"), similarly to how they do on websites like Yelp. This is more of a community guided effort (unless we start actively moderating reviews, which is an option).For now we're focusing more on building a sort of index of "horror stories" involving recruiters but before releasing the data we'll make a big effort not to publish biased content or blatant lies.For point 2) We absolutely agree and we are still discussing how to release the data so that "nobody gets hurt", at least individually. You can keep in touch with us by adding your email address to the form (even if you don't want to share any story, although it would be much appreciated). Feel free to use a temporary email address or an alias.
 I was working on a similar system for more general reviews and found that compared to fraudulent positive reviews negative reviews have a lot less incentives except against public figures and tend to be more honest as a result. With that said, protecting both the submitter and the accused of defamation can be accomplished partially with community moderation and aggressive redaction of as many identifying names as possible - companies are, however, not exempt (in fact, the primary key that I used for complaints). And to avoid unfair hive mind viral hits on characters, any review beyond a certain community reputation needs to be reviewed for validity and made clear to the community that the story is an allegation. Furthermore, I wanted to encourage more of a dialogue and similar to Yelp reviews, so if you are given a negative reputation you must be provided a means to defend yourself - and the status of defense must be made clear as well. For example, a statement can be made public, private (only to the person that originally wrote the review), “no comment,” or no response. If someone didn’t originally provide their contact info out of fears, the community should be made clear that it’s anonymous and will always remain so. However, protecting the information at your discretion until a certain reputation has been reached should provide more credibility as well. The hard part was trying to figure out how to contact the accused at a corporation for low-touch interactions because we tend to not have the same person repeatedly (hence why normally I just used the company, not individuals).
 All great points! I think we will have to face similar challenges.We're working on different options. One is along the lines of Glassdoor which allows companies to respond to reviews.If you have any references regarding the first paragraph I would be very interested, thanks!
 I completely agree. Public shaming lists aren't advisable.
 Don't worry, it won't turn into a public shaming list, we already thought about that. We will update the form to make this clear.
 How can you release the all the data about bad recruiters publicly without making it a public shaming list?
 We will only release data about companies, not individual recruiters. We will then use their name to (try to) get their contact details and send them a link to the data so that they can be more aware of how their actions affected (and how many) people. What we're doing should ideally benefit both sides, not just us.Hence why I said we should make this more clear, as in: we're not going to publish the names of the individual recruiters.
 You're currently collecting this data under false pretenses. If you care about unprofessional behavior and giving people bad experiences, you should remove the line about releasing all the data to the public from the start of your survey.
 No we are not. We are clearly stating that the data will be publicly available EXCEPT for those fields where the opposite is explicitly indicated. I really don't see how this could be more clear.EDIT: by the way we updated the related field so that it's clear that the recruiter's name might be shared with the agency (but without releasing anything else about the entry to avoid tracing it back to the candidate). If you have any suggestions on how to communicate this better we would really appreciate it. Thanks!
 Your front page still says> We are collecting stories from devs all over the world and plan to release all data to the public (for free!) so that no more fellow devs will have to sufferIf I filled your form out, I would expect that all the data I entered would be released to the public. You then turn around and contradict that in the form, making it less clear about what I should expect. You need to be consistent in both places, and link to a more detailed explanation on how this data will be anonymized and shared.This also makes it less clear whether other fields will be shared publicly. Is field 7 going to be public or is it just something I'm sharing with you? I'm honestly not sure about that now.
 What's more clear than being explicit about which fields will be published and which not? IMHO adding that to the main page is redundant and a waste of time and space.Specifically about field 7 are you suggesting we rephrase the description? If so how?We can definitely work on a page that explains the process in more detail once we decide exactly how to proceed.
 I particularly love recruiters who insist that you send them a resume in MS Word format, so that they can remove your contact details and stick their agency's ugly letterhead on top (or "improve" your resume for you if they're particularly unethical)."I'll need your resume in Word Format.""I can give you a PDF""Give me the original in Word Format.""There is no original in Word Format, I wrote my resume in LaTeX. Besides, why do you need to be able to edit my resume?"And... ghosted.
 > "Give me the original in Word Format."Since they're all but certainly going to ghost you anyway, why not just"Sure, here's the original. This is using features that aren't in the ancient Debian distribution of TeXlive; you'll want to follow the excellent instructions at https://github.com/posquit0/Awesome-CV to get XeLaTeX configured correctly (or it'll bomb out with the most inscrutable of errors).I'm having a couple of locale issues with attaching files through pine at the moment, so I've pasted the source below. I trust it will not be difficult to copy-paste to a new file. %!TEX TS-program = xelatex %!TEX encoding = UTF-8 Unicode \documentclass[11pt, a4paper]{awesome-cv} \geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm} \fontdir[fonts/] \colorlet{awesome}{awesome-blue} \setbool{acvSectionColorHighlight}{true} . . . {\thepage} \end{document}  Let me know if there are any issues.Thanks!"
 You forgot to ask for their public PGP key!
 That is an excellent suggestion.In fact, that would be a great catalyst to weed out 99% of recruiters who aren't willing to make any sort of effort.I'm not joking. I might just apply this one...
 This almost screwed me in my last interview. (I still got the job thankfully). They took off my blog, mvp award, GitHub profile, and Stack Overflow account. I went into the interview with them thinking I had done nothing except my work history. When I found out, I snapped at the recruiter explaining those are important for them to see.
 A few months ago a recruiter took off my title (ing. jr, similar to P. Eng.) from my resume because "it was not required for the position". I pay 500 bucks a year for that title; I was pretty pissed, to say the least.
 I've had recruiters copy and paste the text from my nicely-formatted PDF into a Word document after I refused to give them an editable copy.I no longer deal with recruiters if I can help it, but if I find myself using them again I'd consider offering to add their logo onto my CV myself to avoid them butchering it.
 Probably 'ghosted' for mentioning the word 'latex'
 That's a good point. They may have been ignorant of the technology and thought OP was making a lewd joke!
 But LaTeX is pronounced differently from latex.
 Besides, why do you need to be able to edit my resume?I can't speak for tech recruiting companies, but at the company I work for removing the header is a method of anonymizing the resume to prevent unconscious gender/race/etc... bias based on someone's name, city, ZIP Code, etc...
 I've had my current recruiter tell potential employers that I "view QA courses on Udemy.com to lower coding mistakes before it goes to QA dept."I don't do QA courses. I do TDD development. And I never mentioned Udemy.com to them either.They put words in my mouth.
 This sounds a lot like the kind of stories we are looking for! We would really appreciate if you could share the story with us.
 Particularly ironic as Word has been able to open and edit PDFs for a while.
 Dear people who are in charge of hiring processes (there will be some of you in this audience, I'm sure):External recruiters are generally expensive and bad. By using them, you reduce the quality of your reputation. They charge 25% or more of the first year salary per placement.If you are big enough to afford it -- that is, you're making more than four hires a year -- use an actual employee as your recruiter. Make sure that they are familiar with your company's actual culture and business practices, and can speak authoritatively about HR policies. Pay them a regular salary and benefits, so that they have no incentive to lie. Pay bonuses based on the performance of the employees they hire after those employees have been working for you for a year, so that they have an incentive to get high-quality people in.The recruiter is the first face of your company. That experience should be considerate, consistent, responsive, and above all positive. An unsuccessful candidate should leave the experience thinking that your company would still be a pretty good place to work in the future, and maybe they should recommend a friend who would be a better fit.
 Also: we notice when you hire more than 1 external recruiter at a time.When I get 8 contacts over 2 weeks for the exact same position, that lets me know there are huge red flags ahead. Or, and this is more fun, you're contacting me for a position I already interviewed with and turned down.Are you in a death spiral and need bodies ASAP? Does your comp suck? Does your office suck? Does your location suck? Are you too picky in your interview process? Maybe a mix of all of these?
 This is simply not true. I’m no fan of any kind of recruiter, but 3rd party ones are almost always better than internal full-time recruiters - naturally, since they do the same thing but get paid much more.
 Are you asserting that how much people are paid determines the quality of their work?
 Hear, hear!
 Whenever I've been contacted by a recruiter they make out like cooperating with them is as good as receiving a job offer when none of them have any authority over hiring. It's like why mislead people like that?The biggest problem I have with them is their incentives are misaligned with what you want. A recruiter doesn't make their money by getting you the best offer. They make their money by helping sign a lot of people. Which is why they always ask the salary question. So they can build a rolodex sorted by salary ranges and then experience levels. In fact, there is probably algorithms for prioritising the placement of the most qualified people asking for the least amount of money.I would almost be worried about new comers in tech who maybe haven't dealt with recruiters before as recruiters are VERY good at extracting personal information. In any other field what they are doing would be illegal. In fact in information security you would call it social engineering. But people in recruiting just call it their job.It's even worse when you consider that this is a part of the process when people might be more vulnerable or desperate. Perhaps ironically the old work-from-home-fake-job-offer-scammery-roo is also used by identity thieves, doxers, and fraudsters for the same purpose and really: Is there much difference between that and recruiting? Both of them sell a lie to extract profit from the person they target and the means they do so is extremely similar.
 Thank you for the insight. Websites like Glassdoor already do a good job of giving you an overview of potential employers but the same doesn't exist for recruiters.Normally you might be in contact with 10-20 recruiters for a few months and end up working only for one company for the next few years so the impact recruiters have is a superset of the employer's.Maybe recruiters could stop selling the company to death and openly admit what is wrong with the current state of things (e.g. poor Joel score). People appreciate honesty and I would definitely work for a company that admits their problems but is willing to fix them.Also getting rid of recruiters altogether is not a viable option.
 I get a lot of poor recruitment pitches, I could go on for hours about this.Best ones are "looking for a $TECH ninja/pirate/spaceman", yada yada, they have a ping-pong table, lunch etc.No mention of salary range. Not one. Like I'm doing this purely because I enjoy it (I do, but that's beside the point)!Why the heck would I apply for a job that doesn't pay?  What do you mean? You can't pay your mortgage with "great company ethos" or "free beers on Friday"?  Another frustrating tactic they have started to use is bait positions with attractive "specifications". They use these to draw you into communicating with them and start offering subpar positions than those initially mentioned in the first communication. The classic bait and switch.I'm fed up getting messages on LinkedIn along the lines of:Hi LeBowen You are exactly what TheWorldsBestCompany are looking for, is it OK for us to have a phone call to discuss?Of course when you try to obtain any information about the position, you're met with vague details about it, but they have this other position you might be interested in.  I get these all the time and I simply don't respond to them anymore.The initial email needs to hook me somehow, and show that you've at least put some amount of effort into personalizing your pitch to me, specifically (you know, show that you've actually read my profile and explain why'd I'd be a great fit for your client).  Oh yeah, plenty of advertised functional programming positions are really run-of-the-mill Java positions, but recruiters have found that noone answers true ads, so its a total bait-and-switch, “do this Java for a few years and they might one day think about Clojure...” spoiler: they won’t  As the owner of a small business I like to point out that recruiters' fees come straight out of your salary - if I have a budget of £30k for a junior developer position and interview someone myself, I'll offer £30k. If I interview someone through a recruiter and know they'll charge me 15% I'll not only offer less to try to bring the fees down but also so I don't go over my budget including fees.If you're job hunting it pays to approach potential employers directly. It also makes a much better impression.  I'd like to apply to an company's own listing directly (whether it be LinkedIn, StackOverflow, the company's own web site, etc.) but this seems to be a straight ticket into a black hole.At this point in my career, I've probably interviewed at 200-300 companies. I think I can count the number of times I've received a positive response for a position I applied to directly with one hand.All my interviews have been from recruiters (whether it be third-party or in-house) reaching out to me, or friends referring me.Maybe my resume just sucks?  I can honestly say out of around 60 job submittals (I’m very focused) over 20 years and 7 companies, going through recruiters, I’ve never been ghosted, I always knew where I stood in the process and have only had maybe 4 rejections. The rest I took myself out of the running for when I got the offer I wanted. Even out of the four rejections, I at least went through the whole process of phone screen and in person.I’m no special snowflake I’m just your bog standard enterprise developer/architect and honestly I just started taking my career seriously in the last ten years. Five of the mentioned 7 jobs were in the last 10 years.  My problem isn't ghosting. Correct me if I'm wrong, but ghosting means you start communications with the employer, but at some point they cease contact.My problem is getting a positive response in the first place from any company I apply to directly. I apply online, wait anywhere from a few days to a few weeks+, and either get no response at all, or a generic "sorry, but no thanks" e-mail.On the other hand, going through a recruiter, he/she has been able to sell me to the employer much more effectively. When I go through a recruiter, I'd say I've been able to at least get to a phone screen 90%+ of the time.I reckon a large factor is that recruiters often have connections to hiring managers.  I’m “starting the conversation” when I send out the resume. When I go through a reputable recruiter my resume never goes down a black hole.I’ve gotten a phone screen 100% of the time my resume has been submitted by a recruiter - the only exception was an immediate response from the company that they filled the spot already.Not that I am a special snowflake, but if you know the qualifications that the company is looking for up front, you can tailor your resume to highlight those qualifications. If you don’t have the qualifications you don’t bother submitting your resume.  This times a hundred. I've been ghosted so many times applying for internships and looking for work after I graduate. I would at least like a letter saying this position is closed now, so fuck off, but they never do that. I hate it so much.  You can try taking the recruiters fees out of my salary offer but if your offer is 15% less than the three or four other offers I usually have - good luck with that.I’ve worked with local recruiters almost exclusively over the past 20 years. If I send you a resume directly, I have no way of knowing whether you looked at, how much of your job req is fluff, what the necessary and nice to have skills are etc.When I work through a recruiter, they’ve already been debriefed by other candidates who interviewed for the same position and they can tell me what the interviewer prioritizes.I’ve also worked with recruiters from the other end as a hiring manager (actually Dev lead), I would call the recruiter back and give feedback.  My major issue right now is getting a ton of irrelevant emails and voicemails for roles that I am not at all qualified for.They're borderline spam and follow the came basic format:Hey atfateshands!I've got a great FTE opportunity in your area. The company is really great and offers a ton of great perks.insert another paragraph about how awesome the company is and how many "best places to work" awards it has won in the last few yearsThen it lays out the req's and experience:insert laundry list of technologies they want you to have. Usually stuff that's not all relevant to what you do. I'm a front-end dev and get all kinds of these for Java, .Net, Azure or other tech stacks I'm not at all involved inThen the kicker:"If you're not a good fit for this, please forward this on to anybody in your network who you think would be interested."When I was looking for a gig about a year ago, I got sucked into many of these thinking they were legit. Now I just scan and delete them.  I remember a little site called fuckedcompany.com circa 1999 that was a great dirt rag on businesses in the bay area at the time to know whether or not to go work there. People started disclosing way too much info about companies and people in particular, and lawyers came out with fangs bared. It didn't end well for the people running the site, but it was sad to see go eventually. Now there's glassdoor, a cleaner version it, with less vitriol (unfortunately).  I loved that site. Hilarious stuff for the time.  This is more nitpicky if anything, but developers are not the only ones that get blasted and ghosted with recruiters.I'm a DBA, but I also get recruiters always telling me how I am perfect for a Sr. full stack engineer.  As a DBA, you don't consider yourself a developer?  just went through a process audit with a major financial company. they were vetting our setup to connect and grab info from them for use in a product. The auditor flipped out when he learned that "developers" would potentially have access to our live production database (not theirs mind you - our own)."This is unacceptable, developers can write code and could exfiltrate data"."Umm... someone needs to be doing database updates, backups, restores, etc. Who do you suggest do that?" (bear in mind there's only 3 tech people on our team, and only 6 people total involved in the company's business)."Typically a DBA or a manager would do that work. It would need to be someone who couldn't write any code to exfiltrate data".We just sat on the call for another minute or so. I asked him to detail out the process by which someone who should be incapable of 'exfiltrating code' should also be the person who has access to manage the structure of a production database. We got nothing back except a checklist of stuff that we'd 'failed' with no remediation suggestions.So... apparently some large companies do not consider DBAs as "developers" for certain checklists.  Did you ask them why a DBA would write code to exfiltrate the data, when they could just copy the backup off site and do it at their leisure?  Wow. Just wow. Because I've actually seen this happen elsewhere (not financial), and I thought it was a one-off.  Data Security the hard way  It really depends on your definition. I can script and make programs, and do some OOP in several languages, but I wouldn't call myself a "developer". I'm more of a devops engineer with a database emphasis if anything. I know some other DBA's who have developed really cool things like Orchestrator who others might call them a developer but I don't think that is most DBA's primary focus. Albeit, this varies pretty greatly between companies.  DBA's are closer to sysadmins than developers.  I get blasted for network engineering work non-stop. Only 6 month contract though, and usually in some technology that is 1) brand new, or 2) obscure as hell  @chprmc good idea to have an anon way of collecting the data.In the UK we have a list of "spammy recruiters" who consistently disrespect "unsubscribe" requests and send useless/unrelated emails see: https://github.com/drcongo/spammy-recruiters  Wow this is a great resource! Thank you for sharing it. Let's keep in touch for future collaboration on this.  Looked for vividresourcing aaand yep no surprise it's there !  We are very curious to hear what happened!  I wish recruiters could harass me with job offers... some have it all :)  Haha one day they will and you'll understand how big of a problem this has become :) good luck!  Well, until I updated my LinkedIn with 'not interested in a new job', I was receiving one or two offer per week. It can sooth the ego, but the messages were nearly always bad: rarely targeted to my skills, no mention of salary/benefits and no clear position offered.  Somehow my email address became associated with someone else's resume on Monster.com (which I haven't been to in more than fifteen years, but apparently it still exists) and now I regularly get email inquiries for process engineering jobs in factories in small towns in the midwest.  Why do recruiters insist on phone calls for everything? Why can't they just send an email? I can't get on the phone while I'm at my job to talk to you about some other job.  Because their job hinges on maximising the effectiveness of their persuasion and they can't read you and react by email so well. The irony being for engineer types it has the opposite effect, at least it does for me and you.  Having done the sales grind for a bit now, I'll give my 2c:Phone calls (or any form of live communication, really) are extremely efficient in comparison to email.Email is pretty much the worst form of communication for most people. A conversation that would take 15 minutes on the phone might take weeks (if not months) to conclude over email, and because of that latency things frequently get forgotten or lost.You might say: "Hey, if I don't respond to your email that means I'm not interested" or "This clearly isn't a priority for me, that's why it takes so long to respond" but on the other side you'll semi-frequently encounter people who actually are really interested but take a few follow-up emails to respond for whatever reason (busy, OOO, just forgot, etc).Email is just very forgettable for most people, even for things that they might actually be interested in. You might be an exception. I'm a pretty strict Inbox Zero person, so I feel your pain. Still, you choose the tactic that works most effectively for the vast majority of people, and that's live communication of some kind.  It's as bad if not worse if you have decision-making power at a place which is hiring and therefore are a client or potential client. For example, I (reluctantly) agreed to have coffee with a recruiter next week. I'm not looking for a job - he wants to be put on our preferred supplier list. So now he sends me an email - he wants to have a quick catch up call before we meet for coffee.Since I think having coffee with him is a total waste of my time, how do I even begin to think about a pre-call for the coffee?  Do the call, cover the topics, say "I guess we don't need to meet now."Saying no is hard but we all need to learn to do it. If you're not interested, just say so.  I've actually just said no to both things. I'm pretty good at it.  I usually say I would be happy to meet (or call or whatever), but what is the call about.If they are good, they'll lay out everything they want to cover and be upfront. Sometimes, this works well and I'll bite and accept the service or we will know right away it won't work.The worst is when the person thinks they want to build a relationship first and hang out and talk about other things and then they'll tell me what they want to do. I simply won't give someone I just met some business just because (or if) I like them.  Say 'no'  Never been in recruiting, but just from sales experience it's very hard to sell without direct contact. You have to adjust to what your prospect wants, you can eficiently find out from the sound of their voice whether they're intereste or just polite.I agree about the business hours, almost none of us have our own offices anymore, so the business hour phone call should only be about making an appointment outside business hours when you can actually talk.  Wait until you run into recruiters that insist on meeting during business hours - or even at the candidate’s current job! - before doing any business.  I've had a recruiter literally call up the office of my (at-the-time) current job to ask if I was looking for a new job. After politely rejecting them, they continue by asking if any of my colleagues were looking for a new job. These recruiters are aggressive!  Most recruitment agencies have hard targets for number of phone calls made per day. "It's a numbers game" is a default, golden rule at every cookie cutter agency out there.  Especially since I can't understand half of them. If your job depends on calling people, why wouldn't you practice speaking clearly?  Agreed. We're eagerly waiting for your story :)  It's a signal that you're serious.  Recruiters - not candidates - are the ones who blast poorly targeted spam. They should show us the money first, not the other way around.  I don't think it works that way from their perspective. For boiler room recruiters in particular, they maximize their return on effort by blasting email like that. They don't want to waste time on people who are content with their current job and might be all goldilocks-y about potential new employers. They want to be talking to people who want a new job so badly that they're willing to respond to spammy recruiter emails.Source: At a former job, I was work buddies with a guy from the in-house recruiting department, and he'd tell me stories about just how different his job there was from his previous job at one of those firms.  This might be true, but I still think there's a market for people who might not be content, but aren't so malcontent that they want to go through these recruiters that can't get basic information like the name of the company, what the company does, how much it pays, etc. in an email. Heck, I would think that even if you're mass mailing a copy/pasted template, having a good hook in there would get more hits — and that's perhaps what irks the rest of us. We'd like to be hooked… but this is like a bad late night commercial, and we're expecting something more mid-day and professional (but still a commercial).These recruiters sure they're not sitting on a local maxima?  There is. And there are recruiting firms that specialize in that market, too. I've gone through one to get a job before, and it was a great experience.You aren't going to encounter them nearly as often, though, precisely because they aren't just spamming indiscriminately. Also because there are fewer of them recruiting for fewer positions. The hiring company needs to be willing to pay for that level of service.  That wasn't a defense. Sorry if that was unclear: it's like sending ridiculous scams to weed out the not gullible ones.If you reply by phone it means you actually want a job.  Wish you luck on this, but I don't see it helping a lot of candidates. There's a large number of (and will always be a large number of) "ambulance chaser" boiler room recruiters working in a very large English-speaking country that shall remain nameless, and they'll often cold call me up for the same certain roles (that don't pay well) as the last one 5 minutes prior.I could write a whole book of these stories (as I'm sure many others reading this post could as well) but I'll recount one of my favorites.I had interviewed with Abbott Diabetes Care in Alameda, CA, and gotten a job offer, but went with a different opportunity. Fine.Recruiters would still blow up my inbox and phone with that role for months to come. And being employed, I was getting really short with them. Like, say "not interested" in half a second, hang up in a second, super-rude short. The trouble was it took 3 minutes squeezing the details about the job out of the person before I could get there.One recruiter with a very thick accent was being exceptionally coy with the details after he cold-called me. The role was in "California", and then once pressed he said, "Alameda, California". Alameda's not all that big, and it's a bedroom community more so than most Bay Area cities, with the exception of a couple business parks next to the airport, where Abbott is.I asked, "is this with Abbott?" "No, no, no.." "Ok, who is it with? What's the company's name?"It's with.. (shuffling of papers).. "uh-BOT"."That's Abbott.. Dumb ass." 40+ years old and I'd never called anyone dumbass on the phone before.  Well that's a funny story :) We're very aware that the market is filled with harassing cutthroats and that's exactly what we're trying to put an end to.If you have time it would be great if you could share one or two of your stories with us (you can fill out the form multiple times). Like I wrote in other comments the more data is in the open the easier it will be to show agencies that certain practices are not just useless but can also damage their image.  There is such a thing as "libel proof". No matter how much dirt you dish on the bottom feeders in this industry, someone will give them an IP phone and your phone number, and they'll still cold-call and harass you no matter what your site says about them.Your heart is in the right place, but your forum will unfortunately never be a deciding factor in anything. Either a recruiter makes a convincing pitch or they won't, and in my experience it's never close to equivocal.Now if you wanted to reframe the purposes of your website to go from recruiters to _interviewing employers_, •THERE• is an untapped market that could be worth billions if played right. I encourage you to pivot to there, and I'd love to help.  Question 5 alerted me> Don't worry, we'll keep this bit of information privateSo the rest isn't?And then... there's lots of mention of 'we' in this thread and on the form, but no mention of who 'we' are.This is harder to trust than a recruiter that at least states who they are.  It's clearly written in the beginning of the form:> We are collecting stories from devs all over the world and plan to release all data to the public (for free!) so that no more fellow devs will have to sufferWe never ask you to disclose sensitive information (your name for example) and this being completely anonymous means you don't have to "trust" anyone. But you are right about telling more about ourselves, I'll add our profiles to the form somehow.Meanwhile my profile on HN has a link to my personal website where you can see who I am (no comment on the profile picture :) ). Cheers!  I applied for a software developer role through this recruiting agency and was offered a contract to full time. After I quit my job, I was told my contract was terminated because the company had budget issues and as a result I was left jobless. I spent two months looking for a new job and finally found one at a startup company. In the mean time this recruiting agency keep contacting me and tried to low ball me with a salary that was significantly lower than what my previous companies offered.  That's terrible! I'm glad you're doing ok now. The golden rule is to never quit your job until you have a signed contract in your hand. I'm pretty sure that in most countries companies can't legally mandate that employees are not allowed to sign other employment contracts, also to prevent situations like yours.I really hope you took the time to share your story with us. It would help lots of people avoid shady companies like this one. Thanks!  The name of the recruiting agency was experis-veritaaq btw, for those who are curious.  This whole proposal sounds just like one that a spoiled teenager would make.Instead of feeling lucky to have a skill highly sought after, and to live in an economy that can afford to not only pay good money, but that will even send people out to throw that money after you, you still find reason to complain.Set aside, I am aware, that there are crappy jobs, companies and people around, that want to scam and screw you.But overall, that situation is quite a luxury, ... complaining about that is even beyond the proverbial first world problems.  Maybe an overstatement. Bad recruiters are essentially scammers, not trying to throw money at anybody but just hoping to score a commission without working.  I don't respond to recruiters anymore, I just delete the email or ignore the message on LinkedIn. The only way I will respond is if they specifically name drop someone I know who recommended they reach out. If I want to talk to your company, I probably already know someone who works there and will reach out internally because I want to know the real scoop of how things work, not the rose-tinted version the recruiter will give me for a commission.  It occurs to me that YC could offer a centralized recruiting system for their newly minted vassals. They all need one, and it would improve their prospects if they could get the mechanical details handled efficiently and competently.I suppose the downside is that to some degree they are competing with each other for talented people, so the trust relationship with YC isn't completely transitive.  Fun reading, however why not turn this into an authoritative source for something akin to a donotcall registry?If something like that got some traction, and you were able to secure some endorsements from big tech players, these irritants would become less of an issue, and recruiters would be more effective in their efforts instead of wasting time with people who don't want to be bothered.  That is actually one of our goals but first we have to prove that there is an actual widespread interest in the community to put an end to this kind of behavior (this is what we need the data for) and that we tried to get in touch with these "bad" companies, provided them with all the data they need, hoping they will fix the problem internally, before adding them to a sort of "blacklist". That should be the last resort.  Hi,I had a bad experience at Insight Global. Recruiter submitted my resume without my permission. I had already asked a different recruiter to submit my resume for that particular job. So, I lost that opportunity, completely.  If you only publish by company and date and not by person that's okay, I think."EuroStaff did xyz on dd.mm.yyyy"  Maybe it would be more positive to make a recruiter pledge or something, e.g. "I looked at your skills and thought you were a match for this role", "I'll be upfront about compensation", "I'll respond to all emails within one working day"  What we learned is that open data is one of the most powerful tools we have for proposing and implementing change. We hope that with this initiative we'll be able to slowly change how recruiters approach talent acquisition. Pledges would definitely be a welcomed change!  Recently an ex-colleague of mine who is still working and has been looking put out his CV and it's in non-chronological order so a recruiter thought he was currently unemployed.She asked him directly "would you be willing to take less because you're not working?"  A non-chronological CV is somewhat unusual, to be fair to the recruiter (not something I’d often say!)  Don't make it one-sided, "bad" only.Make it proactive, but search-only. Search for your recruiter company or individual by name and see how many "good or bad references" this specific entity or person has.  After filling questionnaire will I will be able to read experiences of other peoples?  How will you guarantee that the data manually entered in your system is true or false? I had the same idea though, so many bad recruiters out there it's hard to find the good ones.  The same way websites like Glassdoor guarantee that the reviews posted on their websites are real.Hint: they don't :) A company's reputation isn't ruined by 1 or 2 nasty reviews (which will be deleted in a timely fashion should they be blatantly false). Statistically speaking the chances that someone would purposely make a bad story up to damage a company's reputation is negligible and so all of these "review" websites (and we) rely on a sort of "honor system", assuming that the majority of users will be honest.EDIT: replaced Yelp and Trip Advisor with Glassdoor (better example).  I am green to working with recruiters. What should I watch for? I already do not like the experience but I don't know if that's a problem with me or them.  - Recuiters aren't your friends, they're salespeople, selling you.- Don't stick your CV on a job board, there's no expiry and recuiters will call up wondering if you're still unemployed three years later.- Never answer "how much are you currently on?". You should always say "I'm looking for$X" - feel free to give a range, but keep the ball in your court. Check glassdoor/linkedin to make sure you're not blagging for an unreasonable figure.
 > - Never answer "how much are you currently on?". You should always say "I'm looking for $X" - feel free to give a range, but keep the ball in your court.(IANAL.) Know your locale's regulations here. For example, in California, it is not legal for an employer to ask about prior salary[1]:> (b) An employer shall not, orally or in writing, personally or through an agent, seek salary history information, including compensation and benefits, about an applicant for employment.> (c) An employer, upon reasonable request, shall provide the pay scale for a position to an applicant applying for employment.(CA LAB §432.3[2].)(The advice in the comment I'm replying to is good, too. This isn't meant to contradict it.)  All recruiters are sales people... not all of them are awful, but there's a large amount of fairly terrible. My two lookouts are the usual high-pressure sales tactics and recruiters that try to be "buddies" with you.  There are a lot of guides to help you figure out whether a recruiter is serious or not. A recent thing that happened to me was that a recruitment agency refused to let me have a chat with their client before I provided some references.It seemed weird and I really didn't want to waste my references not having even just a verbal confirmation that they were interested in hiring me. I really thought they were asking in good faith.It turns out that you should NEVER disclose your references with a recruiter before an offer is on the table, in writing. This is a very common technique and it usually means they are no longer interested in hiring you but they would gladly use your references as potential candidates or future leads to get more business.Very shady ;)TL;DR: do a lot of Googling of the kind "how to tell if a recruiter is bad".  Earlier discussion of the "don't give your references to a recruiter" point on HN: https://news.ycombinator.com/item?id=17412060  They're not all bad. I prefer in-house recruiters because they tend to work with you better and stay in contact even if the company or you decide to go another route.Now outside recruiters...I've had some outright demand my salary information so that they can sell me for the right price. Just be clever enough not to disclose that.It's entirely a business interaction and not a friendship. They want something out of you, and you may want something out of them.It helps if you can honestly say you want$X and that you're already interviewing with other companies under that expectation.If you don't need to, don't needlessly sign up for interviews and tests with positions that don't particularly interest you for any reason.I've also been bait-and-switched before. There's not too much you can do about that. But if they pull that, you know to end the discussion there.It's not supposed to be a zero-sum relationship, but sadly many will sell you to the lowest bidder if that means a commission.All that said, don't shut off completely if you don't want to. I engage casually from time-to-time. I'll give them a 15 minute call sometimes if my curiosity gets the better of me.And all of that said, it's much better speaking directly with the people you'll be working with or for.
 "They Insisted to know my current salary""They refused to talk about compensation"Working outside of the USA, these two are kind of weird. When I am hiring someone, I want to know their current salary to know that I won't offer them a low salary + benefits package.I have ranges depending on positions, and if after evaluating someone she falls into the "mid level" category, I want to make sure that their expectations are in line with the level... otherwise I just cannot hire them.So, people want to talk about compensation but they don't want to have a conversation (which is 2 ways). Or how does it work in the USA?
 Because it's irrelevant what the person currently makes. It only matters what the company is willing to pay for the work they are hiring for. Requiring the applicant to tell their current salary is only useful as a means of salary deflation.
 Here is how this always goes for me:1. Initial convo, things seem interesting, no salary details from recruiter, lots of questions about how much I make2. They ask me to sign an NDA, a bunch of other paperwork, and spend a bunch of time in meetings doing dumb whiteboard questions3. "You're amazing! Can we hire you for 50k below market? It's totally worth it, we have a $200 xbox that you can stare at while you work 60 hour weeks trying to fix our abortion of a product!"So, unfortunately, my rules have become:+ Salary range upfront. If you can't give me a number, I can't give you the time of day.+ No NDAs or other BS unless you give me the$600 for my lawyer to go over it. Protip, my lawyer is going to reject it.+ You get one day of whiteboarding/whatever. I don't do follow up visits. I don't do "projects" or "homework". I'm not implementing the twitter api for you. Sorry, spent too many days doing projects for free.
  Or how does it work in the USA?  Apply a simple model of economically rational actors, ignoring everything like working conditions and benefits and how inspiring a project is and what is fair and what your corporate pay policies are and so on. We're both happy to work together. i.e. consider a pure salary negotiation.Situation A: If I currently make $70,000 and you are looking to pay$40,000-$50,000 we're both wasting our time by keeping quiet.Situation B: If I currently make$70,000 and you are looking to pay $70,000-$100,000 and I reveal my salary first, you can offer $70,000 and I might have left$30,000 on the table.Situation C: If I currently make $70,000, you are looking to pay$70,000-$100,000, you reveal your range first and I say my requirements are$100,000, you have left $30,000 on the table.And why would I feel I was leaving money on the table? Maybe I've seen posts on HN saying "many" mid-career Google employees earn$450,000.The traditional HN advice to refuse to name a salary first comes from people who prioritise avoiding Situation B, even if it means increasing the risk of Situation A.
 That's the excuse they provide every time. Their actual intention is to low-ball as much as they can.
 Because that gives the employer a lot of leverage if the candidates last salary was lower than your expectation.
 Recruiters are not your buddy. Just like the salesperson at the car dealership is not your buddy.
 I understand the motivation, but this seems like a lawsuit magnet.
 We've already done our research, of course, but before releasing any data we will lawyer up properly and make sure we're not in violation of any law or regulation ;)
 Even if you get cleared initially, you may spend a significant amount of time and cash proving that "clearance" in lawsuits. Time is your most important resource. A year in litigation is year of your life you're not getting back. At some point, you may have to decide if it's worth spending time on litigation or other things. Pancreatic cancer made this clear for me. One moment a family member had years to go. The next moment they only had six months. Six months and a few weeks later, I collected their ashes from the crematorium.
 I'm sorry to hear that. I've had experience with a family member having cancer myself and they lasted only 3 months. It's a trade-off: fighting for something you believe in and enjoying life. If we realize it's not worth it we will drop everything in a heart beat.That's why we hope to collect enough data to justify why we're doing it and that it's a bigger problem than we thought.
 Don't ever do that. Don't ever professionally ruin some Person life. It has a greater impact than you thought.
 Giving anonymous feedback based on your anonymous experiences should not ruin anyone's life. Especially if the point is to help recruiters to not be asses in the future.
 Please see my answer above. This will NOT be a public shaming list. We will only release the data regarding the companies and reach out to the individual recruiters to show them the data, hoping this will make them reflect on how they approach their leads in the future.
 That cat is well and truly out of the bag. Amazon reviews, Uber reviews, Airtaker. Fiverr. Etc.
 Maybe they should stop professional harassment and abuse?

Search:


text:
# HTML & CSS Preprocessors

July 02, 2018

A preprocessor is a tool that transforms one type of code into another type. In this tutorial, we will look into two popular preprocessors: one for HTML (called Haml) and the other one for CSS (called Sass). Haml and Sass are much more easier to write, and provide a few very useful features out-of-the-box which are not available in HTML or CSS. Thus, by writing in Haml or Sass, and then using a preprocessor to convert your code into HTML or CSS respectively, you can simplify your development process quite a lot.

# Haml

Haml stands for HTML abstract markup language. It aims to provide a good structure and makes your HTML code DRY (Don’t Repeat Yourself), logical, and easier to read. We will see an example below to see how it does this.

## Installation

Ruby is required to be installed for Haml. If you’re using a Mac or Linux, Ruby should be pre-installed on your computer. Otherwise, you can install Ruby by following the directions here.

Next, you’ll need to install the haml preprocessor itself. It’s available as a Ruby Gem, and this is how you can install it:

gem install haml

Now that you have the haml preprocessor, you can convert haml files to html files with this command:

haml home.haml home.html

Here the file home.haml is converted to home.html.

You can use haml --help to check various options available with this command.

## Doctype and HTML Elements

Now that we know how to convert .haml to html, let’s look what a typical haml file looks like.

First, the DOCument TYPE is identified with 3 exclamation marks. So,

! ! ! 5

is compiled to:

<!DOCTYPE html>

Elements are declared using the % sign. Either tabs or spaces can be used for indentation. But the two should not be mixed. For example,

%body
%h2 Let us look at preprocessors.
%section
%p Lorem ipsum dolor sit amet.

It is compiled to the following html code:

Let us look at preprocessors

Lorem ipsum dolor sit amet.

## Attributes

Attributes can be declared using { } or ( ).

%img{:src => "commonlounge.jpg", :alt => "CommonLounge"}
%img{src: "commonlounge.com", alt: "CommonLounge"}
%img(src="commonlounge.jpg" alt="CommonLounge")

All three lines above compile to the same line of code:

## Classes and IDs

Classes can be set with values using .

IDs can be set with values using the #

%section.feature
%section.feature.special
%section#hello
%section#hello.feature(role="region")

compiles to

Div classes and id’s don’t need the div keyword before . or #

.awesome
.awesome.lesson
#getting-started.lesson

compiles to:

Individual comment lines are marked by a forward slash /. Code can be commented by being nested under a forward slash.

  %div
/ Commented line
Actual line
/
%div
Commented block

compiled to:

Not Commented

Conditional comments are marked by writing the condition in square brackets after a forward slash /

/[if lt IE 9]
%script{:src  => "html5shiv.js"}

compiles to

Comments that need not be displayed are called silent comments. They are marked by a dash -#

%div
-# Removed line
Actual line

compiles to:

Actual line

## Filters

Haml provides a number of filters as a shorthand for writing different types different types of code/input. Filters can be used by typing a colon and the name of the filter. Custom filters can also be defined. Here are some of the popular ones:

:css, :javascript, :sass, :ruby, :textile, :scss, :sass, :markdown

Here’s a JavaScript example:

:javascript
alert('Javascript here!');

compiles to:

# Sass and SCSS

Sass stands for Syntactically Awesome Stylesheets. It is a preprocessing language that can be compiled to CSS. SCSS is Sassy CSS — it’s a more flexible preprocessing language as it allows you to write plain CSS as well.

## Installation

As with Haml, Ruby is a prerequisite for Sass and SCSS. Once Ruby is installed, execute the following command to install the sass preprocessor:

gem install sass

Convert .scss or .sass files to .css files with the following command:

sass <filename>.sass <filename>.css

You can also convert entire directories to css files by checking the files for updates and converting with the command:

sass --watch myfolder/sass:public/css

Sass syntax is easier but it has a learning curve. SCSS, on the other hand, is fully compatible with CSS and easy to read. Let us look at some examples of how a CSS file is compiled from Sass code.

## Nesting Selectors

Selectors can be nested inside other selectors. Nesting properties such as padding, margin, border and font can be used. Here is an example:

  div
font:
family: Arial, serif
style: normal
weight: bold

complies to:

  div {
font-family: Arial, serif;
font-style: normal;
font-weight: bold;
}

To combine selectors, you can use &

a
color: #0087cc
&:hover
color: #ff7b29

compiles to:

a {
color: #0087cc;
}
a:hover {
color: #ff7b29;
}

The standard CSS syntax /*..*/ works in Sass files. Silent comments are flagged with two forward slashes //

These comments are not visible in the CSS files complied.

/* Normal comment */
div
background: #333
// Omitted comment
strong
display: block

compiles to:

/* Normal comment */
div {
background: #333;
}
strong {
display: block;
}

## Variables

Variables can be defined by a $ sign, and then reused later. This is one of the most powerful features of Sass. $font-base: 1em
$serif: "Helvetica Neue", Arial, "Lucida Grande", sans-serif p font:$font-base \$serif

compiles to:

p {
font: 1em "Helvetica Neue", Arial, "Lucida Grande", sans-serif;
}

## Calculations

Sass has features for mathematical calculations such as addition, subtraction, multiplication, division and other number functions.

width: 40px + 6
width: 40px - 6
width: 40px * 6
width: 40px % 6

compiles to:

width: 46px;
width: 34px;
width: 240px;
width: 4px;

Color operations, color manipulation, color alterations and HSLa color alterations can be done.

For example:

width: percentage(1) will be compiled as width: 100%

width: round(3.5px) will be compiled as width: 4px

## Extends

Extends can be used to share and reuse styles. Extends can be set using the @extend rule with the selector to be extended. It helps in reuse of code thus making your code more DRY.

.alert
background: #f2dede
color: #b94a48

compiles to:

.alert,
}
background: #f2dede;
color: #b94a48;
}

## Mixins

Mixins are template properties and values that you can share among different selectors. @mixin is used to configure mixins. In this example, we are creating an object called design with certain dimensions -

  @mixin design() {
bottom: 0;
left: 2;
position: absolute;
right: 0;
top: 2;
}

This can be used as follows:

  .modal-background{
@include design();
background: blue;
}

compiles to:

  .modal-background{
bottom: 0;
left: 2;
position: absolute;
right: 0;
top: 02
background: blue;
}

In Sass, multiple files can be imported and condensed into one file. It helps in better organization and more efficient HTTP requests.

Sass also supports control directives like the For loop, If loop, conditionals, operators and While loops.

There are other preprocessors such as Slim, LESS, Stylus etc. Sass and SCSS are well integrated with Ruby and have good community support.

# Summary

In this tutorial, you learned two important preprocessors:

• Haml, stands for HTML abstract markup language
• Sass, stands for Syntactically Awesome Stylesheets

Haml and Sass are much more easier to write, and provide a few very useful features out-of-the-box which are not available in HTML or CSS.

format: plain


text:
Introduction to PAC Learning

What is “learning” and do we have a formal model for it? I’ve decided to dive into the theoretical underpinnings of machine-learning, so here’s a quick introduction to the theory of Probably Approximately Correct (PAC) learning.

If you want to read more on the topic, there is a very accessible book on the topic, Understanding Machine Learning: From Theory to to Algorithms which we use in the first part of the learning theory class at EPFL.

Notations

Let’s start by defining a bunch of very standard notations.

We have a domain set $X$ of objects (say, some measurements on apples) and a label set $Y$ of labels (say, “good”, “not good”). Let’s note $Z = X \times Y$ and take $m$ labeled samples $S = (z_1, ..., z_m)$.

We assume that the objects in $X$ are of the same nature (say, all apples and no t-shirt). This is modeled by assuming that they are all drawn independently (i.i.d.) from a probability distribution $\newcommand{\pD}{\mathcal{D}} \pD$ on $Z$. The distribution $\pD$ is unknown to the learner and must be infered from the data.

Since the distribution $\pD$ is on $Z$, we can have two identically looking objects in $X$ with different labels. For instance, two apples with same size and color (same $x$) might taste differently (different $y$).

The goal of a learner is to use the training samples $S$ to learn how to label an object in $X$ with the correct label $y \in Y$.

More precisely, we want to use $S$ to induce a prediction rule $h: X \to Y$ which assigns a label $y = h(x)$ to an object $x$. A learning algorithm $A:S\to H$ is an algorithm that chooses the best prediction rule $h$ among a class $H$ of available rules. $H$ is also called the hypothesis class.

So, how do we define which prediction rule is the best? If we measure the cost of an error made by $h$ on $z$ through a loss function $l(h, z)$, it would be a good idea to minimize the expected risk over all possible samples drawn from $\pD$:

Since $\pD$ is unknown, we can’t always achieve its minimum in practice. Enters the PAC framework.

(Agnostic) PAC Learning

In the framework of PAC Learning, we are interested in learning a good enough model $h_{PAC}$ with $\epsilon$ accuracy such that:

And further, we’re okay if the result is only probably correct with less than $\delta$ probability to make a mistake. We say that $\delta$ is the confidence level. In other words, we want:

We say that an hypothesis class $H$ is PAC-Learnable if given the accuracy $\epsilon$ and the confidence level $\delta$, we can always find a lower bound $m_{H}$ on the size of the sample set $S$ that makes them achievable.

Definition: (A)PAC Learnable
We say that the hypothesis class $H$ is PAC-Learnable with respect to $Z$ and $l$ when there exists a function (called sample complexity):

and a learning algorithm $A$ such that: $\forall \epsilon, \delta, \pD$:

Now, let’s see what result we can get on the following simple learning criterion.

Empirical risk minimizer

Since $\pD$ is unknown, we can try to find an estimator for $\l_{\pD}(h)$. The most common estimator for an expectation is the sample mean. By the (strong) law of large numbers and the central limit theorem, this is a very reasonable estimator:

The decision rule $h$ that minimizes this estimator is the ERM:

But how does minimizing the empirical risk relate to minizing the expected risk? Without any restriction, the ERM is prone to overfitting and yields poor results. This is seen easily using a kNN classifier with $k=1$, for which the empirical loss is always $0$ but the expected loss can be arbitrarily large.

So what can constraint can we impose on the ERM to try and fix the overfitting problem?

There are two kinds of problems that can occur with ERM:

1. the sample set $S$ is not representative for $\pD$;
2. even with well behaved sample set, the class $H$ might be so flexible that we overfit.

Constraints on the training set

Since the ERM is defined through $S$, it makes sense that restricting the kind of sample set we consider would allow us to control the performance of ERM. For instance, when $S$ is $\frac{\epsilon}{2}$-representative, we get good results.

Definition: $\epsilon$-representative
$S$ is $\epsilon$-representative when:
Lemma: ERM on $\epsilon$-representative $S$
If $S$ is $\frac{\epsilon}{2}$-representative, then:

Proof: we chain inequalities using the definition of $\epsilon$-representative or of the ERM at each step.

Constraints on the hypothesis class

Another way to ensure the performance of the ERM is to introduce inductive bias by restricting the class $H$ of allowed hypotheses. Limiting the class of rules $h$ we consider is a way to introduce prior knowledge into the learning process.

Roughly speaking, the stronger the prior knowledge that one starts the learning process with, the easier it is to learn from further examples. However, the stronger these prior assumptions are, the less flexible the learning is – it is bound, a priori, by the commitment to these assumptions. (Shalev-Shwartz S., Ben-David S.)

Intuitively, the smaller the class, the less opportunity for overfitting, but the higher the risk of introducing bias. This is related to the famous bias-variance tradeoff.

Overfitting happens when the class of models is too flexible to be constrained appropriately by the number of samples available. It can always be solved by using a bigger training set. Thus, it makes sense that when the hypothesis class is finite, we can get a lower bound of the number of training samples required.

Lemma
Let $H$ be a finite hypothesis class and $l$ the $0/1$-loss (actually it is enough that $l$ is bounded). Then $H$ is PAC-Learnable with sample complexity:
Proof.
The proof uses Hoeffding’s bound. Let’s note $m = \card{S}$. The confidence level to have $S$ $\epsilon$-representative is:

To conclude, inverse the bound and use the previous result on $\epsilon$-representative sample set.

Other articles you might like:


text:
# filt

Constructs a transfer function model in DSP format.

## Syntax

SYS = filt(NUM, DEN)

SYS = filt(NUM, DEN, Ts)

## Inputs

NUM
A scalar or a row vector (numerator).
DEN
A scalar or a row vector (denominator).
Ts
Sampling time Ts (in seconds).
Ts = -1 leaves the sampling time unspecified.
Default is Ts = 0.

## Outputs

SYS
Transfer function model in variable z-1.

## Examples

Transfer function model for a discrete time system:
num = [3 4];
den = [3 1 5];
Ts = 0.2;
sys = filt(num, den, Ts)
Transfer function for input 1, output 1

3 + 4 z^-1
-----------------
3 + z^-1 + 5 z^-2

Sampling Time: 0.2 s

## Comments

Adding the Ts parameter allows you to define the discrete-time transfer function.

When NUM and DEN have different lengths, the shorter vector is treated as having trailing zeros. See tf for comparison.


text: Your error is likely telling you that the stdr_simulator package is not released on Jade. If you'd like to use the package and stick with 15.04+Jade, you'll need to build the package from source (at least for now). Check out this answer I wrote a few days ago for more information.


text:
Article Text

Safety of the insulin tolerance test
1. P J Galloway1,
2. E McNeill2,
3. W F Paterson2,
4. M D C Donaldson2
1. 1Department of Biochemistry, Royal Hospital for Sick Children, Yorkhill, Glasgow, UK
2. 2Department of Child Health, Royal Hospital for Sick Children
1. Dr P Galloway, Consultant Clinical Biochemist, Department of Biochemistry, Royal Hospital for Sick Children, Yorkhill, Glasgow G3 8SJ, UK;
petergalloway{at}lineone.net

## Abstract

Concerns have been raised about the hazards of the insulin tolerance test (ITT), used to measure growth hormone secretion. In Glasgow, we continue to use this test, adhering to a strict protocol. A review of outcome over a 10 year period (1989–99), during which 550 ITTs were performed, was undertaken. No serious adverse events occurred; in particular, no child fitted or required intravenous glucose. Fewer tests were done during the latter five years, with a higher yield of growth hormone (GH) deficiency, reflecting our increasingly conservative approach to paediatric GH therapy during this period. We conclude that the ITT is safe and reliable in a paediatric setting provided that a strict procedure is followed.

• insulin tolerance test
• growth hormone secretion
• hypoglycaemia
• GH, growth hormone
• ITT, insulin tolerance test
View Full Text

## Statistics from Altmetric.com

In 1991, following several fatalities in the UK,1 the Department of Health issued a circular2 warning of the hazards of the insulin tolerance test (ITT), stating that: “the insulin tolerance test should not be used in children when only growth hormone reserve needs to be tested”.

Since then many paediatric centres have abandoned the ITT as a means of assessing growth hormone (GH) reserve although it remains the standard diagnostic test for GH deficiency in adults, in view of its sensitivity and reproducibility.3,4 We have continued to use the ITT as our first line test, reserving the arginine test for children with epilepsy or cardiac disease and those under 5 years.

We have reviewed retrospectively our experience of performing ITTs over a 10 year period (1989–99), with particular attention paid to the last five years, during which a dedicated nurse specialist has been overseeing the tests. Our principal aim was to assess the safety of the ITT, defining the key morbidity measures as: (a) hypoglycaemia requiring emergency administration of intravenous glucose; (b) hypoglycaemic convulsions; and (c) death. We have also examined the timing of the glucose nadir following insulin administration as this has practical implications for oral glucose administration. Finally, in the light of a change in the pattern of GH prescribing in Scotland over the past 10 years,5 we have noted the annual number of ITTs performed.

## METHODS

The following strict ITT protocol was adhered to:

• Child must be fasted overnight.

• Blood glucose must be >3.0 mmol/l at time −30 minutes and 0 minutes.

• Oxygen, glucose, and hydrocortisone must be available.

• A doctor must be present for 45 minutes following insulin administration and a nurse specialist throughout. (Protocol since 1995, when an endocrine nurse specialist was appointed. During the first five years of the study period, endocrine tests were carried out on a paediatric inpatient ward by junior medical staff.)

• Child must eat and remain on ward for one hour before cannula removal and discharge home.

• Administration of insulin. An insulin concentration of 1 unit/ml is used and a dose of 0.15 units/kg is given (0.1 units/kg if panhypopituitarism is suspected). The doctor must sign for the insulin and the nurse must check the dosage.

• Blood sampling. Glucose and growth hormone concentrations are measured in 4 ml samples drawn at −30, 0, 15, 30, 60, 90, and 120 minutes. The rationale of the −30 minute sample is to capture any stress related GH surge, as this may be followed by a refractory period, giving the misleading interpretation of GH deficiency.

• Management of hypoglycaemia. If the blood glucose drops below 2.2 mmol/l and/or the child is symptomatic, 30–40 ml of Lucozade (up to 10 ml/kg body weight) is given. If the child becomes unrousable or is fitting, 0.5 g/kg dextrose is given intravenously, and blood glucose rechecked. Thereafter 50–100 mg hydrocortisone, followed by a 10% dextrose infusion at 0.1 ml/kg/min is given. A further dextrose bolus is administered only if blood glucose remains <6.0 mmol/l.

### Statistical analysis

The relative risk of a future adverse event occurring as a result of the procedure, assuming that none had occurred to date, was calculated according to a simple formula, first described by Hanley in 1983,6,7 which states that: $Math$$Math$ where n = number in series (i.e. number of past, uneventful procedures).

## RESULTS

A total of 550 ITTs were performed between 1989 and 1999. No serious adverse events occurred. In particular, no child lost consciousness, fitted, or required intravenous glucose following hypoglycaemia. The upper limit of the confidence interval for relative risk from the procedure is therefore 3/550 = 0.005 = 0.5%. Glucose profiles were documented for the 223 ITTs performed since 1995. The glucose nadir occurred at 15 minutes in 118 (53%) cases (range 0.6–2.2 mmol/l) and at 30 minutes in 105 (47%) cases (range 1.1–2.3 mmol/l). Between 1989 and 1992 the annual number of ITTs performed ranged from 57 to 77. During this period GH values of 10–20 mU/l were recorded in 27%. From 1993 to 1999, the annual number of ITTs performed decreased to 37–52 and the number of cases with GH values of 10–20 mU/l rose to 43%. Over the 10 year period GH values <10 mU/l were recorded in 14%. GH concentrations were >20 mU/l at time −30 minutes in 16%, indicating a normal GH response to stress, thus precluding GH deficiency.

## DISCUSSION

In this assessment of the safety of the ITT in childhood we report no serious adverse events in the 550 cases studied. We acknowledge that this finding cannot preclude adverse events occurring in future patients but the probability, based on the numbers of patients studied, is, at most, 5 per thousand. Indeed no test that alters glucose homoeostasis can be regarded as safe. Even the simple act of fasting a severely hypopituitary child may cause symptomatic hypoglycaemia. However, our experience indicates that the ITT is relatively safe provided that this endocrine investigation is carried out in a well resourced, specialised setting by experienced, competent staff. A similar conclusion was reached by Jones et al, who carried out an audit of 161 ITTs performed in adults during a 12 month period.8 In this study one serious adverse event (a grand mal fit) occurred, but the patient recovered rapidly with no neurological sequelae following administration of intravenous dextrose and hydrocortisone.

It was not possible, in a retrospective study of this nature, to evaluate the degree of distress which may have been caused by the process of venepuncture, and by symptoms of insulin induced hypoglycaemia such as drowsiness, sweating, and malaise. Nor was it our remit to compare the symptoms of insulin induced hypoglycaemia with those caused by other pharmacological tests of GH secretion, such as clonidine (for example, drowsiness, hypotension),9–11 or glucagon (for example, nausea, headache, sweating, vomiting).12

During the 10 year study period an endocrine specialist nurse was appointed (1995) and a ward dedicated for day case investigation of children was established (1997). While it would be difficult to measure objectively an improvement in service resulting from these changes, we have no doubt that the standard of day care is much improved. Moreover, in the light of the recent changes to the working practice of junior medical staff , we consider that our endocrine day case service would be untenable without the consistent input from a specialist nurse.

The glucose nadir occurred at 15 minutes in just over half of our patients and by 30 minutes in virtually all. This finding has led us to favour the pre-emptive use of Lucozade (a readily available 20% glucose drink) at 15–20 minutes to avoid more profound hypoglycaemia developing.

Since 1993, we have been more selective in our approach to growth hormone therapy.5 This is reflected in a decrease in the number of children tested and a higher yield of subjects with peak GH values of <20 mU/l, the biochemical measure of GH deficiency, and indicates improved targeting of children likely to benefit from investigation.

Not only are we satisfied as to the relative safety of the ITT when performed by experienced staff using a strict protocol, but we would also argue that it is in many ways preferable to other tests of GH reserve. The stimulus of hypoglycaemia, a naturally occurring phenomenon, is arguably more physiological than that caused by pharmacological agents. Moreover, insulin is easily administered and the resultant hypoglycaemia is readily reversible. The elective use of Lucozade ameliorates the symptoms of hypoglycaemia without affecting the counter regulatory response.

Other methods of GH stimulation are not without their drawbacks. While arginine administration does not result in hypoglycaemia—the increase in insulin release is balanced by a concomitant increase in glucagon, resulting in a net rise in plasma glucose13—we have encountered problems with venous occlusion caused by the viscosity of the infusion, sometimes necessitating replacement of the intravenous cannula. We have no experience of other agents, but it is well recognised that clonidine causes unpleasant symptoms such as drowsiness and hypotension which are not rapidly reversible.9,10 In addition, clonidine has recently been shown to be associated with hypoglycaemia, although the mechanism of action is unclear.11 Glucagon administration causes nausea and vomiting,12 and may also result in hypoglycaemia by stimulating insulin release.14

Our observation that no child required intravenous dextrose in the treatment of hypoglycaemia emphasises that in virtually all cases oral glucose administration is all that is required. Indeed, fatalities associated with the ITT have involved the administration of large quantities of intravenous dextrose. There is no place for large quantities of either hypotonic (for example, 5%) or hypertonic (50%) dextrose in insulin induced hypoglycaemia. If necessary, the child should merely receive 0.5 g/kg of dextrose as a 10% solution, followed by 10% dextrose with 0.45% saline at maintenance rates.

In highlighting the favourable safety record of the ITT in our hospital we are not advocating the widespread reintroduction of this method of anterior pituitary function testing, especially in departments where relatively small numbers of children are involved. Indeed, given the controversies surrounding the selection of children for investigation and treatment of GH deficiency,4,15 we believe that the decision to embark on growth hormone stimulation testing should only be made by paediatricians who are experienced/trained in paediatric endocrinology, and/or working in close collaboration with a regional centre.

View Abstract

## Request Permissions

If you wish to reuse any or all of this article please use the link below which will take you to the Copyright Clearance Center’s RightsLink service. You will be able to get a quick price and instant permission to reuse the content in many different ways.


text:
# Algebraic proof of Five-Color Theorem using chromatic polynomials by Birkhoff and Lewis in 1946

I'm guessing everyone is familiar with Four Color Theorem which was proved by Appel and Haken using computers. A weaker version of this theorem is Five Color Theorem which states that a planar graph is 5-colorable. It's rather simple to prove Five Color Theorem in a standard mathematical approach (without resort to computers) and many graph theory textbooks explain this proof based on induction. (Even the wikipedia article covers the proof.)

Now, I'm interested in an algebraic proof of Five Color Theorem using chromatic polynomials. Let $\pi_G(x)$ be a chromataic polynomial of a graph $G$. The Five Color Theorem is proved once $\pi_G(5) > 0$ is shown for any planar graph $G$ because $\pi_G(5)$ is the number of 5-colorings of a graph $G$. In fact, Birkhoff introduced the chromatic polynomial with the hope of proving the Four Color Theorem by showing that $\pi_G(4) > 0$ for any planar graph. This approach was in vain, yet he and Lewis succeeded in showing that $\pi_G(x) > 0$ for any planar graph $G$ when $x$ is a real number larger than or equal to 5. For this algebraic proof of Five Color Theorem, many people point to 97-page paper written by Birkhoff and Lewis in 1946.

As a computer science TA of an advanced graph theory course, I think this algebraic proof is worth for a brief explanation and may be an adequate thesis topic for master student or even an undergraduate student. But it's somewhat hard to find out which part of the 97 page document is about an algebraic proof of Five Color Theorem. (Probably it's because I'm not a native speaker and not familiar with paper writing styles almost 70 years ago.)

1. Is there anyone who already read Birkhoff and Lewis and can tell me which section is about the actual algebraic proof?
2. Is there any other recent lecture notes or textbooks explaining this algebraic proof in a concise fashion?

I tried to go through Birkhoff and Lewis many years ago but it is not easy because they use different variables and the style is so different to modern proofs.

In modern terms, the key idea is that if a graph contains a vertex $v$ of degree k, then you can get an expression of the form $$P(G,\lambda) = (\lambda-k) P(G-v,\lambda) + \text{other terms}$$ where the other terms are all chromatic polynomials of minors of $G$.

So if the inductive hypothesis is that $P(G,x)> 0$ for all $x\geq 5$, then this reduction gives the inductive step.

Then we know that any planar graph has a vertex of degree at most 5, and that a minor of a planar graph is planar, and so we're done.

The expression involving $(\lambda-k)$ was proved by Thomassen, separately by Woodall, and more generally for all matroids by Oxley whose result preceded the others by two decades. However, although he proved the result, Oxley didn't actually state it explicitly, so missing it can be excused.

I'll dig out the BL paper tomorrow and see if their approach was essentially the same.

Added I think that the result is contained in Theorem 3.1 on page 413 in the BL paper (freely available from AMS), which bounds the coefficients of a polynomial $Q$ (the chromatic polynomial after a few trivial factors are removed). They helpfully remark that in this chapter, their usage of the symbol $\ll$ is "contrary to the notation of the preceding chapter", presumably to prevent any complacency on the part of the reader.

• I do not understand the formulation of Oxley's result for matroids. What does it mean 'remove a vertex'? – Fedor Petrov Apr 15 '16 at 18:08
• @Fedor - removing (deleting and contracting) the edges incident with a vertex in a graph corresponds to removing the elements of a cocircuit in a matroid. In a graph, the edges incident with a vertex are a special type of cocircuit, so the matroid formulation latter is slightly more general even when the matroid is graphic. – Gordon Royle Apr 15 '16 at 23:11
• If cocircuit is defined as inclusion-minimal codependent set, then in general set of edges incident with a vertex is not a cocircuit (well, it is always a disjoint union of cocircuits). – Fedor Petrov Apr 16 '16 at 7:02
• Also I do not understand why this approach does not prove that $K_6$ is 5-colorable: it has a vertex of degree 5 and all proper minors are 5-colorable. – Fedor Petrov Apr 16 '16 at 22:27
• Oxley works with cocircuits, while Woodall/Thomassen each work with sets of edges incident with a vertex. So sometimes Oxley can find a cocircuit strictly smaller than any vertex-star and thereby get a smaller $k$ in the first term. This can make a difference, but only for certain contrived examples. – Gordon Royle Apr 17 '16 at 8:17