skysight-inc/HackerNews huggingface dataset:
Ask HN: Advice on client negotiation / process?
I am part of a small company (< 10 people) that does bespoke software development. We're having an internal discussion on how best to work with our clients.

In some cases we have a lot of success with an agile approach, involving the client in the development process, allowing them to change requirements, releasing often, and generally getting strong "buy in". Typically, these clients are happy with what we do, and understand "where the money went".

But we have problems with other clients - either they want to micromanage technical details, or demand compliance with contracts after we've spent time accommodating their changing requirements in other areas.

So I was tasked with finding possible resources that might help us deal with the more challenging clients. Unfortunately it's not clear what the problem is. Are we negotiating poorly? Or failing to involve them in the process? Or failing to adapt our process to what they want?

Any advice, or pointers to possible resources, would be appreciated... I realise the above isn't much to go on, so perhaps a good answer would teach us how to fish - how to go about diagnosing our problems better (rather than giving a simple solution as a fish - please forgive the tortured analogy).
Hi, I'm one of the authors. Thanks for your suggestion! We will indeed be making that modification, but wanted to err on the side of releasing early for any feedback.
A lot of the things you're claiming the Go designers chose off-hand one afternoon are really things they've liked and been doing for decades. Take a look at the Limbo programming language and you'll see a more primitive version of Go; it was written by a lot of the same people. Before Limbo, there was Plan 9's C dialect and its associated libraries, which have some similar elements. Before Plan 9, of course, these guys were creating Unix. Many elements of Go are the evolved preferences/decisions from people with decades of Unix development, such as:

> For example: how many spaces should we use? Screw it, we'll use hard tabs!

The only sane choice, and one that, again, goes back decades for these guys. You use one indent character per level of indentation. Boom. If you don't like seeing 8-wide tabs, fix your fucking editor. If you're worried about lining up all your code in perfect multi-line arrangements, maybe rethink your life.

> How should we handle dependency loading and package management? Screw it, we'll hard-code the URL to our dependencies in the source code! How to handle dependency versions? Screw it, we won't!

They should have never done the URL thing; it was a cute demo, but people took it as some sort of commandment to write code that way. If you want a real, stable set of dependencies with control over which version gets used, you should do what C and C++ programmers have done for decades and include the appropriate dependency source code in your distribution. Brad Fitzpatrick (core Go author) does that for Camlistore: https://github.com/bradfitz/camlistore/tree/master/third_par... and I do it for my own projects, if they're more than a quick test.
Prolog: like (to see on the list at least :P)
I believe it's actually a reference to the general expression "There ain't no such thing as a free lunch" and has little to do with the computer science theorem of a similar name.

(https://en.wikipedia.org/wiki/There_ain't_no_such_thing_as_a...)
What really fascinates to me is that it tends to all be the same people.

They may not do it for everything, but the same person who's "skeptical" of climate change is also likely to be "skeptical" of the link between HIV and AIDS and of the health risks of tobacco. Beyond this, I've seen it cover everything from the health risks of bad diets to the safety benefits of seat belts and air bags in cars to the source of underground petroleum to whether evolution is true.

And no, I'm not doing one of those things where I treat the opinions of a large group of people as a single block. I've seen all of the above in a single person.

There is some kind of strange mental switch flipped in some people that somehow makes weird contrarian theories attractive.
Picking holes in the BBC article, are we!

The BBC article is about the history of VR headsets hence it includes a mention of everything that went before - simples.

This new fangled headset does not solve the problems - 1) motion sickness and 2) nobody wants to wear these things in their front room. As a consequence it is only going to appeal to a few gamers rather than suddenly persuade millions of people that do not game to rush out and buy VR headsets.

If 2) wasn't the case then, given how high resolution panels have been available for quite a few years in affordable phones, we would have headsets for a wider range of non-game applications - e.g. watching 2D/3D movies, watching porn and taking photos. There are a few of these more basic headsets out there but nobody is queuing up for them and none of the big companies are desperate to sell them.

