Microsoft Exchange Is MIT's New Email System - <AUTHOR> http://tech.mit.edu/V129/N29/webmail.html

<comment><USER2> > Christine C. Fitzgerald, a spokesperson for IS&T, said, "We are running > Exchange servers in order to offer Microsoft Exchange. This is an optional > infrastructure solution for those departments who will benefit from an > _integrated e-mail and calendaring solution_."

For better or for worse, the world has come to expect integrated email and calendaring. I'm running Zimbra (community edition) for a few clients, and they like it, but alternatives to Exchange, even a good protocol, seem scarce.

KDE's Kontact looked promising for a while, but appears abandoned.

<comment><USER3> TBH, MS solution is the greatest one I've ever seen. Integrated email, calendaring, group based notifications, phone system, IM integration... it works great. You can even call your voicemail to get your emails read to you over the phone! (or schedule a meeting in a similar way, automatically putting it in your calendar)

There's one "but" - you have to go MS all the way. You cannot use those features without windows and their web ui is a complete disaster. That's one of the reasons it should never be used at any technical university IMHO. As soon as you touch anything MS, you're in the area where standards don't apply.

<comment><USER4> I tend to agree. I came from an Exchange background, and went all around trying different alternatives. There's nothing out there that quite compares.

I'm currently using Zimbra, and it is good enough, but it just isn't as nice. And "good enough" isn't really good enough. Whoever wants to topple Exchange is going to have to do better than this "me too" crap.

How about actually integrating the contacts, tasks, schedules, and email in some intelligent way?

</comment></comment></comment><comment><USER5> Scheme -> Python, Cyrus IMAP -> Microsoft Exchange

Does anyone detect a pattern?

<comment><USER6> Getting on with the times?

<comment><USER7> If it was Sendmail, maybe. But not Cyrus IMAP.

