Print a Vacuum Cleaner - <AUTHOR> http://blog.reprap.org/2011/03/print-vacuum-cleaner.html <comment><USER2> Actually this is pretty amazing. A vacuum cleaner was one of the big appliances that broke down the barrier of machines doing chores (along with the dishwasher and clothing washing machine). The fact that reprap can already produce even a bad vacuum cleaner is ana amazing sign of the potential that this technology has and how quickly it is moving.

Very interesting.

<comment><USER3> They are not printing a vacuum cleaner; they are printing some of the parts, but you still need to buy _A DC motor, Tape Filter (some cloth; see later), Power Supply_.

Anyway, I wish they focused more on the real advantage of these things which is to produce replacement parts when a 5 cent piece breaks on a 100+$ object. Think being able to replace the little plastic tab on your remote control so you don't have to resort to duck tape to keep the batteries from falling out. Or one of those clips on your backpack that let's you readjust things without just tying a knot in them.

<comment><USER4> I bought the DC motor for the second one I'm making at active surplus for $1.95. The cloth was under hacklabs sink in a package of 10 that cost ~ $5, and I didn't use a full cloth. The tape was sitting around, but probably cost about $2 (the one I used this time was taken out of an old vacuum cleaner, ironically enough). The power supply was a fancy one and would cost >$100 but I could have bought a cheap converter for $5. And I used a dollar or two of plastic.

So, even if I'd had to buy everything from scratch, it only would have cost me ~ $15. Since that wasn't the case, it only cost me my time and some negligible expenses. Meanwhile, the cheapest portable vacuum cleaner I could find at the stores I went to was $39.99 + tax...

Also, we're not that far from printing motors. Fab@home has printed metal by dissolving it into a thick paste and others have printed grooves and run solder through them. Once I can print metal coils, I can print a motor... (Some motors don't need an internal magnet -- see <http://en.wikipedia.org/wiki/Induction_motor>)

</comment></comment></comment><comment><USER5> You wouldn't steal a vaacum cleaner, but you might be inclined to download and print one.

</comment><comment><USER6> These printers really blow my mind with the amount of potential they have.

</comment><comment><USER7> Would you downvote me if i used the bad wordplay of saying that i'm ...... sucked away ? :)

It's really pretty amazing. But the very sad thing is that the kidney printing (<http://www.shockmd.com/2011/03/10/printing-a-human-kidney/>) would get less funding than a mainstream application of what you've done.

<comment><USER8> True but I think if you look at the grassroots movement of open source a different picture emerges. The hacker appeal of printing a kidney is far beyond that of a vacuum. The only reason it hasn't caught on so far with the hardware hackers pushing these printers is because the open source 3d printers are so far away from being able to actually print that.

When the price of open source 3d printers decreases to a couple hundred dollars and their quality has steadily improved for 5-10 years will it matter which cash cows corporations are chasing? In a world where you can just go to your computer and print a kidney for yourself they may just be entirely irrelevant.

disclaimer: if you print yourself a kidney, please get a certified doctor to install it :)

EDIT: watching the ted talk. He's using custom machines, very impressive in- body printing.

</comment></comment><comment><USER9> I think the time would have been better spent trying to print another 3D printer

<comment><USER10> Isn't it true that most/all new technology looks messy and is barely usable when it is brand new? This person's efforts should be applauded.

As an aide, most people like the _idea_ of innovation, but when they see it up close, their reaction is often _ugh_.

<comment><USER11> Up close, the making of sausages is not pretty.</comment></comment></comment>


Developer won't get hit by a bus, they'll get hired by Netflix - <AUTHOR> https://www.neomindlabs.com/post/your-developer-wont-get-hit-by-a-bus-theyll-get-hired-by-netflix <comment><USER2> I agree with the author's point about using popular tech stacks to alleviate the ramp-up time for new hire productivity, but that is not the optimal solution. The optimal solution is for management to not let high-productivity talent from leaving - increase their comp to whatever offers they might get in the open market. That's how labor economic works - it's a market.

Investment bank and management consulting figured this out a long time ago. Example - when you new grad starts in i-banking, they're in training for 4-6 weeks. Not doing anything productive, just training to do the job. Not the case in engineering, you are assigned user stories day one and your training is doing the work. So new i-banks are highly paid (so they don't leave because talent is perceived to be scarce and valuable) and they're companies invest in them (through training early on).

