Comparing Floating-Point Numbers Is Tricky - <AUTHOR> http://bitbashing.io/comparing-floats.html <comment><USER2> The operator overlooks my pet peeve when it comes to comparing floating-point numbers: in C++ the "standard associative containers" (std::set and std::map) are based on ordering using an less-than relationship which must be a "strict weak ordering". Many times, the methods suggested for comparing floating point types do not satisfy the requirements of "strict weak ordering", and in this case the C++ standard says you've entered the realm of undefined behavior. In the code at $DAY_JOB, "undefined behavior" turned out in this case to include such pleasant side-effects as double frees(!).

Specifically: when you have a less-than relationship "<", then !(a<b) && !(b<a) implies that a and b are equal (a==b). And if a==b and b==c then it must be the case that a==c, or the requirements of the ordering predicate are not met. Unfortunately, under most of these FP comparison schemes, for numbers a and b that are "close but not too close", it's the case that a<b, but for x=(a+b)/2, a==x and x==b!

<comment><USER3> This is actually caused by the use of the x87 80 bit floating point registers. (Infamous GCC bug #323)

When the float is first inserted into the set/map it has 80 bit precision, but that gets truncated to float or double precision during the store. This breaks the ordering as you are saying, but it's not an inherent flaw with floats as such.

The problem goes away if you compile with -mfpmath=sse because then the math will be performed in the same precision as the storage format.

Bug #323 is responsible for a huge amount of mistrust of floats that they don't deserve. Other compilers don't have this problem because they truncate the floats before any comparison.

<comment><USER2> Yes, though I'm specifically talking about when you decide to define a 'bool less_than(double, double)' that uses some kind of fuzzy comparison approach internally. This can affect any platform, not just one with the "bug #323" behavior in it.

<comment><USER3> You don't need (and shouldn't do) any kind of fuzzy comparison for less than for floats.