(for the uninitiated; read the "Internet Mail" chapter of Unix Hater's Handbook for MIT admins struggling with Sendmail, circa 1990 ;-)

<comment><USER8> In all fairness, Cyrus is a nightmare.

The opaque mail-store was a good idea when performance was an issue for mail servers - nowadays it just gets in the way constantly, especially when something breaks. The ACL system has been ridiculously broken for as long as I can remember. You can assign pretty much every letter of the alphabet to a mailbox/user but, for example, you cannot give a user delete permission on a folders content without giving him delete permission to the folder itself. Some ACL flags tend to interact funny with each other and nevermind trying to have users alter permissions (e.g. share folders) through their IMAP client...

This is just the tip of the iceberg, I'm honestly surprised someone was still using this dinosaur in production. ;-)

That said, moving to Exchange is truly a shame for a tech university. I haven't looked at zimbra and the ilk for a while. Are they still so bad?

</comment></comment></comment></comment><comment><USER9> Somehow that seems a little embarrassing. The "greatest" technical university in the world needs Microsoft to take care of its e-mail?

<comment><USER7> Have you seen what's been coming out of MIT Press in the last 8 years? They went full on pop-psych with their "internet and society" type publications. I have seen books on gamer anthropology, virtual currency and the "web mind" sort of stuff coming out of MIT Press. A weird cross between Wired and Kuro5hin. They want to create "leaders" and "visionaries", i.e. people who make it to business magazine covers dressed in geek-chic lab-coats, holding microscopes and calculators, while in reality, running a fully outsourced bio- startup out of Manhattan :-D

<comment><USER10> Suddenly it comes as no surprise the best modern OSs we use today are more or less simple improvements on an OS that is about as old as me. And I am not talking about Windows...

Did everybody abandon progress? Did we outsource it to China?

</comment></comment></comment><comment><USER11> What they currently use is Cyrus done by Carnegie Mellon University. <http://cyrusimap.web.cmu.edu/>

<comment><USER12> Apple is moving from Cyrus to Dovecot with Snow Leopard Server.

</comment></comment><comment><USER13> GMail has an "integrated calendar". It even syncs with outlook, if you have to have that piece of software. Why pay for Exchange instead of use GMail? If MIT wanted to offer gmail at an MIT domain name to students and staff, there's "google apps".

Why is exchange needed at all?

</comment><comment><USER10> Oh boy. I am so sorry for them... It... breaks my heart.</comment>


Ask HN: Which companies are improving recruiting? - <AUTHOR> What has your experience been with companies like Triplebyte, Hired, AngelList / A-List, Vettery, etc.? Have they helped you find candidates as a recruiter or find jobs as a candidate?<p>What companies are actually "fixing hiring" and what are the largest problems you still see in recruiting today? <comment><USER2> I was a software engineer looking for full-time jobs a couple of years ago and it blew my mind how terrible the process was.

There are _many_ problems in recruiting, but three things really bothered me during my search:

1\. Information asymmetry. Job seekers should know more about the people at and day-to-day practices of a company _before_ committing to their long and exhausting interview process. Often times this information is buried under cover letters, applications, phone screens, take-home tests, and hours of onsite interviews. The amount of time/energy it takes for a job seeker to get to the most important information means that they can only really "get to know" a handful of companies.

2\. Incentive misalignment. Another big problem in recruiting is having placement fees. If a recruiter's goal is to get me to join a company just long enough to hit the 90-day mark (when they get paid) but it's actually a bad fit, I lose and so does my employer. The incentives are misaligned between (third-party) recruiters, candidates, and employers when there are contingency fees.

3\. Lack of exposure to options. When you don't know what your options are, it's easy to settle. It often takes people 3, 4, 5 jobs to figure out what it is they really care about and want from their employer / team / work. Unfortunately, this can take _years_ to figure out for yourself. Not knowing what you want means that you'll do a worser job of choosing the right company to join. We would all do better if we had more exposure to the different ways different teams operate.

I ended up too frustrated w/ my job search to actually get a job. I instead founded Key Values ([https://www.keyvalues.com](https://www.keyvalues.com)) which solves for the three issues above and provides a way for software engineers to find teams that share their values.

The most talented and competent people will still perform poorly if they're unhappy / uninspired. That junior dev that you took a chance on will blossom if they have the right support and environment.

Value alignment is everything.

<comment><USER3> I have to say that I find keyvalues.com interesting and solving a problem which i have faced often. There's also a lot of other comments praising your work.

</comment></comment><comment><USER4> I've tried all manner of things, on both sides of the equation. In the end I don't think a big company can do it, and I don't think a small company can scale it. It's a classic market for lemons problem on both sides. And to make matters worse you now have massive cargo culting of Google's hiring practice across the board, leading to job interviews turning into a hugely expensive, time sucking endeavour and the signal from that style of interview steadily being eroded by massive study efforts on the part of candidates.

If you're just coming out of college then I think Triplebyte is a decent value to get your foot in the door someplace popular that looks good on a resume, but once you have some experience you run into the same problem that you get with all recruiters which is that they don't truly understand either the candidate or the role, resulting in miscommunication on both sides.

Personally I think unless you are a name brand with dozens to hundreds of applications coming in for every role every day, there is no substitute for rolling up your sleeves and doing the recruiting yourself. When candidates talk to hiring managers directly, the signal to noise ratio is an order of magnitude higher for both sides. As an engineering leader, doing hands-on sourcing is a super power with huge opportunity for arbitrage in a massively competitive market.

<comment><USER5> "market for lemons" is a great term, just in case people aren't aware of it.

I was introduced to it by this good piece on Medium: [https://medium.com/@thogge/one-mental-model-to-rule-them- all...](https://medium.com/@thogge/one-mental-model-to-rule-them- all-6cf1ec9e6889) (I'd appreciate if anyone posted links they like better).

I'm not sure I understand it applying in this case. Bad candidates are always looking for a job, but good candidates rarely need to look for a job. (So, job applicants are largely lemons). Good companies have lower turnover, so rarely need the positions filled?

<comment><USER6> I think it dates back to Joel, here's another good take on it: [https://danluu.com/hiring-lemons/](https://danluu.com/hiring-lemons/)

<comment><USER7> From the article you linked, it looks like the term dates to George Akerlof's paper, _The Market for "Lemons": Quality Uncertainty and the Market Mechanism_ (Nobel prize winning 1970 paper).

[https://en.wikipedia.org/wiki/The_Market_for_Lemons](https://en.wikipedia.org/wiki/The_Market_for_Lemons)

<comment><USER6> The term does, but not it's application to software hiring...

<comment><USER7> I misread your pronoun. Thanks for clarifying!

</comment></comment></comment></comment></comment></comment><comment><USER8> The current issue is that most of the effort is done by humans right at the beginning of the process: CV screening & first calls.

If you're a recruiter, by the time you actually get to talk to a candidate, you're tired of screening and most of the time you do a half-assed call.

Plus it boggles my mind how very very few companies train the recruiters in understanding the technologies they have in their stack.

There are a lot of factors that add an incredible amount of friction and make it a very asymmetric process (as other have said above):

• plain human error • job specifications with boilerplate text not being clear on what the role actually does • often times the people doing the first screening don't have a technical background • resumes come in all shapes and formats, so it's difficult to efficiently read them

And because of that asymmetry and supply-demand ratio, it's actually quite hard to hire software developers that are suited to a company, tech environment & business needs.

(disclaimer, I work at WorksHub)

The way we're trying to solve the issue at WorksHub is by trying to get companies to open-source same part of their code-base so that a developer could submit a few PRs during the interviewing process.

This solves the issue of irrelevant technical interviews, gives an idea of how your coding environment will be right off the bat.

Basically the thing is to do as much of the process as possible using only tech and then leave the last part for the actual human interaction.

</comment><comment><USER9> I'm a huge fan of the approach KeyValues.com is taking to help engineers find companies they'd actually like to work at. A lot of sites are focused on helping companies cut through the noise to find qualified developers, which means forcing developers to "prove" themselves through various tests etc. That's useful and makes sense.

But I like the idea of the opposite approach — forcing companies to qualify themselves to shed some light on what it'd be like to work there without having to go through the whole interview process first.

<comment><USER10> Also a huge fan of keyvalues.com. Found the company I'm currently working at through there.

I'd like to ad that As a new grad, the website helped me a lot: it gave names to ideas I had floating in my head about what I was looking for, and it made me more confident in telling companies what I wanted.

</comment></comment><comment><USER11> Now that I've been hired I want to know which companies are improving their _onboarding_ process. I got hired and was basically thrown to the wolves. Maybe I'm just lazy or stupid, but I feel like too many companies hire senior people and expect them to just start making major architectural changes day one without any ramp-up.

Just give me some bugs to fix for the first month or two. I need to learn your code and technologies involved, all while setting up my HR/benefits, learning the team and the facilities... You can ask me hard questions, but keep in mind my knowledge of your code is weak. I'm not ready to make proposals when I don't even know what your problems are or what is important to the stakeholders.

Also, I think I messed up and failed to fully vet the job I signed up for. I was so focused on getting a job in the valley that I let my standards drop. Now I'm at a job where I feel I am a poor fit. I'm not sure I'll last a year(my choice, I think), and after having just worked another job for a year, I think it's not going to look great when I try to find a new job. I'm thinking of just going back to contracting. I'm not cut out for big company politics. I just want to make cool shit.

<comment><USER12> I think every new job involves a bit of imposter syndrome.

</comment></comment><comment><USER13> Being employed is ultimately a human relationship, and hiring is about starting that relationship and ensuring it works for both parties. That means listening to and understanding the needs of both; and in the IT world, some of these needs are very much about tech. As obvious as it may sound, many recruitment agencies don't understand it. I'd even go so far as to say that recruiters who don't know shit about the tech that is fundamental to the jobs they recruit for are a sad norm.

Disclaimer: I work at works-hub.com. I don't want to make a sales pitch, but I'll just say I think we're an exception to that norm.

</comment><comment> chroem- Hiring is broken because employees and employers have asymmetric bargaining power, which leads to unrealistic expectations. No amount of improved candidate screening will solve that.

<comment><USER14> What specific information do employees not have? I'm co-founder of [https://www.Levels.fyi](https://www.Levels.fyi) / [https://www.Comp.fyi](https://www.Comp.fyi) which we built specifically to tackle information asymmetry in the job-seeking process. Would love to get feedback on how we can expand information we collect: hello <at> levels <dot> fyi

<comment><USER15> Personally, I never really trust any of these sites because the _all_ claim to have good data, and yet they all report pretty wildly different salary ranges for similar jobs. I have absolutely no idea if I'm actually being paid a reasonable salary, but honestly it's something that's important to me at my current stage in my career.

<comment><USER16> Out of curiosity (I'm not hiring :-) ), what does "reasonable salary" mean to you? Also, how do you evaluate the similarity of jobs? I'm asking because if I were looking to decide if I'm making a reasonable salary, I don't really even know where to start. I mean junior/intermediate/senior developer mean completely different things in different companies. The role of lead developer might be completely different as well. And given those different responsibilities, what is worth more or less money? Knowledge of certain skills (more rare is worth more? probably, but by how much?) Same thing for things like remote vs co-located (how much of a hit should I expect for remote?). Inventions agreement vs. my side projects are my own? The likelihood of a lot of overtime? The current health of the company (high risk company means more pay, I would think???)

Not taking a go at you. These are seriously things I think about and was wondering if you had thought about them too :-)

<comment><USER15> "Reasonable" here means "roughly market rate". But salary survey sites always have such a wide range as to be useless.

I mostly evaluate similarity in terms of responsibility (both tech-wise and human-wise), which yes, is very difficult to compare across jobs. Especially considering that jobs often morph pretty quickly after day one.

In the end, I go for the jobs that sound interesting and do my best to negotiate.

</comment></comment></comment></comment></comment><comment><USER17> I'll reiterate a desire for someone to actually make an OkCupid for Hiring. Both sides answer questions and get matched. (If this exists please let me know)

<comment><USER18> We tried at Intern Avenue, hammered it for 5 years. IA was a startup which created a self-service platform to find an ideal early-stage talents (interns and graduates) for businesses, using machine-learning. We had a good success and high retention rate at smaller size businesses, especially in non-STEM sectors, such as marketeers or journalists.

We made many mistakes, but the biggest one was to assume that the recruitment decision makers in medium-size businesses are interested in the hiring process. That's not the case. We had to realise, for these internal recruiters hiring is a pain, an extra mile above their day-to-day responsibilities. Hence they hire recruiters. You can't apply ML on the behaviour and preference of the recruiter and expect an optimal output for someone else.

<comment><USER17> Could you say more? (If there's a post-mortem post on this I'd love to read it.)

When I'm in a lead role or participate in hiring I'm definitely interested in the hiring process. I'm not sure how setting up a job profile (i.e. answering qualitative questions about what I value, what the team values, etc) would be much more work than writing the job description in the first place. I suspect I'm not fully understanding your statement though.

</comment></comment></comment><comment><USER19> Recruiting is a human resources intensive industry where the quality of a firm's output is dependent on the quality of the individual(s) handling your account. Companies like Triplybyte and Hired who raised gobs of VC with the promise of shaking the recruiting business (with their like totally amazing algorithms and "innovative" testing processes) haven't really done much and IMO are reverting to more traditional models while they leverage their resources to build walled gardens of data with hopes that machine learning will carry them into the sunset sometime soon.

In my view the only companies that are innovating are smaller firms and solo recruiters/consultants who have built up a high level of domain knowledge. This isn't so much innovation as just working well and consistently providing good results.

This isn't to say all small recruiting firms are wonderkins. But the good ones will not only find you good candidates but help consult and guide you where appropriate (this is especially important for startups).

Source: SWE at a small SF based recruiting co. which focuses exclusively on Start-up sales positions. Have been working on modernizing our software stack and have done a lot of competitive analysis over the past year. The people I work with will routinely school me on startups (i'll attempt to show them a new product after reading about its launch on HN and they'll tell me they knew about it two weeks ago).

<comment><USER20> I feel like Triplebyte and Hired are playing the same numbers game that everyone else is, they are just taking on some of the vetting work on behalf of the hiring manager. That results in a safe-bet candidate pool that conforms to certain technical biases (just read some of TB's blogs for examples) and favors professional job-seekers which are not necessarily the best long-term hires.

</comment></comment><comment><USER21> I've used Triplebyte and Hired in the past as a candidate. Triplebyte is good only for web development positions (front or back), and Hired seems completely useless. Every time I get emails begging me to submit my resume and then immediately get rejected. Makes no sense at all.

From what other people comment here and my own opinion, the filtering that most job boards use are complete garbage. Sometimes I want to search for a keyword, but I have never seen a single search where I can exclude a keyword. Or some implied tags just aren't used to help expand or narrow search results. And also PDF resumes just aren't able to be parsed correctly, even in very simple formats. But I would never be able to tell if it was parsed correctly as an applicant for some ATS systems because there's no feedback. As far as I'm aware, digital resumes should be in more use, but every ATS requires a new account and inputting the same information. Even when the company board listing is provided by the same company as another board listing! Workday is one example of that and it's infuriating!

And then there's the whole problem of HR people putting out the job listings. The horrible inaccuracy of some of them makes it really confusing as to what a company is actually looking for and if I would be a good fit.

Basically, I can't find what I want, I don't know what's happening, and I don't know what you want. And the best way to solve all of those is to 1) make better search tools, 2) give me more feedback and tell me when things go wrong instead of rejecting me outright for a software error, and 3) have the person in charge of a position write the job listing or talk to the candidate.

</comment><comment><USER22> For the past few years, I've mostly been on the employer side of this, recruiting engineers in my teams with a brief period where I had to find a job. It plain sucks.

As the hiring manager, I wish I didn't have to deal with recruiters and their 20% fee. But sourcing candidates and reaching out to them is painful too. OTOH there is too much noise in applications that come through your job board/career page links. Using any of these platforms is a full-time job in itself. Sifting through dozens of profiles and reaching out individually is extremely time consuming.

As someone who had to look for a job, that sucked too. You either go to a recruiter who forces you into a bunch of interviews, or you apply cold.

Referrals definitely make it easier on both sides but you can't always rely on just that one channel.

What can materially improve the discovery process, on both the hired and hiring sides? I think about this often. How can talent find roles suited to it and vice versa? Wasn't technology going to make this a breeze?

<comment><USER23> I've had quite a few friends go though Indeed Prime ([https://www.indeed.com/prime](https://www.indeed.com/prime)) with success. I think it's a start in trying to make hiring better

<comment><USER24> Having tried both I much prefer Hired.com on both the hiring and seeking sides.

</comment></comment></comment><comment><USER25> I work for a company in the legal recruiting industry ([https://hireanesquire.com/](https://hireanesquire.com/)) and we've been trying to tackle some of the biggest issues with recruiting -- albeit specifically for the legal industry.

At the end of the day, our goal is to create successful job placements. We've learned that there is surprisingly a lot of science in I/O psychology behind predicting job performance based on personality traits [0]. We've been developing an assessment system with a behavioral psychologist to measure personality traits that could predict a successful job outcome. To be honest, I'm surprised this hasn't caught on with the recruiting industry already. It's been working out well for us and I would expect to see more of this across different industries in the future.

[0] [http://jwalkonline.org/docs/Grad%20Classes/Fall%2007/Org%20P...](http://jwalkonline.org/docs/Grad%20Classes/Fall%2007/Org%20Psy/big%205%20and%20job%20perf.pdf)

</comment><comment><USER26> Well, my favorite domain. As the standard saying goes, recruiting is hard. It mostly about matching candidates and company's expectation and they tend to wildly fluctuate.

Hired, A-List, Vettery, Indeed Prime all fit in the same category. A market place for pre-filtered candidates with known expectations(salary range), Why more than one of these exist, I have no idea. There is nothing innovative in all these companies, just a fancy recruiting firm.

Triplebyte on the other hand definitely trying to change the Status Quo by letting candidates avoid multiple phone interviews. But while it works for limited set of candidates, scaling interviews while still maintaining quality is super tough. Beyond these, there are standard job boards and of course, LinkedIn for networking.

I see the traditional recruiting domain as the following parts: 1\. Job discovery(job boards, search engine, distributions(aka zip recruiter). 2\. ATS(Applicant tracking systems) which help companies manage interview process. 3\. Screening and Preparation(Hackerrank, Leetcode etc)

A lot could be done in each of the following areas, but there's not much innovation so far.

<comment><USER27> What could be done in innovation for job boards?

<comment><USER26> For a start, showing the most relevant details. Tech stack, whether they support Visa/Relocation, % of the people who heard back when they have applied(is it worth candidates time to even look at it). Also better filtering with multiple parameters, more personalization(beyond tags)

<comment><USER20> also showing past history of job postings from an employer and whether they were filled or just reposted every few months... in other words is the job posting real or just a fishing expedition?

</comment></comment></comment></comment><comment><USER28> We (getsimpl.com) use geektrust.in for developer hiring.

Developers create their profile, solve problems and earn badges. GeekTrust ensures companies have to engage with only people who are good at coding and solving problems. Companies pitch to candidates and if both matches, the next level of interviews are done by the company. It's great for companies as it improves the top-of-the-funnel with high-quality candidates.

For candidates, it's using their core skills to market themselves, at their pace. There're people who slowly build their profile. They submit code, get helpful reviews to go further.

The difference between GeekTrust and other coding platforms is that they handle things well beyond just plain problem-solving. Things like great design, documenting etc.

As mentioned by others, we use HackerRank also to evaluate different aspects.

</comment><comment><USER29> Related,

But I've had to do a lot of hiring over the years for low skill labor work (think warehouse type jobs) using indeed.com, which constitutes a large majority of out-of-house hiring (about ~50% global average). I've been doing UX/UI case/workflow studies for years as the employer. At my current job, I've funneled and optimized the entire process using copy-paste templates and calendly links. What took me several hours takes a few minutes now.

On the other end I started to slowly transition into full time development. I've been running an experiment with linkedin on lead generation. My hypothesis is that linkedin's algorithm for showing which candidates show up on recruiter's pages is exactly the same as SEO. If anyone is interested I can provide more information.

</comment><comment><USER30> In Europe or more specifically Germany we have Honeypot.io. They are different because the companies apply to candidates. They have assistants that help both the companies and candidates and tries to guide them to a better hiring process.

I have been on both sides using it for both recruiting and finding a job and I like it. The main problem as a candidate is that some companies still seem like they don't really care and just spam everyone with copy/paste templates but it was really nice to have some interesting companies apply to me.

As a recruiter I love it because it is easy to contact candidates but the main issue is lack of candidates. We have a shortage of developers to fill positions which is why Honeypot was started in the first place I believe.

</comment><comment><USER31> I've just made a job board for scientists, though it's not launched yet. It's called Research Pizza ([http://research.pizza](http://research.pizza)).

<comment><USER31> OK, but an actual response. For science/research jobs, it's all still word of mouth and recommendations from close network friends. For tech, I've used various job boards and services for my company. HN posts still do really well. Also, I had a great experience using Lambda School for hiring their program participants.

</comment></comment><comment><USER32> Recruiting is pretty easy. 1) pay more, and 2) be capable of recognizing good talent. (Which requires being good yourself.) Unfortunately, the tech industry fails brutally on both counts. Due to a combination of business guys suppressing wages, techies lacking courage to get better wages, and techies lacking confidence in their own abilities, hence their ability to discriminate correctly when hiring. This leads to the hoop jumping exercises that are common in tech interviews.

</comment><comment><USER33> We've been working on a new video-interviewing tool for about a year now: [https://hireflix.com/](https://hireflix.com/) One of our main goals is to improve the remote interview experience for both recruiter and recruitee. Feel free to request access to the beta at the site! Would be great to have some people from HN testing our platform.

</comment><comment><USER34> We use [https://www.interviewbit.com/hire/](https://www.interviewbit.com/hire/) for hiring developers. InterviewBit stands out compared to other traditional agencies by providing coding exercises to the candidates to test their coding skills and understand their level of experience.

<comment><USER12> > InterviewBit stands out compared to other traditional agencies by providing > coding exercises to the candidates to test their coding skills and > understand their level of experience

How does using candidates time for coding exercises make them stand out"?

</comment></comment><comment><USER35> None so far as a candidate. They've in most cases just removed the headhunter/recruiter person interaction. Nothing different yet, which I find tragic. The slight upside is since it's new shiny tech, new shiny companies are usually on them. But the process is still the same.

</comment><comment><USER36> Most companies who are trying to 'improve' recruitment are coming from outside the industry and are tackling it with an engineering mindset. It's an easy trap to fall into, as it seems like a simple two sided marketplace, however that is not the case. It needs to be approached more like legal tech, with experienced recruitment professionals working alongside engineers. The complexities, nuances and psychological factors need to be understood. There's a reason recruiters are so expensive after all. All the companies you have mentioned above just quickly built a simple marketplace and then advertised them like crazy to gain users, they never actually solved the inherent problems within recruiting.

</comment><comment><USER37> [https://weeve.co](https://weeve.co) \- they're doing video screening for the application process

</comment><comment><USER38> I'm in recruiting, have been for a while. I've also been part of the team that's built one of these newer solutions that you may have heard of, so I have some perspective.

A lot of different products that you'll see, that focus attention on sourcing candidates (or, solving "top of funnel" problems), are likely going to run into some of the same walls we always have. As appealing as these platforms might be, that offer a slightly more modern way of matching skills to jobs, at the end of the day they will still struggle to get things much better, for a couple of reasons:

1) We're dealing with a finite pool of candidates, and a fairly limited pool of really qualified candidates (of course, this is subjective based on your company). So, all the awesome skills matching AI/Machine Learning, etc. in the world, isn't going to create more people - you'll likely still end up short. 2) Often, the very best candidates are well employed, or move from one job to another without ever hitting the open market, because they are well known and get recruited among their network. So, these platforms will often have a larger representation of less experience job seekers.

With all that said, we have had success with Hired! I think they have a high quality reputation with candidates and recruiters, and that goes a long way. Another product we've liked is Drafted - this looks at your employee's networks, and then suggests people to your employees that they can refer. It's just a nudge to encourage a referral - it's been good.

I think that really, the most gains can come further into the process. Applying to a job (as candidate) and reviewing an application (as company) is fairly relatively easy and cheap (i.e. neither party has invested much time or attention). As you get further in the recruiting process, you're investing more of yourself (as is the company), so it's more important to get it right. Once you do find candidates that seem to be a strong potential fit, it's even more crucial that the rest of the process is transparent, grounded in logic, and actually assures the the right match is being made.

We've chose to focus on designing a better technical interview at Karat, because of this. We do first round technical screens on behalf of companies, and we've built the infrastructure to support a more fair and data-driven process. The companies we work with realize that getting interviewing right takes a lot of time - and then having your engineers do all first rounds (on top of final rounds), also takes a lot of time. So, we build all the interview content in house, and then as candidates go from Karat, to the final round interviews at these companies, we track what happens closely - this allows us to more accurately assess who is likely to be a good fit in final rounds, and then we just continue calibrating that fit over time.

Why we think we're "fixing" recruiting, is because we see the incredible amount of time lost, and poor matches made, when interviewing is done more arbitrarily, or in an ad hoc manner. By just applying consistent infrastructure, it cleans up a lot of things, and makes the process less painful for all involved. Finally, because our full focus is interviewing - we're able to do things like offer interviews 24/7, give you the chance to redo your interview if the first one sucked, and invest in a ton of training for interviewers to provide a really great experience.

So - that's my thought - it's tough to fix a lot of these things through sourcing - the parts of the process where you're developing a deeper relationship and investing more time are crucial to get right.

</comment><comment><USER39> I lead one of the companies in this space and it always makes me smile when I see "solving recruiting through machine learning" :D

I think we can all honestly agree that recruiting/hiring will never be "solved", it will always be a laborious task if it's done right and that's simply because we're dealing with people, not data. No algorithm should ever direct your decisions about a human being, we're all too wildly unpredictable for that. No algorithm would have ever given Steve Jobs or Elon Musk a shot.

Sure, we can use tech to help us improve filtering, sourcing, automating, interviewing...to an extent.

At X-Team (my company), we've chosen to not only focus on using tech to improve all of those to help us be more efficient, but I think most importantly we've focused on the one thing no one really talks about: what happens _after_ the hire.

Anyone can start one of these companies, make some decent tech to filter applicants, and then hand off a person to a company for a fee. Easy.

But providing people that will actually stick around after the handoff? Another beast entirely. We're providing X-Teamers, not people spit out of an algorithm on top of a database.

We're providing people who all share the same "keep moving forward" attitude, beliefs, values, people who are all motivated and rallied behind the same energy thanks to our engaging and energizing community experience (x-team.com/join for more on that). When your talent pool is unified and energized, you've changed the game because now it's not just about providing people quickly and accurately, it's about providing consistency among every hire, and you can only achieve that by continuing to invest in those people after the hire.

One example is how we give them all $2,500/year to spend on their passions and growth. TripleByte chucks them out the door and wishes them luck. We hang on to them, we send them around the world to our hackerhouse (x-outpost.com), we challenge them and motivate them ([https://youtu.be/Th80vOGFvUE](https://youtu.be/Th80vOGFvUE)), we become their support arm that unifies them around meaning and energy.

As one client said: "I feel like X-Team shows a lot of love and in turn that gets brought back to our company. I think that they create this ecosystem of growth for the developers that as a company we can't really do."

So we think shaking up hiring isn't just about creating tech that increases efficiency. It's also about providing consistency, ensuring you can get the same level of quality every time you turn on the hiring machine and need a new hire; and since humans aren't machines, that's the biggest challenge of them all and the one we want to keep tackling. :)</comment>


Ask HN: Are you an open source contributor with a blog? - <AUTHOR> I want to learn more about open source projects and looking for blogs written about open source projects. <comment><USER2> I'm a contributor to the MetaBrainz Foundation (maintainers of musicbrainz.org and other projects) and have written a few blogs about my contributions [0][1]

[0]: [https://paramsingh.github.io/2018/moving- acousticbrainz/](https://paramsingh.github.io/2018/moving-acousticbrainz/)

[1]: [https://paramsingh.github.io/2017/gsoc-2017-hacking-on- liste...](https://paramsingh.github.io/2017/gsoc-2017-hacking-on- listenbrainz/)</comment>


Is naming things really that hard? - <AUTHOR> http://wade.be/development/2017/03/03/naming-things.html <comment><USER2> I've written code numerous times to deals with files, and if there's anything more than feeding the path as given into open()`, then the code inevitably gets filled with variables of related names, and if you stare at it long enough, they all blur together. 'filename', 'name', 'file', 'files', 'file_handle', 'path', 'dir', 'dirname', 'parent_dir', 'file_ext', 'basename'...

Do I want 'filename', which is whatever was given? Do I want 'file', which is the file object? Do i want 'name', which is just the name of file, with directories, if any, stripped off? Do I want 'files', which is the list of files, as given?

If copying/moving is going on, then there's a source and a destination and it gets even worse.

The obvious way out is to refactor by renaming those variables, but 'unsafe_filename_as_given_by_user' or 'list_of_files_as_given' doesn't quite roll off the keyboard.

<comment><USER3> One word: autocompletion.

You only need to type unsafe_file_name_from_user once. After that, even the simplest, language-agnostics autocompletion of identifiers from the current buffer goes a.long way. A proper IDE makes it even simpler.

<comment><USER4> I have found that when I start reaching for long variable names it's because there is a design problem. Ideally the use of the variable should be obvious from the context. As you find yourself adding more and more context to the name, you should realise that it's because you lack context in your design.

<comment><USER5> Deriving meaning from the context requires understanding the context. That's fine for the original author or the refactoring dev, but the troubleshooter swooping in to fix that problem that's obvious in the UI needs to be able to understand the variable names with as little context as possible. "Well, if you'd just spent a few hours to truly grok the intent of the code, ..." is not an acceptable answer when it's possible to make the solution transparent as easily as making more descriptive names.

<comment><USER6> If you're in the middle of the spreadsheet reader, it should be self-evident that 'row' means a row in the spreadsheet; if you're in the middle of the database insertion logic, it should be self-evident that 'row' means a row in the database.

I simply don't accept your priors.

<comment><USER5> I use 'row' as a variable name quite a lot, especially in loopy situations where it's obvious. The more problematic times are when you have things like a source and a destination row dealing with, say, cows, and you call one of them 'row' and the other one 'cow\\_row', and in different places pick which kind of row is which at apparent random.

Or the situation with the file names, as someone else mentioned at more length.

</comment></comment></comment></comment></comment></comment><comment><USER7> In my experience there are a couple of reasons that lead to bad names in programs:

\- it takes effort to think of a good name. And more of the linguistically creative type instead of the logical reasoning type which makes up most of the rest of programming.

\- it takes domain expertise to pick a good name

\- if you stare too long at the same piece of code it becomes harder to see it through the eyes of someone who has never seen that code before

\- almost everybody uses in English in their programs, but many people are not native speakers

But I think making an actual effort to pick a good name already goes a long way. It forces you to think about the problem at hand and how you could communicate that to somebody else.

</comment><comment><USER8> <pre> tags are not meant for block quotes. HTML has a <blockquote> tag instead. <pre> tags force mobile users to read in snippets as they scroll horizontally along the entire line. If you want your block quotes to use a monospace font, you can use CSS, and then you don't have to give up on semantic HTML and line wrapping.

<comment><AUTHOR> Markdown fixed.

</comment></comment><comment><USER9> Good naming is hard because you are using the wrong tool. Names in code, and even in the business world, are usually abbreviations for much more complex things. You should not be looking for _too_ much meaning from the name itself. Most words have many meanings, so trying to string together some verbs and nouns to describe complex behavior will almost always fail. A BDD test suite is far more suited to tell you what the abbreviated name really stands for than trying to deduce it from the name itself. One exception to this could be programming idioms, for example using 'i' as a counter in a loop which anyone with experience recognizes without even thinking. To many programmers, 'i' has become a word with quite a complex meaning itself: a) I'm a number b) I will be incremented c) I will be used in a loop d) I will be tested against to end the loop. Try naming that accurately without ending up with a really long variable name.

<comment><USER10> Programming mostly in Python and some C these days, for me names are the most important place to put meaning in.

The trick is being systematic. And consistent in the small. Short names and (at first) non-telling names are not a problem. It makes no sense to use (predominantly) very long descriptive names, not because they are harder to type, but because a long name is and indication that it's not an established concept, not a recurring theme across the code pase.

So my habit has become to just choose a one-word name for this vague but probably important concept I have, even if it's not the best name. I put a comment on the datatype declaration, explaining in detail the meaning of that thing. Maybe later I will come up with a better name, so I will just switch to that name. Or the comment gets improved. It's about growing clear concepts. After some time that single-word name will be a natural thing to use for that concept.

<comment><USER11> Fix-it-later leads to shoddy code though.

If you can have a clear understanding of the important concept (instead of a vague understanding) that can be reflected in a good name.

Good name meaning one that is descriptive, unambiguous, and reveals a crisp, not vague, concept.

Then with that good name, when you write the code the first time, the clarity of the concept will help you avoid logic pitfalls and messy constructs.

Not to say comments are always bad, but probably a comment won't be needed, because the name itself will reveal the intent.

Then later, when someone does come and edit the code, instead of having to come up with a better name, they can focus on whatever they came there for, and they can do so with a better understanding of each variable and what is going on.

The difference between the two approaches is really about where you spend your extra time related to naming. In my approach, you spend a little extra time up front. But it begins paying dividends immediately, as you continue writing the very first version of the code; it is easier to write clearly and correctly.

In your approach, you spend less time up front, and pour the code out faster, which might seem like a great thing. You also see an immediate payoff, because your process is fast. But then you (or someone who comes behind you) has to pay a heavy bill of technical debt.

When I read your comment I read it as a description of what your current practice is, not something that has been thought through a lot. Growing clear concepts is a great way to think about it, so that's a good line to continue with imho. I just think that part can and should be done up front. Sometimes it's worth a short conversation with another developer to see if you can agree on a good definition reflected in a clear name.

But you're also right that sometimes single word names work fine. And sometimes concepts are just clear and don't need much thought. Obviously those ones we can agree on. I'm more focused on the more difficult, or more vague ones, as a place where I think up-front quality naming is better than having the "fix-it-later" approach.

<comment><USER10> Yeah I didn't mean to imply that I pick bad names intentionally. Of course I pick the best name that I can come up with. But when I'm doing something I haven't done before, it's hard to judge whether a name is any good, maybe because I don't actually know precisely what I'm doing in the first place.

In these cases I err on the side of short names (preferably non-composite) because I _know_ that making a longer name will not help. I just use that new name a little in a more exploratory type of programming. When it sticks it was a good choice. Examples: tree, spec, coverage, identity, isomorphism, object, struct, key, value, tag... These names need context, but they can turn out to be good names because they are short and _distinct_.

When the name doesn't stick and I can't come up with a better one, maybe I should do something entirely different.

</comment></comment></comment></comment><comment><USER12> I think this article ignores or glosses over the hardest part about naming, which is when you have to start naming things with abstract behavior. Naming things with analogs in the domain is easy, but when you find yourself trying to follow the Single Responsibility principle and breaking pieces off you run into trouble.

My AccountingRow is something the user sees, and there's also a SummaryAccountingRow with similarities; both of these need SQL generated, so there's a AccountingRowSQLGenerator and a AccountingRowSummarySQLGenerator. These generally share some of the same business logic around how to join different tables, so there's a AccountingRowCommonQueries class. We also need to spit this out in JSON, so there's a AccountingRowSerializer and AccountingRowsSerializer and AccountingRowSummarySerializer, AccountingRowSummaryRowsSerializer. An AccountingRow also has an AccountingRowBehavior, and AccountRowAdder, and onward into infinity.

Now you have name soup, and if you are looking at this system for the first time your eyes glaze over.

<comment><USER13> This example would benefit from a namespace/package named "Accounting". Then you could drop all of the "Accounting-" prefixes.

<comment><USER12> Whoops - there's also a BudgetingRow that needs a very similar hierarchy of support structures!

Clearly, the system needs some refactoring - perhaps there's a pattern that can be extracted. Hopefully, though, my point came across.

</comment></comment></comment><comment><USER14> Well, even non-hard, very simply functional/x-ray naming sloppiness causes plenty of grief, but I think this is partly because we're used to naming being hard enough that -- at a certain level of energy, time-crunch, and lack of investment in a massively brownfield project we really would rather refactor entirely -- we sort of give up. There's a recentish (2015) little empirical study that clustered'linguistic antipatterns' (based on surveys of software engineers): [https://www.researchgate.net/publication/276314133_Linguisti...](https://www.researchgate.net/publication/276314133_Linguistic_antipatterns_what_they_are_and_how_developers_perceive_them)

<comment><USER15> Wow, I wish every academic paper were that useful to the layman. Free download, well-explained list of antipatterns, in-document hyperlinks to code samples so you can recognize the antipatterns, suggestions for renaming. Thanks very much for the link.

</comment></comment><comment><USER16> I always thought the quote was that the two difficult problems are cache invalidation, naming things, and off by one errors.

<comment><USER17> [https://martinfowler.com/bliki/TwoHardThings.html](https://martinfowler.com/bliki/TwoHardThings.html)

There are only two hard things in Computer Science: cache invalidation and naming things.

        -- Phil Karlton

But yes, there are lots of other popular variations :-)

<comment><USER16> Haha, that distributed systems tweet is excellent – thanks for sharing! :o)

        There are only two hard problems in distributed systems:
        2. Exactly-once delivery
        1. Guaranteed order of messages
        2. Exactly-once delivery

</comment></comment></comment><comment><USER18> Yes. Right naming hints right abstraction, vice versa. If you cannot find a good name, large chance is that you probably have some confusion as of how to structure your program.

So yes, it is hard, and rightfully so.

<comment><USER19> >If you cannot find a good name, large chance is that you probably have some confusion as of how to structure your program.

I'm not sure about that. If you don't know about patterns like factory or observer (event listener), and you invent these concepts independently, you'll have a hard time naming it, and your names will be nonstandard. My point being that it's possible to have an elegant solution yet it's still hard to name succinctly.

<comment><USER18> > you invent these concepts independently

That sounds confusion to me. Those patterns are called patterns, because people practice them over long time, during the cause, they decoupled them nicely. Assigning the right name, implicitly means the clear understanding of scope and responsibility. Self-invented solution may echo the original idea in some aspects, but most of time, is not even nearly as clean.

</comment></comment></comment><comment><USER20> Naming things is the most fun part. At least in my opinion. Closely followed by creating the logo. Then going back to the naming again because for the original name you could not create a good logo.

<comment><USER21> Maybe I'm weird, but I think actually building things is the fun part. Naming things is the worst - every time that we have to name a product I feel like I'm in the Dilbert animated cartoon [1].

Plus it lets the talkers and the bullshitters look like they're doing something while they bikeshed over naming things, but for some reason they have to bring in the doers to spectate instead of letting them get things done.

[1] [http://dilbert.wikia.com/wiki/The_Name](http://dilbert.wikia.com/wiki/The_Name)

<comment><USER20> The name makes out of the tool a product. Something you can relate to. When I was in charge of rolling out a regional scoring engine in Asia no one wanted the project. Renamed it to Blaze because of the underlying Fico Blaze Advisor software, suddenly things changed. Blaze is fast, efficient, fiery, daring. People are weird.

</comment></comment></comment><comment><USER22> I always thought this referred to abstract computer science concepts like : constant vs literal vs variable, scope, composition vs aggregation, encapsulation, function, procedure, polymorphism, interface, loops, accessor, mutator, class vs object and instantiation, abstraction, linked lists, arrays, hash (not so much hash), recursion, etc.

I consider these names to be beautiful and succinct and a lot of thought was put into them.

<comment><USER23> Except that C ruined 'constant' by mistaking it with view/'really only access' which means that in D real constant are named 'immutable'..

Plus there are compile time constant, runtime constant, once (Eiffel) variable..

</comment></comment><comment><USER24> One thing I do when I can't immediately think of a domain-appropriate name is to give an obviously wrong one, like "new_function_01". During a complex refactoring, I may have dozens of such methods or variables. Eventually the variations are all smoothed out and I can replace 20 different method calls with one method call with perhaps an additional argument. That method is _way_ easier to name.

Naming seem to be the last step of refactoring. Refactoring is the process of manipulating / identifying the semantics of an application, names are human- readable tags that ease the mental task of understanding semantics.

<comment><USER25> I do the ugly names too. One of two things usually happen:

\- As I work with the code, the name becomes obvious.

\- The variable/function turns out to disappear during the work.

One more case of how it can be better to decide something later, when you know more.

</comment></comment><comment><USER26> "There are only two hard things in Computer Science: cache invalidation and naming things, and off-by-one errors."

</comment><comment><USER27> Coding software needs to catch up with usability testing of presenting software. The dynamics are equivalent. In usability theory there is no one practice for all domains. In fact, usability theory completely embraces marketing where branding is important, i.e. distinctness is highly valuable. I suggest then that usability studies be companion to software written to the same extant as software presentation. Naming is just one aspect of usability. Information architecture, or grouping of names, is one of the most important roles in usability. In his report this year Jakob Nielson did a comparison study across ten years. Usability of software has increased in every category save one: information architecture. Grouping names into menus for tasks is really, really hard. The current trend of mega-menus is no help from experience. Doing usability studies and task analysis on the code would be a huge boon to usability of the application. It would raise overall usability awareness and its value.

</comment><comment><USER28> Naming is hard for all the reasons OP mentions. But why I believe it is especially hard in computer science is that, like cache invalidation, it does not have a deterministic or "correct" solution. At some point, humans have to make a decision based on circumstances and tradeoffs.

</comment><comment><USER29> Does anyone know of an article filled with examples of good naming? Functions, variables etc.

</comment><comment><USER30> Naming is very important. I think the problem is that it can take a little bit of mental effort to come up with a good name and it can distract a developer from their current train of thought. It just takes a bit of practice to get used to it.

</comment><comment><USER31> Has someone looked into a problem of automatic (computer-generated) naming? As in, generate a unique name that somewhat describes this thing that was just generated (like a piece of code)?

</comment><comment><USER32> I think the bigger problem with naming is simply being consistent. Ask 5 developers what the variable name for an important filehandle should be and you'll probably get at least 3 answers. As long as everyone is consistent, even if the names get a little sketchy here and there, that consistency goes a long way for code with a long lifetime.

</comment><comment><USER33> The problem comes when someone else already used "product" for another concept in the system, and you now have to come up with an appropriate synonym. (Or the same for any other common concept: Object, connection, lock, etc)

</comment><comment><USER34> [https://en.wikipedia.org/wiki/List_of_names_for_turkeys](https://en.wikipedia.org/wiki/List_of_names_for_turkeys)

</comment><comment><USER35> _" There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors."_

</comment><comment><USER36> This article is badly marred by a blockquote styling which fails to wrap lines and has text scrolling off to the right of the enclosing box.

Author, if you're reading, please fix this. Default blockquote styling is far preferable to what you've done here.

Thank you.

<comment><USER37> I remember HN having this problem on small mobile screens for the longest time (for block quotes in comments).

<comment><USER36> It still does.

I've written a few Stylish fixes (including that) on desktop.

</comment></comment></comment><comment><USER38> Never mind naming, would putting proper paragraphs in the article have really been too hard?

<comment><AUTHOR> Nope.</comment></comment>


Balsamiq Roadmap for 2010 - <AUTHOR> http://www.balsamiq.com/blog/2010/01/03/balsamiq-roadmap-for-2010/ <comment><USER2> With genius meat and potatoes marketing, a rabid fan-base, and an upcoming web application, I would tell a software entrepreneur aiming to go from 1.6X to 2.5X in a year that they are probably aiming a little too conservatively. Even if X happens to be "one milllllllllion dollars".

(Crimety, how much I love being in an industry where most growth factors are multiplicative. Let me count the ways.)

Your business does't know that $900,000 is a lot of money: it only sees the percentages, and 56% lift is really not that much when you start compounding multiplicative advantages.

Especially because one of those advantages is "is a web app" and they beat the stuffing out of desktop applications so handily it is almost embarrassing. I'm interested in seeing if that holds as true for Flex apps as for my Java app, but I got a 50% boost in conversion last year just from releasing the web app.

If he starts selling it early in the year, well, there's a million in marginal sales for waking up in the morning -- what will he do with the rest of his day? ;)

<comment><USER3> I really don't know what it is, but it's just really _fun_ to watch this go. Balsamiq and that bingo card dude are two of my favorite startups to follow. I'm the proud owner of _Mockups_ , though I haven't used it in a few months. On the other hand, though I have no personal use for bingo cards (and hope never to have one, no offense), should I ever run into any little old ladies who would be interested, I'm for sure going to pass on my knowledge of his cool website.

<comment><USER2> Thanks! (And I clearly need to work on my branding.)

<comment><USER3> You know what, maybe you do...or maybe it's just me not being your target market. I actually clicked on your profile to find out what your website name was. As soon as I saw "BingoCardCreator," I knew that I'd seen it before. Somehow I couldn't get it to stick in my head. I'll probably never forget it now though. ;)

</comment></comment></comment></comment><comment><USER4> The spirit of openness that Peldi has about where the company is now, their goals, and their shortcomings is honestly inspiring.

</comment><comment><USER5> That's too exciting for me - too many exclamation marks and too much love for my surly old brain to handle. One more balsamiq article and my mental backlash against all things popular will start. I love the underdog, but not the frontrunner when he is all excited and he loves all his fans and so on. Yes, I said it. I criticised Balsamiq.

<comment><USER6> A thought - I just skimmed your comments. There's some fantastic technical comments, good business comments, but then a lot of pessimism/contrarianism/snark/etc on some more general topics.

If I may, humbly, let me say that I think this is something that kind of sucks for someone so bright. You're obviously a very very smart dude, but what does the 10-20% of contrarian/snark really add?

I don't know, maybe I'm making much ado about nothing, but I get an inkling here that you've got smart-person-and-like-to-show-it going on. Y'know how I see it? I used to do that shit _a lot_. When I realized how often I used to do it, I cut it out, because it was crippling. Even a small percent of no-value- add critique/snark coming from me made me a hell of a lot less likable despite 80-90% of what I was saying being somewhat valuable stuff.

It doesn't mean I don't think the critique/snark/etc, I just try to kill it before hitting the "post" button online. I still write a lot of those comments, just try to realize it and eliminate it reasonably soon. If I must critique, I try to insist on adding some value while doing it. It doesn't always work, but I reckon I get a lot more mileage out of conversing now after doing that. Kind of a hard slog to eliminate that old habit, but it's very much been worth it.

<comment><USER5> Some percentage of people are reactively contrarian. Having these people around is useful because then there is always a representative of the unpopular opinion. Having to deal with both extremes will lead to a more stable end-solution.

An intellectual forum should not just tolerate dissent, it should embrace it. Thought is just a comparison between two opposing possibilities - and how can we claim to think if we only allow a single possibility, a single way, and a single type?

Not everybody is nice. It's that way in the world, it's that way in the books, and it will be that way on these here internets.

And don't kid yourself and assume I am smart - I'm as dumb as the next guy - I'm just talented in packaging my dumbness in nicer words.</comment></comment></comment>


Ask HN: Do you expect Rails to last in front of the JavaScript revolution? - <AUTHOR> <comment><USER2> Rails isn't going anywhere. JS isn't the be all, end all. It's growing and is capable of a lot, but rails is a different beast and you really can't compare them, even if there is some overlap.

</comment><comment><USER3> Like all tech, its popularity will go down over time but a lot of the ideas will live on: Elixir in particular (which is very Ruby inspired) has more buzz in the non-Ruby community than Rails ever did.</comment>


500 startups new batch announced - <AUTHOR> https://techcrunch.com/2017/08/08/heres-the-22nd-batch-of-500-startups-companies/ <comment><USER2> 'the specter of mcclure'</comment>


IPod nano: Lumia ripoff? :)  - <AUTHOR> https://twitter.com/jcroft/status/245949279838027776 <comment><AUTHOR> I was in Apple's corner for the Samsung debacle, but seems they're doing exactly the same thing. Which changes my whole mind on it all.

<comment><USER2> The smiley is there for a reason. The Lumia appears to be _inspired_ by the old iPod nano, so really Apple is "copying" their own design.</comment></comment>


OP claims to have been fired after 6 years of playing video games at work - <AUTHOR> https://www.reddit.com/r/cscareerquestions/comments/4km3yc/finally_fired_after_6_years/ <comment><AUTHOR> The linked post was posted to /r/cscareerquestions with the title "Finally fired after 6 years." In it, OP claims to have been employed by a name company in the Bay Area, automated his job within 8 months, and basically sat around playing League of Legends and browsing Reddit for 6 years before he was discovered and fired yesterday.

The responses that OP received were by and large positive, with many congratulations for OP for his accomplishment. I'm not convinced that OP's actions were worthy of congratulations, but I can't find much discussion in the thread on Reddit taking the opinion that OP was wrong.

Is OP entitled to get away with doing as little work on his job as he can get away with? That's the impression that I get from all the responses to OP's post. Can somebody make the argument that OP was wrong? I feel like I'm taking crazy pills over here. Thanks.

<comment><USER2> If OP was turning down more work claiming to be busy when they weren't, they were wrong.</comment></comment>


Seven atom transistor sets the pace for future PCs - <AUTHOR> http://news.bbc.co.uk/1/hi/technology/10146704.stm

<comment><USER2> The takeaway quotation for me:

        On chips where components are 22 nanometres in
        size, transistor gates are about 42 atoms across.

</comment><comment><USER3> Curious as to how will they solve current leakage on something this small? Interesting nonetheless.

<comment><USER4> this and heat are the main issues, not shrinking the transistors AFAIK.

<comment><USER5> The masks uses to produce this stuff are works of art, they take in to account the distortion and interference of the waves used for the exposure.

<comment><USER6> But not at the single atom level, tunneling becomes a much much bigger problem -- it's definitely exponential.

the bbc article doesn't say, but my guess is that it has to be super cooled to work. Which makes a lot of sense actually considering that this group says that on the bigger picture they're working on Quantum Computing, which generally is only done in the laboratory at temperatures pushing our ability to cool things down near abs zero.

So these guys probably don't care that to actually use this set of atoms as a transistor, you may have to be really cold, or even use a really low clock cycle, because their bigger goal is to create a quantum computer, which would be soo powerful for certain things that having to query it at a very low frequency, and have it be in the lab are OK things

<comment><USER7> I've tracked down the paper and you're right -- all measurements are done at a temperature of 20 mK.</comment></comment></comment></comment></comment>


Have you used styled components and what do you think about it? - <AUTHOR> Almost ready with a simple tool to translate CSS as styled-components that I plan to launch this week.
I just wanted to know what do you guys think about styled-components? <comment><USER2> I love styled components for React. They are a great way to separate the styling logic from JSX, yet keeping it at a glance in the same file as the component. Essentially, you don't have to remember CSS classes name. It is also a great way to have very granular styling when needed. The fact that you can encapsulate the component in another styled component makes it so that you can have general styles and more specific ones whenever you want. I would personally recommend it over css files for any react project.

Also, if you are using a react framework such as material UI or ant design, styled components make it very easy to change the style of those without braking anything.

</comment><comment><USER3> You mean [https://www.styled-components.com/](https://www.styled- components.com/) ? I am curious how the components can be themed? My understanding is web components use shadow dom isolating their dom tree from the outer document so wasn't sure if it is possible to have an outer document css file provide theme colors to the components?

<comment><AUTHOR> Are you asking something along these lines: [https://css-tricks.com/styling-a- web-component/](https://css-tricks.com/styling-a-web-component/), not clear on how both questions are related.

</comment></comment><comment><USER4> I do not think that it provides much more value than other simpler solutions already do. I might be wrong, so please correct me, but the main problem styled-component solves is already solved by css-module. In this light, styled-component seems an unnecessary abstraction and a whole new set of APIs to learn for no tangible benefit.

<comment><AUTHOR> can't provide props aka the theming options in `css-modules`. I think, `styled-components` seems like an extension to css-module.</comment></comment>


AmazonBasics: Bezos and Co. starts private-label consumer electronics line - <AUTHOR> http://www.engadget.com/2009/09/20/amazonbasics-bezos-and-co-starts-private-label-consumer-electr/ <comment><USER2> Amazon also has also created a number of "private label" brands for furniture, tools and other items, such as Pizon, Strathwood, and Denali.

[http://www.amazonstrategies.com/2009/06/holy-private- labels-...](http://www.amazonstrategies.com/2009/06/holy-private-labels- batman-pinzon-is-not-alone.html)

According to that article, these 4 brands offer about 1200 items. Smart move -- like Kirkland at Costco. Keeps them highly price-competitive.

</comment><comment><USER3> Link to sources:

[http://www.amazon.com/b?ie=UTF8&node=1267157011](http://www.amazon.com/b?ie=UTF8&node=1267157011)

[http://phx.corporate- ir.net/phoenix.zhtml?c=176060&p=iro...](http://phx.corporate- ir.net/phoenix.zhtml?c=176060&p=irol-newsArticle&ID=1333482&highlight=)

</comment><comment><USER4> Geek Squad 6' USB A/B cable: $36.99 AmazonBasics 6' USB A/B cable: $6.77

Glad to see someone big undercutting Best Buy's outrageous prices.

<comment><USER5> As someone who resides not in United States, Puerto Rico, Canada, China or England, I must say that Geek Squad seems sort of an unnecessary and forced invention. It's no surprise that their prices are so high as they have various costly conventions and vehicles, "Geekmobile" being an example.

</comment></comment><comment><USER6> Amazon has ready competition (Newegg) waiting for it in this area. But of- course newegg should be worried right now.

<comment><USER7> Newegg certainly and Monoprice (monoprice.com) as well.

<comment><USER8> When they can offer pricing and quality that competes with Monoprice, I'll be waiting there with my credit card. :-)</comment></comment></comment>


AWS fired someone for spending too much time with the family - <AUTHOR> https://twitter.com/rchrdbyd/status/1245385468562280448 <comment><USER2> Likely an April Fools joke by the Twitter user.

</comment><comment><USER3> "Your fired" is misspelled and HR-noncompliant. This letter would subject Amazon to legal difficulties. If a C-level sent it, it would likely result in their termination. So it's probably an April Fools joke.

</comment><comment><USER4> I hate April Fools pranks.

And I'd sooner believe AWS was launching a moon base at re:Invent this year than Andy Jassy would use the wrong "your" in a letter.</comment>


Human brain networks function in connectome-specific harmonic waves - <AUTHOR> http://www.nature.com/ncomms/2016/160121/ncomms10340/full/ncomms10340.html <comment><USER2> In english, please.

<comment><AUTHOR> From a referring article[1] which translates into a human-understandable format,

"Interestingly, the same kinds of harmonic waves are thought to explain other self-organising phenomena in nature, such as the patterns that sand forms when sitting on a vibrating metal plate, or the development of biological patterns such as the stripes on tigers and spots on leopards."

[1][http://www.sciencealert.com/resting-brainwaves-function- in-s...](http://www.sciencealert.com/resting-brainwaves-function-in-specific- harmonic-patterns-study-suggests)

<comment><USER2> So, there's apparently some kind of pattern that just happens in nature?

I should tell my sister, she'd love this. Might have to get her a vibrating- sand-plate device to put next to her tarot cards.

(In all seriousness, I'm hearing a lot of New-Age style stuff here. Like all New Age things, I'm skeptical; that doesn't mean that I'm not gonna believe it, just that I'd like some empirical proof.)

<comment><AUTHOR> Agreed, believing these types of articles outright plays into my own confirmation bias (aka I'd really like to believe this stuff), but really my goal in sharing this to HN was to hopefully have an open discussion and hear the variety of well-articulated views this community is infamous for :)</comment></comment></comment></comment>