I wasted at least one whole summer playing the original Elite and the top 3/4 of the screen was black and white, mostly black with an occasional wireframe model of some space ship. The lower quarter of the screen was four colour and even chunkier graphics than the top due to how Bell+Braben did that cool mode 0/2 switch that had not been done before on the BBC Micro. I can still remember most of the hot keys - S, X, <, >, H for hyperspace...

Elite was truly the most original and innovative game ever. In terms of rocket science and pioneering innovation it was in an entirely different league to this new fangled VR headset which is not really anything more than a mobile phone strapped to some ski goggles.
Because they don't go to the mailing list. For a lot of OSS communities, if it didn't happen on the list, it didn't happen. That's certainly how it is in all the big projects I've interacted with. I'd LOVE for a way to cc a mailing list on all PRs to a project, but that's not possible AFAIK.

Most PRs I reject with "this should be a patch sent to the list" simply because I'm not always the only one that should review something.
I assume the video at the top is of a smaller prototype?

Making something that flies on solar power is not that hard, but I wonder how they are going to deal with mechanical and electronic failures.

On the timescale of years, something will break or crash, or suffer from PEBCAK

"you’re paying some dude to watch the payload and make sure the aircraft doesn’t do anything stupid.”
At that height you can see the curvature of the Earth. For perspective here is a picture:

http://imgur.com/I5qQA3D
EDIT:

Fair point. The max height on cumulonimbus clouds are 60,000 feet[0]. Effectively there is zero weather.

[0] - http://en.wikipedia.org/wiki/Cumulonimbus_cloud
Every time someone bases their opinion of PHP on a DSL from an open source project or from inherent language 'design flaws' that affect a few edge cases, you improve the PHP gene pool by exactly one.

Thanks! :)
Must be Birds vs. Drones day on HN:
http://cl.ly/image/3F0v1f2l3j0Z
... the truth is a trojan horse now? Seems an odd complaint to make. I'm in no danger of running back to church because of this essay.
I never took the real test, but according to random online tests in the same style, I get discordant results. Personally, I would think I.
Or Vlasic pickles:

http://www.fastcompany.com/47593/wal-mart-you-dont-know
I think you're pretty spot on in your analyses though. We use static sites for our landing pages (currently using Jekyll, Grunt & S3) and I can't see a real reason to switch to something like this.

From a business standpoint I worry Forge will have a really hard time building a sustainable business off of $10 / month / user. That's a lot of users they'll need to build something profitable. There is likely room here though for add-on services or some unique features.

Curious to learn more about TurboJS as well.
Given the performance gap (16 times more RAM, etc) I suppose software emulation was an option, a bit like rosetta.

The first version of PS3 had an hardware support for PS2 but following versions had software emulation: http://en.wikipedia.org/wiki/PlayStation_3_models#Model_comp...
So what crypto software HAS been sufficiently audited, and who audited them? Can we call upon them to audit TC as well?
Preloading images for hover states
Poll Everywhere looking for DevOps, Ruby, Native App, and CoffeeScript engineers
Apple iBooks lawsuit by the US government is relevant here. Book publishers and Apple made a deal to change pricing to an agency model, where the publishers dictate the price. The US government sued them on the basis of anti-competitive price collusion. This slapped Apple and let Amazon go back to it's race-to-the-bottom pricing. In fact the US government is right that Amazon's methods are the essence of a free market. They are just bad for every other player and lead to Amazon expanding it's market share and thus making Amazon more of a monopoly.

Very interesting twist.

It gets bad for consumers if:

1. Once Amazon has all the market it raises prices.

2. The price pressure on manufacturers, publishers, and other producers of goods causes those businesses to fail and stop making their products, or to produce lower-quality products.
Java isn't new anymore. It wasn't really groundbreaking even when it was new in 1995:

* Object-orientation: Simula-67 mid 1960's, CLU 1974, Smalltalk 1980
* Garbage collected memory: In Lisp since 1959 !!
* JVM: UCSD Pascal had a similar idea in 1974.
* Syntax: Java's was a basic evolution of the Algol-68 -> C -> C++ chain
* Performance: in 1995 Java was too slow and too big
* Write once, Run everywhere: other than assembly language, all languages strove for this.

Nothing in the language was that special. Most of it's features weren't new, but it went on to be one of the most important programming languages because the engineers at Sun had put together a good, solid, language on a good, solid, implementation. They had a vision, largely realized now, of a language to support professional software developers. It is now very fast, the size of it's run-time doesn't seem so significant in 2013, it's current garbage-collector is state-of-the-art, and it's eco-system of libraries and frameworks is now unsurpassed.

Java may have already peaked. This doesn't change the fact that it has been so important and that experiences with it will shape the future of software engineering. I was impressed with Rob Pike's talk on the Go language: "Language Design in the Service of Software Engineering" [1]. It seems to me that Java's success was driven by largely pragmatic thinking and that the designers of Go are now attempting a similar path to success.

Public service announcement: Don't squabble. If you program in C, be happy, your language is the very best for embedded systems and kernel development. If you program in C++, be happy, your language is the very best for developing programs that deal with complex data structures and must run as fast as possible while using memory efficiently. If you program in Objective-C, be happy, your language is the very best for IOS and Mac OS X programming. If you program in C#, be happy, your language is the very best for developing Microsoft .NET applications. If you program in Python, be happy, your language is the very best for rapid prototyping and exploring big-data. If you program in JavaScript, be happy, your language is the very best for client side web programming. If you programming in Haskell, be happy, your language is the very best for exploring reliable software through detailed specification of types. If you program in Ruby, be happy, your language is the very best for putting together Rails apps (and yay, it's getting faster). If you program in Lisp, be happy, your language is the very best for getting the most out of Emacs. If you program in Visual Basic...be happy, there are better languages you can learn.

[1] http://talks.golang.org/2012/splash.article
Somebody else posted a link to this graph from the publications that shows results for different movement patterns actually observed while the birds were in the summer colony: http://www.nature.com/ncomms/2013/131008/ncomms3554/carousel...
'Why are you wasting my life?' and other Jeff Bezos gems
For integrated Google Apps: https://addons.mozilla.org/en-US/firefox/addon/integrated-gm...
Ideally we'd be looking at Cyanogenmod fully and easily supported on Chromebook hardware, but they seem busy enough, and until then this might have to do the trick.

The real problem is finding a laptop that isn't built like crap, and I would doubt anything of this nature is going to change that.
Is it really fair to lump Jared Diamond in with Malcom Gladwell? Diamond writes about a career of firsthand research, and has won a Pulitzer prize. His field of study (traditional societies) is by its very nature shrinking daily, and requires serious dedication to observe firsthand. In contrast, every single human on earth has experienced a difficult assignment. So yes, while both Diamond and Gladwell overgeneralize based on a small sample size, Diamond's pool of potential samples is orders of magnitude smaller.
If Amazon loses it's tax exempt status in all jurisdictions it may well also lose profitability - the long term plan of cornering an unprofitable market is still unprofitable.
Agreed, though as others have noted, if you're capable enough to build the static site in the first place you probably get the zip & deploy stuff.

Forge is probably better off selling this to designers or agencies and giving them some multi-site controls.
Here's my line of thinking: Right now, we're essentially conditioned to the premise that when something is sailing through the air, the general gut instinct for what that UFO might be is usually limited and pretty reliable. There's a certain predictability to mere birds, baseballs, kites, balloons, et c...

When it isn't one of those ordinary things, that certain predictability pretty much goes out the window. I don't find the idea of adding remote control aircraft to my list of normative conditioned responses to flying things particularly appealing.

In my gut, I have an instinct to smash mysterious flying things that I perceive as threatening, regardless of how rational that perception is. When a bug flies too close to me (and especially my ears), my reptilian brain takes over, and demands swift, brutal action. It's that same sort of fear that Hitchcock tapped into with The Birds.