<comment><USER2> You sure might imagine you need to. For instance, suppose you want to average pieces of data that are timestamped "almost the same", but could arrive to be processed with varying delays, including out of order arrival (so you can't just say "is this datum at 'about the same time as' the datum received just prior"). There are better approaches, but the one I inherited involved using a std::map which used a fuzzy less than as the ordering predicate; and my main task was to diagnose why, once in a blue moon, a segmentation fault could occur when doing some operation on the map (insertion, I think).

<comment><USER4> It seems more logical to pre-quantise the timestamps before insertion. (Actual solution I've seen practiced)

</comment></comment></comment></comment></comment></comment><comment><USER5> >When comparing to some known value—especially zero or values near it—use a fixed ϵ that makes sense for your calculations.

If you're ever doing mathematical calculations of any sort, it is a good practice to have a handle on the scale your numbers will lie within. If not just to be a better professional, it helps you choose an ϵ that matches.

</comment><comment><USER6> Comparing floating point numbers for _equality_ us tricky. In fact it is a classic fool's errand. Comparing for lesser or greater is not tricky.

<comment><USER7> Why is that so ? If you can do a<b and a>b reliably, you can get equality as !(a<b || b<a). Inequality has the same issues for very close values.

<comment><USER8> Try putting NaN into your equation: not equal to itself.

</comment></comment></comment><comment><USER9> There was another good article posted on HN on floating points - [http://lemire.me/blog/2017/02/28/how-many-floating-point- num...](http://lemire.me/blog/2017/02/28/how-many-floating-point-numbers-are- in-the-interval-01/)

where the key takeaway is that between -1 -> 1 is where the %50 of floats live.

</comment><comment><USER10> comparing floats is arguably nondeterministic.

[https://randomascii.wordpress.com/2013/07/16/floating- point-...](https://randomascii.wordpress.com/2013/07/16/floating-point- determinism/)

</comment><comment><USER11> Comparing numbers is easy. The operators are there in the manual.

The hard part is understanding when it is appropriate to compare floating point numbers and how to produce them.

I regularly use floating point numbers as keys in dictionaries and of course all the code quality tools whine about comparisons being inexact. But in my case there is no fuzziness because the keys are all produced by the same method and hence do not suffer from any different rounding errors.

Pretty much every new member of the team sees floats being compared and has heart attack yet the code in question is in the oldest and most reliable component of the whole million line program.

Just don't expect two numbers produced by different expressions that would be mathematically equivalent but have operators in a different order to produce identical results.

</comment><comment><USER12> I got confused reading this, because first of all it has a picture of 64 bit floating point, then it starts comparing float to int32_t. Obviously 64 bit floating point is "double" not "float", but then it has a picture of 64 bit and program code using int32_t.

What I would say is that when you're considering comparison of floating point numbers, it's important to understand what the operation means in terms of the data which you're representing using the floating point numbers, in other words what does it mean in terms of the data for two values to be equal or not equal. Usually there is a precision inherent in the data itself which will guide you to how to formulate equality, if necessary.

</comment><comment><USER13> Here's my less-than-scientific floating point near-equality test I use.

        bool zero(float x) ( return x*x < FLT_EPSILON; }
        bool equal_float(float a, float b) {
            return (zero(a) && zero(b)) ||   // both are zero
                zero((a-b)*(a-b) / (a*a + b*b)); // or relative error squared is zero
        }

This checks equality to about four decimal digits for 32 bit single precision and seven digits for 64 bit floats. Inf/NaN special values are not considered.

Critique and comments welcome.

<comment><USER14> `FLT_EPSILON` represent the minimum difference between two adjacent floats around 1.0; it should be scaled according to the input argument. E.g. your `equal_float` returns `true` for 2e-6 and 4e-6 which are clearly not the same number.

A better comparison would check for zero somehow like this:

        bool zero(float x) { return std::abs(x) <= std::abs(x)*FLT_EPSILON;  }

<comment><USER13> Yes, this is by design and it works as intended.

I typically use this with doubles and DBL_EPSILON, which is much much smaller than FLT_EPSILON.

With FLT_EPSILON this roughly equals to "zero" being "less than 0.001". If the zero check is omitted, there's going to be a division by near-zero which will make the results nonsense (and you have to draw the line somewhere). With DBL_EPSILON "zero is less than 0.000000001".

If this is too loose, then `zero(x) = abs(x) < FLT_EPSILON` makes it much stricter (about 1e-7).

This is good enough for my purposes, I don't deal with very small numbers in float and doubles give more than enough precision.

NOTE: I usually use this kind of comparison in testing by comparing known "gold" figures against the results of the code being tested. I don't test accuracy, I test for "in the ballpark" because the stuff I deal with has built-in inaccuracy in the algorithm and numerics.

The version you posted will always return false if I read it correctly.

</comment></comment></comment><comment><USER15> There was a very good article explaining this using MATLAB, but I can't find it right now. This one is pretty close and explains the concepts of overflow, underflow, etc. The diagrams about "eps" are pretty good, even if your language of choice is Python, C/C++, etc.

[http://blogs.mathworks.com/cleve/2014/07/07/floating- point-n...](http://blogs.mathworks.com/cleve/2014/07/07/floating-point- numbers/)

<comment><USER16> Python has math.isclose() in the standard library, with configurable tolerances:

[https://docs.python.org/3/library/math.html#math.isclose](https://docs.python.org/3/library/math.html#math.isclose)

</comment></comment><comment><USER17> Formatting note for the author: on Safari Mac, something is causing ff and fl ligatures to be applied even to the monospaced code, which makes it look kind of weird.

<comment><AUTHOR> Is it better now?

<comment><USER17> I still see it in a couple of places where code-formatted text is inline with regular text, for example "relative_difference." The code blocks themselves look good.

<comment><AUTHOR> Hopefully that fixes it. Sorry I suck at CSS.

<comment><USER17> Looks good now!

</comment></comment></comment></comment></comment><comment><USER18> I try to always remember:

Floats are great for quick, mostly correct, math.

Think REALLY carefully about any process that then 'compares' the result. Usually you're "doing it wrong" if that's the case.

I think I might even find it useful if compilers could be instructed to warn whenever comparison operators were used on a float type value.

</comment><comment><USER19> Hm, this is interesting--in over a decade the only time I can think I've ever needed to compare floats are 1) deduping duplicate data, naive comparison is what I want 2) disambiguating messy user data, which I would take floats over strings any day

</comment><comment><USER20> Can someone explain why float is "better" than numeric in this example?

pg1:joel=#* select 1/7::numeric _7; ?column? \</comment><comment></comment><comment></comment><comment></comment><comment> 0.99999999999999999998 (1 row)

pg1:joel=#_ select 1/7::float*7; ?column? \</comment><comment>---- 1 (1 row)

<comment><USER21> Floating point math is a bit fuzzy, so many languages will round to the nearest integer if the float is within a certain margin.

Numeric types are meant to be exact, so they will be represented as an exact value.

<comment><USER22> Floating-point math is carefully-defined. There are multiple independently- developed but interoperable implementations and an IEEE standard that talks in detail about how floating-point math is supposed to work. It's not "a bit fuzzy."

<comment><USER23> It most certainly _is_ a bit fuzzy. For a fun critique of the newer IEEE standard by a real FP expert, see:

[http://www.russinoff.com/papers/ieee.pdf](http://www.russinoff.com/papers/ieee.pdf)

For something more concrete, consider Section 8, "Variations Allowed by the IEEE Floating-Point Standard", of the TestFloat tool for testing floating point implementations for IEEE compliance:

[http://www.jhauser.us/arithmetic/TestFloat-3c/doc/TestFloat-...](http://www.jhauser.us/arithmetic/TestFloat-3c/doc/TestFloat- general.html)

And of course, many arithmetic operations (e.g., trig functions) aren't even covered by the standard, which occasionally provokes consternation like this...

[https://forums.theregister.co.uk/forum/1/2014/10/10/intel_un...](https://forums.theregister.co.uk/forum/1/2014/10/10/intel_underestimates_error_bounds_by_13_quintillion/)

<comment><USER24> The problem with the "floating point is fuzzy" comment is that people start treating it as some sort of black box, or as if the results are random somehow. Sure there are a few weird things with floating point status flags, but mostly "fuzziness" is perfectly understandable when you grasp what it is doing (including the usual 0.1 + 0.2 != 0.3).

Also the standard does specify trig functions (§9.2 Recommended correctly rounded functions), but that's one of the optional parts, and as far as I know no one has actually implemented them fully (CRlibm came close, but I don't think their pow function has been fully proven to be correctly rounded, and in any case it isn't widely used).

This is actually a big problem with most standards: a lot of them contain finicky details about which only a very small subset of people care. As far as I know, there still isn't a C compiler that implements all the PRAGMAs specified in the C-1999/C-2011 specs.

</comment></comment></comment></comment></comment><comment><USER25> My basic rule of thumb is to only use floats at the presentation layer, for storage, or for measurements. If you're doing any serious calculations you need to normalise to a more reliable format first.</comment>


Nixie clocks... now :) - <AUTHOR> http://www.glowingtech.com/clocks.html

<comment><USER2> [http://webcache.googleusercontent.com/search?q=cache:Q78Actc...](http://webcache.googleusercontent.com/search?q=cache:Q78ActcYJtUJ:glowingtech.com/clocks.html+&cd=1&hl=en&ct=clnk&gl=us)

Since the site died :-).

</comment><comment><USER3> I might buy one if I could have some fraction of the payment (like 50% or so) be diverted into the ledger of my mp3sparks.com account

</comment><comment><USER4> Looks great. A lot better then that lame kickstarter bait n switch. If they are going to do that kickstarter they need to demo the model they are going to sell.

<comment><USER5> You realize that alarm clock is sold as the nixie tube model as well, right? Don't call people out without getting the facts straight.</comment></comment>


Slashdot and SourceForge Sold, Now Under New Management - <AUTHOR> http://meta.slashdot.org/story/16/01/29/0247219/slashdot-and-sourceforge-sold-now-under-new-management <comment><USER2> Hope they finally do something positive with SourceForge to try and get it competitive with GitHub (and other services), and remove the virus ladden crap from it in the process.

But yeah, this seems at least a tad promising. The new buyers do at least care a bit about the community now.

<comment><USER3> >"When I say trusted – I mean trusted," he went on. "We disagree with some of the previous monetization strategies from an industry and business perspective, and have immediate plans to discontinue programs inconsistent with our being a trusted and reliable resource for the entire open source community. I think large and small project developers will quickly see that we are very serious about supporting their long term needs and that the industry will see we're more interested in doing the right thing than making a few extra short term dollars."

That does indeed sound promising. There's no way SF could ever compete with GitHub while it continues to include bundled malware.

</comment></comment><comment><USER4> Bigger thread on same topic: [https://news.ycombinator.com/item?id=10993349](https://news.ycombinator.com/item?id=10993349)

</comment><comment><USER5> Hm, well they have someone in the comment thread answering questions. Seems like a promising first move, at least.</comment>


Gmail Motion. - <AUTHOR> http://www.google.com/mail/help/motion.html

<comment><USER2> Is it just me, or is the "forward" gesture doing the L-forehead=>loser gesture?

</comment><comment><USER3> Even before I clicked on it, it sounded too stupid to be true

</comment><comment><USER4> Love the guy with the tie that does the hand gestures. Ha!

</comment><comment><USER5> April fools right?, this looks more complicated than using a mouse

</comment><comment><USER6> Barbados. Nice.</comment>


A remotely operated vehicle livestreaming the deep sea - <AUTHOR> https://motherboard.vice.com/en_us/article/this-robot-is-livestreaming-all-the-gnarly-stuff-its-seeing-in-the-deep-sea?utm_source=mbtwitter <comment><USER2> Direct link: [https://www.youtube.com/watch?v=HuvmV5O-qTA](https://www.youtube.com/watch?v=HuvmV5O-qTA)

</comment><comment><USER3> Very happy to see the Global Explorer ROV still out there, hard at work. This vehicle was Chris Nicholson's baby and it looks like the crew at Oceaneering are keeping his legacy going.

Chris was one of the early inventors / developers of ROV technology and he was famous in the ocean engineering world. He passed away suddenly in 2015.

Some background:

[http://www.rovexchange.com/nc_interviews.php](http://www.rovexchange.com/nc_interviews.php)

[http://oceanexplorer.noaa.gov/explorations/15biolum/backgrou...](http://oceanexplorer.noaa.gov/explorations/15biolum/background/global- explorer/global-explorer.html)

[http://oceanexplorer.noaa.gov/explorations/16arctic/logs/jul...](http://oceanexplorer.noaa.gov/explorations/16arctic/logs/july6/july6.html)

[http://www.capenews.net/falmouth/obituaries/christopher-j- ni...](http://www.capenews.net/falmouth/obituaries/christopher-j- nicholson/article_0d7e6342-5532-5d07-a758-0151d3a8d3d2.html)

</comment><comment><USER4> Wow... that Motherboard web page is packed with enough cruft to bring my brand new Kaby Lake i5 to its knees.

<comment><USER5> Assuming nothing listening on 127.0.0.1, this should fix the problem.

       cat << eof >> /etc/hosts
       127.0.0.1 vice-web-statics-cdn.vice.com
       127.0.0.1 fonts.googleapis.com
       127.0.0.1 www.google-analytics.com
       127.0.0.1 d31qbv1cthcecs.cloudfront.net
       127.0.0.1 d5nxst8fruw4z.cloudfront.net
       127.0.0.1 b.scorecardresearch.com
       127.0.0.1 advice-ads-cdn.vice.com
       127.0.0.1 vice-publishers-cdn.vice.com
       127.0.0.1 vice-sundry-assets-cdn.vice.com
       eof

Alternatively, sed script below will give you just the article html, images, and embedded youtube along with all the json data enclosed in

 tags.

       curl https://motherboard.vice.com/en_us/article/this-robot-is-livestreaming-all-the-gnarly-stuff-its-seeing-in-the-deep-sea?utm_source=mbtwitter \
       |sed '
       /window.__PREFETCH_DATA/!d;
       s/window.__PREFETCH_DATA = //;
       s/\"[:,]\"/\
       /g;
       s/,\"/\
       /g;
       s/\":/\
       /g;
       s/.[}{]./\
       /g;
       s/[}{]./\
       /g;
       s/[][]//g;
       s/id/
&/;
       s/body/&<\/pre>/;
       s/\\u003C/</g;
       s/\\u003E/>/g;
       s/\\u002F/\//g;
       s/\\"/\"/g;
       s/url/
&/;
       s/embed_code/&<\/pre>/;
       s/autoplay/
&/;
       s/;/<\/pre>/28;
       '

<comment><USER6> I'm not entirely sure I understand what is happening, I have some grasp of the aim/purpose. Also have pulled pages using CURL before. I'm just curious, does this mean you have to analyze their page (like console) and find the links like the ones you posted above for cloudfront,etc... and then assemble it so you can format it? Not my field but I use ublock/adblock plus and it's not enough all the time, some videos have an overlay which I swear has a double- click counter where you have to open 2 ads before you can actually push the play button to play the video.

It is interesting to grab data and package it yourself through your own reader but I wonder if it loses the site's design/feel... but you're probably just after the information anyway.

<comment><USER5> "... I use adblock plus and it's not enough all the time..."

Next time this happens it could be useful to make a submission to HN about it.

We might be able to identify and/or solve the problem.

I do not use an ad blocker nor do I use python or youtube-dl yet I never see any ads and I download all videos before watching them. Indeed I access the web for the information not the inconsistent design/feel.

What I posted above illustrates examples of two _alternative_ approaches:

1\. Block sources of undesired resources: ads, tracking, etc. The "links" listed are domains used for undesired resources.

2\. Only make requests to sources of desired resources: the article and its accompanying images and video. The script extracts only what we _want_ from the html page.

I use approach #2 more than #1.

As far as I know ad blockers use blocking, #1, exclusively. They need to maintain a list of domains to block.

<comment><USER6> I wasn't sure if you were serious about posting to HN about adblock haha, I complain enough as it is about my pathetic life.

In the case of the videos, they're sourced from other domains, it's funny the site's argument is "Google does this too technically so why are we different?" But I think the embedded iFrame's that contain the video players have their own ads. I don't know, it's hard to read JS code when it's minfied (un-minify it).

You mentioned python?

Anyway thanks for the response.</comment></comment></comment></comment></comment>


TomTom GPS watches you drive, sets your insurance rate accordingly  - <AUTHOR> http://www.extremetech.com/extreme/117889-tomtom-watches-you-drive-insurance-rate <comment><USER2> I wouldn't accept this. First it will be optional. When the insurance companies (or government) sees how much they will be able to watch us, it will be mandatory.</comment>


Cloud SSH Key and sudo management - <AUTHOR> https://userify.com <comment><AUTHOR> We just launched our full SaaS product to go along with our self-hosted/on- prem products. Founder/CEO, AMA!</comment>


Why Google Employees Quit - <AUTHOR> http://www.techcrunch.com/2009/01/18/why-google-employees-quit/ <comment><USER3> So: working for a large company is different than working for a small company. I started at G when it was ~2k people and now we're at ~20k people. I've worked for very small companies and much larger companies than Google and I have to say that Google is a great place to work, when comparing to both and is probably the best large organization for a real , cs focused, software engineer to work for. If you love algorithms, scaling problems and the rest, you are likely to find a group where you can be pretty happy, intellectually speaking. But, if you aren't into that kind of thing, it may not be the place for you.

As long as I've been there, Google has been about 1/2 engineer and 1/2 everyone else. That's very atypical for large technical organizations, where if you have 25% engineering you'd feel pretty lucky. This also means that sometimes there is a 'engineers and everyone else' sort of thing going on. This is reflected in the exit stories, as are the very real problems that face globally distributed engineering organizations.

I find myself wanting to make excuses for some of the complaints mentioned in the article, but it really comes down to not every company matching every engineer, and if you have a large engineering org, you'll have some people who don't fit the org (the short story writer), and some people treated lamentably or regrettably by thier co-workers or managers.

A side note: the hiring process is much better than when I started. I've been sitting on hiring committees for 4 years now, and it is much more efficient than when I interviewed. I was interviewing for an odd position though, so it was even more extreme in my case (for both good and bad). I interviewed with 13 people and was given an offer within a few weeks. but back then a typical interviewer would have 8+ interviews, now we almost never go over 6.

That said, hiring is a dark art. I don't pretend to have an answer for that.

<comment><USER4> Are you kidding me? Are you really saying that the people who didn't like Google are the engineers who aren't as interested in algorithms? That seems both condescending and arrogant.

As a San Francisco native with friends that are both at Google and have left Google, I can tell you it's not the dumb engineers that quit. It has absolutely nothing to do with that. Your answer is glib and is totally the wrong take "if you love algorithms, scaling problems and the rest, you are likely to find a group where you can be pretty happy, intellectually speaking. But, if you aren't into that kind of thing, it may not be the place for you."

Google attrition is 0% correlated to that. It's totally false, and it says something about you that you think that.

It has more to do with cultural fit, not technical fit. For example, at Google you have to be extremely persuasive and political to get anything done as an engineer. You seem like a pretty forward and well-spoken individual, so this environment made you thrive.

But if you're not much for that sort of thing, then trying to get anything done in such a flat management hierarchy is going to be impossible.

Let me say it again: the engineers who left aren't the dumb ones.

EDIT: Another thing. It's not that Google employees can't hack it and quit. A bigger problem is Google has so many smart people, that really great engineers often get trivial programming tasks. Google doesn't have enough interesting work to keep everyone interested.

<comment><USER3> I'm kind of wondering which comment you are answering, you seem to be angry at my post for some slight that I didn't even say in my comment (or even in the quote). If you have a chip on your shoulder about google, fine, but the things you seem to be upset about seem almost wholly unrelated with what I said.

I didn't say that those that quit are stupid or somehow inferior, and if you read that in the comment, I really don't know what to say about that. I don't think that is the case (except here and there, naturally) and that those engineers that left the company did so because they found an opportunity that fit them better. Turnover happens, and you can read some great deep meaning into it, I suppose, but sometimes people just stop being interested in a job after 2 or 3 years (or less)

I think that you are right in that you have to be persuasive (or political, for some definitions of political) to get new projects off the ground or to direct a project in some direction, but that's kind of academic, isn't it? Where isn't that true?

As to the great programmers getting trivial programming tasks: I'm certain this happens. Our readability guidelines almost require that people do something basic or trivial. Some people hate that.

<comment><USER4> Here's your quote again: "if you love algorithms, scaling problems and the rest, you are likely to find a group where you can be pretty happy, intellectually speaking. But, if you aren't into that kind of thing, it may not be the place for you."

The point is, the people who left Google did not do so because they weren't into algorithms! So why did you even bring up such a point when discussing attrition at the company? Almost every engineer Google hires likes this stuff and is good at it.

The reason I am so aggressive in decrying what you said is because it's both misleading and insulting to the people who left Google. Not only is your post at odds with what I know, but it's also at odds with the mailing lists posts people leaked to techcrunch.

Please show me one email in that whole sheaf in which a person says "I left Google because I didn't like working on algorithms and scaling problems."

<comment><USER3> So, look again at the words "If" and "may" and maybe you'll read that quote with less vitriol and see its not so different from what you are talking about. Also, note that nowhere in what I said did I say this is the only reason people leave.

I was relating my experience and trying to qualify it carefully, but you are choosing to read what you like and ignore the rest. Which is fine for an internet argument, I guess.

<comment><USER5> Actually, the way you read it almost exactly contradicts most of the reported reasons that the engineers who left did so. It seems far more likely and believable that you'r exactly wrong -- and that the engineers who are leaving google are leaving BECAUSE they like working on algorithms and solving scaling problems, and aren't able to get opportunities to do that at google.

</comment></comment></comment></comment></comment></comment><comment><USER6> I remember when I initially read these emails (the thread is from last year), my first though was, "I'm glad that I don't have to work with these people."

Perhaps this is unfair since they are just venting (and not all of the emails were in this category, some were reasonable), but there's something about their attitude that is just very unappealing. I can't quite put my finger on it though... Something about working at big companies seems to turn many people into whiny children. I think it's because they aren't really responsible for anything.

Unfortunately, Google's transition into "yet another big company" is inevitable at this point. If you take the same fundamental structure as every other big company, and hire the same people as the other big companies, then you shouldn't be surprised when you end up looking like every other big company.

<comment><USER7> I was really hoping to hear some insight from these ex-employees about the google culture to see how it compares to my disillusionment with a "cool" big company.

Instead, most of the comments (I couldn't get through all of them) were whining about benefits, pay, and snack stations. Seriously? As a friend of mine tweeted the other day about my old company - "people are getting laid off. stop complaining about the lack of free beer this friday".

<comment><USER8> I remember reading an article by Neil Strauss in Rolling Stone covering Jenna Jamison, the notorious adult film star and the adult industry in general.

Since Neil was sent "on set" while Jenna was filming, a lot of the article details him talking to people that work in the industry (journeyman/freelance make up artists, camera men, sound guys, Male "Actors").

One thing that stuck out to Neil that he drew attention to is what these guys bullshitted about at work: Sports. Kids. Health Care. Wages. Tax tips (since they're all contractors).

The reason I bring this up is to make this point: No matter how mundane or bizarre your industry, people still have the same genuine needs. A company that addresses those needs in a superb factor will have loyal employees. If Google is subpar in salary and puts people in jobs that're menial and they're overqualified for them, they will get bored and they will leave. I can't simplify it any more than that. Any company with 18,000 employees can't rely on "cool" to motivate. For an easy 17,000 of those workers, money (or stock options) is the biggest motivator.

A lot can be said about this, but I'll go out on this note: Not all of the world's greatest problem solvers are in their mid-20s and are motivated by the "cool" factor of a web app and think in Python.

The majority of people, in any field, are motivated by money. Microsoft pays in the 68th percentile for a reason. You'll never be rich, but you'll always be comfortable. And yes, intelligent 24 year old Standford CS grad _should_ feel like there's something more to life than supporting Google AdWords code, which, according to other internet rants, is simply a frustrating experience.

<comment><USER9> Google's "official" hiring docs say that they pay in the 75th percentile, with stock options in the 90th percentile. I'm not sure if that's true, but then, I'm not sure if Microsoft's claim of paying in the 68th percentile is true either. From the Envy data someone else posted on the thread, it looked like Google engineers were being paid just slightly more than their Microsoft counterparts.

<comment><USER10> I have only ever heard of one person getting a better offer at Google, but I have heard countless times of people getting low offers or taking a pay cut to work for Google. So to see so many leave because of pay in the end isn't surprising. Working on cool things only gets you so far (six months? a year?) When your friend gets more then double your salary then you for doing something much easier and has a better out of work life it really makes you wonder if there isn't something better. Perhaps not Google, but a nice place to work now that google is on your resume.

<comment><USER9> Could be selection bias. People who got a better offer at Google tend not to trumpet it, they just work there and keep quiet about salary. After all, why make your employer think that they're overpaying you?

</comment></comment></comment></comment></comment></comment><comment><USER11> What's really interesting is all of the 'ship jumpers' lamenting how much better it was at Microsoft.

That's not a jab at Microsoft. I was just thinking there must be something there with respect to employee benefits, or maybe just employee treatment, that other large companies may want to look at.

Out of curiosity, are there any ex-MSFT employees here that could tell us what you like or dislike about MSFT? I guess the most illustrative ideas might come from knowing what you MISSED when you left MSFT. If anything.

<comment><USER12> I think Microsoft has had longer to adjust to the fact that they're not the new hotness and is probably closer to recruiting / compensating accordingly.

<comment><USER13> When I was interning at Amazon a little while back I was quite surprised to hear from Google interns how little they were being paid (in comparison, the salary is still respectable). I'd always imagined Google to be the type that showered you in money/perks simply because of their Googliness.

Turns out they rely on the "but we're GOOGLE!" schtick a lot when hiring.

<comment><USER14> I can't say much for full time employees, but I've heard the exact opposite for interns. The Google interns I've spoken with all said Google was their best offer as far as compensation goes.

<comment><USER15> I got internship and full time SWE jobs at Google. They're competitive. About the same as Microsoft (though, they have better insurance and different tax situation), I'd say pay is comparable (I am getting quite a bit of income out of the food lets say). All in the last two years.

</comment></comment></comment></comment></comment><comment><USER16> I strongly believe the "sweet zone" for headcount is somewhere around 200-500 employees. You can still make a difference, but at the same time you're not struggling with the day to day nuances of a 5-50 person startup. To sum it up:

You will get paid next week, you're no more than 2-3 levels removed from the CEO, and the fiefdoms don't have the coffers to squabble.

<comment><USER17> <http://en.wikipedia.org/wiki/Dunbar%27s_number>

<comment><USER18> That article mentions that Dunbar proposed 150, but the real count is probably closer to double that.

I think for a company, 150 is probably perfect. If the real number of relationships one person can maintain is 300, that grants an allowance of 50% of their maintainable relationships for both work and play.

<comment><USER19> That 150 number made me remember this nice, little compact, too nice story about Gore-Tex which was probably in 'The Tipping Point' (I don't remember):

"What is most unique about this company is that each company plant is no larger than 150. When constructing a plant, they put 150 spaces in the parking lot, and when people start parking on the grass, they know it's time for another plant. Each plant works as a group. There are no bosses. No titles. Salaries are determined collectively. No organization charts, no budgets, no elaborate strategic plans. Wilbert Gore - the late founder of the company, found through trial and error that 150 employees per plant was most ideal. "We found again and again that things get clumsy at a hundred and fifty," he told an interviewer some years ago"

<http://www.commonsenseadvice.com/human_cortex_dunbar.html>

<comment><USER18> Yup, that was The Tipping Point. Quite interesting...

</comment></comment></comment></comment></comment><comment><USER20> Google could be nothing, but disappointment from the way it's built up. It's seen as this magical place where work does itself and things flow so perfectly. The fact is that at Google, most people are going to have to slog away somewhat tedious things like making context ads match their page content 0.1% better. It's not all fun, change the world Gmail and such. Most of it isn't the interesting stuff that we see. That's not really what makes Google, Google. What makes Google what we see is that relentless pursuit of increasingly tiny increases in efficiency. Sure, they had great theoretical ideas like BigTable, PageRank, etc. but what made something like PageRank work was that they didn't stop - they kept making ever more tiny increases in accuracy in a way that could become quite tedious to program and test.

You also tend not to get a full view of things at Google. If you're in backend engineering, that's what you work on. I know that I like seeing the full product and knowing that I've worked on what the users are going to see.

<comment><USER21> "... most people are going to have to slog away somewhat tedious things like making context ads match their page content 0.1% better."

I'm not sure why you think that the 0.1% improvments are assumed to be a tedious slog. They may have required some seriously interesting new ML techniques just to get that extra boost. Recall the Netflix recommendation algorithm improvement contest that had teams working very hard to get those last fractions of a percent.

Small adjustments to a huge system can have huge impact: <http://norvig.com/speech.html>

</comment></comment><comment><USER22> Everything I read here I can relate to with big companies. It seems once companies reach that 1000 employee mark the culture changes drastically. I can also relate to how going from a private to public company can impact employee "life". Not that money is necessarily tight or the company can not afford the "perks" they once gave to employees as a private company, but with being public comes added scrutiny and greater sense of needing to be responsible with spending. The average Joe investor does not want to hear that employees are enjoying free meals when his stock drops $1.00.

On the other hand though, from reading these emails it seems most of these people went to work at Google with a preconceived notion that it was going to be different and that somehow Google was going to be this theme park environment. As with any job at any company it is what you make of it. If you take a job solely because you think you are going to eat/drink free everyday, have daily live entertainment, and going to work is going to be fun then you are taking the job for the wrong reasons. Work should be fun, but you need to make it fun and not rely on the company or the culture to make it fun for you.

As for salaries, while I do not know exactly Google's salaries, I would be willing to bet that they are extremely competitive. I do know that a starting salary is most often highly negotiable and the people that tend to complain about receiving a low salary are the ones who go in expecting to be offered some godly amount right from the start. The other thing you have to weigh is the benefits or perks in relation to the salary. For example, if you get to eat lunch and dinner free every day at the office then you are saving around $10-20 a day in food. That adds up to over $200 a month or probably around $3000 a year in extra compensation you are receiving. Just like the one person did comparing the job at Google to buying a luxury car with all the fancy options and extra cup holders, you have to compare the salary plus perks to your current salary with no perks.

I have been there, not with Google, but with a startup. I went from government contracting, to a small startup as a very early employee, and then to Microsoft, and back to startup life. I can say that once you are bit by startup life it is tough to move to a big company like Google or Microsoft and be truly happy. The culture is not the same and to expect it to be is ridiculous. That is why I am back in startup life now. It is fun, fast, and everyday is a new adventure.

<comment><USER23> It's actually $3,000 in after-tax (federal, state, and SS) dollars, so it is really closer to a $5-6,000 difference in base salary, as long as you are a glutton.

<comment><USER24> yeah, but it kind of sucks thinking about it as part of your salary, because then you feel like you're throwing money away if you don't stay for dinner every night. Sometimes you just want to eat with your friends and family.

<comment><USER22> yes, that is definitely a downside when you don't or are unable to take advantage of the perks. That is where negotiating your salary comes into play though. If you know that you are not going to be staying for dinner then negotiate up for that extra $2000-3000 to get it back.

i feel the same way about taxes though. I pay them and half the things they go to I never use. I wish I could negotiate them with them government better :)

</comment></comment></comment></comment><comment><USER25> I think you can substitute google for any other >1000+ company and most of this would ring true. Managing thousands of people in getting things done quickly and where people feel productive is a very hard problem.

<comment><USER26> There were a couple posts a while ago about the Semco management style which felt like a much better solution than the traditional vertical hierarchy. I would have thought Google would be a lot flatter as an organization.

<comment><USER27> Google is very flat by reputation, but that is not an unequivocal good. If your manager is also managing 50 other people, to the extent that you would benefit from management you are probably not getting those benefits.

<comment><USER28> All of the big silicon valley companies claim to be "flat." When I started at Yahoo!, all I heard about was how flat the organization was. Doesn't mean it's true.

<comment><USER29> Indeed.

The number of times a product idea was sent from an SVP to the divison VP who forwarded it to the group head of product who forwarded this with the note added "SVP wants this done by the end of the day" was more than I'd even like to think about.

</comment></comment></comment></comment></comment><comment><USER30> Employees normally quit their Managers.

<comment><USER31> This is a good point I think many people are overlooking. (Full disclosure - <USER2> work at Google now.) Your project matters too. People working for great managers on things like search algorithms, Android or open source initiatives are much more likely to love their job. People working for managers they hate on things like Orkut, ATS, or cross-browser compatibility testing are much more likely to leave.

In a company as big as Google, different employees can have very different experiences. When you read this group set up for employees who quit, you're seeing the least happy segment of the employee population. I know it doesn't work out for everyone, but I think the average Google employee really likes their job, and I would recommend working there to any programmer who was thinking about it.

Just my 2 cents.

<comment><USER32> I would imagine orkut dev is being done by Google India, otherwise it is gonna be frustrating, just like you can't make a shop in India work on Facebook: because none of your friends are using it!

<comment><USER31> Orkut was initially developed in Mountain View and I know for some people it was a frustrating job for exactly the reason you describe. I am not sure but I think it is primarily developed in Brazil now (where Orkut is very popular).

</comment></comment></comment></comment><comment><USER33> Is there a big company that has solved or at least significantly reduced any or all of these problems?

They seem to come with the territory, which is one of the reasons why startups always have a chance.

</comment><comment><USER34> I'm surprised by the comments about low salaries. From the public records, it certainly looks like Google pays somewhat higher salaries. The difference though is that there is a huge variance.

[http://envy.appspot.com/?q=microsoft|google&title=softwa...](http://envy.appspot.com/?q=microsoft|google&title=software&fav=)

The issue with reports like these is that it is a biased audience. It could very well be that only the people who had low salaries posted their comments on the website.

</comment><comment><USER35> "You will fail in a boring and project specific way"

Corollary: and then you will blame it on something else

I mean, who really quits their job because of the copayments on their health insurance?

<comment><USER36> The only reason I am considering leaving my job is compensation. I make around 2/3 of what I could at another companies now the benefits are nice but typical for large companies. For now I think it's reasonable but if they reduced the benefits so I needed to pay more out of pocket I would defiantly leave.

<comment><USER35> Sounds to me like you are already ready to leave. I'm guessing it's just the poor economy that is keeping you from wanting to search for another job right now.

<comment><USER36> No so much, I really like my job. I gave up 5k/ year to work here because it was prestigious and good for my career. Now I got a promotion, but not much of a pay raise so I could be making even more. But, I am surrounded by smart people, it's low stress, I work 40 hours a week, and I spend 90% of my time developing so it's nice.

</comment></comment></comment></comment><comment><USER37> This could be said for any company. I worked at company "X", where middle managers and coworkers pissed me off too. Desicions would get pushed around and I felt hugely disalussioned and ineffective. It's not surprising Google is the same way. What is striking is how quickly people left Google was. I've heard all the rest about low salary, but there bonus package is awesome if you're an engineer. So I've heard.

This makes me feel like I wasn't alone as a few people mentioned in the article. I think if you're ever to work at a large company again, you should set realistic expectations for what it is. It's great otherwise having the security, benefits and other amenities... but it's not for everyone as I suspect it wasn't for these people. Just as being at a startup isn't for the kinda people who find success in large companies.

<comment><USER38> I think most people have realised that there's no security at large corporations.

For recent proof, look at the thousands laid off at many large corporations (google, yahoo, ms, etc).

</comment></comment><comment><USER39> Its basically grass is greener on the other side syndrome...people have built up Google in their minds, and it just couldn't live up to their expectations

<comment><USER40> > _...people have built up Google in their minds_

If that was the case, shouldn't the exact opposite happen? The Subject- Expectancy Effect states that a person's expectations directly influences their views.

<http://en.wikipedia.org/wiki/Subject-expectancy_effect>

I don't think expectations has much to do with it. Very few people (Issara, Lilly) actually referred to expectations at Google. There is a recurring theme of employees complaining about management/bureaucracy, salary, hiring, and job satisfaction.

Even though you said "basically", it seemed to me like you are generalizing too much (sorry if I'm wrong and hypocritical). Some people (search for Aaron on the page) got a job there out of necessity, not purely open choice.

</comment></comment><comment><USER41> I would really be interested in seeing attrition rates for engineers and non- engineers. Sales guys are the revenue producers almost anywhere else, and as such, are favored in the way that Google stereotypically favors their engineers. I know that this was the Kirkland office, as well, and there's always something about moving from HQ to a satellite office that's probably captured in the sentiment expressed.

</comment><comment><USER42> It may be just me, but I was continually irked by the thread's subject line: "So… Why'd you left, guys? I mean, seriously."

I mean, seriously, it doesn't even make sensed!

</comment><comment><USER43> See also: Why Video Game Company Employees Quit

A lot of the reasons here are similar: disenfranchisement, low pay, long hours, crappy benefits (though this is not true at all for some companies). Also, unlike Google, there is usually very low job security and you sometimes have to accept a semi-nomadic lifestyle.

</comment><comment><USER28> _GASP_ A JOB AT GOOGLE IS A JOB?!!!

<comment><USER44> Lay off the caps lock and excessive punctuation, no need to yell around here.

<comment><USER45> Looks to me like the caps lock and excessive punctuation were intended ironically. Which may or may not justify them, but the problem isn't a failure to realise that there's "no need to yell around here".

<comment><USER44> The yelling will turn a polite conversation into digg. And sarcasm doesn't make it any less so, it actually compounds the problem.

</comment></comment></comment></comment><comment><USER46> I sure wish there was a NH filter that would enable me to /ignore any TechCrunch sourced articles…

<comment><USER47> The parenthetical indication of source domain after every submission to HN works pretty well for me. Some sources I ignore regularly, and others (TechCrunch is one) I ignore selectively.

</comment></comment><comment><USER48> >And let me say this: if Larry Page is still reviewing resumes, shareholders should organize a rebellion. That is a scandalous waste of time for someone at that level, and the fact that it's "quirky" is no mitigation.

Regarding this quote, I'm not so sure. Delegation and hands-off management is important and necessary indeed, and I loathe micromanagement no matter which end I'm on, but I think that hiring would be my most closely guarded and reviewed process. Employees are the weakest link, the ultimate valuation; you can have fancy processes or equipment or a lot of hype, but the real value of your company ultimately boils down to the work force -- the capability of yourself and the people backing you up to deliver, maintain, and evolve your money-makers.

I actually developed this concept while working at a medium-sized (revenue- wise) niche company. The company was impaired because nobody cared about the bigger picture; we were all just office workers doing our office jobs and trying to push through without killing ourselves. Inter-departmental relationships were tense and there was no cohesion or overarching social glue between the groups, and no understanding managers in between, which led to animosity between obviously less-valued departments and obviously more-valued departments. It was a sad place to work, but it only had about 200 employees. I found this sad.

There should be no peons; every employee is an important contributor (or the job shouldn't exist) and every employee should be well-screened and found to be competent for their position and somewhat like-minded with the rest of the force on foundational issues (i.e., no disengaged, uninvolved typical office workers, only people who generally respect but never fear management and direction, ideally someone who thinks the company's revenue generators are enthralling, etc.). You need the kind of people who will push things forward, the kind of people willing to call their managers out, people who will provide mini-revolutions in product and process development for years to come. People who cultivate conviction, respect, and love, and constitute best-in-class performers.

Your company is only as good as your people. Your "company" is a company, consisting of the company your entity employs and regularly keeps, not a soulless, faceless, independent, autonomous corporate machine. Any corporation operated at the "machine level" and not the "company level" is just a story in systemic and institutionalized inefficiency, corruption, and incompetence. Companies operated are breeding grounds for corruption and greed and their ugly consequences, and eventually begin to falter, and do so until someone cognizant of this takes over and starts to turn things around by bringing in new, high-caliber, high-vision employees and keeping them motivated in the right ways.

In autonomous corporate world, inefficiency and unhappiness are the hallmarks. In good world, employees and employers care about each other and care about their work, contribute and share openly, and push their sector forward, setting new records for morale, efficiency, innovation, and profits.

I think if I were Larry Page, I wouldn't waste time with BS like resumes, but I would interview every candidate, and refuse a permanent hire until I was confident that their thought process and personal style was conducive to the overall goals of a non-evil company.</comment>


The UK Court Sanctions Apple, Hopes "Lack of Integrity" Is Not "Typical" - <AUTHOR> http://www.groklaw.net/article.php?story=20121109130213229 <comment><USER2> No shit.[1]

"Apple. Your brand is being ruined by misplaced trust in a losing super- aggressive legal strategy."

I genuinely used to like Apple. I can actually remember regularly checking the website for the different gadgets I could buy. This was well before the Android v Apple "fan-boyism".

I switched off totally from the anti-consumerism that drives Apple. They make great devices that just work. I have no problems in borrowing an iPad for an hour, but they consistently take strategies beyond their products that have decremental effects to their customers and customers of other companies.

Who needs a third adapter for their phone (that will only work on iPhone5)? Who needs a different form factor for their SIM card so Apple can secure three year licencing deals with carriers? Who needs the walled garden of an App Store that prevents developers from releasing Apps that might cross over with iOS functionality... Who needs to write a book on Apple Software where the terms demand that they only distribute the book on Apple platforms[2]..

Put honestly, there is very little that Apple does that could be interpreted as being for the "better-ment" of people that aren't Apple customers. They take a "fuck"[1] everyone attitude that isn't a beneficiary of Apple stock.

I just think that this is a very toxic label for Apple to have against them.

Just to stress... I think Apple make great products, although I will never again contribute a single cent to anything that bears the Apple name. They have all but destroyed their brand that I once so sorely coveted (and this was a time not so long ago).

Who needs humility... Clearly, not Apple...

        [1] : I hate swearing. Apologies.
        [2] : This got changed shortly after considerable backlash.
        [9] : I need to stop writing so many "Apple" critical comments..
              If you look through any of my last 50 comments I'd guess
              perhaps 10 are Apple related. It's wrong of me that I consistently
              only comment on Apple posts.

<comment><USER3> I was the same way until one day, I tried to run gdb on iTunes, and gdb segfaulted. I did some research and found that Apple added extra code to the OS just to prevent someone from doing exactly that. They spent additional engineering effort just to lock me out of my own computer. (I still wonder what data collection they were trying to hide.)

Anyway, that was the day I deleted OS X and switched back to Linux forever. (I even ran Rockbox on my iPod until I replaced it with a $30 Sansa device with 10x the features.)

<comment><USER4> Playing devil's advocate here, but what's the media store like on your typical Linux distribution? The reason Apple has to go to such draconian measures is to please their content providers. Without doing so, you wouldn't have an iTunes store with such a wide variety of content.

Apple's margins from content sales are slim; they push content to sell devices. As they've shown with music in the past, they'll get rid of DRM if the content providers allow it. So it's not entirely fair to blame Apple for that one.

<comment><USER5> The content providers seem happy with iTunes running on Windows without such protection.

<comment><USER6> When Apple first signed on the labels, iTunes _didn't_ run on Windows. Do we know when these protections first showed up? Was it Apple's way of appeasing the labels before they gained enough mass that the labels couldn't ignore them?

<comment><USER5> I don't know about the debug protections, but according to Wikipedia's timeline, it was only a matter of 6 months between iTunes Store appearing and iTunes becoming available for Windows.

</comment></comment></comment></comment></comment></comment><comment><USER7> Watching this play out is hilarious. I'm not quite sure if it is schadenfreude, the morbid curiosity akin to that experienced from watching a snake eat a rabbit, or just the prospect of watching an 800lb. gorilla behave like a spoiled child, but I have a real feeling that Apple could end up fighting the UK court systems and losing, very, very hard.

I simply cannot believe that Apple's previous behaviour was sanctioned by its legal team. The idea of not just losing in court but then pissing the judge off...wow. There's a really childish part of me that hopes that Apple won't comply with this latest judgement just to see what the court does next. Monetary fines? Product bans? Executive jail time?

I believe that the best thing Apple can do now is fold, and grovel. However, I have no idea if they'll do that. I've said before in previous threads: the UK court system is much more invested in proving its own authority than Apple is invested in a silly argument with Samsung. And on that note, if you were Samsung, you'd likely be rolling in the aisles just about now.

EDIT: I see that they've complied. I see why, but I'm disappointed!

<comment><USER8> Why do you think the penalties for perjury and contempt of court are so extreme?

A large chunk of society hanging together and working relies on impartial but powerful judicial systems. It's one of those thin edge of the wedge situations. We don't want a system where people flout court rulings even if it's just about a notice on a website.

<comment><USER9> Also note: British judges and prosecutors are _not_ elected by popular vote -- they're appointed from within the system on the recommendation of their peers. So they're heavily invested in the authority of the judicial system itself, rather than in dancing to the electoral campaign paymasters' tunes.

</comment></comment></comment><comment><USER10> Apple is increasingly acting like a spoiled toddler who doesn't like it when he can't get what he wants.

<comment><USER11> I actually genuinely think they are slightly delusional internally.

They _really think_ they invented multitouch, rounded corners, that popularisation = invention, that their inventions are worth $30 per handset while everybody elses are worth $1, and that they occupy a special place in the world that exempts them from rules others must follow. Thus I don't actually see them in the "spoilt toddler" mode, rather more like an autistic adult person behaving rationally in a world that constantly baffles them because they have a different internal model of its rules. And I even see this as possibly essential to their success - you can't create products that defy conventional expectations unless you are slightly crazy - "the people who are crazy enough to think they can change the world, are the ones that actually do" truly fits. Of course, this doesn't absolve them of anything, now that they occupy such a position of power in the world they need to grow up and live in reality.

<comment><USER4> I'm not sure I agree with your analogies, but I think you're right that Apple really does think they're responsible for the spread of those technologies. There's no denying that they were a game-changer: all consumer electronics can now defined as "pre-Apple" or "post-Apple" just by looking at them.

The problem is that people disagree to the extent Apple should be compensated (or their ideas protected). More technology-minded people can see the roots of Apple's devices, and so think it's inevitable and all Apple did was "popularise" it, while others think that Apple's innovations were/are a stroke of genius, and without them we'd be floundering in a world of Windows CE and Symbian for the next decade.

The trouble is, no one's wrong. It's just a difference of opinion. And that's the patent system in a nutshell. People spend so much time arguing Android v. Apple that it's easy to lose sight of the bigger picture, which is that we're really arguing "how far can a company have a monopoly on an idea? and even if they did invent something, is it fair that they can impede the progress of an entire industry to protect that invention?" Because I can assure you, even if Apple was responsible for every chip and every bit in the iPhone, from concept to execution, people would still want Android, and people would still resent Apple for wanting a monopoly.

<comment><USER12> _...all consumer electronics can now defined as "pre-Apple" or "post-Apple" just by looking at them._

So the Braun T3 radio[0] and LE1 speaker[1] are definitely post Apple, right?

[0] [https://barryborsboom.files.wordpress.com/2008/10/172_721-ra...](https://barryborsboom.files.wordpress.com/2008/10/172_721-rams- ipods-1.jpg)

[1] [https://barryborsboom.files.wordpress.com/2008/10/mac- speake...](https://barryborsboom.files.wordpress.com/2008/10/mac-speaker.jpg)

<comment><USER13> You are comparing a radio and a speaker with an mp3 player and a computer. Not everything is design.

<comment><USER14> This whole deal is about design patents (or registered designs, depending on jurisdiction), basically the look of the box that the electronics are housed in; the content ot the box is immaterial in this respect.

</comment></comment></comment></comment></comment></comment><comment><USER15> I did not know that Apple's paper advert had been pushed back so late. I have seen a photo of one that appeared in the Guardian about a week ago [0] which as a reader I would skim over given the lack of branding and its similarity to adverts that try to appear part of the newspaper copy, yet have that tell-tale 'Advertisement' header. (These are common to all newspapers in the UK, big and small - maybe elsewhere also.) Skipping over these is something that regular readers naturally do and I expect the design is intentional.

I am very interested to see what their Nov 16th ad will look like. Given that it must appear in magazines as well as broadsheets it may be that the mags require it to have some sort of branding/style so as to not make the magazine appear cheap, unlike the image linked.

[0]: [http://www.v3.co.uk/v3-uk/the-frontline- blog/2222112/apple-p...](http://www.v3.co.uk/v3-uk/the-frontline- blog/2222112/apple-print-apology-to-samsung-hits-the-newsstands)

</comment><comment><USER16> What a mess this is on both sides.

Apple has reacted poorly, but if I were British I would be a bit upset that my judges were wasting time on punishments like this. The point is to punish Apple, so just fine them and be over with it. The end result is the same, just without all this drama in the middle.

EDIT: I'm going to retract my opinion here because a few good points have been made and I shouldn't have spoken when I was not 100% informed on the matter. Sorry!

<comment><USER17> I'm British, and I actually feel quite the opposite.

Apple sought to use UK courts to their own ends, and then threw a bitch fit when the ruling didn't go their way.

The judge is absolutely right to slap them down. You shouldn't get to pick and choose which court orders to respect, even if you're the richest company in the world. That's hardly the basis for a sound legal system is it?

Frankly, whoever authorised this reaction in the first place is a disrespectful idiot. They treated the UK like a fucking banana republic, and got reamed accordingly.

<comment><USER18> The judicial system shouldn't be able to force you to say anything you don't believe in, to your own customers, with no means of telling your side of the story.

Self determination is a sacrosanct right, and this punishment crosses the line.

<comment><USER19> UK resident: no, there is no 'sacrosanct right' here at all. If a company _chooses to take legal action_ in the UK, then they have to comply with what the court decides. If they don't, there will be consequences.

</comment></comment></comment></comment><comment><USER20> Poor copywriting. If the snark were written more precisely so that it couldn't be considered misleading, Apple would probably have been able to get the press points without being forced to put a large statement on their homepage disclaiming the previous one as "inaccurate".

<comment><USER21> Welcome back to being allowed to comment on Apple things publicly! Feels good, doesn't it?

<comment><USER20> It's fun being a fanboy.

</comment></comment></comment><comment><USER22> I can't even tell what's going on any more. All of this notice-posting is meant to undo the "harm" Apple has caused by saying Samsung copied the iPad, right? But the court insists that it never even touched the question of whether Samsung copied the iPad. Yet the same court is upset about Apple suggesting that Samsung did copy the iPad.

So, to sum up:

\- Apple said that Samsung copied the iPad;

\- the court wants Apple punished for saying that;

\- although the court never made any determination about whether Samsung copied the iPad;

\- and Apple is still forbidden from saying that Samsung copied the iPad.

Nope, still confused.

<comment><USER23> You're confused because you're trying to oversimplify.

Try reading the article again, the court case was over a registered design, not the iPad

<comment><USER22> Yes, but if you believe that Samsung's business incurred substantial damage from a perception of infringement, surely that perception would have to be "Samsung copied Apple's products", not just "Samsung infringed Apple's Community Registered Design No. 000181607-001".

Basically, if the case was "big" (over the issue of Samsung copying the iPad), then:

\- the court would have had to rule on whether Samsung copied the iPad; and, if it ruled negatively, then

\- Samsung could have claimed to have incurred a significant damage to its reputation after being smeared as a copycat, and

\- the court would have had reason to prohibit Apple from reiterating the copying accusations.

However, if the case was "small" (over the issue of Community Registered Design No. 000181607-001, and explicitly excluding the question of whether Samsung copied the iPad), then:

\- the court would merely have to rule on whether Samsung infringed that specific design, explicitly leaving open the question of whether they "copied the iPad" or not; and, having decided negatively, then

\- the damage to Samsung's reputation would have been insignificant, since (some) people care about whether they are copycats or not, and the court's decision on that specific registered patent does not touch the greater question, and thus

\- the court would have no grounds to prohibit Apple from saying: "the court ruled that Samsung didn't violate this specific registered design; however, we still believe that they copied our products, and here are a few other cases where they were found to infringe our IP".

You see what I mean? I don't see how you can have BIG damages, BIG punishment, BIG limitations on what Apple can say if you don't also have the BIG decision that would justify all that. And the court has said over and over that they have made no such decision.

<comment><USER23> Apple sues over the design. The design is not the design of the iPad.

Apple says 'they copy our products! See, look at this court case'

Case goes against them, they're ordered to apologise. They fail to stick to the terms and put a load of stuff around it that muddies the waters and talks about unrelated cases in other juristictions.

Judge gets annoyed and makes them take down the other stuff as misleading, specifically noting that they haven't even tested the question of the iPad, and that the decision in this case does not contradict decisions in other cases where this design was brought up.

And the court clearly does think it can make apple carry an unembellished statement, and they're probably right .otherwise I guarantee we'd be seeing appeals.

</comment></comment></comment></comment><comment><USER24> Serves them well. Stupidity (if not malice) has to have its price.

</comment><comment><USER25> Tim Cook, past-peak, Steve Jobs would never, bully, bullying, bullies, bullied, overpriced, one mouse button, luxury, ivory tower, arrogant, evil, marketing, finally.

<comment><USER26> Some manner of inside joke?

<comment><USER25> I figure that if you put all of the asinine and dipshit comments into one big one, it'll drain the swamp and allow for some actual conversation.

<comment><USER27> An interesting concept, but that's what the downvote arrow is for. And looking at your BS-magnet post, it appears to be working fine.

<comment><USER25> True. :) spend 'em if you gottem!</comment></comment></comment></comment></comment>


Beer Drinkers Guide to SAML - <AUTHOR> https://duo.com/blog/the-beer-drinkers-guide-to-saml <comment><USER2> The biggest problem with SAML is probably XML-DSig. The spec is ridiculously complex, but unfortunately the implementations are no better. You're de facto either using libxmlsec1 or the Java stdlib. libxmlsec1 is (anecdotally) a terrifying mess of C that most SAML integration libraries desperately want you to run in-process with your server.

There's a totally palatable mini-SAML within SAML waiting to come out. It already exists informally: it's whatever GSuite and Okta's default metadata.xml will give you, and it summarizes to "one signature, on the outside, no encryption".

You kind of need to do SAML, though, unless you don't care about selling to companies at all. Smaller companies may or may not be able to do OIDC, but pretty much everyone can do SAML. You just want to have someone else be responsible for the SAML laundromat part (that is: ingesting gross SAML from the Internet and translating it to a friendly consistent format, which doesn't necessarily have to be SAML too). For all its flaws, Cognito fits that bill, as does Okta.

<comment><USER3> > The biggest problem with SAML is probably XML-DSig.

I hope that I live long enough to read the book-length historical treatment of the late 90s/early-2000s obsession with XML. My personal opinion is that it set the industry back by a decade. It just blows my mind the amount of effort (time & money) which was poured into such a flawed architecture.

Ditto Java, really. The early-2000s vision was one great mass of Java & XML. Why we didn't stick with Lisp & S-expressions I'll never know.

<comment><USER2> I'm a lisper and dislike XML as much as the next guy, but XML-DSig seems like a fundamental mistake and sexp-dsig would not have been a better spec. All of the problems you get from in-band signing and encryption are still there--case in point, our blog post on how not to sign a JSON object[0] would be a fine spike on a blog post about why XML-DSig is bananas.

(One counterexample I can think of: you probably wouldn't do CDATA and comments the same way as XML did, which led to Kelby Ludwig's fantastic SAML auth bypass--which also gets a review in that blog post.)

[0]: [https://latacora.micro.blog/2019/07/24/how-not- to.html](https://latacora.micro.blog/2019/07/24/how-not-to.html)

</comment></comment></comment><comment><USER4> Great article but if I wanted to explain it to somebody in one sentence I'd say "It's like sign-in with google, but for enterprises", by "enterprises" i mean "more shit" \- xml/soap/overcomplicated kind of shit.

<comment><USER5> as the resident keeper of the keycloak (aka RedHat SSO) which can and does do both SAML and OIDC (what google uses) in our organization I only sort of agree. SAML is overcomplicated, but OIDC also has a lot of bloat, although it's more optional there. It's just trying to solve too many problems for too many parties at once. Back and front channel logout, your choice of symmetric or asymmetric crypto, at least 3 types of different tokens, and 3 ways to get subsets of them with various subtypes, depending on if you're a client application, a web application that can redirect, a web application that can't redirect, an app on a TV... Oh, and did I tell you about the authorization framework? With assessment servers? There's that too!

Thankfully in the real world both seem to be implemented in the absolute minimal way to get things working.

<comment><USER6> Cheers for keycloak, title pun intended :)

We use it for Solvent ([https://codesolvent.com](https://codesolvent.com)) login to product instances and it works excellently.

<comment><USER7> How have you guys solved "from scratch" configuration for keycloak? I've worked with it a bit over the years and I've never found a way to get it into a state I want programmatically without hacky bash scripts and modifying the json templates.

<comment><USER6> Maybe we got lucky with the configuration but we use the approach documented for the keycloak-saml-adapter with Jetty as the app server.

There is still a lot work done to ensure keys are generated in the proper locations and that necessary product id values (corresponds to SAML SP entityID) are generated.

In short, it is not a simple plug-n-play, lots of hacking to get the result we needed but the adapter itself does what it needs to do.

</comment></comment></comment></comment></comment><comment><USER8> What use does SAML still hold with the advent of OIDC? When building enterprise software, should I bother implementing SAML or is OIDC support commonplace?

<comment> levi-turner Anecdotal from my experience in Presales selling Enterprise software. Out of 10 enterprise segment customers: \- 8/9 would prefer SAML \- 2/3 have a compliant IdP which supports OIDC (ADFS needs to be v4.0 therefore run on Windows Server 2016+)

You'd be a fool to only focus on OIDC, at least for the next few years. As Azure gobbles up the Enterprise segment, Azure AD can be used to provide OIDC which will be nice. Though most admins who we work with are far more comfortable with SAML.

To be completely honest, the major of customers who are primarily interested in OIDC are coming from Google and/or GCP shops (which are few and far between).

<comment><USER9> In my experience with enterprise SASS products they mostly use SAML and most companies I work for use it. At the time I was trying to switch to OAuth or OpenID but the support was severely lacking for off the shelf enterprise software, especially older stuff. ForgeRock was also giving the identity management team issues so SAML was the only option.

</comment></comment></comment><comment><USER10> Thanks, this article made understanding the basics a lot clearer than other things I found recently when looking. I haven't had to configure an IdP or SP [yet] but application we work with does use SAML to authenticate, and I only have to make small configuration to that application side. Good to have a better, albeit very basic, understanding at least of what the Shibboleth IdP and SP are doing.

</comment><comment><USER11> I wish that SAML would stop being referenced as Enterprise oriented and that some SPs would stop providing support for it only in their highest payment tiers. As every company nowadays have G Suite or something similar, they almost certainly have an Idp ready.

<comment><USER12> It's the only thing that most SaaS things charge for now-a-days. Slack, Dropbox, Github Enterprise, etc. They know that regulated businesses have requirements to have SSO and things like this, so they can charge out the nose for it. You can go for a very long time with paying little to nothing for most of these services until you need SSO.

</comment></comment><comment> trey-jones Did something happen to Alice? Who is Stu? I have so many questions.

<comment><USER13> Bob enjoys Beer, Stu is a Software User who enjoys Salesforce.

Alice is just absent today.

</comment></comment><comment><USER14> SAML is not that common an acronym. Would it have killed to start out with a definition?

<comment> forgot-my-pw It's in the 3rd paragraph:

Simply put, Security Assertion Markup Language (better known as its acronym, SAML) is a protocol for authenticating to web applications. Federating identities is a common practice that amounts to having user identities stored across discrete applications and organizations. SAML allows these federated apps and organizations to communicate and trust one another's users.

<comment><USER15> It's also an incredibly common acronym.

<comment><USER14> I have been a computer nerd (now a neuroscience scientist nerd) for decades. I didn't know SAML.</comment></comment></comment></comment>


Qualcomm could be looking at banning iPhone imports into the U.S - <AUTHOR> https://techcrunch.com/2017/05/04/qualcomm-could-be-looking-at-banning-iphone-imports-into-the-us/ <comment><AUTHOR> This is going to be an interesting hard tussle.</comment>


Ask HN: Which software for monitoring single Linux server? - <AUTHOR> I need a software like Nagios, Shinken but is lightweight and design to run in a single host. I tried monit, but it seems to focus on services monitoring, running nagios plugin is possible but somewhat doens't feel right. <comment><USER2> What are you looking to monitor?

I wrote a shell script recently that sends memory, cpu and hard drive statistics to firebase.com every minute via a cronjob and a simple front end site to display the results in angularjs 1.x - for such few connections, firebase is free.

I run it on 7 of our servers and it's helped nicely

The shell script could easily have more added to it (status of httpd or nginx, mysql, etc...)

I leave it running on a 2nd monitor all day and with the data binding of firebase / angularjs it refreshes automatically so i just watch it out of the corner of my eye.

I could throw it on git for you if you think it would help you.

<comment><AUTHOR> That would be great. I want to monitor server resources, services status and functionality.

<comment><USER3> You may take a look at [https://ruxit.com/](https://ruxit.com/) Ruxit offers Server resource monitoring plus monitoring the applications served by the machine.

<comment><AUTHOR> It looks great, but I prefer open source software.

</comment></comment></comment></comment><comment><AUTHOR> I'm going to install nagios or one of its forks. Nagios feels outdated, but I can't find anything else fits my requirements.</comment>


How We Spend Money at Mattermark - <AUTHOR> http://mattermark.com/how-we-spend-money-at-mattermark/

<comment><USER2> A rent to revenue ratio of 15% is crazy for most companies, and downright insane for a startup that doesn't have anywhere near enough revenue to cover payroll.

For comparison, according to Cushman & Wakefield, law firms, many of which have space in expensive buildings with prestigious addresses, spent about 6% of gross revenue on their real estate in 2014.

I hope the investors who are funding these kinds of startups have some exposure to real estate funds that own commercial space in the Bay Area because that's where a lot of their money is going.

<comment><USER3> They are paying 49 dollars per square foot/year for a fairly cheap (as far as market rates go) 11k sqft office at 564 Pacific.

Rent to Revenue ratios make little sense for growing startups. It will change.

<comment><USER2> 1\. A Lamborghini Gallardo might cost less than an Aventador but that doesn't mean it's "cheap." _Nothing_ is "cheap" for a startup that's spending nearly three-quarters of a million dollars a month but bringing in well under half that.

2\. Rent to revenue is even more important for unprofitable startups. Investor-funded startups are at high risk of failure because it's far easier to spend money in anticipation of growth than it is to actually grow revenues. What's more, your investors are likely going to encourage this because they're playing a game in which a few big winners will hopefully make up for a lot of losers.

Just Google "Zirtual" for a recent, ugly example of what happens when you spend too much and investors refuse to bail you out.

<comment><USER4> Rent to revenue is a nonsense ratio for a VC-funded startup. For the first few months, it is likely infinity. Too high? No. Meaningless. What about the first month they make money? 400% sounds pretty high, too. Comparing it to other expenses or headcount could make sense, but comparing it to revenue just doesn't.

<comment><USER2> > For the first few months, it is likely infinity.

> What about the first month they make money?

Mattermark has nearly $300,000/month in revenue and several dozen plus employees. It's not newly hatched, and it's a fairly straightforward B2B play in which customers pay for access to a service.

At what point would you suggest that metrics like rent to revenue become meaningful? 10 years in? When its revenue reaches some meaningless, arbitrary amount? When NASA announces the discovery of extraterrestrial life?

Just look at slide 12 at [http://www.slideshare.net/DanielleMorrill/mattermark-2nd- fin...](http://www.slideshare.net/DanielleMorrill/mattermark-2nd-final-series- a-deck). Less than a year ago this company was projecting $400,000 in monthly revenue by June 2015. According to this post, it generated less than $300,000.

This is precisely why you pay attention to metrics like rent to revenue. "We're VC funded and the rules don't apply to us" doesn't work forever, and it often works for far shorter than expected when growth in revenue starts to lag projected growth in revenue and your spending has been based on projected revenue.

<comment><AUTHOR> Just to be clear re: Mattermark Series A deck slide 12 it was a goal based on our growth rate at that time, not a prediction.

<comment><USER2> First, I commend you for being so open about your company's finances. A lot of people don't really understand how venture-backed companies operate, so it's really helpful to have real-world examples.

That said, it doesn't really matter whether you refer to your financial projections as projections, goals, etc. What I would observe is that the growth in revenue you _targeted_ and presented to investors apparently has not materialized. At the same time, based on this[1], it appears your burn has doubled in less than a year, and your quarterly burn appears to be significantly higher than what you projected here[2].

This is a quintessential demonstration of what I wrote above: it's far easier to spend money in anticipation of growth than it is to actually grow revenues. I would add that it's usually doubly difficult for venture-backed companies to cut spending, even when it becomes clear it's the fiscally prudent thing to do, because it sends all sorts of negative signals to the investors you're going to be asking to continue buying into your growth story.

[1] [https://medium.com/@DanielleMorrill/is-my-startup-burn- rate-...](https://medium.com/@DanielleMorrill/is-my-startup-burn-rate- normal-882b2bd20f02)

[2] [http://www.slideshare.net/DanielleMorrill/mattermark-1st- ser...](http://www.slideshare.net/DanielleMorrill/mattermark-1st-series-a- deck)</comment></comment></comment></comment></comment></comment></comment>


Understanding Redux - <AUTHOR> http://www.youhavetolearncomputers.com/blog/2015/9/15/a-conceptual-overview-of-redux-or-how-i-fell-in-love-with-a-javascript-state-container <comment><USER2> > Basically, flux is like a sedan. It's a concept with many agreed-upon > characteristics associated with it, but it's not, itself, a tangible thing. > Just as there's no single definitive "Sedan" that you can go out and buy, > there's no definitive "Flux" that you can download and install. Instead, you > choose one specific implementation of it. I don't know much about cars, but > whatever the most minimal, stripped down, yet highly performant sedan is, > that's Redux.

Priceless.</comment>


Your Favorite Programming Language Sucks - <AUTHOR> http://pyskool.com/favorite-programming-language-sucks/ <comment><USER2> What about lolcode, whitespace, binary, and drawing on the whiteboard? They are powerful and fun.

<comment><AUTHOR> LolCode is a great language. I mention it at the bottom, with Brainfuck, as one of the few languages worth using

</comment></comment><comment><USER3> What about dead languages like Dylan?

<comment><USER4> Dylan is like Scheme

</comment></comment><comment><USER5> awk is missing. Best language ever.</comment>


UK homes to get faster broadband by 2020 - <AUTHOR> http://www.bbc.co.uk/news/business-42423047 <comment><USER2> Seems they are still using broadband in the term that its permanent on and 'faster' then a dialup. I personally consider 10 Mbit really the lowest lower limit of what i would consider broadband; 10 Mbit with todays web applications like youtube is not what i call high speed.</comment>


Where did my "share with me" tab in Google drive go? - <AUTHOR> http://www.position-absolute.com/articles/where-did-my-share-with-me-tab-in-google-drive-go/

<comment><USER2> I wondered the same thing when it happened.

My guess is that, "Incoming" is one word and probably looked more elegant to some designer.</comment>


The web2py book is out at Wiley.com  - <AUTHOR> http://he-cda.wiley.com/WileyCDA/Section/id-321954.html

<comment><AUTHOR> Here is the table of content and some sample chapters: [http://mdp.cti.depaul.edu/examples/static/web2py_manual_cut....](http://mdp.cti.depaul.edu/examples/static/web2py_manual_cut.pdf)</comment>


Ask HN: Dealing with clients who don't know what looks bad? - <AUTHOR>

To start, I'm technically a backend developer. I'm most comfortable tweaking and optimizing code to run milliseconds faster.  However, web design is still a hobby of mine and after adding Dribbble to my RSS feed I've gotten a lot better just by immersing myself with the work of great designers.
So now I have my first client ever, I'm 20 with no experience in dealing with them and I'm finding that he is insistent on pushing his own ideas that , to be frank don't look so great. I try to explain to him the issues but he seems to be ignoring them.  I've managed to work with him and create something decent around what he wants but it's hardly my best work or even something I'd be proud of.
Is this the fate of all designers, do I just have to suck it up? Or is there some way of satisfying the client as well as myself.
EDIT: Clarification, the design is not really for some functional or business website, it's the equivalent of a business card, it just displays basic information. It's more likely to be viewed by colleagues than consumers. It's fashion related so image is important. <comment><USER2> A/B testing with real customers (in this case, his colleagues) is the only way to resolve this. It's worked with my difficult clients and even more difficult partners. Just don't be surprised if your client's "bad" ideas win over yours. Oftentimes, industry-specific, historical reasons override the principles of good design.

</comment><comment><USER3> Unfortunately most people have an innate sense of what looks right to them. This looks awful to most everyone else. Design seems to be the art of discovering the small common overlap in the majority of people's "sense". To the uninitiated, this makes a good design based on their ideas seem empty and incomplete. It takes a lot of trust to accept that when your designer says it's done, it's done. The temptation to add the parts you think are missing is nearly overwhelming.

If you haven't built up this trust with this particular clinet, there is likely little you can do. Work with what you have. Make what suggestions you can. Accept that this time around the end result is going to be cluttered and clunky and that your client will think it's magnificent.

</comment><comment><USER4> When put in this situation I usually go down this list:

\- find something that is 'technically impossible' about the element(s) in question

\- find something about the element(s) that will "increase load time", even if it's only by a second or two. (telling clients that their site will load slower always gets their attention)

\- if available, use someone in the clients' staff/camp that agrees with me and have them do the convincing. Sometimes a client will think you're advising against element(s) because you're lazy or incapable. If someone they trust more is in accord with you, it helps to sway them.

if these or other tricks of the trade fail, I remind myself that 'the customer is always right', collect the check, and likely won't include the project in my portfolio.

</comment><comment><USER5> Learning when and how to convince a client their requests are stupid is a skill that comes with experience.

Sometimes it is possible to ignore or "misunderstand" a request that is not in your client's best interests. If they were really committed to their bad idea, you'll hear about it again. !This only works if you haven't already tried to convince them it's a bad idea!

And some clients you just have to suck it up. "It's their money," is a mantra I repeat to myself when I get frustrated.

</comment><comment><USER6> You have to figure out if its even worth your time dealing with the dramas clients like this bring to the table.

More often than not, it's not worth taking on clients like this, especially if you keep accumulating clients like this and end up having to deal with multiple people who behave like this.

My suggestion is to gently let them go as a client (unless you have a _really_ good reason not to) and focus on working with clients who aren't going to be a pain every step of the way.

</comment><comment><USER7> It's the client who has to live with the design. What you like is irrelevant. If you want it to be better, show them two versions. That's life as a designer...or a programmer:

 _"Do it both ways and see which works better."_ -John Carmack

[http://blog.kowalczyk.info/article/Carmack-on- creativity.htm...](http://blog.kowalczyk.info/article/Carmack-on- creativity.html)

</comment><comment><USER8> What if ugly design is something good - who's the judge?

<http://www.mrgreen.am/affiliate-marketing/the-ugly-truth/>

<comment><AUTHOR> You're right it is objective however I should clarify.

The design is not really for some functional or business website, it's the equivalent of a business card, it just displays basic information. It's fashion related so image is important.

</comment></comment><comment><USER9> If it's not too much trouble I usually present their version and a modified one that I think it's better, if they feel their version is the way to go, I don't even blink, they're the ones paying.</comment>


Pixar Image Computer: Yours on eBay for a cool $25K - <AUTHOR> http://www.tuaw.com/2012/07/24/pixar-image-computer-yours-on-ebay-for-a-cool-25k/ <comment><USER2> Some info on the specs is available on the Wikipedia page:

<http://en.wikipedia.org/wiki/Pixar_Image_Computer>

The P-II could have two Channel Processors, or Chaps. Each Chap is a 4-way parallel (RGBA) image computer. The chassis could hold 4 cards. Another model, the PII-9, could hold 9 cards (4 Chaps, 2 video processors, 2 Off Screen Memory (OSM) cards, and an Overlay Board for NeWS, the PostScript-based windowing system. The extensions added were to control the image pipeline for roaming, image comparison, and stereo image viewing. The PII-9 was the imaging engine for a UNIX host. This was a SIMD architecture, which was good for imagery and video applications. It processed four image channels in parallel, one for red, one for green, one for blue, and one for the alpha channel (whose inventors have connections to Pixar). It processed imagery in 12 bits per color channel (or 48 bits per pixel) and could output with 10 bit accuracy. The system could communicate image data externally over an 80M per second "Yapbus" or a 2M per second multibus to other hosts, data sources or disks and had a performance measured equivalent to 200 VUPS, or 200 times the speed of a VAX 11/780.

</comment><comment><USER3> "The seller says that he's unsure if it's in working condition as he doesn't have a power cord with which to power it up..."</comment>


A Linguistic Introduction to D3 - <AUTHOR> https://medium.freecodecamp.org/a-linguistic-introduction-to-d3-js-7a40a980bf97?source=friends_link&sk=9de00ebcc6ceffcb0570982ce1799660 <comment><USER2> I have a dataviz side project, and I'm curious to learn d3 to improve the web rendering. Right now I'm generating png images with matplotlib and showing those with <img>. It's very decent, but it would be much better with svg or html. The task looks daunting though because it sounds like what I actually need to learn is 3 separate languages: d3, SVG and javascript. Then redo all the fine tuning of styles and themes I did in plt again. A lot of work.

<comment><USER3> You could start by rendering static images in SVG as a first step?

Vega [https://vega.github.io/vega/](https://vega.github.io/vega/) or vega-lite [https://vega.github.io/vega-lite/examples/](https://vega.github.io/vega- lite/examples/) might also be good intermediate step.

Those are based on writing a declarative description of the chart(s) you want in a domain specific languag. They will be less flexible than d3, but should make it simpler to get good results as long as you don't want anything too custom.

Disclaimer: I haven't used them myself, but they are from the same university research group that Mike Bostock (d3 author) used to be in, and I have seen him plugging them.

You will likely find any of these approaches quite different to matplotlib. Hopefully in a good way.

Despite having suggested these alternatives, I would actually strongly recommend learning d3. It's _really_ good.

<comment><USER4> Thanks, I like how simple and concise the declarative code is!

</comment></comment></comment><comment><USER5> Can anyone recommend a data visualisation course that is based on D3?

<comment><USER6> Anything by Shirley Wu.

<comment><USER7> While she looks accomplished, it doesn't look like she does any teaching, so why recommend her?

<comment><USER8> [https://frontendmasters.com/teachers/shirley- wu/](https://frontendmasters.com/teachers/shirley-wu/)

</comment></comment></comment></comment><comment><USER9> Nice! Very timely for me too, I was just doing some D3 stuff this morning, and this very clearly explained what's going on under the hood.

I was definitely in the "copy/paste pieces of code from various snippets over at bl.ocks.org, cross my fingers and hope for the best." camp. It makes much more sense now.</comment>


Kindle Touch Gets World's Simplest JailBreak (And It Runs HTML5) - <AUTHOR> http://www.the-digital-reader.com/2011/12/10/kindle-touch-gets-worlds-simplest-jailbreak-and-it-runs-html5/

<comment><AUTHOR> Can someone tell if that means the Kindle Touch is basically Linux running WebKit with the Kindle reading app within Webkit? Wouldn't that make getting webOS into it a possibility? (Well, tech specs permitting...)</comment>


How the 'insecurity of things' creates the next wave of security opportunities - <AUTHOR> https://techcrunch.com/2016/06/26/how-the-insecurity-of-things-creates-the-next-wave-of-security-opportunities/ <comment><USER2> I believe Bret Victor said in a talk that we don't see civil rights violations and think, "Oh good, an opportunity"</comment>


Decoupling: Events vs. Dependency Injection - <AUTHOR> http://zef.me/5390/decoupling-events-vs-dependency-injection

<comment><USER2> Both have their merits, but personally I prefer the event based system.

There are solutions to the 'silent failure' problem:

1: You could have your event router 'do something' whenever an event is triggered which has no registered subscribers. That way, you will get some feedback at least. However, this feedback is still almost certainly outside of the current scope - you could solve this by registering some global 'unsubscribed event' handler. This solution won't solve the silent-failure problem fully, but it could reduce the number of places it's likely to occur, and at least give some feedback (somehow) when this situation occurs.

2: You could just be more careful during development - ultimately the problem of 'silent failure' only happens because the developer(s) have no idea what's going on inside their system. There is absolutely no reason why the 'saveRequested' event should ever not have at least one handler - and if that is the case, then it's still simply the developer's fault.

All that being said, I don't think DI is too terrible either. Swings and roundabouts!</comment>


Ask HN: When you meet a fellow programmer "in the wild", - <AUTHOR>

...is it cliche to ask them what language they program in? Is there a better topic of conversation? <comment><USER2> What kind of work they do is far more interesting than what language they do it in.

<comment><AUTHOR> Of course, but after that part...

<comment><USER2> Well after that part either you find something about their work interesting or vice versa, or you look for some other common interest, or you go your separate ways...

</comment></comment></comment><comment><USER3> Having met a few programmers in the wild, topics of interest come up and languages themselves aren't interesting. However, differences in languages, or where languages fail, sometimes come up.

Personally, leading with a language is superficial at best, and at worst, a crude filter employed to determine whether or not a person fits in with your objective or clique.

</comment><comment><USER4> This happens -all- the time at reddit meetups. We're clearly a group of mostly programmers and techy people, yet everyone describes their profession as "programming." I have to pry out what they actually do. That said, benologist has the right idea with asking what they do rather than how they do it.

</comment><comment><USER5> ...What a Geeky thing to suggest, talk about sports or women, brah.

<comment><AUTHOR> Whups, that did not even occur to me. But shouldn't you make an attempt to talk about your _common_ interests? ;)</comment></comment>