Right now, corporate managers are vomiting in their mouth when the have to look at how much they need to pay to keep their engineers from leaving. It's because of the perception of engineers - they're seen as semi-skilled labor (cost center, not strategic to the business) and are easily replaceable (no, they're not). Culturally, they have been conditioned to think this way, so no wonder turn over is so high every where.

<comment><USER3> Not all companies need $500k engineers or can afford them. An optimization at Netflix that improves performance by 1% may save them millions of dollars. The same optimization at a medium-size company may only save them a few thousand.

Also, it's much more difficult to quantify the impact of a software engineer compared to investment bankers and consultants. The latter two are directly making money for the firm.

<comment><USER2> > Also, it's much more difficult to quantify the impact of a software engineer > compared to investment bankers and consultants. The latter two are directly > making money for the firm.

Yes, it is difficult, but possible.

Here's quick and dirty analysis - consider Sears, Walmart, and Amazon:

\- Amazon pays its engineers near top of market - $1.5T market cap.

\- Walmart has a pretty good engineering culture. They acquired a tech company to start Walmart Labs for data science stuff and they even have popular open source software (Hapi.js) - they're the largest company by revenue and $370B market cap.

\- Ever been to Sears.com? Me neither - largest retailer in 1980 to bankrupt in 2018, stock price at $0.23 and $94M market cap.

I deduce that investment in software engineers == higher stock price.

<comment><USER4> _I deduce that investment in software engineers == higher stock price._

Easy to do when you cherry-pick three companies.

Run your analysis on 10,000 companies large and small and you might have something.

<comment><USER2> > Easy to do when you cherry-pick three companies.

* Netflix vs Blockbuster

* Uber / Lyft vs taxi cabs

* Airbnb vs hotels

* Blogs vs print media

* Youtube /Instagram vs TV

* porn tube sites vs porn studios

I could keep going.

I've also tried the corollary - companies that are successful while cutting cost in tech, but I can't think of any successful companies that are cutting investment in tech.

</comment></comment></comment></comment></comment><comment><USER5> The "hit by a bus" thing is used for the most dramatic effect: there's nothing you can do, there's no grace period where a "poached" developer can give some wisdom to his/her successor etc.

Managers know that it's not the most likely case, but it's still possible.

<comment><USER6> Yeah I think "hit by a bus" generally means there is 0 chance of knowledge transfer and is more a disaster recovery term than a talent retention term.

Unless you really burn a bridge with your workers they should have at least a week or 2 to transfer knowledge!

<comment><USER7> Opposite opinion. You should never need more then a day to knowledge transfer. If that.

I always try and cross train people enough that I can quit at any point and it's not an issue.

All processes are kept automatic where no one is crucial to keep it running.

Mostly it's useful for vacations. In the past I went on a cruise. And I wasn't sure the company will be online without me to baby them through.

After that I got extremely serious about investing in the team and tools to never let that happen again.

<comment><USER8> I agree with making things automatic. But sometimes you have to let team members specialize. It's less efficient for everyone to know everything. But, it is good if everything is known, at least in part, by at least two people.

<comment><USER7> A Company got down from 20 to 3 people. Completely different tech stack each. Many warnings that company was in major trouble if any of left. Other 2 had no way to support.

Oh It was so painful when it happened.

</comment></comment></comment></comment></comment><comment><USER9> There's several reasons a bus is seen as worse than them being poached:

* Early startup employees have golden handcuffs regarding switching jobs. Sure, Facebook is offering them $500k but they'd be on the hook for $200k in taxes if they exercise their options and they leave a bunch more un-vested options on the table.

* You can mitigate them leaving by having a better work environment, equity and so on. Not much you can do about a bus.

* You can pay them to stay on for another month or to consult after the fact. No amount of money get's you an hour long phone call to the afterlife.

edit: Also, the article underestimates the effort needed to get a FAANG job. They don't just call you up and offer you a job. They offer you the chance to take a grueling set of white board interviews that require months of studying to pass.

<comment><USER10> Options for most startups are mostly way overrated. The opportunity cost to hang around for 5-10 years to maybe get to a liquidation event is very high.

<comment><USER11> Seems like a thing where if a FAANG wanted the early startup employee enough, they would gladly compensate for the one-time cost with a signing bonus.

</comment></comment></comment><comment><USER6> FAANG companies can certainly offer more money, but there are lots of things other companies can offer too (besides Ruby on Rails apparently).

\- ownership of the product and process

\- less red tape and politics

\- good work life balance

\- location other than Silicon Valley

\- boss who pays attention to engineer needs and wants

Money is a huge factor but it isn't the only one!

<comment><USER12> I feel like people try to tell themselves this, but money is BY FAR the most important factor. And FAANGs pay a ton.

Maybe this can be true if you're going from like $250k to $270k from FAANG to FAANG.

But most of the time we're talking about something like $180k to $250k when getting poached to a FAANG. It would take a huge amount of perks or otherwise to make that gap worth it.

(Of course this isn't true for everyone. But it's true for most)

<comment><USER13> I know a guy who passed on Apple because they weren't offering anywhere near that. Are a lot of people really seeing this kind of money?

<comment><USER14> Yes: [https://www.levels.fyi/](https://www.levels.fyi/)

<comment><USER13> See, I always have trouble with 'stock'. I need more details. Is it a stock grant, or an option grant? Because with a publicly traded company, they'll let anyone buy options. The difference is that I don't have to wait 2 years, but I also don't _get_ to wait three years if things aren't great at 2.

<comment><USER15> It's always stock grants. Only crappy companies give their employees option grants these days. FAANG doesn't do it, as well as the second tier of tech companies (Oracle, Adobe, etc.).

And they will make you rich. Someone who works for these companies at a non- junior level for more than 5-10 years and is reasonable about expenses can quite easily become a millionaire if they work in their offices in developed countries. 5 years for senior positions, 10 years for regular positions.

</comment></comment></comment></comment></comment></comment><comment><USER16> The author makes it sound like Rails is the recommended way to build software that is maintained by a revolving door of junior developers whom you don't have to motivate or compensate, because you can just hire another cog-in-the- machine when the old ones inevitably wise up to your game.

Not sure if that was the intended message.

<comment><USER17> Also, it might not even work!

What happens when one of your fungible junior engineers happens to be smart enough to do some tricky things _even with Rails?_

And then she gets hired by Netflix to do something more career-enhancing than copy-pasting Ruby code from StackOverflow.

Now you're stuck with your revolving door of undercompensated junior developers and a _complicated_ Rails application. Uh-oh!

</comment></comment><comment><USER18> Instead of "hit by a bus," I prefer the term "win the lotto."

Any member of your team could win a life-changing amount of money in the lottery, inherit it, win a gambling bet, etc. Frame it as a good thing rather than a death or a change of hire - somebody might just flat out retire because they don't financially need your employment anymore.

<comment><USER19> I see this one as a different problem.

If your team members who won the lotto would just give their two weeks and quit, then your company/team has a substantial morale/motivation problem.

Such a company is not creating an environment where people enjoy being a part of it.

<comment><USER20> Yea sorry that's bullshit. I certainly don't need the stress of a job in my life if I have other options. I don't care how much I like my job, it's still a job and the only reason I'm doing it is to make money. Otherwise I'd be spending time with my family and doing hobbies, of which one would likely still be writing software.

And I wouldn't expect anyone in that position to give me two weeks. Two weeks is about not burning bridges. If I never need to cross that bridge again, what do I care if it burns?

<comment><USER21> >And I wouldn't expect anyone in that position to give me two weeks... If I never need to cross that bridge again, what do I care if it burns?

IMO that makes them an asshole.

But, to your point, sure. If I have FU money then depending on a lot of things including what arrangements I could make with an employer, I might well choose not to work for someone else.

<comment><USER20> Agreed. A rich, independently-wealthy asshole. But there's also a difference between my moral judgements and my preparations. I can hope someone won't be an asshole, but I will prepare for it.

<comment><USER21> Sure. And again this comes back to the bus factor. If someone disappears off the face of the earth _for whatever reason_ that will hopefully not precipitate a major crisis at any company with more than a handful of people.

<comment><USER20> I never said anything otherwise? I'm unsure what you're trying to get at. Are we just agreeing with different words?

<comment><USER21> Yeah, we're agreeing. Hope for the best, expect the worst.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> I always call it the "lottery problem" instead of the "bus problem" because it's more positive. Also for some people, getting hired at a FAANG is like winning the lottery so it jives with OP's article.

<comment><USER23> The problem with either of those is that the chances of either of those things happening are incredibly low, so the urgency to act on it isn't there. If someone would tell you that you have to prepare to the one in a few million chance of winning in the lottery, you would likely also ignore it.

An employee getting hired by another company (doesn't need to be FAANG) is on the contrary a rather common occurrence, and a lot of people understand the importance of preparing for that.

</comment></comment><comment><USER24> > _you want more than one person in your business to have domain knowledge_

> _Everything gets a lot easier if you select the right software and > framework_

Huh? Domain knowledge doesn't refer to your tech stack or coding practices. It refers to _why_ you've built things the way you've built them -- customer requirements, business requirements, technical requirements.

Ruby on Rails may improve _onboarding_ time, but it has _zero_ to do with domain knowledge.

</comment><comment><USER25> This is such a low-effort blog post:

1\. It's click-baity. From the headline you'd think it would be a discussion about why engineers hop jobs so frequently, why in particular FAANGs seem to be so attractive, and what we could do to increase retention. Instead, the post just quickly summarises what we've known for ages (turnover is a big problem), very briefly goes off on a completely irrelevant tangent (that it's more likely for an engineer to change the company than to be hit by a bus, which is true, but pointless) and then tops it off by the insane suggestion that "just use Rails" is the answer to all of your turnover woes (more on that below).

2\. There is an interesting discussion here to be had: _why_ exactly do companies suck so badly at retaining talent? My take on it is that we all (companies, developers, etc.) routinely emphasise the wrong things (office perks, showing off tech skills, etc., instead of a good understanding of the product) and burn people out, but as said: this is a much larger discussion. More importantly though I disagree with the received wisdom that "developers are developers" and domain knowledge is worth nothing. Of course, you always should be prepared for the worst (i.e. the proverbial bus), but it should still be the companies' priority to retain good people as long as possible because once somebody leaves, so much knowledge just goes to waste and has to be reacquired. At my last company, my whole team was fired because they thought that some other team would be just as good for the product, ignoring the fact that we'd built up the product ourselves and all the knowledge for two years. But to the higher-ups, the view was that developers are exchangeable.

3\. The author just really comes across as immature and uniformed with their unilateral praise of Rails. I've worked on Rails apps so messy that they were almost impossible to understand. And, by now, Rails is by far not the only framework with strong conventions and a lot of out-of-the-box support for many common things - Spring Boot for example (whatever its faults) arguably supports even many more requirements. But more importantly, for any kind of non-trivial app, the complexity is not just in the technology: it's in the (often contradictory) requirements, the different architectural tradeoffs, the little gotchas, the personalities in the team, etc. etc.

</comment><comment><USER26> > Everything gets a lot easier if you select the right software and framework, > primarily if you use Ruby on Rails. Rails itself is a full-stack framework > that has a best practice for every piece of a web application. If you are > committed to doing things "the Rails way," you cut the total cost of > ownership by A LOT.

Rails has an incredibly large community but I think this statement would be equally true for any tool you're well versed in

<comment><USER27> Having worked w/ rails/laravel, I'd say you could say the same thing and it may even be 'more' true about laravel (see: built in queues, authentication, etc), with rails you need devise, and 3rd party packages for a lot of the normal boilerplate.

However, lately I'm thinking more about performance so would love to work more with rust or golang, though I find rust harder to grok mentally. Golang is nice though, and easy to follow most code samples.

<comment><USER26> I've been meaning to checkout rust/golang for some time now - might pick up a book on it. I've worked primarily with rails the past few years and at times it feels like some of our biggest maintainability issues are the direct result of certain third party packages we reached for to solve boilerplate.

Not to knock on using libraries or anything like that, but we've definitely felt the pain of putting tools / convenience ahead of architecture.

</comment></comment></comment><comment><USER28> Being on the receiving end of poaching is simply a failure to compete in arenas beyond compensation.

Not only must you compensate your talent at the top of the market and then some (including generous equity), but you must give your employees an amazing work environment with excellent work/life balance, _while_ providing something for them to work on that motivates them on an ideological level.

When any part of this aegis cracks, poaching has the potential to ravage your ranks.

I would say that in the case of especially valuable or world-class talent, it's the founder's responsibility to know as much as they can about that person, and to truly pitch them on a level that fully aligns across all dimensions of that person's life. Give them not only excellent comp, but _fulfillment and purpose_ that is congruent or even symbiotic with their personal lives and overall ambitions.

Deep down, most people aren't pawns that you can simply acquire with a number and expect the highest quality work from.

<comment><USER29> _> Deep down, most people aren't pawns that you can simply acquire with a number and expect the highest quality work from._

In practice, it is _extremely_ rare to find managers who effectively practice this. When you do, it's pretty amazing to watch in action.

I've only seen one such manager out of hundreds I've encountered consulting. That manager's team members won't leave the team for even 2X pay increases, because they figure the additional anticipated stress and job insecurity is not worth it. The amount of trust between that manager and the individual team members is higher than I've ever seen elsewhere, and that manager redefined for me what was possible with people skills superpowers. RDF doesn't even begin to describe it, and this field was accomplished without Jobs' infamous tantrums.

<comment><USER28> Thanks for that, it's encouraging to hear.

While I've no experience in the corporate world proper, as a solo founder 7 years into the same project I've a similar game plan with respect to talent, and just hope one day to have the privilege of giving it a go. Further (albeit slightly outdated) context in the link below.[0]

My scenario is more to do with how to put together a dream team, and convince people to join that team. With world-class talent, you have to consider that some of the people you want to hire are already quite wealthy and/or famous. Therefore, if you want any hope of landing let alone retaining them, you have to dig deep and discover what motivates them, and understand what aligns with their existing pursuits and goals.

If I ever do get the chance to hire any of these people, I'm not that worried about the sell. I've probably had countless imaginary conversations with each of them over the past few years. To even have the opportunity to talk to any of these people would be an _honor_ , so the notion of somehow mistreating them, or failing to both compensate and appreciate them to the maximum extent possible just doesn't compute. That extends to the non-wealthy, non-legendary hires as well; if anything it's a healthy model to approach how you treat _all_ people in your employ.

As an aside, one of the biggest problem I face with respect to hiring (minus funding and, you know, actually getting off the ground) is: who to approach first? Dream team assembly dynamics are very delicate from a game theoretical point of view, and I've begun to think this is perhaps the wrong way to approach thinking about the problem. Elizabeth Holmes infamously used the _" If I get person X, then getting person Y will be easier._" strategy to great effect, but she was a complete fraud.

There's a few ideas I have here that aren't fully elucidated, but probably could be thought of as consensus-based offers. Pitch people individually and in a personalized fashion, but with no expectation they accept the offer unless certain conditions are met, such as others on the prospective dream team agreeing to the same understanding, or even making it contingent on funding itself.

Assembling a ~50 person team pre-funding certainly is putting the cart before the horse in so many ways, but I think it can be done. The look on the VC's faces would something. "Here is the vision, here is the prototype, here's a team of 50 exceptional people—some of whom are legends—that have agreed to build this thing together, contingent on funding. Just need the money."

[0] [https://news.ycombinator.com/item?id=22429827](https://news.ycombinator.com/item?id=22429827)

</comment></comment></comment><comment><USER30> Realistically speaking, isn't getting hired by Netflix et. al. a practical impossibility for 99+ % of software developers?

<comment><USER31> Back-of-the-envelope.

In 2014, Google had around 28,500 software developers. [1]

In 2016, it was estimated that the US had around 3.87 million professional software developers. [2]

So around that time, about 0.75% of all software developers in the US worked for Google alone. If your organization employs a few dozen skilled developers, there is a very strong chance that some of them could find a placement within FAANG. It's likely that these are the engineers that you rely on the most.

[1] [https://www.quora.com/How-many-software-engineers-does- Googl...](https://www.quora.com/How-many-software-engineers-does-Google- have?share=1)

[2] [https://en.wikipedia.org/wiki/Software_engineering_demograph...](https://en.wikipedia.org/wiki/Software_engineering_demographics#United_States)

<comment><USER15> Only some of those employees were in the US, though. So probably the chance was 0.5% or lower.

</comment></comment></comment><comment><USER32> A good idiom doesn't need over-explanation, and I think the "bus factor" is a good idiom; no Rails or Netflix commentary required.

<comment><USER33> I think "poach factor" is a more important idiom/risk, naming particular boogeymen isn't all that relevant. It's far more common, and far costlier. As someone who has literally experienced the bus (well car) factor, after the blow of the initial loss, there is some sense of we have to find a way to manage that takes over.

</comment></comment><comment><USER34> I don't care how you put it, but the fact is that people leave. I led an engineering team I was quite proud of, and days came that I had to let top engineers go. Everyone has growth arcs, and they had opportunities to seize their dream jobs working on things they'd never get to otherwise. I was proud to have felt like a stepping stone on the way to their dreams, even though it screwed the business temporarily. I learned a lot of what this article is trying to say. Calling it a bus sounds like a one in a million disaster to prepare for. Getting hired by Netflix is far more likely but just as impactful.

This is written to business leaders, but I feel like if phrased differently would sound familiar and accepted by HN. Namely, don't adopt esoteric technologies no one else knows. Document production process. Never let mission critical operations exist solely in your lead engineer's head.

The fact is that it's never a good time for your best people to leave, but that's inevitable on a long enough timeline. It's the duty of business leaders to be prepared for that so they don't have to resort to dirty tactics to convince them to stay.

<comment><USER35> Thank you, this is great feedback.

</comment></comment><comment><USER36> I've felt companies would want what the post lays out:

\- A safe software stack

\- Make code understandable (industry best practices)

\- Focus on employee ramp up time

I was confused when some companies stressed different things, and I didn't quite realize until reading this post that it might be coming from a place of fear of losing engineers.

What I've seen:

1) Committees for coding standards

2) Teamwork over code ownership

3) Peer code reviews to enforce quality

Sounds like these things would help increase code quality and reduce the bus factor. But I think there are some dangers.

1) Committees can mean that no individual is responsible for bad decisions

2,3) Teamwork is great if people have separate roles. Too many cooks can become a real problem otherwise.

