Netflix VP of IT on the Future of Infrastructure - <AUTHOR> http://www.amplifypartners.com/interviews/netflix-vp-of-it-on-the-future-of-infrastructure/ <comment><USER2> > _The notion that something needs to remain on-premise is really an Old World > way of thinking and feels more like someone wanting control as opposed to > there being a valid argument._

No, it's the business continuity way of thinking. Outsourcing commodities -- such as servers, virtual or otherwise -- is one thing.

Outsourcing your core operational tools, software, _and all your data_ is another matter entirely. Preferring SaaS at a company large enough to afford on-premise solutions is just nonsensical, and I expect it'll either blow up in his face, or just create a never-ending tax on end users who are constantly dealing with a mishmash of vendors, accounts, disappearing services, broken software, and instability.

At scale, stability and continuity is worth more than the opex/capex costs of internal IT.

<comment><USER3> Netflix has been on AWS for awhile, and I've never once had any stability or continuity problems with it. Whatever garbage is going on in the background, they've done a good job of preventing it from becoming a never-ending tax on end users.

<comment><USER4> They built chaos monkey - software agents that randomly go through all their infrastructure on aws and randomly take things down. Network jitter, computer hangs, removing drives, and taking down availability zones.

They do that to themselves so that when it actually happens, they are prepared and the end user (almost) never sees it.

</comment></comment></comment><comment><USER5> The jargon and acronyms in this interview are intense. It's pretty clearly an industry interview so it's my fault that I don't know the phrases, but I'm a little surprised by how impenetrable it is to me (a software engineer who has worked in large corp environments).

Anyway care to expand on some of the less Googleable acronyms?

\- MDM/MAM

\- NAC

\- EDW (synonymous with ETL?)

<comment><USER6> MDM/MAM = mobile device management/mobile application management (managing and provisioning mobile devices and their applications, generally automatically)

NAC = network access control

EDW = enterprise data warehouse (archiving old information while preserving access)