I grew up around farm fields with crop dusters, and those didn't bother me growing up, because I could see the guy inside the bubble dome cockpit, and wave to him, and he'd wave back sometimes, right before dive-bombing potato beetles with insecticide.

But take away the pilot from that equation, and I don't feel the same. The degree of investment from my conscience changes, and the air craft enters a new realm of human perception. It's private property, sure, but it's set in motion with uncertain intent.

When people make sport of these unmanned flying things (and they certainly have: http://www.theguardian.com/world/2013/jul/18/colorado-town-p...), I understand the sentiment of that stance. It's something mysterious flying over your head, and at a personal level, that taps into some specific emotions that aren't easy to part with.
The majority of Internet companies operating at scale likely have services running on the JVM. They might be writing Scala – Twitter, LinkedIn, say – but it's still the Java ecosystem.
Oh, I might be getting VBA confused with VBScript then. I know VBScript only allows you to crash or just continue on an error, whereas full VB6 lets you On Error Goto Errorhandler and you can provide an Errorhandler label for your error code.
Yeah, that one perplexed me. I don't think anyone can deny Java's usefulness. I guess a lot of the hate is from people who find Java useful but still annoying. For my part, I don't think it's bad at all. When I use Java, I miss conveniences like `people.map { |p| [p.name, p.address] }`. But in exchange for typing more characters, Java gives me a huge ecosystem, good docs, effortless cross-platform coding, and pretty much the only hassle-free GUI API.
You are not supposed to drink water off the tap (well, actually you can, if you don't value your kidneys in the long run), you are supposed to filter it through $40 device or boil it, then you can drink it. That's something that everyone does, I don't see this problem, like, at all. I dunno why restaurants charge for water, maybe because they can.
According to the page, fixing individual vulnerabilities won't typically be rewarded. This seems like it's for more systemic fixes, like improving privilege separation, security at the memory allocation level, etc.
Google switched the search to SSL and now nobody gets referrers for Google searches anymore.

You're barking at the wrong tree. Google purposely killed referrers using a intermediate page. If you see this[1] answer on webmasters.SE, they use make the browser pass through a /url redirection page that doesn't have the keywords in the URL. This works in both HTTP and HTTPS.

[1] http://webmasters.stackexchange.com/a/47027
> Also, GCs have other advantages, such as a much higher memory allocation-reclamation throughput than any general manual scheme

A benefit of using C/C++ is that you are not limited to general schemes. If you have an allocation/deallocation hotspot, you can use more specialized schemes like arena allocation, which will beat a GC handily.

Also, latency and predictability are often more important than throughput. GCs fare poorly on these counts.

> forget about safepoints - C++ doesn't even have a memory model, or didn't until C++11

Aka it does have a memory model. And one of the points Doug Lea made in the talk you linked is that the Java memory model is actually broken and no one knows how to fix it, whereas C++'s is not (though it's broken in ways that apparently don't affect anyone).

> Also, if you think you're not "giving up control" in C++ (or C; or Assembly), then you're sorely mistaken. You have little or no control over ILP, prefetching, branch-prediction, outstanding cache misses and all the magic modern CPUs do at runtime.

This is a tired and weak argument.

A mispredicted branch costs 5ns. A main memory reference (cache miss) costs 100ns. And you actually have a lot of control over these things; you can make your branches more predictable and the working set of your tight loops smaller so it will fit in cache. And there are actually instructions that give control over prefetching.

A Java GC pause on the other hand is often on the order of 200ms. That's six orders of magnitude in difference, and can be even longer in degenerate GC situations. There is really no bound to the worst case.

The loss of control also comes from the fact that the effects are highly nonlocal. If your C/C++ code is in a tight loop, the microarchitectural effects are mostly a function of your own code and its behavior. But whether a safepoint triggers a GC pause in Java is a function of the entire program's behavior.

So you really can't equate these two things. Java's loss of control is many orders of magnitude larger and less local.

> But this inlining capabilities of the JVM is why it often outperform C++ even in single-threaded code.

I don't think you've made this case at all.

> All in all, Java usually comes up ahead in large codebases

Coincidentally it is large codebases where it is most difficult to compare apples to apples, because it is so unlikely that you can really get two large programs that do the same thing with the same design. I'm deeply skeptical of this claim.

> and falls behind in specific use cases (mostly numeric HPC).

Java falls behind it tons of cases. It loses in nearly all of the benchmarks game, only some of which are numeric: http://benchmarksgame.alioth.debian.org/u64q/java.php It loses very badly in this benchmark published a few years ago by Google, which is not numeric: http://static.googleusercontent.com/external_content/untrust...

Given comparable programs, C++ is nearly always faster. You really haven't offered any evidence that contradicts this basic fact. The only benchmark you cited didn't even have any C++ programs in it.
So… bottled water is superior? I thought it's essentially filtered tap water…
My intention wasn't really to mock Gladwell, but the act of throwing out the snippet of "10,000 hours" as a way of saying "I'm smart, I've read this book, here's a snippet of it to prove I 'get it'".

This isn't really specific to Gladwell and also comes up with memes that aren't so closely tied to one of these "insight porn" authors.

Other examples:

People invoking Betteridge's Law, or the Dunning-Kruger effect, or "You aren't Google's customer, you are Google's product", and other such bits of techo-folksy wisdom that aren't wrong or even inapplicable to the context of the conversation, but which get beaten to death on places like HN the way that "the old reddit switcharoo" or recursively-circlejerky meta jokes get beaten to death on reddit.

I should point out that while I was mocking this sort of thing, I know I'm totally guilty of participating in it myself, both the HN version (on HN) and the reddit version (on reddit).
Sorta?
http://aws.amazon.com/cloudhsm/
For reasons why people dislike certain programming languages see "What is the worst programming language you ever worked with?"

http://stackoverflow.com/questions/961942/what-is-the-worst-...

I asked this on SO because I'm interested in flaws in language design. I found lots of weird language quirks in the the answers. I'm not sure if the vote count is useful information, but PHP got most up-votes and Lisp received the most down-votes.
“I wrote FAT on an airplane, for heaven's sake”
> No SSL stuff. Not much encryption stuff. And worse of all in their mozilla IRC channel those guys said writing such things should be left to experts, that people should always use the C libraries with rust.

Over in D language land, we've actively discouraged people from rolling their own encryption libraries. We strongly recommend people use standard, vetted libraries like openssl if they are serious about needing encryption. D can interface directly to C libraries.

I don't see it as a language issue at all. It's more like there are so many subtle issues with doing encryption right that one should be standing on the shoulders of giants rather than starting over.
I think there needs to be some regulations in place. As a photographer I love the idea of getting a drone and taking arial shots. The gps enabled, easy to fly, set to hover in place is very cool. but...

They can be dangerous and can fall out of the sky with disastrous and fatal results.

http://gothamist.com/2013/09/06/teen_killed_by_remote_contro...
I suppose these are likely to be security fixes, but it's really nice to see a change in attitude. You can have fixed a security bug before anyone knows it exists by fixing up areas of code likely to contain bugs.

This also widens the group of people who can submit fixes, since you can fix something that looks a bit dodgy without having to prove there is a particular exploit.
Fire the difficult clients. That is, finish your current project as best you can and don't take on new work with them.

There are a lot of good clients out there hungry for good work and working relationships--don't spend more time with bad clients than you have to.
> If you're worried about lining up all your code in perfect multi-line arrangements, maybe rethink your life.

But...`go fmt` does this for you :-)

type Magic struct {
CastingCost string
Id int
}

Even though I'm not really a fan of the choice myself.
Samsung Galaxy Note 3: What is it Good for?
Most, if not all, of these people are criminals in the past, who'd been given decades in prison if properly investigated, but are now respectable gentlemen.