I suspect people afraid of responsibility are more likely to embrace committees and teamwork. Dickheads incapable of working with others are more likely to take ownership (or else they'd be completely unemployable).

I also suspect many startups cargo cult practices that work well for giants, but are net negatives that encourage your employees to leave if you're small. Lacking ownership but getting paid super well is a better tradeoff than lacking ownership AND lacking amazing pay.

</comment><comment><USER37> I guess I'll be the one to say it. No, I am much more likely to be hit by a bus than hired by any high-caliber tech company. I'd say stroke or heart attack top the list for me - probably will happen before 40 too.

</comment><comment><USER38> And here I am, can't even get a recruiter from Netflix to reply, after submitting my resume on a job that I was match for 10/10 requirements on the description AND got someone to refer me.

<comment><USER39> When was this? Companies now are slowing hiring down a whole bunch

<comment><USER38> Pretty much last 5 years of my career

</comment></comment></comment><comment><USER40> > "Staying on the Rails" makes any new developer productive almost immediately > ... Sticking to the standards evangelized by the community and adding proper > documentation ... makes onboarding a breeze, which creates more productive > developers, which makes hiring more accessible, which reduces your "bus > factor."

You could make the reverse argument. Using "industry standard" tools makes your top performers much more likely to get poached. Using unusual (but enjoyable) technologies might increase employee loyalty.

</comment><comment><USER41> I use the phrase "win the lottery" rather than "hit by a bus". Has the same impact but it's less negative (though probably less likely :-))

</comment><comment><USER42> Sometimes it does happen. I once interviewed with a company that was hiring because one of their engineers had died in a motorcycle accident.

Personally, I think trying to reframe it as happy and positive and coming with a grace period is a little frivolous. Your team should be prepared to transition someone's responsibilities in the context of a sudden, wrenching, and traumatic change.

</comment><comment><USER43> When working on a project, I would title my documentation something like "Bus Document," aiming for a soup-to-nuts file describing how the project came to be all the way out with appendices describing each file format, etc. I spent a lot of time talking about the Bus Factor, to little avail. A pity.

</comment><comment><USER44> Nitpicking, but FWIW that's not the definition of a bus factor I've learned. It's a number of people to be hit by a bus for the project to die. Bus factor of one is a SPOF, so you need to increase your factor, not decrease it.

</comment><comment><USER45> That might be an unusual situation but actually happened to me. I used to be in a team of two, going to work after one weekend - he's dead.

</comment><comment><USER27> This reads basically as an ad for "use rails its better than the rest, cause it's what we use, and you need us! So hire us!"

</comment><comment><USER46> Are $500k+ yearly salaries in SV really that usual?

<comment><USER47> > Are $500k+ yearly salaries in SV really that usual?

Salaries? Not at all. Total compensation? Well, it depends.

Software engineers with < 10yrs of experience routinely make this much at FAANG. The total compensation number usually includes the following:

* Salary

* Bonus (anywhere between 15-25% of salary)

* Initial grant that vests over 3-4yrs

* Stock "refreshers" that you get annually

* General equity appreciation due to a bull market

For senior engineers, the equity portion of their compensation far outweighs their salary.

<comment><USER48> I wouldn't count the equity appreciation as compensation. you already own the capital, its your own capital gain, not income from employer at that point.

<comment><USER49> Yes and no. When your RSUs are granted at 100k and then vest a few years later at 300k, from yours and the IRS' perspective you made whatever + 300k.

<comment><USER50> Yes, but you should value them at 100k, because it is the functional equivalent of getting a 100k cash bonus, that you (instead of diversifying) foolishly spent on buying a single company's stock.

You don't actually need to work at Facebook to sink 100k into buying Facebook stock (That you then forbid yourself from selling for 4 years).

<comment><USER51> > that you (instead of diversifying) foolishly spent on buying a single > company's stock

So, it is actually a bit more complicated, and better than that, and long term stock grants act as a psuedo stock hedge.

This is a simplification, but imagine that there is stock worth X, that hs a 50% chance of the stock doubling in value, and a 50% chance of it crashing to 0$. You might think that this would be equivalent in expected value to X, but that is not true.

It is not true, because if the stock goes way down, you don't have to "accept" those losses. Instead, you can jump to another company, mid way through, and get back your previously high salary.

In that way you can capture the upside potential, while also being protected against the downside losses, in that if the stock goes down, you just jump ship, and get a high salary somewhere else.

<comment><USER48> hedging is not arbitrage. There is no free lunch.

<comment><USER51> In this case it is free arbitrage.

This is because if the stock goes way down, and you are 1 year into your 4 year vest, then you can leave the company, and get a high compensation package somewhere else.

Do you understand how this makes it so you have free downside protection, from those other 3 years, because you can leave and get the high salary somewhere else, if the stock crashes?

<comment><USER50> Since RSUs vest over time, the penny-for-penny equivalent financial transaction for receiving $100K worth of RSUs over 4 years, would be for me to receive $100K of cash compensation over 4 years, and using it to buy stock (That I can't sell for X months).

There's no advantage to RSUs. Cash is better in every way, because, at worst, you can invest it in the _exact same allocation_ that your RSUs are invested in. Any gain from them rising in price could have been realized by investing cash. Any loss from them falling in price is a real, not a paper loss. [1]

I'll take $100 of cash over $100 of RSUs any day. I probably wouldn't take $80 of cash over $100 of RSUs, though.

[1] Unless for some weird reason, you are accounting your personal finances, where a 4-year stock grant is realized in year 1. If you are doing this, you should stop, because it is not an accurate way to do accounting.

<comment><USER51> > the penny-for-penny equivalent financial transaction for receiving $100K > worth of RSUs over 4 years, would be for me to receive $100K of cash

You still dont understand. Let me work this out for you, year by year.

Lets say that the stock grant is 25k a year, over 4 years. But there is a 50% chance, after year 1, of the stock doubling and staying there, and a 50% chance of it going to 0. IE, it will be worth 50k or 0$, which is an expected value of 25k.

So you have 100k of stock, and 25k vests on year 1.

Situation 1: you win the coin flip, and the stock doubles. Your 25k that you received, is now worth 50k. BUT, you now have an ADDITIONAL 150k that is unvested. The unvested stock has increased in value! If you stay for 3 more years, you get 200k in total.

Total value: 200k, over 4 years.

Now, lets look at situation 2.

In situation 2, the stock crashes to 0, after 1 year. Your 25k vest, is now worth 0$. As is, the next 3 year vest is also worth 0.

But here is the trick. What you do now, is that you quit your job. You do not stay at the company for 3 more years, to get the 0$ of stock. Instead, you get different job with stock that vests at 25k a year.

Total value: 0$ for the first year, + 25k/year at job 2. Which equals 75k.

Do you see how this is different?

You absolutely could NOT get the same value as this, if you were paid in cash. Because if you were paid in cash, then you would realize the full losses of situation 2.

> Any gain from them rising in price could have been realized by investing > cash

No, actually. In situation 1, I receive 200k, and in situation 2 I receive 75k, because I am protected by the downside risk, by the fact that if the stock crashes to 0, I can leave the company and get my salary higher again.

This is not possible by investing 100k from the beginning.

<comment><USER50> Yes, you're right, RSUs are better as a signing bonus, in a bull market. (In a bear market, plus a harder job market, you would have been better off locking cash in for your comp - if switching jobs after a year would not get you an equivalent RSU/cash grant)

Once the four year vesting cliff is done, though, the annual top-ups aren't much different from cash (Because if the stock inflates fantastically, you will get fewer RSUs next year).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER52> Pretty sure the author will also get "poached" if a FAANG offers them 200k more than what they currently make.

</comment><comment><USER53> is this a RoR ad? It doesn't really provide any new insights. If your devs are hired by nflx or hit by a bus the outcome is the same. It's just a saying

<comment><USER32> Yes it is. From the homepage [0]: "Dedicated to the stewardship of Ruby on Rails applications."

I guarantee no one needed the author to explain that "hit by a bus" applies to more than tragic accidents.

[0] [https://www.neomindlabs.com/](https://www.neomindlabs.com/)

<comment><USER27> I wouldn't hire them cause their ui/ux sucks. I'm fullstack, and not a design expert but I can do better than that easy. The dropdowns at the bottom of the page are the worst.

</comment></comment></comment><comment> tom-thistime "Hit by a bus" means hired away. That's the meaning of the phrase.

</comment><comment><USER54> In Soviet Russia, if developer go to Netflix, developer get hit with bus.

</comment><comment><USER55> > never underestimate the amount of money the FAANGs have to poach your > talent.

I really wish we'd stop using the word "poach". It's a loaded word with negative connotations, but what it really means here is "offer someone a better situation than you offered them". Employees have agency, they aren't wild elephants who need your "protection" from "predators" who just want to pay them more.

<comment><USER56> The thing that hits me is the "$500k+/year in the valley".

Is this really a thing? Am I a giant dumbass for staying in Colorado? Even factoring in my stock grants, I'm nowhere close to that number.

<comment><USER57> I feel the same way about being a dumbass for staying in los angeles lol. Here I am getting low 100k and some linkedin recruiter tells me about a 400k job. Wait WHAT?!

Man I'd happily take up one of those Google jobs, but being an embedded software guy, I'm not even sure what they'd want me for. It seems like a lot of silicon valley companies are a great place if you're a web dev, or use C#/Java all the time.

<comment><USER58> I have both interviewed and coached embedded software devs into positions at <FAANG company>.

You probably won't end up doing embedded work though, just as a point of warning. I mean you might, but probably not. As sibling poster alluded to, there are some jobs closer to that area, but more likely than not you'll end up on some other team doing something completely unrelated to embedded.

It doesn't have to be a permanent thing though -

It does not take too many years of $300-$400k compensation to make your future much more free to pursue what you want. If you do FAANG for 5-10 years while saving aggressively and can't take any more of it, then you can go back to working on embedded software for a third of the pay and have a huge buffer for retirement.

</comment></comment></comment></comment><comment><USER59> And frogs don't really sit in boiling water.

These are called figures of speech for a reason, being literal about them is not admirable nor worthwhile.

<comment><USER19> I still see it as an important distinction simply because developers also have an interest in not getting hit by a bus.

But they are quite happy to leave for Netflix and given turnover rates in tech, are almost guaranteed to leave in a few years.

<comment> tom-thistime It would be an important distinction, except that "hit by a bus" always primarily meant being hired away. (For me "always" means "since the mid 1990s".)

<comment><USER19> Fair, but an organization should still be able to survive a literal bus hit too.

</comment></comment></comment></comment><comment><USER60> Why is Netflix seen as such a tech giant? They serve videos. CBS, HBO, Vimeo, Youtube, Amazon do it too. Nothing special.</comment>


I put together a complete guide on cold email outreach - <AUTHOR> https://blog.companywell.co/how-to-do-an-cold-email-outreach-campaign-a-beginners-guide-from-start-to-finish/ <comment><AUTHOR> I've been doing outreach efforts throughout most of my business life and wanted to document my knowledge of the process as it can be confusing for people who are just getting started with it.</comment>


Unmasking D.B. Cooper (2007) - <AUTHOR> http://nymag.com/news/features/39593/ <comment><USER2> >Despite the publicity generated by Porteous's book and the 2011 television documentary, the FBI is standing by its position that Christiansen cannot be considered a prime suspect.[50][168] It cites a poor match to eyewitness physical descriptions, a level of skydiving expertise above that predicted by their suspect profile, and an absence of direct incriminating evidence.[201]

[https://en.wikipedia.org/wiki/D._B._Cooper#Kenneth_Christian...](https://en.wikipedia.org/wiki/D._B._Cooper#Kenneth_Christiansen)

I do like the more recent evidence from the tie; it contains titanium shavings or fragments.

[https://www.seattletimes.com/seattle-news/northwest/does- tha...](https://www.seattletimes.com/seattle-news/northwest/does-that- evidence-truly-tie-db-cooper-to-boeing-plot-thickens/)

</comment><comment><USER3> Someone claiming to be his widow on reddit: [https://www.reddit.com/r/UnresolvedMysteries/comments/3sdg9u...](https://www.reddit.com/r/UnresolvedMysteries/comments/3sdg9u/db_cooper_examining_the_1995_deathbed_confession/cz2lk61/)

A great story at least :)

Comparing pictures: [http://cbsnews2.cbsistatic.com/hub/i/r/2000/08/22/ca3bd939-a...](http://cbsnews2.cbsistatic.com/hub/i/r/2000/08/22/ca3bd939-a642-11e2-a3f0-029118418759/thumbnail/620x350/d259a147e1f2e21d1d7a295a4a155b42/image227044x.jpg)

</comment><comment><USER4> If you prefer listening over reading I can recommend [https://www.stuffyoushouldknow.com/podcasts/sysk-live-db- coo...](https://www.stuffyoushouldknow.com/podcasts/sysk-live-db-cooper- heist.htm)

</comment><comment><USER5> Great story telling</comment>


Extendable Builders in Java - <AUTHOR> http://akudlick.wordpress.com/2012/02/23/extendable-builders-in-java/

<comment><USER2> This is the curiously recurring template pattern [http://en.m.wikipedia.org/wiki/Curiously_recurring_template_...](http://en.m.wikipedia.org/wiki/Curiously_recurring_template_pattern). And I'm am generally against it because it makes the type parameters noisy and confusing. A better approach IMHO is to use return type covariance in the subclass to specialize the types. Basically you override the super class methods but declare them to return the subclass type (but the implementations just call the super class implementation). It can be a little more work if there are a lot of super class methods but it creates a much more readable class.</comment>


Ask HN: Are your friends also in the tech space? Do you wish they were/weren't? - <AUTHOR>

I'd say about 75-80% of my friends are teachers. While they are definitely smart, interesting people, they're not the least bit interested in the area of startups, entrepreneurship, emerging technologies etc. In fact, I'd be surprised if they even knew what I really did (I run two startups). None of them know what 'VC' or 'Angel' means. Again, not a knock against them, they are smart, it's just not their domain of expertise or interest.
Sometimes I wish I did have a social circle (when I say social circle, I don't mean twitter followers, FB friends etc. I mean people I grew up with, went to school & play hockey with) that was interested or involved in my area of interests because it'd be nice to bounce ideas off people you really like & trust. On the other hand, I guess I also like the fact that I can dis-engage from the world of startups whenever I want and I'm not trapped in a 24/7 echo chamber.
Curious if others have similar feelings or thoughts. <comment><USER2> I don't have any friends who are into the tech space either. You're not alone in that. There is definitely something cool about being able to step out of it for a while. None of my friends read HN, reddit, or most of the news and blogs I read online, so in some ways real life and online life are completely separate. I see it similarly to you, sometimes a boon, sometimes a bane.

That said, I've been trying to network a bit to get more face to face acquaintances in tech, and I'm thinking that will be really helpful in the future.

</comment><comment><USER3> My core group of friends are artists and teachers. They go to church and they live traditional lives. They keep me grounded and stable. I often turn to them more so than my tech friends for help and guidance. But the reason is because I don't see my tech friends being as mature given the same age. It's a time thing. Eventually everyone will be old enough and mature enough.

No one wants to talk shop all the time. That makes you as boring as a kooky professor.</comment>


Randomness in .NET - <AUTHOR> https://lowleveldesign.org/2018/08/15/randomness-in-net/ <comment><USER2> I think this is the github issue referred to:

[https://github.com/dotnet/corefx/issues/23298](https://github.com/dotnet/corefx/issues/23298)

I wrote some replacement classes that address all of the known issues, here:

[https://github.com/colgreen/Redzen/tree/master/Redzen/Random](https://github.com/colgreen/Redzen/tree/master/Redzen/Random)

[https://www.nuget.org/packages/Redzen/](https://www.nuget.org/packages/Redzen/)

<comment><USER3> > I think this is the github issue referred to

I think so, too. Because it was not only referred to, but also linked ;-)

<comment><USER2> Heh, fair enough :) Not easy to find though eh (v. similar colour for normal and anchor text).

<comment><USER4> It was hard to see. It also isn't underlined like a normal link.

</comment></comment></comment></comment><comment><USER5> Two vital information on .Net PRNG :

\- It is not thread-safe (and might start outputting a serie of 0 when called in parallel)

\- There is a bug (acknowledged by Microsoft but not fixed for backward compatibility reasons) in the implementation meaning that the generator has an abnormally short period and is, overall, less random looking.

<comment><USER6> I'm really bummed out over the fact that you can't change the way a _random_ number generator generates numbers because apparently people depend on the exact algorithm.

<comment><USER7> It does make some sense. Lets say you're making a game with a procedural world (e.g. something like Minecraft) which the player explores and makes changes to. Instead of storing the entire (potentially infinite) world, you just store the world seed and the changes players make. In that case, if the algorithm underlying the PRNG changes, the entire game would break.

There's enough scenarios like this that making a change to a PRNG algorithm is a very dangerous and breaking change. People rely on the fact that, given the same seed, you get the same sequence of values.

<comment><USER8> You should use your own PRNG in that case.

I understand not wanting to change the implementation now, but users should never have assumed it would be stable in the first place.

<comment><USER7> I mean, yeah. You probably should. But it's entirely reasonable of a game developer to say "I'm not an expert in random numbers, but Microsoft has lots of smart engineers, I'm sure they did their research and provided a good implementation".

The actual answer is that you shouldn't just provide a default "Random" class, you should provide a more general class with a pluggable algorithm.

<comment><USER8> No, that's not reasonable at all. You'd be assuming not only that the implementation is exactly what you want, but also that it will be identical on all platforms and will never change.

In practice for .NET it sounds like that's actually correct -- the bad implementation will never be fixed. That seems like a bad thing.

<comment><USER9> Whats the point of providing a seed() function if the algorithm can change from under your feet, for _any_ given implementation? In your scenario the _only_ way to have seed() is through a custom implementation, because _any_ implementation may haves bugs or inconsistencies, that may be fixed at _any_ time. And only your own implementation will stay stable and sane

And this is true for _all_ backward-compatibility concerns: you'll have a bug, or a poor syntax decision, or a crappy api, thats required to be there because of downstream concerns. If you keep breaking people's programs to improve the language, people will either eventually stop updating, or stop using the language altogether, because it becomes a massive PITA to get any new features; do it enough and people will say fuck it, you cant be trusted to stay stable, I'll write it myself. And eventually a library will come along that promises stability, and you'll be back in the same boat.

 _Stability is a feature_. And judging from how languages treat stability today, and how one of microsofts major reasons for success was its almost obscene adherence to backwards compatibility, it is an _important_ feature.

The cost is of course that these problems persist, and eventually build up untill someone forks, or a major version increments.

But theres a reason that _perfect is the enemy of good_. Breaking programs arbitrarily to fix bugs/issues _slaughters_ downstream productivity.

<comment><USER8> I think that is sometimes right and sometimes wrong. It's not consistent enough to elevate to a principle.

Macs were incredible for backwards-compatibility back in the 80s and 90s, as good as PCs if not better. Games from 1985 would run happily in System 7 and MacOS 8. It didn't help them win against the PC.

Since the return of Steve Jobs, Apple have become increasingly aggressive about killing off old "obsolete" hardware and software features. As a Mac or iOS developer it can be incredibly frustrating, constantly having to jump through new hoops just to be permitted to stay on the platform. But that doesn't seem to have hurt Apple's business success in the slightest.

To answer your initial question--

 _Whats the point of providing a seed() function if the algorithm can change from under your feet, for_ any _given implementation?_

I was imagining that the algorithm would be stable across runs but permitted to change across major library updates, say.

But I forgot there are two parts to it. One is seed(), the other is the no- args constructor that uses the system clock but no additional randomness. Can we at least agree that that one should be fixed? It's hard to see how any users even _could_ have a hard dependency on that specific implementation. Like, code that absolutely requires independent Random objects created in the same millisecond to have the same seed? Do you see a big risk in breaking clients like that, for the benefit of improving randomness for everybody else?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> A useful snippet from the article:

"RNGCryptoServiceProvider is generally a safer choice when you need to generate random bytes. Creating an instance of this class is expensive, so it's better to populate a 400-byte array than call the constructor 100 times to populate a 4-byte array."

<comment><USER11> Both options there feel like the wrong solution.

Why would you call the constructor 100 times to popuate 100 4-byte arrays?

It's a service, surely the best approach to call the constructor once, then populate 100 4-byte arrays by calling GetBytes 100 times from the same service?

It is explicit code without the downside of the expensive constructor.

edit for clarification: It's true that getting all the data at once will still be much faster because it'll save all the other overhead, but it's not the constructor at fault there.

</comment></comment><comment><USER12> The blog-post by fuglede with a detailed analysis of the implications of the RNG-bug is well worth a read: [https://fuglede.dk/en/blog/bias-in-net- rng/](https://fuglede.dk/en/blog/bias-in-net-rng/)

<comment><USER3> Isn't there already bias in that computation because the range for the random numbers includes more even than odd numbers since it's the interval [0, 2147483647)?

<comment><USER13> Author here; thanks for the interest!

First of all, you're completely right. I do actually mention this fact just before the start of the section "An experiment". Here, the argument is that the bias this odd/even mismatch introduces is orders of magnitudes smaller than what is introduced by the rounding errors; that is, a perfect theoretical RNG drawing from that range would not produce nearly as biased a result (and conversely, if you were to run the snippet in the blog post using `rng.Next(2, int.MaxValue)` or `rng.Next(0, int.MaxValue - 2)`, you wouldn't see the same bias, even though the ranges are still odd/even-biased to about the same extent).

</comment></comment></comment><comment><USER14> I might be missing something, but the three predicated values are not in the "nextSeed" table? Whereas the original three are.

EDIT: I feel like I miss something in the explanation. Can anyone explain how the seed table is actually used?

<comment><AUTHOR> The seed array is an internal state of the PRNG algorithm. It evolves over time and PRNG uses values from this array (plus some additional parameters, such as inext or inextp) to generate new "random" numbers. Thus, after seeding, there is no real randomness in the non-cryptographic PRNGs. To learn more, have a look at Marsenne Twister, which is also quite popular and has a nice description in Wikipedia [1].

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

<comment><USER14> Thanks for the link! I kind of figured it out over time, but the explanation helps!

And thanks for the interesting article btw, just realised you're the author :-)

<comment><AUTHOR> Thanks :)

</comment></comment></comment></comment><comment><USER8> _The algorithm used in the .NET Core is the same as in the .NET Framework_ [...] _There is a difference, however, when we use the default constructor._

"Core" and "Framework" have different implementations of the same class? Who names these things?

<comment><USER15> .NET Standard is an interface of which .NET Core and .NET Framework are implementations. I agree that it's confusing terminology at first, but for daily drivers of .NET languages, it should be pretty transparent.

<comment><USER16> It's somehow effectively doubled the number of search results for any one topic, only half of which will work. But you're right, for a daily user you learn quickly to treat as another criteria to sift through to get relevant results.

</comment></comment></comment><comment><USER17> Thank you for sharing - I will have to put some work into integrating this with my software that is unfortunately based on a tripleton design pattern, but it's worth the effort.

<comment><AUTHOR> Oh, tripleton might require a special PRNG: [http://dilbert.com/strip/2001-10-25](http://dilbert.com/strip/2001-10-25) :)</comment></comment>


Silicon Valley's Fiscal Sacrifice - <AUTHOR> http://jacobexmachina.blogspot.com/2013/01/the-fiscal-cliff-silicon-valleys.html

<comment><USER2> I'd be a bit more sympathetic to Silicon Valley companies if they didn't send so much of their profits overseas to avoid paying the same taxes meatspace companies have a harder time avoiding: <http://en.wikipedia.org/wiki/Double_Irish_arrangement>

<comment><USER3> I read the "no one can say that Silicon Valley is not doing its part" and was strongly reminded of Google's 2.4% overseas rate [http://www.bloomberg.com/news/2010-10-21/google-2-4-rate- sho...](http://www.bloomberg.com/news/2010-10-21/google-2-4-rate-shows- how-60-billion-u-s-revenue-lost-to-tax-loopholes.html). Or Twitter's massive breaks to locate in SF. I'm not blaming them or anything, I just think portraying them as victims of high taxes and then lamenting about state and federal budget issues is so wildly hypocritical and misguided.

</comment></comment><comment><USER4> Two big problems with the article:

1) It looks at the capital gains taxation issue in isolation, instead of in the context of the whole tax code. All taxation reduces the activity being taxes. However, taxing one kind of activity (investing) less than another (labor) simply distorts the relative proportion of each activity, which is arguably worse.

2) It portrays the exceptional case, albeit common in the specific case of Silicon Valley, as the general case. Yes, if you pull the profits out of a successful venture into your personal bank account, then decide to reinvest it, you will lose some in capital gains taxes. But, e.g. when Apple takes iPod profits and reinvests them into inventing the iPhone, they do not pay taxes on it at the intermediate stage, because R&D expenditures are tax deductible.

</comment><comment><USER5> Part of a permanent tax fix will hopefully be making re-invested capital gains not subject to any tax.

<comment><USER6> Startup Act contains provisions to that effect.

</comment></comment><comment><USER7> If Silicon Valley can't absorb the additional capital gains tax, why is it located in California?

<comment><USER8> Agree. There's a plenty of other places in the US with much lower tax rates and the standard of living is just as high. I know Silicon Valley is a great place to network with like-minded people, but I've never understood the need to move and start a business in one of the most expensive places in the country.

<comment><USER9> It's January and we eat lunch on the picnic benches outside our office. There's an ocean right here and good skiing less than 5 hours away.

People who can afford to live here will never leave. Those are the people the rest of us need to be around.</comment></comment></comment>


Military Cyber Teams on Standby for Elections - <AUTHOR> https://breakingdefense.com/2018/10/military-cyber-teams-on-standby-for-elections/ <comment><USER2> what exactly would they do, if they get the deploy order? review ads for facebook? break whats app encryption of accounts spamming fake news to larger private groups? paratroop into russia's data centers?</comment>


Lessons I wish I had been taught (1996) - <AUTHOR> http://alumni.media.mit.edu/~cahn/life/gian-carlo-rota-10-lessons.html <comment><USER3> I have a colleague who gives great talks. There are three reasons they are great. (1) The science is great. (2) He speaks engagingly and explains his (complex) material very well.(3) He _always_ includes a citation and some very specific remarks on the _single_ paper that I can read, to learn more. This third thing is the most important to the growth of the academic field, because solitary study is usually required to make progress, and nobody has time to read dozens of papers in a field that is not quite their own.

</comment><comment><USER4> _" An audience is like a herd of cows, moving slowly in the direction they are being driven towards. If we make one point, we have a good chance that the audience will take the right direction; if we make several points, then the cows will scatter all over the field."_

Then proceeds to make several points. Good stuff, though. Rule, exception, moo.

<comment><USER5> He was talking about a lecture. A webpage in this form is a static entity that you can go to and come back from multiple times and leave with as many thoughts.

</comment></comment><comment><USER6> The Feynman method is a nice hack. Good mental model.

</comment><comment><USER7> I found number 10 (old age) interesting in that I'm approaching it, hehe. I understood what he wrote for the most part, but could have used a bit more exposition. Anyone want to try describing it, perhaps from another angle?

</comment><comment><USER8> > Every mathematician has only a few tricks

Can anyone in the know illuminate this with some examples?

<comment><USER5> My favorite complex analysis book makes repeated use of the same infinite sum throughout. He's probably referring to such things as well as logical tactics. There are even books written on this sort of thing. I think you can find them as "tactics for problem solving" or some such.

</comment></comment><comment><USER9> This was brilliant. Thanks for (re)posting it.

I had never heard of Rota before. I'll have to read more about him. It's a bit sad that he lived for only a couple years after this lecture, dying at the relatively young age of 66. (Wikipedia)

<comment><USER10> Rota was quite the celebrity, at least among students. In addition to advanced classes in his specialty, he taught differential equations, which was required for at least two thirds of undergraduates, so everyone knew him. Each semester he would pay a diffeq student to have a can of Coke ready for him at each class, so he could drink it while he lectured. Also, anyone who asked a question during lecture (a room of ~350 people) would get a free Hershey's bar after class. That he had worked in (and sometimes taught) philosophy as well as math was kind of the icing on the cake.

There was also a persistent rumor that he'd once given a diffeq multiple choice exam (scored like the SAT, so that a fraction of a point was deducted for every wrong answer) on which the average score was 1 or 2 percent, ie simply handing in a blank exam would probably have given a passing score. But I never confirmed that.

<comment><USER11> Speaking of Rota and differential equations, he also wrote a rant about the terrible state of teaching differential equations [0].

[0] [https://web.williams.edu/Mathematics/lg5/Rota.pdf](https://web.williams.edu/Mathematics/lg5/Rota.pdf)

</comment></comment></comment><comment><USER12> Very odd to see this here. I had recently been Googling the writings of the late professor. He as a few lists like this out there.

</comment><comment><USER13> >Everyone in the audience has come to listen to your lecture with the secret hope of hearing their work mentioned.

People are narcissistic as hell.

<comment><USER14> Do you like it when I reply to your comment, thereby indicating that I read it, and by replying I further show that it was more important to me than many other comments I didn't reply to?

That's what you were hoping for when you wrote _your_ reply, didn't you?

:-)

<comment><USER15> Surely your comment only works if you're 'famous' on HN.

<comment><USER14> So you think people comment and don't care if nobody ever responds to them? That they don't like getting reactions (not counting the negative ones - <USER2> of course according to you nobody cares about either, unless you are "famous" \- because for some inexplicable reason(ing) only famous people like positive and fear negative responses)?

<comment><USER15> No, people do like get a response as you suggest.

I was trying to suggest as an analogue of the situation in the OP, that was being satirically commented on, that in order to properly mirror the situation _your_ comment would need to come from someone with renown in the current locus. If people are really listening to the lecture hoping to be namechecked then it would be because they consider the lecturer to be a worthy in some way, surely?

</comment></comment></comment></comment></comment><comment><USER16> The link points to the middle of the article.

<comment><USER17> It's because it's been submitted before: [https://news.ycombinator.com/item?id=3220746](https://news.ycombinator.com/item?id=3220746)

<comment><USER18> Yes, but if you're trying to get around the duplicate detector, you can usually just append a query string like '?2'. Or, if the server tries to interpret query strings and that would be bad, it'd be friendlier to the read to instead use a non-existent div like '#2'. Bypasses the duplicate detector, specifies how many resubmissions, and doesn't jump the reader somewhere in the article. (Although I should note that I think the one OP chose is one of the two best ones, so no real harm done.)</comment></comment></comment>


The Super Supercapacitor - <AUTHOR> http://vimeo.com/51873011

<comment><USER2> Whenever I hear the word "supercapacitor" I'm reminded of EEStor (<http://en.wikipedia.org/wiki/EEStor>), one of the biggest vapor wares a few years back. It sounded too good to be true and it was.</comment>


Ask HN: What are the best resources to learn Python for Data Analysis - <AUTHOR> There are a great number of posts in HN about resources to learn R for Data Analysis, but - while considered also an excellent language for the task - very few about Python.<p>What are the best online courses, books, blogs for learning Data Analysis in Python? <comment><USER2> _Python for Data Analysis_ [http://shop.oreilly.com/product/0636920023784.do](http://shop.oreilly.com/product/0636920023784.do)

<comment><USER3> There have been some good recommendations here for machine learning and data _science_ , but I'm not sure that's what the OP is looking for here (or maybe it is, certainly no harm in posting them).

But yeah, if what you want to know how to do is query, organize, filter, trim, format, reformat, munge, and finagle data, you're probably looking for something more like the oreilly book hatmatrix mentioned above.

If not the book, I'd recommend just going through pandas as much as possible. Nothing wrong with just going through the online docs.

Oh, one more thing, I'm personally a huge fan of pandasql as well. It's a nice library that allows you to query a panda data frame as if it were a sql table (joins work with other data frames). Pretty much whatever is available in sqlite will be available through pandasql.

There have been a few spats on the interwebs about whether it's better to do things in sql vs data frame operations. Personally, I use both - I do find some things are far easier to do with a query, and then transition over to pandas and bumpy when I get to programming/mathy things.

Lastly - if you _do_ want to do data science/ML stuff, I'd recommend going over to scikit-learn and just going through all the examples, trying things out on your own datasets.

<comment><AUTHOR> OP here. You are right, my interest is actually in the Data _Analysis_ part and what are the most up to date tools and best practices for using those tools. This is because I already have a good understanding of the scientific part (i.e. statistical analysis) from the academy and from my job as a researcher.

Still, I find that a good part of the Data _Science_ resources, starts by giving a good introduction about the _Analysis_ part, so they are also important answers for this question.

Thank you all.

</comment></comment></comment><comment><USER4> Shameless self promotion: [https://www.udemy.com/python-for-data-science-and- machine-le...](https://www.udemy.com/python-for-data-science-and-machine- learning-bootcamp/?couponCode=REDDITPY19)

<comment><AUTHOR> I had actually found that course and it seemed quite interesting. I know that you are it's creator, but it would be nice to have some 3rd party giving some input about what he liked and didn't like about it.

</comment></comment><comment><USER5> Data Science from Scratch [http://amzn.to/2dD9Iba](http://amzn.to/2dD9Iba)

Python for Data Analysis [http://amzn.to/2dDw6fL](http://amzn.to/2dDw6fL)

Web Scraping with Python: Collecting Data from the Modern Web [http://amzn.to/2eov4dZ](http://amzn.to/2eov4dZ)

Python Machine Learning [http://amzn.to/2eobdt3](http://amzn.to/2eobdt3)

[http://sebastianraschka.com/books.html](http://sebastianraschka.com/books.html)

</comment><comment><USER6> "Data Science from Scratch" [http://shop.oreilly.com/product/0636920033400.do](http://shop.oreilly.com/product/0636920033400.do)

</comment><comment><USER7> [http://sebastianraschka.com/](http://sebastianraschka.com/) has some great articles for machine learning in Python.

</comment><comment><USER8> Not necessarily a learning resource, but I'd like to plug the Anaconda distribution of Python. [https://www.continuum.io/](https://www.continuum.io/) It includes most of the commonly-used libraries/packages in data analytics, so at ASU I made all my students download it just to start from. Three things it gives you right out of the box are iPython (a better Python shell), Spyder (the Python version of RStudio), and Jupyter Notebooks.

For learning, I'd recommend taking something like Janert's "Data Analysis with Open Source Tools" and go through chapter-by-chapter trying to figure out how to implement the various analyses in Python. That book in particular uses a different technology every chapter for its tutorial exercises, so ignore those. But the exposition of the concepts is fantastic.

</comment><comment><USER9> Download Anaconda:

[https://www.continuum.io](https://www.continuum.io)

Take an icy plunge right into the "Titanic: Machine Learning from Disaster" dataset ;)

[https://www.kaggle.com/c/titanic](https://www.kaggle.com/c/titanic)

</comment><comment><USER10> I tried to read books or even take a night course but nothing did the trick except: a real side project that required me to learn the proper tools and techniques. Turned into a full time job that I am really enjoying.

Now I am able to read the books because I desire the knowledge to further my passion.

<comment><AUTHOR> I also follow that approach (more out of eagerness to do something than from a didactic point of view), but the problem with it, is that you end up bypassing the best practices in the area.

</comment></comment><comment><USER11> I've found General Assembly's data science course to be pretty good at getting you up and running: [https://github.com/justmarkham/DAT8](https://github.com/justmarkham/DAT8)

</comment><comment><USER12> Scipy videos posted from the Scipy conference(using Python for mathematical computations and data mining) are on Youtube. An excellent resource.

</comment><comment><USER13> the internet is a pretty good resource</comment>


Ask HN: Best PHP Framework for Web Development - <AUTHOR>

I have been working with PHP for almost a year now. And I m quite familiar with the language. So I was thinking to start using a framework for my next project.
I m actually really confused as there are so many good frameworks with such good features with docs & extensions. I m really actually looking for a decent framework which is really easy to use. I ve considered Yii, Zend, CakePHP.
Would like to know about your experiences about these frameworks! <comment><USER2> For starting out I'd definitely recommend CodeIgniter (<http://codeigniter.com>) simply because the documentation is second to none.

Since learning CodeIgniter I've tried CakePHP and Zend, and found CodeIgniter is easier to use, and just as powerful, so I've stuck with it. In fact the BugMuncher (<http://bugmuncher.com>) back end & API is built on my custom version of CodeIgniter

Also check out the datamapper ORM plugin (<http://datamapper.wanwizard.eu/>) if you want Rails-like Active Record goodness.

</comment><comment><USER3> Until recently at work we've use Symfony1. It's going to end of life at the end of this year, and I think we're going to shy away from Symfony2 for now. It's a bit of a mess, I think, and it seems like they're going to correct a bunch of things in 2.1, but that won't be out for a few months. We'll probably reevaluate after that.

Our other goto framework is Cake. People do have a lot of good/bad things to say about Cake, but I rather like Cake 2. It's a little more mature now, and I don't really think it's as hugely complex as Symfony.

I use Zend on my own, but I'm becoming disillusioned with it. It seems to be overengineered and, after using Doctrine for as long as I have, its modeling leaves a lot to be desired.

Recently I've been researching FuelPHP (<http://fuelphp.com/>) and it seems to have potential. It's a little better designed than CodeIgniter and its ORM seems interesting.

Hope that helps.

</comment><comment><USER4> I favour Kohana (<http://kohanaframework.org/>). Very quick and easy to get the core of your app built. Only (and potentially major) downside is that the documentation can be tricky to wade through.

I'd run away from CakePHP. Caveat: last version I worked with was 1.3. The weird way it uses arrays in its ORM to kinda-sorta-but-not-quite work on the database always hurts my head. In fact, the whole way of going about things in CakePHP hurts my head.

<comment><USER5> Agreed.

Kohana's tutorials are pretty bad, but the API browser is solid and the code of the framework itself is very readable.

As a beginner, having to dig under the hood of Kohana to fully understand it initially turned me off, but I came away with a much better understanding of how MVC frameworks work.

</comment></comment><comment><USER6> I would start with Silex. It's a very small framework, pretty well written, and very easy to pick up:

<http://silex.sensiolabs.org/>

It's also supported by Sensio, who has a good track record. I'd pick it over Symfony because it's more lightweight and over Kohana or CI because it has better documentation.

Cake will lead you down a dark path, and ZF is bloated and unwieldy. Yii seems nice, but I think they lack direction.

<comment><USER7> >Cake will lead you down a dark path

Why is that?

</comment></comment><comment><USER8> I don't think it matters too much when starting out. For a beginner (in the framework, not coding in general), they are all relatively equivalent.

Pick a framework and begin using it. After a few projects, you'll quickly learn what you like and don't like about the framework.

I'm a fan of CodeIgniter, but mostly because it is what I'm familiar with. It has some irritations and kludgy things required, but they don't annoy me enough to warrant a change (yet).

</comment><comment><USER9> I tried a couple of them and sticked with CodeIgniter. Sure it has some quirks, but it's powerful, easy to grasp, not bloated (hello, Zend!) and more than capable to satisfy your web dev needs. Plus it has a great community and lots of tutorials. But really, my advice is to spend a day or two trying several of them out. Create a simple project with each of them (the ubiquitous blog for exampe) and see what works for you. Good luck!

</comment><comment><USER10> Zend Framework is the traditional 'enterprise' framework, you won't go wrong with it, though there are quite possibly better alternatives. That's what we use where I work.

I've heard very good things about Kohana but don't have much experience with it. Just try and pick something with a good set of documentation and a decent community.

<comment><AUTHOR> Sure !! And well thats the confusing thing for me.

Every framework comes with some pros and cons and it is really tricky to decide which framework to go with.

<comment><USER10> I think in that case Zend Framework might be a good choice. It may not be the sexiest framework but it's developed and supported by Zend, the company behind PHP. It isn't going to fade away any time soon and there's tonnes of support and advice around.

</comment></comment></comment><comment><USER11> Depending on what you do your mileage may vary.

What I was doing didn't fit in with what the then current frameworks offered - so I made my own... and that's how all those frameworks got their start as well.

My suggestion is to look at the various framework features and see which one best suits your needs.

</comment><comment><USER12> If you're looking for a modern framework, I would recommend <http://fuelphp.com>. It doesnt have the size of community that a codeigniter or cakephp will have, but it leverages a lot of the great MVC framework features that Rails launches with.

</comment><comment><USER13> Have you considered Symfony 2 <http://symfony.com/>?

</comment><comment><USER14> <http://laravel.com/> looks very promising

</comment><comment><USER15> this blog post seems to cover this topic well [http://davidjconnelly.wordpress.com/2011/07/03/the-best- php-...](http://davidjconnelly.wordpress.com/2011/07/03/the-best-php- framework-of-2011/)

</comment><comment><USER16> I've been working with Slim and it is pretty good.

</comment><comment><USER17> Yii</comment>


Northrup Investigating White Supremacist Employee with Security Clearance - <AUTHOR> <comment><USER2> Is there supposed to be a link to a story?

<comment><USER3> Think its this: [http://www.latimes.com/business/la-fi-northrop- employee-2018...](http://www.latimes.com/business/la-fi-northrop- employee-20180705-story.html)

But CA state law protects employees from retaliation based on their political ideology. So there is nothing they can do.</comment></comment>