</comment></comment><comment><USER7> It'd be great if Netflix (or some other company) manages to do some heavy lifting in creating a viable, modern, certificate-based authentication and authorization stack, that's easier to deploy. Essentially an upgraded take on kerberos (move off shared secrets, perhaps), AFS (I still don't know what a viable way forward for secure, distributed, locally cacheable network filesystem is -- maybe DAV+TLS+regular caching?). I suppose LDAP might be fine as a user/principal/authorization database, but some distribution that uses internal CA and demands TLS as default would be a good start.

The last "innovation" I'm aware of in this area, is skolelinux/edulinux work with packaging samba/ldap/kerberos/lts in a easy(ier) to manage package for Debian:

[https://wiki.debian.org/DebianEdu/Documentation/Wheezy/Archi...](https://wiki.debian.org/DebianEdu/Documentation/Wheezy/Architecture)

<comment><USER8> kerberos is very good. everyone reinvents kerberos every month. it doesn't have to be new to be "modern". Kerberos is still modern by today's standards, in fact.

the problem is having tools that communicate with each others and an easy setup.

yeah, SAML kinda sucks to use too.. and works like kerberos anyway. OpenID, Hawk, etc - also in fact work exactly the same.

<comment><USER9> Seriously. At my day job we're investigating better ways to handle single sign on and authentication and every road leads back to Kerberos.

<comment><USER7> I'm not saying Kerberos isn't good, and obviously it's going to be better than any "new" system -- after all any new system hasn't seen any real-world testing. All the fluff around the various (http-centric) SSO-solutions is partly from wrapping them around SSL/X.509 -- just as IMNHO one of the problems with setting up (a secure and easily maintained) kerberos deployment isn't kerberos but LDAP.

As mentioned up-thread MS AD does a great job of enabling in-house CA and management -- and it's mostly that I want. I want to use certs for auth most places, and I want it easy! Openssh have shown that public key auth doesn't have to be hard -- but also doesn't have a very compelling story around managing access. The new cert-system might be an improvement -- but it absolutely needs some infrastructure around it to be easy to deploy (and verify).

<comment><USER8> in fact openssh has support for full-blown certificates but its also a little more painful. what makes ssh easy to use is that it doesn't have any central trust authority by default. you get a fingerprint and you trust it.

if it changes, it warns you.. but in most cases you're going to know why it changed or just accept the change anyway (which is a problem when you admin 10000 servers of course as the warning might be a real issue)

central trust/revocation is still an issue everywhere to this day, i think. both technically ("my client trusts this, but do i?") and from the useability pov.

<comment><USER7> > openssh has support for full-blown certificates

Well, yes and no. Do you mean the new cert stuff that's in standard openssh? Which has stuff like:

        The marker is optional, but if it is present then it must be one of "@cert-authority", to indicate that the
         line contains a certification authority (CA) key, or "@revoked", to indicate that the key contained on the line
         is revoked and must not ever be accepted.  Only one marker should be used on a key line.

While certainly simple, it doesn't strike me as very manageable.

Or did you mean the x509 patch?

[http://roumenpetrov.info/openssh/](http://roumenpetrov.info/openssh/)

</comment></comment></comment></comment></comment></comment><comment><USER10> I thought the 2014 Technology Roadmap [1] was an interesting read. For an organization as "young" as Netflix, I was surprised by the technology debts that they've accumulated and the aggressive tone that they've set to transition.

I think it's amazing the decisions that get made with explosive growth/hiring that end-up on roadmaps that read similarly to organizations that have been around much longer.

There's no criticism here. I think Netflix is an amazing company and it is the this sort of strategic vision (and the openess of both it and the organization overall) that reminds me that we're all on this rocky ship together and it's amazing that any of it works sometimes.

[1] [http://www.slideshare.net/mdkail/it-ops-2014-technology- road...](http://www.slideshare.net/mdkail/it-ops-2014-technology-roadmap)

</comment><comment><USER11> Forgive my ignorance. Is `IT` the same as `engineering` at other companies, or is this something else?

<comment><USER12> "IT" is too vaguely defined to mean much anymore, but based on this interview I suspect it's internal infrastructure at Netflix. Stuff like staff PCs, internal data warehouses, sales, finance, and marketing software support, WiFi APs, routers, keeping the backoffice servers and network up, ensuring reliable WAN and LAN connectivity so engineers can reach production securely, intrusion detection and analysis, and so on.

Generally in smaller software companies I hear R+D and consumer-facing applications referred to as "engineering" with external-facing infrastructure (like the production datacenter) referred to as "operations," with "IT" being reserved for this internal backoffice kind of stuff.

In other places, especially larger corporations, I've often heard everything having to do with a computer lumped in as "IT."

<comment><USER13> Yea I was surprised. When I saw the title I thought infrastructure meant network infrastructure, which seems like a white-hot area of innovation given how much internet traffic they consume. But no, this interview was on internal IT.

</comment></comment></comment><comment><USER14> One thing that stuck out to me:

> We are implementing "certificate-based authentication" instead of the > standard username/password auth against Active Directory.

I wish we were all doing this. How long is it going to take to get a usable certificate-based client/user authentication mechanism on the web?

edit: Also see e12e's comment.

</comment><comment><USER15> TLDR: The approach we take for IT works (for us at this point in time in the scope defined as IT by me and/or our internal customers).

Netflix talks generally can be fascinating and inspiring. However, when considering IT it's also important to consider the charter and challenges of Netflix IT.

i.e. it's no more valid or invalid that the talks of how IT is delivered in so-called build vs. broker models in other companies in other industries [http://dilbert.com/strips/comic/2013-07-05/](http://dilbert.com/strips/comic/2013-07-05/)

</comment><comment><USER8> Reading the slides make me think this is full of nothing :| How is 802.11ac speed making things "more cloud"? Because you get slightly more bandwidth -maybe- if you have a new laptop and also you dont have everyone using it? I don't get it.

Requiring VPN everywhere, how is that cloudy?

Finally, using stuff like AWS is nice, but unless they have a specific contract (which they may since they advertise them a lot), its a LOT more expensive when you start having a lot of processing (ie big companies like netflix)

<comment><USER16> Well, if anybody could get a good deal from AWS, it's Netflix.

</comment></comment><comment><USER17> I really wanted to share this article with my friends, but it was so filled with buzzwords that even my dev friends wouldn't ascertain much.

Keep in mind I'm an idiot, and I have idiot friends.

<comment><AUTHOR> haha. Well, I doubt you're an idiot. Buzzwords serve a purpose insofar as they're a good shorthand for defining categories of product offerings. E.g., ETL, Data Warehouse, Mobile Device Management, etc. all have pretty well understood parameters within which the vendors, buyers, analysts, etc. operate.

</comment></comment><comment><USER18> Why was there no discussion of the ethics of the Comcast deal?

<comment><USER19> Because this was a conversation about internal infrastructures?

</comment></comment><comment><USER20> > zero-trust network architecture

This makes me think of [http://meldium.com](http://meldium.com)</comment>


Hash collisions. Two different docs and same MD5 hash value - <AUTHOR> http://th.informatik.uni-mannheim.de/people/lucks/HashCollisions/

<comment><USER2> (1) This is very old news.

(2) If you are using MD5 OR SHA1 directly in any way, you almost certainly have systems problems that are much scarier than Xiaoyung Wang's attack.

If you're doing things right, this stuff shouldn't make any difference.

</comment><comment><USER3> I am not a PS guru. All of that is gibberish to me. I think this is what is going on:

1) There is a single source file foo.ps 2) Since PS is interpreted, there is a statement like: if(filename=="recommendation.ps") { show_recommendation(); } else { show_give_security_clearance(); }

This attack will work on no matter what hash you use because it uses social engineering (i.e., laziness - no one looks inside their PS files)

I think so anyway...

<comment><USER3> Just RTFA'd. Their attack is much more involved than I describe. However, it should be trivial to do the same thing for an OpenOffice document or Word document. Maybe I will try it...

</comment></comment><comment><USER4> I'm taking a computer forensics class, and the professor is an active policeman who does computer forensics. They make a lot of use of hashes in computer forensics - they use hashes to determine if evidence has been tampered with. He's spoken about this - he's aware of the possibility of hash collisions, but he does not believe anyone could practically use them in a real attack.

</comment><comment><USER5> In other news, Roman Empire collapsed.</comment>


How could we fix programming? - <AUTHOR> https://medium.com/@fwouts/the-fucked-up-world-of-programming-a8edb64fcfa <comment><USER2> Kick out the MBAs.</comment>


How Will Cities Bike-Share With No Bikes? - <AUTHOR> http://www.bloomberg.com/news/2013-10-07/how-will-cities-bike-share-with-no-bikes-.html <comment><USER2> As a former Montrealer, this is surprising given the popularity of Bixi there. Hoping that any problems are solvable.</comment>


An amazing advertisement: Brought to you by Justin.TV - <AUTHOR> http://www.justin.tv/humanlabrat

<comment><USER2> Very, very impressed. Still not going to see the movie, but props to the advertising folks who came up with that.

It's interesting to note what kind of audience they're targeting by observing the screen names and messages in the chat box...

</comment><comment><AUTHOR> Is this the future of advertising on justin.tv? If it is (assuming they don't overdo it), I'm totally for it. I actually kind of want to see that movie now.

Entertainment + Advertisement very rarely go together, but Justin.TV seems to have done it here.

</comment><comment><USER3> Ohh jeez. That was awesome. You guys are totally breaking new ground on user engagement.

</comment><comment><USER4> Pretty cool, but you kind of gave it away with that headline.

</comment><comment><USER5> Could anybody summarize it? I can't see a thing, the site is so slow.

<comment><USER6> [spoiler] It starts like a regular justin.tv feed, with a "live" chat on the side and everything. A guy somehow got a "parasitic vine" stuck inside his arm, and he explains that. To appease the "live" chatters, he shows it to the camera. Then he notices his eye is bloodshot, shows it to the camera, and passes out and a movie trailer comes up.

<comment><USER5> Thanks - I could watch other streams on justin.tv, but never this ad (tried several times throughout the day).

</comment></comment></comment><comment><USER7> I don't get it. I went there and it was just some donkey talking.

<comment><USER7> Ah, now I see. I think they might lose a lot of people (like they did me) by not getting to the meat quick enough.

<comment><USER3> To be effective, I think you have to believe it's a real live stream. A 15 second skit probably wouldn't be that convincing.

<comment><USER8> Actually, I hit the back button _because_ I thought it was a live stream... my thinking was that whatever had been interesting earlier (when the link was posted) had probably long passed.

<comment><USER7> Yeah, it's an interesting problem.

</comment></comment></comment></comment></comment><comment><USER9> not impressed not catchy not aesthetic

<comment><USER10> That was my first reaction, but look at what they've got to work with. It's a cheesy-looking horror movie, with a no-name director and (mostly) no-name aging child actors. Your only hope at advertising it is to do something weird and hope it sticks. For all its cheesiness, this was a novel approach.

Compare the iPhone. The ads were "picture of iPhone ... fade to Apple logo", and people lined up around the block for it. You don't need much from an ad when your product sells itself.

I knew a guy who was a recruiter for some podunk university in the midwest, who was very good at it. One of the top universities tried to hire him, but he turned them down: what skill does it take to convince somebody to go to MIT or Harvard?</comment></comment>


Ask HN: Company quietly did stock split, implications for options? - <AUTHOR> Hey HN,
I was a software engineer at a US startup now considered a unicorn and recently in the news.  It's got the right market, revenue and profit to have a liquidation event soon.  I'm very concerned about a situation regarding my employee options and need advice on how to proceed.
I found out from friends higher up in the company that the company did something very quietly and I'm not sure exactly how to proceed.  While still working there, between the time I started vesting options and the time I left the company they performed a stock split.  I didn't notice this at the time but the options listed in the initial offer letter are the same as the number executed when I executed my options.  It seems like they didn't follow through the stock split.
1. What do I do? 2. If the situation is as it seems, is there any legal recourse?
Thanks <comment><USER2> Read your company's stock option plan.

Most stock option plans have language that _auto-adjusts_ all outstanding option awards in the same proportion as the stock split.

For example, if the company did a 1:5 stock split, your option award would also split 1:5.

So... if your company's stock option plan has this standard auto-adjust language, a stock split is likely a non-issue.

</comment><comment><AUTHOR> After seeing a few of these comments, I think I'll clarify.

I'm aware of how stock options should work under stock splits. As others have said, in general, whether it's options or shares, the equity on each side of the split should remain constant. IE 3x the shares, 1/3 the value. In the case of options 3x the options, 1/3 the strike price.

My issue is that it's clear that the option amount did not auto-adjust. I've already executed the options. The kicker is, neither did the strike price. It looks like not only did I not get the number of shares from the options I vested when executing them, I overpaid for the ones I did get since the value didn't change. This likely means they're underwater and worth zero.

I guess my next step is to contact their law firm and see if I can get confirmation from them about the split, then I can push them to correct it. (through legal means if necessary)

</comment><comment><USER3> Stock splits seem to be something that for some reason reasonably smart engineers view as some type of financial scam. A split is simply a way of re- arranging the equity - a split in itself neither creates, nor destroys value.

I've tried over the years to come up with a decent analogy and this is the best I can do. Imagine your options are cartons of eggs, and you have 5 cartons. A carton of eggs is worth $2. You have $10 worth of eggs. However the people that decide how eggs are sold determine that eggs should be sold in bundles of 6 for $1 each. You cut the cartons in half. You now have 10 cartons of eggs, still worth $10.

This was not in done in secret in some kind of way to scam you. Unless there are different stock classes, this will impact every investor. You should probably contact the company holding the options, Merrill, Fidelity, etc, and confirm that it will be updated.

<comment><USER4> If it's publically traded, yeah, nothing nefarious happened. But if it's private, all bets are off. Often, options there are nothing more than a couple of pages of paper tracked by the company itself. It may very well require legal advice to unwind what happened.

</comment></comment><comment><USER5> I went through this in the past and my options auto updated and exercising them was not a problem (1/x) price per share for (n*x) options.

IANAL but I don't believe the company could legally split stock without your options being affected, because they're materially changing the promise of what you are owed. Also your options have real impact even before you exercise them, because you can do things like pay the taxes early. If you did this and the value materially changed, it wouldn't line up.</comment>


TSMC to Build Advanced Semiconductor Factory in Arizona - <AUTHOR> https://www.wsj.com/articles/taiwan-company-to-build-advanced-semiconductor-factory-in-arizona-11589481659 <comment><USER2> We've moved most comments moved to [https://news.ycombinator.com/item?id=23187698](https://news.ycombinator.com/item?id=23187698), the current thread on this, excepting the comments that were about this probably being a rumor (now clear that's not so), the comments confusing Taiwan for China, the political/nationalistic flamebait, and sundry unsubstantives.

</comment><comment> websg-x TSMC official announcement. 5nm fab, 20000 wafers/month, 1600 jobs.

[https://www.tsmc.com/tsmcdotcom/PRListingNewsAction.do?actio...](https://www.tsmc.com/tsmcdotcom/PRListingNewsAction.do?action=detail&language=E&newsid=THGOANPGTH)

<comment><USER3> Can US $12 Billion cost be right? Going to be difficult to make their money back on what will by then be an old node, with 20,000 wafers per month.

</comment></comment><comment><USER4> I think this is a false rumour. The digital office of Taiwanese president is vehemently against letting fab tech out of the island. The woman running it is super sharp, can tell from knowing people who worked under her personally.

It is one of their biggest insurance against mainland aggression. Any conflict with Taiwan is suicidal for the mainland economically. Plus, add the fact that 3/4 of China's own light industry is within 1000km radius of Taiwan.

TSMC has already bough land and started construction for its 5nm fab, and laid first stone for 3nm fabs in Taiwan.

Stopping 3nm fab construction now is completely out of the question unless they are ready to throw out few billion dollars cash out of the window, at the time when they took biggest debt obligations in their history.

Only 2nm node is left on the roadmap, but there are big, big doubts of it materialising any time soon. We are talking about at least 8-10 years.

With all my knowledge of the industry, such deliberations never result in decisions like "Hey, lets set aside 20-30 billion USD to lay still for 10 years, and hope for everything happen according to plan."

Semiconductor fab companies are extremely, extremely risk averse, and snap judgements are completely uncharacteristic of the industry.

They don't do anything without having top tier economists, and finance people have a go at the task for years on end. _Financial planning of fab construction takes years._

 _What is much more likely is them taking over a smaller fab in US, or building a limited scale project to make specialty chips for rad-hard, or US military hardware companies on US soil._ This is what I myself been hearing for much longer than Trump been in office.

<comment><USER5> I think you are wrong, the geo-political tectonic plates has not only shifted but collided violently in Jan 2020.

US is brining supply-chain by hook or crook.

Taiwan needs Americas protection and no other country can be its security guarantor not even Japan. So US has leverage.

I would be surprised if TSMC does not open multiple facilities in US.

<comment><USER6> US is making a lot of noise about it, but the current administration lacks the competence to actually do it. The US generally doesn't do this kind of state- directed enterprise dirigisme, outside of Boeing.

Remember Foxconn Wisconsin? [https://www.theverge.com/2020/4/12/21217060/foxconn- wisconsi...](https://www.theverge.com/2020/4/12/21217060/foxconn-wisconsin- innovation-centers-empty-buildings)

<comment><USER7> Falling behind in state of the art of fabs is seen by the DoD as the same kind of strategic issue that leads to them propping up Boeing.

<comment><USER8> > the same kind of strategic issue that leads to them propping up Boeing

I don't quite understand what you mean by this, what is the context of US support for Boeing?

<comment><USER9> Here's the backstory on Boeing and the military.

US air doctrine is that they will always buy air dominance, so Boeing will be funded for military programs. However, the US govt. historically has had the influence to tell military aircraft mfgs. what to prioritize, and what lines to drop.

An example is Northrop. They were told to drop the popular F-5 and F-20, and focus on the B-1 program. They were also told to merge with a competitor, but declined.

It's weird when you first study it, but the US Air Force wants zero risk missions into enemy skies.

So that's why they're ok with a handful of $200 million fighters and $2 billion bombers, if they're stealthy enough not to be seen.

(Stalin on the other hand is often attributed with saying, "Quantity has a quality of its own." I would argue a balance is needed between a perfect fighter, in the case of the F-22 with under 200 airframes mfg., and having 10,000 slightly less perfect ones, like the F-16.)

W: F-22 [https://en.wikipedia.org/wiki/Lockheed_Martin_F-22_Raptor](https://en.wikipedia.org/wiki/Lockheed_Martin_F-22_Raptor)

<comment><USER10> If the public cannot stomach allied casualties, losing too many pilots might end a war even if the material cost of the planes was low. Quantity may have a quality of it's own, but maintaining public morale seems just as important.

<comment><USER6> Oddly, at the moment there are people on American streets demanding casualties in order to get the malls open again.

(Coronavirus death toll now larger than Vietnam)

</comment></comment></comment></comment></comment></comment></comment></comment><comment> gjsman-1000 CONFIRMED! IT'S HAPPENING! [https://www.tsmc.com/tsmcdotcom/PRListingNewsAction.do?actio...](https://www.tsmc.com/tsmcdotcom/PRListingNewsAction.do?action=detail&language=E&newsid=THGOANPGTH)

</comment><comment> gjsman-1000 IT'S REAL! [https://www.tsmc.com/tsmcdotcom/PRListingNewsAction.do?actio...](https://www.tsmc.com/tsmcdotcom/PRListingNewsAction.do?action=detail&language=E&newsid=THGOANPGTH)

<comment><USER2> Can you please stop using allcaps for emphasis? You've been doing it a lot, and this is in the site guidelines:

 _Please don 't use uppercase for emphasis. If you want to emphasize a word or phrase, put asterisks around it and it will get italicized._

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html).

</comment></comment><comment><USER11> I am a little skeptical, but also more convinced by the lack of Trump-hype behind the announcement. If it did accompany it, it would have all the hallmarks of a Foxconn-style announcement that leads to nothing.

</comment><comment><USER12> Is anyone going to cry forced tech transfer?

<comment><USER13> TSMC develops the tech often times in partnerships. AMD definitely paid for a lot of the tech and manufacturing research that went into the current state.

<comment><USER14> Altera too. The regularity of FPGA designs makes them perfect for optimizing process yield.

</comment></comment></comment><comment><USER15> Isn't this risky regarding industrial espionage? Also, what if the USA sanctioned China? Wouldn't it be bad if TSMC had a factory in the USA?

<comment><USER16> TSMC is a Taiwanese company, not a Chinese one.

<comment><USER15> I know but what if TSMC had to apply possible US sanctions against China? First, TSMC would be a US company, which could give the USA an excuse to tell TSMC to apply sanctions against China. Also, the USA could take the US factory.

<comment><USER14> The US already has that ability to coerce foreign companies. TSMC buys chip making supplies and equipment from US companies, and there's been discussions around requiring foreign companies using US technology to obtain a license to not supply chips to Huawei or risk getting cut off from the US tech network themselves.</comment></comment></comment></comment>


What's really going on in a salary negotiation - <AUTHOR> http://alexpotato.com/blog/whats-really-going-on-in-a-salary-negotiation/ <comment><USER4> Quick anecdote to underscore the importance of being in a position to say "no" to an offer in salary negotiations:

I'm working for a company who has a base in NY, and asked for a salary commensurate with what the majority of their workers were making (I'm in a satellite branch), particularly since I have skills and experience nobody in their NY office had (I have also since learned that they would be effectively unable afford someone with my skills and experience in NY).

Despite being unwilling to provide them with my current salary, I had effectively followed my previous boss to this new company, so they were able to provide HR with my previous compensation numbers. This resulted in their offer being based solely on that compensation, not my valuation or a valuation based on my ability.

I wasn't in a position where I was willing to say "no" at that point in time, but it certainly underscores how important it is to be in a place where you can say "no" if you want to counter the information and power asymmetries.

To me, this also underscores how jobs don't operate in a free market economy: we're naturally short a method of making money to survive, and this method of providing for ourselves typically consumes half (or more) of our waking hours. Corporations can and do exploit the resulting need for a job _which isn 't our current job_ to not pay us according to the the actual value of our skills, but just enough to be better than the previous company.

<comment><USER5> Being able to walk away is always the strongest position. At a previous company I fully intended to move across the country to be closer to family and try my hand at creating a business. Instead of just quitting, I was able to negotiate 75% pay for 75% time with no reduction in benefits and no COL adjustment (I was moving from a high-cost to a low-cost area). With the loss of state income-tax, my new take-home pay was almost the same.

</comment></comment><comment><USER6> I'm not saying you should disclose current salary, but one reason to do so is to prevent prospective employers from accidentally lowballing you.

If you're making 100k now, you can set the negotiation floor above 100k by telling them that. Otherwise, they might start at 90k.

Another reason, less important than the previous, is that (if they ask early in the process), it can keep you from spending 2 weeks interviewing with a company that can't afford you.

This happened to me a lot when I was hiring. I didn't have an HR department to mechanically set incoming salaries; that was my job. I didn't mind candidates who wouldn't disclose; in fact, early on, I yelled at my partners for asking candidates the question. But I came to learn that the number is very useful for speeding negotiation up and avoiding offense.

Even at the highest level of company management, where surplus dollars stood a good chance of going directly into my bank account, my incentive was never really _intrinsically_ to minimize the cost of an employee. The bigger pull was maintaining parity with the rest of the team.

One thing this article suggests, but you should be careful about: you can disqualify yourself by giving numbers that are too high. If you say you want 180k and the role goes for 110k-120k, there are hiring managers that will pass on you even though you could be negotiated to the realistic range. They'll assume that to hire you, you have to be squeezed, and they don't want team members they have to squeeze, because good managers track retention too.

<comment><USER7> I was going to say something along these lines. Basically I have a budget for a position and I start from there.

The other aspect is fitting in the person with the other people at the company. It doesn't engender a lot of trust if the salaries of engineers are all over the map based on their negotiation skills, what I want are engineers with engineering skills so I try to start with the median and work from there. A conversation might be "The median salary for this role is $X, based on your experience related to the role you could start a bit higher or a bit lower than that."

</comment></comment><comment><USER8> While the article correctly describes the basic situation, not all of the advice presented at the end is good (unless you are a really strong candidate).

Especially the "Don't give a hard number when asked what you want." is a red flag for many hiring managers and they usually interpret such reaction against the candidate, for example: "He's indecisive, doesn't know what he wants, doesn't know his value" and similar over-interpretations.

I'd say it's much better for the candidate to anchor the number a bit above his expectations and lead the real negotiations from there.

<comment><USER9> We were discussing something similar on Metafilter when a hiring manager chimed in:

 _" Whenever I hear a candidate dither about specifying pay, I know they are either extremely flexible about pay, don't know the market very well, or don't value themselves very well. I know they will be willing to accept a lower amount than I would otherwise be able to offer.

In other words, if you don't specify a number, I'll specify one for you - <USER3> it'll be at the low end of what I can offer, not the high end. The highest paid candidates are the ones that know their value and refuse to work for less than their value. Most of those highest paid candidates are the ones that don't even bother giving a range of pay and simply say, 'I will work for $x'."_

<comment><USER10> Why would anyone give a range? There's no such thing.

<comment><USER11> In the past I have given a range (for what I was asking) when it was at the very beginning of the process and I had no knowledge of the benefits package.

The last time it did this, I was told that the bottom of my range was above the top of their range for the position.

I told them: "That's not my problem."

They responded: "You're right." and I continued the interview process with the rest of the team.

<comment><USER10> This is what you said: "I'd like between $x and $y." This is what they heard: "He'll take $x."

And, I think it's obvious, but $x includes the whole package you're asking for, converted to $. If you're describing the tactic of trading off various components of x, then that begs the question.

<comment><USER11> Yes, that's true.

However, by doing so I have anchored the _minimum_ salary at the top of their range [in their case, a little above the top]. At that point they could terminate the interview or go forward - a clear indication that salary was negotiable.

In reality, that isn't how I think. I'm very frank and open. I tell them what I want, because that's what I want.

On the topic of frankness: I also tell them anything that could possibly _discourage_ them from hiring me. I'm not trying to talk them out of hiring me, I just want them to have all the data they need to make a good hiring decision.

I was once hired for a contract that I was unqualified for and let go a week later. When I asked the guy who hired me why they hired me for a position that required expertise in "X" technology when I told them in the interview that I only had a week of experience with "X" he told me: "We just _liked_ you so much." Getting hired for a position you aren't qualified for is worse than not getting hired.

</comment></comment></comment></comment></comment></comment><comment><USER12> As a lowly pleb, I really appreciate it when a prospective employer think me honest enough not to lie about my current compensation. Some employers dispense with human moments like these and instead just outright demand W-2 forms:

[http://www.sfgate.com/business/networth/article/Employers- as...](http://www.sfgate.com/business/networth/article/Employers-asking-job- seekers-for-W-2-or-tax-return-3530180.php)

</comment><comment><USER13> I've never revealed my salary, it's irrelevant, and I always get higher than average offers. I've jumped past peers quickly by using this strategy. Hiring managers can get bent if they don't want to pay you what you're worth. There are hundreds of companies looking for good talent, and if you are good talent, you should make the most money possible.

</comment><comment><USER14> What kind of thing would you say to avoid giving your current salary without appearing like a jerk?

<comment><USER15> Most of the time your contract forbids you from discussing your current salary in any case.

<comment><USER5> Most of the time that clause is illegal:

[http://www.npr.org/2014/04/13/301989789/pay-secrecy- policies...](http://www.npr.org/2014/04/13/301989789/pay-secrecy-policies-at- work-often-illegal-and-misunderstood)

*ianal

<comment><USER16> You still tell that to the company. Then they think that you are scrupulous and honest.

If they tell you the clause is not enforceable, you can still say, "That's interesting, but I'm still not comfortable. Perhaps you'd pay for me to consult with an employment lawyer of my choosing to have a third-party verify your claim."

In reality, it's all smoke and mirrors. You just have to have a reasonable sounding excuse for not disclosing; they can't push without looking like a jerk.

<comment><USER5> Oh absolutely. I just wanted to help dispel that myth.

</comment></comment></comment></comment></comment><comment><USER17> Be prepared to walk away. If you want $Y find a job that pays $Y. If they don't offer you $Y, go find the next offer.

As long as you know what $Y is, it's that plain and simple.

The hiring manager or recruiter can't help you find $Y. You've got to be prepared ahead of time by using sites like salary.com and glassdoor.com where you can find the national and local averages for your skills and experience. These estimates help you sort out your market value. You also need to know what your personal budget is, what standard of living you seek, and what you truly value.

Do you only value money? Do you value time off? A great manager? Awesome co- workers? The stability of an enterprise? The excitement of a start-up? Does the CEO impress you? What is the estimate cash value of the benefits? Know what you value before you you start looking.

When you evaluate an offer it's real important to compare it. In other words, don't jump at the first offer! Having an offer letter or two in hand is powerful for you and the hiring manager too. And it makes walking away obviously easier.

Above all be truthful with yourself and with your potential employer - <USER3> expect the same from them. Do you honestly think that you're going to enjoy working for a company that is deceiving you from day one?

We are fortunate to work in a time where our skills are in incredibly high demand. You, as a job hunter, have more opportunity, advantage, and resources than the vast majority of the work force. You can use this privilege to achieve a happy life and successful career.

</comment><comment><USER18> I never ask what people make; it's irrelevant. Instead, I ask them what they want and then I try to figure out how to justify _at least_ 5% more.

Why? Because I want people to be happy and productive coming in. Salary and benefits should be the last thing on their mind.

I've hired a few people who refused to give me a number up front even though I explained the basic rationale. More often than not that lack of trust shows up in their work and their effectiveness as part of the team. Not always but more than 50/50\. So now I use the question as a qualifier as well.

Don't get me wrong though, I know why people do this and I respect their choice. It's a bit mercenary and the corporate world is a mercenary place. Personally, I just place a higher emphasis on teamwork.

Also, it's worth mentioning that despite what many hiring managers believe, budgets for positions are rarely set in stone. There are many creative ways to bump positions up, even in the most rigid of corporate hierarchies. So when someone in HR (or your boss) asks what a person is making tell them it's irrelevant and then tell them why the person you want to hire is worth what you're asking for.

<comment><USER19> > Don't get me wrong though, I know why people do this and I respect their > choice. It's a bit mercenary and the corporate world is a mercenary place. > Personally, I just place a higher emphasis on teamwork.

You seem to be assuming that candidates somehow know that you are not going to attempt to fleece them, unlike every other prospective employer.

If candidates don't know any better, and it's fair for them to assume that you are the same as all the others, then I don't think you can draw any conclusions about "trust" and "teamwork" from them refusing to state a figure.

> More often than not that lack of trust shows up in their work and their > effectiveness as part of the team. Not always but more than 50/50.

I think you're probably just seeing a correlation with the sort of people who either negotiate well already, or have read up or received advice on what to do.

But if you still choose not to make an offer on this basis, I suppose it's win-win - the candidates you turn down probably wouldn't want to work for you anyway.

<comment><USER18> That's a fair assumption on your part.

However, I think if you open the topic with, "The position is budgeted at X, but what would you like to make?" You're being about as open as possible, and that's what I try to do.

</comment></comment></comment><comment><USER20> I was investigating this the other day, as it happens. Recent research from France (can't find the paper now, sorry) shows that unless you're very, very highly skilled your personal bargaining power is almost zero. What was important however was how many companies were competing for you, how profitable those companies were, and the current state of the economy.

This implies that a negotiation like this is just back-and-forth-ing within some window of acceptability that was probably predetermined before you walked in, and if you want to have a successful salary negotiation and get your prospective (or current) employer to _redefine_ that window, your best bet is to a) orchestrate (some) of these external factors to work in your favour; and b) find a way to get that information into the exchanges without being a dick.

They also noted that doing all this then staying with your current employer was often the best strategy because at the very least you can expect to capture some of the hiring/firing costs associated with replacing you.

<comment><USER19> Surely this only demonstrates that your offered salary can only go down, and not up, and therefore you are still better off not stating your previous salary or salary expectations?

</comment></comment><comment><USER21> I've been a hiring manager for tech many times, and also a candidate. This article is wrong. Revealing current salary no matter how low it is, loses you no leverage.

It's quite simple: If you got through the entire interview process then you are the best candidate they could find for a role they needed to fill months ago. They are ready to hire you. Now you have the leverage to demand what you know this type of role pays in this market, no matter what you were paid before. The hiring manager knows if you walk away then they have to start the candidate search again or hire the runner up who is not as good as you, so they'd rather just meet your demands as long as it is reasonable and get you onboard without further delay. So stand your ground. They are paying for your skills and ability to do this job, not your last job.

<comment><USER22> So why ask what the candidate what they were paid before if it does not influence negotiations?

What it actually does is give you a strong hint on where to start an offer and how hard to push since most people will be unlikely to decline an offer that is 10% higher than what they were making unless they have a better competing offer (another reason why you should aim to have more than one).

You are right that company has already heavily invested in the candidate, but so did they. Walking away means losing time and energy invested in pursuing this position, not to mention emotional investment in getting the job they want (again mitigated by pursuing more than one).

</comment></comment><comment><USER23> _One thing I strongly advise not to do: lie about your current salary. Why? If you get hired at the new company and it comes to light that you were dishonest about your old salary (via background check, verifying with your old employer etc), you may be in for a lot of trouble. Your new employer will most likely see this as unethical and raise questions about your professionalism in general._

What guarantee is there that the old employer would give out correct salary information for a former employee? Why does the author of the article assume that the employee is the only party that could potentially lie?

Person X leaves company Y, and her manager is not happy about the extra effort needed to fill her shoes. A month later, someone calls from company Z and asks how much X was making... Why would the disgruntled manager tell the truth?

<comment><USER24> The correct course of action, therefore, is to decline to give your current salary. The article is correct, at least in my recent experience: indicate that your current salary isn't relevant, and say what you want to make. They'll come back with a counter-offer which you can then choose to take or leave. It helps to be willing to leave it.

<comment><USER25> I've always politely declined to discuss my current salary, usually starting with simply "Job roles and compensation structures vary so much that I think it really confuses things to try to compare apples and oranges, I'd prefer to focus on the value that I can bring $company", which has worked well for me in terms of either getting reasonable offers or identifying companies that are going to undervalue my position.

</comment></comment></comment><comment><USER26> In the UK we have this thing called income tax. With most people it is 'Pay As You Earn', hence, when starting a job, something has to happen to calculate how much tax is to be paid. I would like to know if it is possible to infer one's previous salary from this information. Also, are there any 'golden windows' where this can not be a possible problem, e.g. by starting a job in a new tax year (April), will it be possible for a lie about previous salary grade to go unnoticed?

<comment><USER27> As far as I've seen, all new employers (or at least the HR department) have required a P45 which includes all previous salary information - making it easy to see if you've been flexible with the truth. I've always gone with the advice of declining to say what you're earning and just explain what you're looking for.

<comment><USER26> So one could go for P46 and pay emergency tax rate, which is presumably higher. This would not be a problem if one had bumped up the previous salary by £10K or so to a credible 'market rate'.

</comment></comment></comment><comment><USER28> I think there are more advantages in sticking to the "good and honest" method.

> You asked how much I make and because I'm a good and honest person, I told > you. You then asked me what I wanted in salary which I also told you. My > expectation is that because I disclosed my current compensation, as a good > faith exchange you will offer me what I asked for...

...and if you act in obvious poor faith then this gives me great information about how your company will treat me, just at the exact moment when I need it.

<comment><USER29> Putting your future in the hands of a complete stranger you expect to be acting in "good faith" seems like a tall order...

</comment></comment><comment><USER30> One thing if you do feel compelled to share your previous salary: I think it's only fair to include things like bonuses and overtime. Be honest, but be honest in the way that reflects best on yourself.

</comment><comment><USER31> I find fulltime jobs to be full of these kinds of things.

Salary negotiation and all that goes into it, described in part by the OP.

Once a yearly salary is set, the employer's incentive is to make you work longer than 8 hours a day (and many companies encourage a culture of "come early, leave late, for reputation points"). Demanding overtime pay through hinting at legal threats isn't going make your relationship better.

Having to be comfortable selecting an appropriate number of "allowances" on w2 forms if you know you prefer to pay taxes later in the year even if the allowances do not represent havingb actual children etc.

Commitment for minimum 1-2 years, asking for time off within the first year can be hairy.

Giving no indication that you have other things going on in your life, that your full focus is on the company's mission.

Pretending to be busy 8 hours a day at work even if you finished everything, because you don't want to keep asking for something more to do, and make everyone else look bad

A lot of fulltime jobs are about socializing and having a mix of fun and productivity at a workplace with a group thrown together. While that may be what you want, keep in mind it will happen more than 8 hours a day for over 2 years in a "good fit" job.

=====

Compare all this to consulting. It's less of a marriage. So:

Salary negotiations are more about quoting your rates, and having done different projects in the past you are under no obligation to play by their game of "5% increase".

They pay for your time hourly not daily so they value it.

You are in full control of your tax withholding, working with your accountant, instead of waiting for a refund (and not earning interest).

Clients are HAPPY if you leave 3-4 months later if the project has been completed successfully. It's about results, not appearances. You can take vacations between projects and still get recommendations from the (much more numerous) past clients. Did I mention that they are more numerous so you also have greater choice in who will give a reference?

As a consultant everyone understands you may have other clients where you use the same skills. Non-compete agreemeents are usually not enforceable when you are doing similar things for all clients - but exercise your ethical judgment. The point is you have the option and so your loyalty is valuable and there is mutual respect there.

You don't have to pretend you are working when your job is done, and make others "look bad". There are no such expectations. For me, the need to lie and pretend in a futime job was the most uncomfortable thing, even more than the commute. Did I mention the commute? Consulting jobs are less insistent on "face time" than they are about results, so you have more flexibility. You can attend conferences and events that benefit you as a professional in your industry, instead of genersting friction with your employer for how often you attend things not directly related to the company's mission. And so you can develop yourself as an individual and as a professional in your industry.

Most consultants will flit from location to location, staying 3-4 months or working from home. You get to see a lot more people and environments. If you choose to stay in touch with 1 or 2 you can do it. The fact that you won't be their "fulltime friend" is just a testament to how grown people can't fully choose who to socialize with if they are in a fulltime environment. Better to get drinks or get together on the weekend with them, just like you still probably do with people who you once worked with.

=====

For me, the biggest draw is being able to enter into contracts based on mutual respect and the luxury of being honest in my commitments.

In short, just like marriage, fulltime jobs set much high expectations for commitment, and therefore you had better be sure that you and your contributions will be valued IN the relationship, when deciding IF to begin one. You have a choice. You can be placed by recruiters as a consultant also. The W2 arrangement with a consulting company is not about full-time employment, only about tax withholding and how they typically prefer to process the payments.

Not saying consulting is all roses, of course. But if you have a recruiter placing you anyway, consider it as the default (like dating) and FTE only if you're really sold on a marriage and feel it's going to work out.

Finally, I think the progression for many people is:

Employee -> Consultant -> Agency -> Entrepreneur -> Shareholder

</comment><comment><USER29> > One thing I strongly advise not to do: lie about your current salary. Why? > If you get hired at the new company and it comes to light that you were > dishonest about your old salary (via background check, verifying with your > old employer etc), you may be in for a lot of trouble.

I disagree 100%. First of all I would take great issue with my previous employer if they handed out that information (If they I did I would subsequently inform all my ex-coworkers what I was making as all bets are off) and while IANAL I feel like that is not legal and/or you would have legal recourse.

Secondly, why are you assuming that the (potential) employee is the only one that would be lying? I don't trust a word that comes out of the persons mouth when it comes to salary negotiation, it's just not in their or the companies interest to be anything close to "on your side". Hearing "Well you're making more than anyone else here", "You got one of the biggest raises this round of evaluations", "I didn't get a raise so you should be happy you got anything", "That's over what we normally pay for this job" all reek of BS. Unless I see accounting documents I'm not going to believe a word you say (even if I think you are a nice guy/girl or I like working with you, assuming we are talking about a raise not a hire).

The hiring/raise manager job is to get you for a low as possible and since these negotiations only happen about once a year we are talking about < 1hr of time (normally the whole meeting is 1hr with only 15-30 min being on salary, be that for hiring or evals) that you have a small window to effect the other > 99.95% of the time you are working for that company (Assuming a rough ~2000hrs/year). I pull every trick in the book and don't feel one ounce of guilt about it. This is my future we are talking about I'm not going feel bad about bending the truth when I know the guy on the other side of the table is probably doing the same thing. If there was more transparency in the process I might feel differently but there's not and I don't.

Especially with articles like "Your Lifetime Earnings Are Decided in the First 10 Years of Your Career" [0] and "Employees Who Stay In Companies Longer Than Two Years Get Paid 50% Less (over 10 years)" [1] I'm not about to take a sword to a gun fight, I'm coming out swinging because I know the other person is going to be. I never give a current salary number (only a range normally) and if they push for a number after I've said no then I feel no remorse in giving them a number that is not accurate. Pay me what I'm worth NOT what you think you can get away with because I know what I'm worth and if you can't pay it, no hard feelings but I'll be looking elsewhere.... Just my 2 cents.

[0] [http://www.bloomberg.com/news/articles/2015-02-09/your- lifet...](http://www.bloomberg.com/news/articles/2015-02-09/your-lifetime- earnings-are-decided-in-the-first-10-years-of-your-career)

[1] [http://www.forbes.com/sites/cameronkeng/2014/06/22/employees...](http://www.forbes.com/sites/cameronkeng/2014/06/22/employees- that-stay-in-companies-longer-than-2-years-get-paid-50-less/)

EDIT: Also to the people talking about "good faith" and the like: I'm sorry, I'm not going to take that chance, as I said what may appear to be a small decision can (and will) affect you for the rest of your career. Are you really willing to bet your future on the hope that the person you are interviewing with is going to do what's best for you (a stranger) over the company they work for?

<comment><USER32> Lying about your previous salary as part of negotiation is fraud. Don't do it. Use other techniques to negotiate a higher salary.

<comment><USER25> Lying about actual numbers may be fraud but if you can re-frame the discussion in terms of your total compensation you can probably get some more wiggle room since you can decide what dollar amount you want to put on various fringe benefits.

<comment><USER32> In England those benefits have a tax value.

It's deceptive and unethical to lie about what you used to earn. I'm surprised it's even being discussed.</comment></comment></comment></comment>


Turbo Pascal's Unsung Hero - <AUTHOR> http://drdobbs.com/blogs/architecture-and-design/228700901

<comment><USER2> One more credit to BYTE magazine. I remember no magazine as influential (or as fun to read) than BYTE.

Let's hope CMP does it justice and turns byte.com into something amazing.</comment>


What to Expect from Windows 8? - <AUTHOR> http://theoryreport.com/breaking-news/what-to-expect-from-windows-8.html

<comment><USER3> Although lacking any facts, more like rumors and 'what I'd like to see' - <USER2> like that reset idea. System restore is kind of both complicated and semi- working. Maybe I'm missing something, but I created a named restore point and several application installs later it was pushed out by automatic restore points created 'for me'.

App store, done right, would be huge. And I know it might not sound popular, but Microsoft buying Steam from Valve or making their own would be a bingo for Windows. They kind of have that Live Games now, and Valve's core business isn't Steam anyways.

</comment><comment><USER4> The article seems to reiterate what was posted on [http://msftkitchen.com/2010/06/windows-8-plans-leaked- numero...](http://msftkitchen.com/2010/06/windows-8-plans-leaked-numerous- details-revealed.html)

</comment><comment><USER5> _A reset button on windows is sure to ease the pains of thousands of technical support staff out there. When malware strikes or the system simply isn't working as expected, rather than painstakingly working through the registry looking to turn a one back to a zero, a press on the push reset button should do the trick._

Like System Restore? Notorious source of problems from viruses hiding within it, to it removing important files. Like Altiris SVS? With it's ease of accidentally uninstalling your documents along with an app if you misuse it? Like Windows XP System File Protection which isn't as helpful as you'd hope in the fight against malware? Like factory shipping systems with a boot option that restores the computer to factory shipping state - blank, no programs, no settings - always a fun support call to get.

A big red restore button is a hard feature to add and get right - and I don't want to deal with the aftermath of them adding it and getting it wrong.

 _Having a Win 8 os that starts up in say 15 seconds, 30 seconds or 45 seconds give-or-take will take the game._

Compared to the iPad's starting up in ~0 seconds, and Mac OS X's resuming in ~2 seconds, the game is already taken and Windows lost it. The best it can do is play catch-up - and a 30 second boot was doable on a Windows PC two years ago ( <http://www.youtube.com/watch?v=7DWAmReoryI> ).

 _A software license that roams wherever you go blurs the lines between a desktop and a laptop. A futuristic plan details users having system settings go wherever they go._

Futuristic plan? Windows has had roaming profiles for many years, and with Server 2008 and Windows 7 transparent VPN access that should be possible to setup with the server remotely right now. Assuming both systems have the game installed and the game supports saving part way through like that, and your internet connection is fast enough to download / sync your profile every time you login without annoying you.</comment>


How to Not Suck at Interviews - <AUTHOR> http://www.truthsnap.com/1/post/2013/09/how-to-not-suck-at-an-interview.html

<comment><USER2> "It doesn't matter if you're interviewing at a casual tech firm where everyone wears graphic t-shirts and flip flops – this is an interview. You wear a damn suit unless explicitly told otherwise by the interviewer or company."

How does wearing a suit equate to "Dress like you've been there before."? It seems like the opposite, if anything.</comment>


Fast Approximate Logarithms, Part I: The Basics - <AUTHOR> http://www.ebaytechblog.com/2015/05/01/fast-approximate-logarithms-part-i-the-basics/ <comment><USER2> Awesome writeup.

I've occasionally thought that there's a lot of time to be saved in machine learning systems by making the floating point operations a bit more noisy. Use maybe eight bit (or even four bit) numbers for the matrix entries, with the philosophy that the overall degree of freedom in the system is enough to make up for this local rigidity, while you gain a lot in terms of both storage space and evaluation time.

Along these lines, I saw a great demo of a robot a while ago which used 256 binary devices for movement. Each of these devices is the diagonal of a quadrilateral; when the device is in it's 'on' state, the diagonal is long, and when it's in the 'off' state the diagonal is short. Chain a lot of these together, and you can get pretty good accuracy aiming for specific points in a two-dimensional space. The demo I saw was a three-dimensional version of the same concept, of course.

So likewise, we chain together lots of linear operations to build (say) a deep learning system. The weight space is very high-dimensional, and the decision space is the much lower dimensional classification/regression problem: one probably needs a lot less than 64 bits of accuracy in the weight space to approximate a point in the decision space.

<comment><USER3> Indeed, 64 bits of accuracy is overkill for a lot of ML algorithms, where there is so much noise that the additional quantization noise due to low precision is negligible. Most deep neural nets are already being trained in single precision because that is what NVIDIA GPUs can do the fastest. There has been quite some research on reducing the bit depth further the last couple of years, see e.g. [http://arxiv.org/abs/1502.02551](http://arxiv.org/abs/1502.02551) and [http://arxiv.org/abs/1412.7024](http://arxiv.org/abs/1412.7024).

The current generation of GPUs already has limited support for half-precision operations, and the tools for using these operations in neural networks (dot product, convolution implementation) are starting to become available as well, which is awesome (see e.g. [https://github.com/NervanaSystems/nervanagpu](https://github.com/NervanaSystems/nervanagpu)).

NVIDIA themselves have also noticed and better hardware support for low- precision arithmetic is coming in Pascal: [http://techreport.com/news/27978/nvidia-pascal-to-feature- mi...](http://techreport.com/news/27978/nvidia-pascal-to-feature-mixed- precision-mode-up-to-32gb-of-ram)

<comment><USER4> I also liked a lot this ICML paper [1], which is more theoretically principled than the two you reference (and weirdly they do not cite it).

[1] [http://www.eecs.tufts.edu/~dsculley/papers/round-model- icml....](http://www.eecs.tufts.edu/~dsculley/papers/round-model-icml.pdf)

</comment></comment></comment><comment><USER5> From a practical point of view, in case you have Mathematica (which is a proprietary software unfortunately), you can do this easily for any function in a general way: [http://reference.wolfram.com/language/FunctionApproximations...](http://reference.wolfram.com/language/FunctionApproximations/tutorial/FunctionApproximations.html)

(MiniMaxApproximation minimizes the relative maximum error)

For the case discussed in write up, it gives

MiniMaxApproximation[Log2[x + 1], {x, {1, 2}, 2, 0}]

log2(x+1) ~ 0.177392 + 0.943626 x - 0.120232 x^2

with a maximum error of -0.000786282.

In the 4th order (that is, (4,0)), it gives

0.0399284 + 1.27027 x - 0.391233 x^2 + 0.0909038 x^3 - 0.00986308 x^4

max error: -4.83031 10^-6.

However, if the division isn't too expensive, a (2,2) approximant also works for an even better precision:

(0.00383323 + 1.42412 x + 0.336161 x^2)/(1 + 0.704317 x + 0.0598015 x^2)

max error: -1.33902 10^-7

As for [0.75, 1.5) interval, I get

0.108715 + 1.05621 x - 0.165315 x^2

which gives a max error -0.000651425 and the max relative error is around 0.0006, which is again way better than what he gives in the write up, although the error is non zero at points 0.75 and 1.5 (which is not really a necessary constraint, but an artifact of the particular polynomial he chose). The overall plot for relative error in a wider range is smooth.

Bottom line: 1) Unless you are an expert in numerical methods, consult to a software/article/book by an expert (or to the expert him/herself if you can) in the field at some point. 2) While I appreciate his efforts and the write up, I wouldn't recommend using his polynomials in practice.

(BTW, one can use frexp instead of bit-twiddling to make the C code friendlier since not everyone is familiar with the bit layout of IEEE 754 numbers.)

<comment><USER5> I realized that I missed the part that he's talking about log2(x) rather than log(x+1), which changes the interval.

Since MiniMaxApproximation gets quirky when the function is 0 in the given interval (it minimizes the relative error, so a division by 0 occurs, unless you cancel it), I'm rather using the interval [0.25, 0.5] with t=1/4:

-3.64631 + 7.93796 x - 5.30406 x^2

This gives a maximum relative error of 0.00334047, which is still an order better than his.

As for the (2,2) approximant: (-5.83261 - 16.7012 x + 22.394 x^2)/(1 + 11.2638 x + 7.81124 x^2) max rel error: 1.69763 10^-6

I checked several other values of t, and the max rel error for (2,0) approximant is roughly the same. This leads me to believe that the reason he is getting 10 times larger error is because he is imposing that errors should vanish at certain points. Not only this increases the max rel error, but it also distorts the smoothness of the function in a bad way (the kinks in the plots are a bad sign in general).

<comment><USER6> Your polynomial, since it doesn't get it exactly right at 1/4 & 1/2, will have an enormous relative error when you use it for computing logs of numbers very close to 1.

Goldberg's initial function b ignores this issue, and a glance at the graph of its absolute errors will confirm that it's the minimax poly for absolute error or very close to it. His next candidate t half-fixes this, and again looking at the graph of the relative error makes it clear that it's right. (Note that avoiding intervals containing zero will indeed allow you to get better max relative errors -- keeping the relative error finite where the function is zero effectively reduces your polynomial degree by 1.) Then finally he fully fixes it with the polynomial g, solving the more interesting problem of minimizing the max relative error for the log function everywhere, and chooses a better functional form by shifting the interval he reduces to with the polynomial s.

(The fact that his earlier polynomials do the wrong thing is clearly not a mistake but a paedagogical strategy: start with something simple and incrementally improve it.)

My apologies for spelling all this out, but it really appears that you're accusing him of making elementary mistakes without actually understanding what he's doing.

"Imposing that errors should vanish at certain points" is not a mistake, it's a necessity if you're implementing log by argument reduction plus local approximation and you care about relative error in the resulting approx_log function, and you are getting better numbers than Goldberg by solving the wrong problem.

Your (2,2) rational approximant will be much more expensive to compute than the polynomial and won't yield the speed gains Goldberg is looking for. And, again, it will give you a log function with infinite relative error at 1.

[EDITED to fix a typo and clarify something.]

<comment><USER5> And sorry for spelling this out for you, but maybe it is you who is "accusing of making elementary mistakes without actually understanding what he's doing."

Here is why:

1) > Your polynomial, since it doesn't get it exactly right at 1/4 & 1/2, will have an enormous relative error when you use it for computing logs of numbers very close to 1.

In case you missed, Mathematica's (not mine) polynomial gives a maximum 0.00334047 relative error. And the points with 0.00334047 error are actually edge points (which does _not_ include 1).

The important point is, it is _not_ enormous. In fact, his polynomial gives _10 times_ larger error at certain points, so it is he who has an enormous error. And Mathematica's polynomial is continuous, so even when you slightly get outside of the intended range, you're still getting an error of the order 10^-3.

2) > Your (2,2) rational approximant will be much more expensive to compute than the polynomial and won't yield the speed gains Goldberg is looking for.

Again, since you apparently missed it, the (2,2) approximant I gave is for [0.25,0.5] interval with t=1/4, so yes, bad things can and will happen if you use that polynomial outside of that range (same things happens with his polynomials too, obviously). Instead, what one should do is to move that 1/4 part into the exponent and stick to [0.25,0.5].

(About the speed vs accuracy trade-off, I already pointed that out in my original post by saying "if the division isn't too expensive"; I'm not sure why you are emphasizing it again here.)

Going back to your statement, when compute logs very close to 1, you subtract 2 from the exponent and instead compute between [0.25,0.5] using that polynomial.

3\. > "Imposing that errors should vanish at certain points" is not a mistake, it's a necessity if you're implementing log by argument reduction plus local approximation and you care about relative error in the resulting approx_log function, and you are getting better numbers than Goldberg by solving the wrong problem.

"argument reduction plus local approximation" means range reduction to [t,2t) for log function and this has nothing to do with the behavior of approximation polynomial at the edges; you may very well have non-zero errors at t and 2t and there is nothing wrong or alarming about it (see Handbook of Floating Point Arithmetic, Chapter 11, for example). The point is, the max rel error should be kept small, which Mathematica does, 10 times better.

Such an artificial condition is necessary only when the relative error function becomes discontinuous and starts making sudden jumps (see Figs 6-7 from the top in the write up.) He is trying to remedy a problem which appeared due to his choice of t, at the cost of losing degrees of freedom in the polynomial (see also the comments here [http://reference.wolfram.com/language/FunctionApproximations...](http://reference.wolfram.com/language/FunctionApproximations/tutorial/FunctionApproximations.html) about when the function becomes zero in the interval, in which case you need to deal with these points by making them special --note from the example that this doesn't have to mean you lose 2 degrees of freedom to avoid a single point).

So, in short, I _am_ solving the right problem.

4\. Which brings me to the other unspelled problem in some of his polynomials; the derivative is very bumpy and discontinuous, which spells out disaster in general math applications. (Clearly, the derivative of his function will have enormous minimax (L^\infty) and RMS (L^2) errors, unlike Mathematica's polynomial.)

Summary: 1) Mathematica's polynomial gives ~10 times smaller maximum error than the write up within the range 2) Mathematica's polynomial gives 10x smaller RMS error within the range 3) Mathematica's polynomial is smooth. (I hope by now, you are clear that Mathematica's polynomial nowhere gives any enormous error and quite the oppoisite, the error is _much_ lower) 4) If you use approximant polynomials only within their intended range and move the remaining factors into the exponent, everything works out. 5) My pointing out a bad mathematical practice wasn't personal, so please don't steer the discussion into that direction. I understand that you respect him which may motivate this, my credentials in maths aren't shabby at all (I have more peer- reviewed research papers than him, and in higher impact journals etc etc) (and if Mathematica says one thing and a human says another, in most cases Mathematica is correct) but credentials don't matter in front of solid results. In fact, accepting a scientific result (partly-)based on credentials is considered to be toxic in science. Which brings me back to my original point. I stand by what I said earlier: I don't recommend using the polynomials in the write up.

<comment><USER6> > a maximum 0.0033407 relative error

On the interval from 1/4 to 1/2\. But the whole point of this exercise is to make an approximation for the log function over its whole domain. If you take Mathematica's/your polynomial and do that with it, you get an infinitely large relative error at 1 because log(1)=0 but your approx_log(1) is not 0.

(This is the _central point_ I was trying to make in my comment, and the fact that you missed it suggests I wasn't clear enough. I'm sorry about that; in particular, clearly I should have made it more explicit that I understand how argument reduction works -- it hadn't occurred to me that that was in question, since it's a standard technique, described perfectly adequately in the article we're discussing.)

> if you use the polynomial outside of that range

I never for an instant suggested using the polynomial outside that range. I am assuming the obvious argument-reduction scheme where you say log2(2^a.b) = a + log2(b) and arrange for b to lie within some interval [t,2t). In other words, I am assuming the same thing that Goldberg described and the same thing that you are assuming (but apparently missing a key consequence of).

So. Suppose you compute log2(1) using your polynomial. You argument-reduce: log2(1) = 2 + log2(0.25). Then you use your polynomial: log2(1) = 2 + (-3.64631 + 7.9376/4 - 5.30406/16) ~= 0.0066. The actual value you are looking for is log2(1) = 0. Your relative error is infinite.

(You can use the other end of the interval instead. Then you get -0.0035; again, the relative error is infinite.)

Goldberg avoids having this happen by forcing the absolute error to be zero at the endpoints (when he uses a polynomial on [1,2)) or at the relevant point in the middle (when he uses one on [0.75,1.5)). This extra constraint is what forces him to accept larger relative errors _on his [t,2t) interval_ ; that's the price he has to pay for finite relative error _on the whole domain of the log2 function_.

> and this has nothing to do with the behaviour of approximation polynomial at > the edges

Indeed, the fact that the point where you run into trouble is at the end of the interval is irrelevant, and it would be an interior point that mattered if you did as Goldberg did and used an interval like [0.75,1.5).

> So, in short, I _am_ solving the right problem.

No, really, you're not. Goldberg wants his relative error for the approx log2 function not to blow up when computing log2(1), which requires that it evaluate to exactly 0 when fed exactly 1. Your polynomial doesn't have that property.

(Of course it's questionable whether relative error is what one ought to care about for an approximate logarithm function. Maybe it isn't. I don't know what applications Goldberg actually has in mind, and quite possibly he isn't at liberty to tell us. But the problem he's stated is to compute an approximation to log2 with reasonable relative error, and it's simply incorrect to say he's done that badly because you can get reasonable relative error on a smaller interval, if your relative error goes to infinity elsewhere. Which it does.)

> the derivative is very bumpy and discontinuous

Yeah, I dislike that too. Again, how much this matters depends on the applications you have in mind.

> My pointing out a bad mathematical practice wasn't personal, so please don't > steer the discussion into that direction. [...] accepting a scientific > result (partly-)based on credentials is considered to be toxic in science.

I never said anything even slightly personal; I have made no comment on either Goldberg's credentials or yours (or for that matter mine); only one person in this discussion has appealed to credentials, and it's you. Twice. (Once earlier: "Unless you are an expert in numerical methods ...". Once just now, comparing your credentials with Goldberg's.)

Anyway: of course I strongly agree: credentials are less important than results. In this case, Goldberg made an approximation to log2 whose relative error is bounded on its entire domain of applicability, and you didn't. In particular, #4 from your summary is flatly incorrect.

<comment><USER5> > If you take Mathematica's/your polynomial and do that with it, you get an > infinitely large relative error at 1 because log(1)=0 but your approx_log(1) > is not 0.

So what?

Instead of accepting that his polynomial is more erroneous, you are steering this whole discussion in a totally synthetic direction.

Essentially your whole argument is _global_ relative minimax error must be finite at every single point in the domain.

I don't know where you got this idea/mantra but the point here is to have a rough and fast sketch with small overall error in applications, not mathematical rigor, which you can't have with a 2nd degree polynomial anyway. His polynomials give inifintely huge L^1 and L^2 errors near origin; the minimax is finite (1) but it doesn't make an infinitely big error OK. Which is why such simple minded mantras are wrong and bound to fail.

While minimax is the only thing that gets mentioned there, the world is a bigger place. There are many error measures. The concept of minimax approximation breaks down at the points where the function is 0 (you can have any arbitrary small number and we're still doomed according to minimax) --this is not the end of the world, in many application, L^2 error (RMS) is more relevant, in which case Mathematica's approximant is again 10 times better.

Do I want to make my errors 10 times larger over the _whole domain_ and do I want a bumpy approximant just to make minimax happy at _one, single_ point in the whole floating point range? No, thanks.

If we're going to pick nits and be rigorous, his function fails big time at x=0 and x<0, and for x=\pm \infty as well as NaN. Now if this is a real concern, people just put a conditional there and live on happily. You can do that for x==1 case if this is a serious concern in your application ---even though it is very unlikely (this shouldn't bother you since you're OK with bumpy functions, and it's going to be a small bump in this case anyway and still beats his polynomial by an order globally).

The whole point here is to have some rough sketch of log that works fast and yields small errors overall in the actual calculation. If I wanted rigor, I'd use libm log2 or [http://www.netlib.org/fdlibm/e_log.c](http://www.netlib.org/fdlibm/e_log.c) which is also quite fast.

Understand this, relative flavor of minimax is some measure which is rarely directly relevant, and is hardly suited for log function. It's not God's absolute commandement and the requirements of domain specific rough approximants depend on the actual usage: whether the errors are going to end up being additive, multiplicative, etc.

Anyway, I'm not going to waste more time on this. Here are the unwavering facts since the beginning: 1) His polynonimal has 10x worse relative error, and worse RMS error in the whole domain 2) Your whole argument "but what about x==1" is wrongly placed since the approximant you have been fiercely defending here itself suffers from infinite pathological errors at x <= 0; if it bothers you so much nevertheless, just put an if(x==1) return 0, and there you go, I still have a 10x better function.

<comment><USER6> > So what?

So "produce a fast approx log function with small relative error everywhere" is the problem Goldberg was trying to solve from the outset. (He wants to be able to give guarantees like "accurate to 7 bits".) The fact that he gets larger errors than you is completely explained by this.

 _Of course no one else is obliged to be interested in solving that problem, but that 's the problem he's trying to solve._

(If you'd said "I think Goldberg is solving the wrong problem; no one cares about relative error rather than absolute error in an approximate logarithm function" I'd have been inclined to agree. But no, it was "haha, he computed a crappy polynomial; that's what happens when you let amateurs do work that should be left to the professionals" with no sign of any understanding of what constraints he was working with that led him to compute what he did.)

> Instead of accepting that his polynomial is more erroneous, you are steering > this whole discussion in a totally synthetic direction.

As well as agreeing that his polynomial gives larger errors on the range to which it's applied directly (which I _have_ , explicitly, agreed; go back and check if you don't believe me), I am pointing out that it does (infinitely) better than yours according to _the criterion Goldberg was actually using_ , namely relative error over the whole domain in the log function it produces.

> mantra

Wow.

(I got it from the start of Goldberg's article, where he explains what problem he's trying to solve.)

> infinitely huge L^1 and L^2 errors near origin

(I take it you mean in the derivative.) Yours does too; it is discontinuous at every integer power of 2. Obviously any piecewise-polynomial scheme like this one is going to have discontinuities in some derivative (and you can push up which derivative at the usual cost of either using higher-degree polynomials or getting worse errors).

> There are many error measures.

It appears that you think I am much more ignorant in this field than I actually am. (Or perhaps that you're pretending to for rhetorical effect, but I hope not.)

> just to make minimax happy at _one, single_ point

If the relative error is infinite at x=1 then it is also very large when x is very close to 1.

> fails big time at x=0 and x<0

You're complaining that he isn't generating NaNs and infinities when passed inputs that don't have a finite log? Fair enough, I guess, but in a post subtitled "Part I: the basics" it seems enough to me that he has the following warning sentence: "The code does not check that x>0, much less check for infinities or NaNs. This may be appropriate for a fast version of log." (Which he does.)

> fiercely defending

I think you may be mistaken about where the fierceness is coming from in this discussion.

> just put an if (x==1) return 0 and there you go, I still have a 10x better > function

Nope. You've got rid of the _actually infinite_ relative errors but you still have _extremely large_ relative errors for x very close to 1 but not equal.

Again: by all means argue that bounding the relative error in the return value of a log function is the Wrong Thing for almost all purposes. I will probably agree. But that isn't what you did.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> The author of this post, David Goldberg, is the same guy that wrote "What Every Computer Scientist Should Know About Floating-Point Arithmetic."

[http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.ht...](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)

<comment><USER8> Great find. There's an archive of his posts on the eBay Tech Blog. Looks like interesting reading.

[http://www.ebaytechblog.com/author/dgoldberg/](http://www.ebaytechblog.com/author/dgoldberg/)

</comment></comment><comment><USER9> I've learned to be extra careful with fast log approximation. I was the tools programmer at a game studio, and few years ago was given the task to speed things a bit. There was a process that was summing neighbouring pixels, doing some filtering/pre-processing then calculating a value through log, so I've profiled that this was the slowdown, and decided to provide a faster log version. After some googling, and testing it seems everything should've work.

Few days later, black mipmaps started to appear. Turns out, I was doing testing in a wrong way, where I was thinking I'm comparing new to old, where I was comparing old to old created by other machine (a bit different results due to be expected). All because I forgot to turn off caching.

And my approximation of log2 did not really worked for the most of the numbers involved in. It was using floats, not doubles to begin with, and producing a lot of either NaN's and infinities (hence the black colors).

Anyway it was reverted, and had to reconvert everything to get back to normal.

</comment><comment><USER10> Another interesting idea is ditching the format of a classic polynomial. Multiplication isn't the fastest thing ever.

I wonder what would happen if you ran the same minmax scoring scheme through an general instruction synthesizer for the same complexity cap?

</comment><comment><USER11> This is a pretty nice introduction, and makes me want to return to my side project where I used to play with these approximations but for SIMD math: [https://github.com/boulos/syrah/blob/master/src/include/syra...](https://github.com/boulos/syrah/blob/master/src/include/syrah/FixedVectorMath.h) .

I hope in a later post he mentions Sollya ([http://sollya.gforge.inria.fr](http://sollya.gforge.inria.fr)), I found it invaluable for playing around with different precision vs speed.

</comment><comment><USER12> Why is Ebay using the log function and why is it used so heavily that it causes a performance bottleneck for them? Is this an inherited code base from their Hunch purchase?

</comment><comment><USER13> As in Math Toolkit for Real-Time Programming by Jack Crenshaw

</comment><comment><USER14> If your bottleneck is log() and you're not memory-limited, why not use a lookup table?

<comment><USER15> which is how pre calculators you used to do it by hand using Log tables

<comment><USER16> Computing log tables is what the would-be first computer was intended to do.

</comment></comment></comment><comment><USER17> Boost used to have a minimax approximation algorithm in its codebase. Unfortunately, nobody knows enough about how it works it to maintain it, and you have to look in much older releases of Boost to get it.

<comment><USER18> This one? #include <boost/math/tools/remez.hpp>

I used some bits from it to help me in building my own log approximation but I didn't have time to dig into it.

I ended up doing Chebyshev approximation over [1, 2) interval but I extended the interval slightly to make sure that an error term at 1.0 is minimal (you can also minimise an error term at 2.0 if you want some smoothness between [1, 2) and [2, 4) intervals).

It's easy to calculate new interval values for Chebyshev approximation and it shouldn't be a problem to modify Remez but I couldn't find any Remez implementation that would let me do what I needed.

Usually, interval ends in Remez algorithm are fixed, while internal points can be moved by the algorithm. I needed a way to to fix one or two internal points (1.0 and optionally 2.0) but let the algorithm move interval ends within certian limits.

If anyone knows of any tool that let me do it, I'd be happy to play with it and publish my code. My approach is a bit similar to [1] but I'd more likely use Intel assembly or DynASM.

[1] [http://gallium.inria.fr/blog/fast-vectorizable-math- approx/](http://gallium.inria.fr/blog/fast-vectorizable-math-approx/)

PS The author of [1] uses remez from e Sollya tool but it doesn't let me fix internal points. I looked at the implementation but it's more obscure than boost/remez.

UPDATE: it's not clear from the above what my objectives were. I wanted to to produce exact values for integer powers of 2 including log2(1). This approach also gives a small relative error around x=1.

<comment><USER17> Yes, that one. It comes with a driver program using the Boost.Test framework that allows you to change the range and fix the values at the interval ends if that is an objective.

Their framework does not allow you to arbitrarily fix internal values, as per your spec however.

</comment></comment></comment><comment><USER19> But why is this important? Can't computers already do this? Even my 1978 TI pocket calculator can do logs very fast. It's not like this is an important unsolved mathematics puzzle.

<comment><USER20> From the first sentence:

> Performance profiling of some of the eBay code base showed the logarithm > (log) function to be consuming more CPU than expected.

There are a lot of different types of "very fast", and these guys needed a faster one.

<comment><USER10> I wonder why eBay is using the log function?

<comment><USER21> I'm more curious why they use it so extensively that tripling the speed of it is significant to them.

<comment><USER10> That's a much better way to phrase that, thanks.

</comment></comment></comment></comment></comment><comment><USER16> I tried evolving a good approximation with Eureqa: [https://i.imgur.com/1CTTjYD.png?1](https://i.imgur.com/1CTTjYD.png?1)

<comment><USER22> It looks like all of them (they use sqrt() and x^y) will be slower than calling log() directly.

<comment><USER16> Here is it without those operations: [https://i.imgur.com/xhyNnU4.png?1](https://i.imgur.com/xhyNnU4.png?1)

EDIT: Without sin/cos: [https://i.imgur.com/mTwgKKO.png](https://i.imgur.com/mTwgKKO.png)?

You could do better by splitting the function into different ranges and using a lookup table for a formula that fits each range the best. This is how many fast approximations are done. See how the residual error fits nicely into a few different curves? Eureqa doesn't support this though.

<comment><USER22> The original posting ended with a second-order polynomial, a few bitwise operations, and an if statement.

All of the ones you just posted are more computationally difficult. The non- trig ones, for example, include a division, and the best fit is a higher-order polynomial. There's no reason to believe it will be as fast to evaluate, so the question would be, is it more accurate and is the accuracy worth the additional time? It would be ill-advised to use one of those if it ended up being both less accurate than log() and slower.

Concerning lookup tables, as tgbrter answered in this thread, they are likely slower. It still needs the scaling, and also needs two value lookups followed by an interpolation. The cost of doing the interpolation will be about the same as evaluating the second order polynomial, but the pipeline will be waiting on the two memory lookups.

Assuming everything in is L2 cache, that might not be a problem. But depending on the problem, it may be in L3 or (shudder) main memory, which is eons away. So as tgbrter also pointed out, you may end up with variable calculation time depending on the cache.

<comment><USER16> Eureqa lets you choose what functions you use and what cost each has. I need to know what the expense is for each operation and I can just feed it in. I removed division and increased the cost for multiplication: [https://i.imgur.com/8C9OBEY.png?1](https://i.imgur.com/8C9OBEY.png?1) (I'm using the author's error metric of relative error, which is what the 0 = abs(y-...)/y means.)

Here it is without mod which I think might be expensive: pg1: [https://i.imgur.com/SMvj68W.jpg](https://i.imgur.com/SMvj68W.jpg), and pg2: [https://i.imgur.com/ACw321W.png?1](https://i.imgur.com/ACw321W.png?1)

And of course the best fit has extra complexity, that's why it gives you many choices along the complexity tradeoff.

I wasn't suggesting a lookup table to approximate the function, but the choose the formula itself. E.g. you might have a function which fits the first half of the function very well, and another which fits the second half very well. I think that branching code is slower, so alternatively you can do a lookup for the constants of the formula. Some constants will be optimized for one part of the function, and another set of constants will be optimized for another part.

I don't think that kind of lookup would be too slow. You only need to fit a few elements in the cache, and interpolation is a simple operation. It's just a subtraction, a multiplication, and an addition.

<comment><USER16> EDIT: In the last paragraph I mean I don't think a _complete_ lookup table and interpolation, like you mentioned, would be too slow. Not referring to the lookup table of formulas I suggested, but computed log values.

<comment><USER22> I am confused about why you need to _think_ that certain operations are/are not expensive, or why you _think_ a table is faster.

I think they are expensive, and it won't be faster. Hence we're at an impasse. That block was predictable, and easily solve by taking the equation you have and testing against the reference code.

If you test it out, you'll know the answer. There's no need to think you know the answer when you can just measure it, and overrule any incorrect beliefs I may have.

<comment><USER16> As I said, I don't have a table of how fast each operation is. I don't think any of my assumptions were unreasonable, but I did explicitly state they were assumptions. And I don't have any way of testing it.

I am interested in function approximation mainly for finding functions for when there is no closed form solution, not so much tiny optimization.</comment></comment></comment></comment></comment></comment></comment></comment>


Web2.0 described in two sentences - <AUTHOR> http://bash.org/?779320 <comment><USER2> The phone system could be described the same way.

</comment><comment><USER3> I still say Web 3.0 is when users are directly involved in the creation of web apps. That and increasingly intuitive 3d interfaces.

(Usability will also 'come into its own,' and find itself as an art and science, I believe.)

</comment><comment><USER4> That equally describes pre-web apps like word processors and spreadsheets.

<comment><USER5> The difference, as I see it, is that the value in the "social/web2.0" site comes mostly from the community (almost entirely in cases like reddit), rather than the application having much inherent value itself, as word processors and spreadsheets (or phone lines) clearly do.

I guess people get enough value out of it to not worry too much, but there is something to the original quote.

<comment><USER4> Phone lines are as neutral as reddit. They just cost a lot more to install. So if that's the critical difference, then the above remark about web 2.0 reduces to: it's cheaper now to start a startup.

<comment><USER5> "A naso", I would say that the underlying economics do differ somehow.

They're obviously different for 'end user' applications, even though network externalities touch on those through file formats.

For phone lines, the network effects are obvious: the value is in 1) connections to people you want to contact frequently, and 2) the _potential_ to contact a wide range of people. No money is made from the actual content, though.

With the "social sites", though, they're aggregating massive amounts of user produced content (most of it pretty insignificant on its own), and making money from that.

At least that's my quick look at it.

</comment></comment></comment></comment><comment><USER6> The fact that people expect to be paid every time they do something nice for others says more about our culture than the whole Web 2.0 meme ever will.

<comment><USER7> I am not sure if I prefer a culture where people are expected to give away things for free all the time.

There is no such thing as a free lunch. Even if people give away things for free, they usually expect something in return. Even if it is not money, it could be higher social status, a better place in heaven, or whatever. I don't think it is a problem.

Gift economy: <http://en.wikipedia.org/wiki/Gift_economy>

<comment><USER3> Usually on the web people prefer to give away their PRIVACY for free services. That privacy is in turn converted into advertising.

(This will all change very soon, when people are ready to start paying for a higher - and much more private and secure - level of premium service. You know, the Web will evolve to resemble the "regular' economy more and more, I believe..)

<comment><USER7> I understood the comment before me differently: I thought it was criticized that the content providers (people putting videos on YouTube) would expect something in return, not that YouTube & Co would expect a payment of sorts. I know that Social Webpages are not really free.

</comment></comment></comment></comment><comment><USER8> I think it is in the best interest of many Web 2.0 sites to adopt a business model like Revver and share the revenue with users.

</comment><comment><USER9> please describe web 2.0 to me in 2 sentences or less. you make all the content. they keep all the revenue.

</comment><comment><USER10> What if your users ask you for money, cos you and your cofounder were bought by google for 1.5billion dollars? Say (big) group of you tube users create an alliance asking founders for money fraction cos "We have created your content you sold!" :) Seems it crazy in social world where people, not you creating your content, generating your visits and advertising income? Seems it crazy in the USA?

<comment><USER3> My guess is that, eventually, super-rich startup founders will evolve an equally advanced model for public philanthropy:

PHILANTHROPY 2.0

It's an idea whose time has come.</comment></comment>