skysight-inc/HackerNews huggingface dataset:
The problem of bad software is too big for one post, and there are multiple causation, of course. Mostly it is incompetence, over-management, pay per line of code in a 9 to 5 shifts, while the resulting product is not anyone's problem. It has something to do with forced collectivization and wage labor, while everyone concerned only with oneself.

The good analogy is with writing a poetry and professional writing in general. There are many examples of technical and scientific books produced by two or free authors (they could list ten, but actual work was done usually by no more than a couple). But we haven't seen any decent book produced by a mediocre writers on 9 to 5 shifts. The idea that this will work for programming is very naive one.

Another analogy is engineering, which is also done by few capable individuals with help of others. There are nothing but failures when mediocre groups trying to engineer anything. On the contrary, we had lots of things invented by capable individuals, things that later were polished by later generations.

So, if one looking for an example of good software look at individuals, or small groups lead by one capable visionary, and avoid anything created in sweat-shops. Most of the really good software we have (Lisp, C, Unix, Plan9, Emacs, vi, nginx, redis, postgres, Informix, etc) was created by an individual effort of men of unusual capabilities, and then polished by community.

Good software engineering is as rare as good poetry, and it cannot be produced by any amount of a manual labor.

There are people who can sell you products and solutions, even ready processes which, they say, will guarantee that you can create good software employing mediocre coders in 9-to-5 shifts. It is all Java or Scrum scams is all about.

It is not tools that create software or invent things, it is minds, the same way no typewriter or fountain pen could make one a poet.
their site is down now.
CREATE THE WORLD’s HEALTHIEST DESSERTS
Is Poke Proof That The Facebook API Is A Trojan Horse?
It seems to be common belief in startup land, that if you're smart and lucky enough to build a wildly successful consumer product, by the time competitors (particularly the 800lb gorillas) copy you, your network effects, market ownership, and brand will help insulate you.

It's why, I imagine, Foursquare still exists after Facebook places, why Facebook bought Instagram, and honestly why Facebook even exists in a world of Google's and Microsofts.

But what if at the genesis of every single new product, startups began feeding real time access to their most important stats to those 800lb gorillas? What would happen? Well for a while the big guys might ignore the data and scoff at caring about some insignificant startup numbers.

But then one day one of those startups would probably become really successful. Billion dollar acquisition successful. And all of a sudden the minds that be at the 800lb gorilla would say to themselves - "Wait! Why are we waiting for companies to be big enough that we need to pay $1B dollars! Why don't we just start buying or copying products as soon as they have really high engagement and growth rates before they come close to owning the market?"

And this seems to be exactly what happened with Facebook and Poke. Facebook has acknowledged [http://techcrunch.com/2012/12/21/mark-zuckerberg-voice-of-poke/] they tried to buy Poke a little while back, and when they were rejected decided to build it. And it seems to be working - as of right now Facebook Poke is now holding the #2 spot in the app store, while snap chat is #5.

This is in no way saying Poke has won, but if i were the SnapChat team I would be concerned. In fact, I think anyone that uses the Facebook API should be. I am. The Facebook API is an amazingly useful and powerful tool, but this is an issue that needs to be discussed, and the ramifications need to be understood. Because right now Facebook clearly seems to understand them, even if we don't.
The Retail Shopping Experience: Start on mobile and finish on desktop?
+1 for promises based exception handling. I have used Q for a number of applications. Q really simplifies error handling and by chaining error propagation forward to asynchronous result consumers.
This guy shits all over his credibility by turning it into a language war. He clearly is out of his depth on the Haskell issue, and I know credible people who think highly of q and kdb (which are rare outside of finance, but ubiquitous in finance).

That said, he's got a point, but the only solution he gives is "Include some comments!" I've seen so many shitty comments that I really think this is no advice at all.

Four levels of software maturity. (There are others. This is a simplified model.)

Level 1: Your work doesn't exist until it's in version control. It might be amazing to 2012-era programmers that this could be controversial, because even the laggards have reached L1 maturity, but at one time, it was. (See: the Joel test.)

Level 2: Your work doesn't exist until it has tests at multiple levels (e.g. unit and integration). Otherwise, it has no enforced semantics.

Level 3: Your work doesn't exist until it has well-documented semantics in addition to the tests, which cannot cover all cases. Otherwise, how does one even decide what a "bug" is?

Level 4: Your work doesn't exist until you've provided the resources (e.g. a code walk or an interactive module) to teach people how to use it.

If you're at Level 1, you won't lose source code. If you're at Level 2, your breakage rate will be reduced, and you can run CI. At Level 3, your system integrity will remain decent because you don't end up with those software-as-spec modules that, over time, corrupt the whole system.

Guess what? It takes Level 4 to get good code. Unless there is a culture of teaching (incremental code reviews are not enough) within the company, you will not have good code for very long. Since engineers are intolerant of context switches and in-person teaching doesn't scale, the teaching should be automatic. Interactive modules or, at the least, code walks should come with the technical asset being demonstrated. If people don't know what they are looking at, then how can they be expected to review or maintain code. With the worst code, it's not even clear why it's bad. It's just incomprehensible.
I've also heard that in rare instances, 青 can also mean black.
Ask a tetrachromatic woman: http://en.wikipedia.org/wiki/Tetrachromacy#Possibility_of_hu...
My favorite part about this site is the plethora of innocuous edits from people obviously bored at work, like typo corrections in the Amazing Race article written by someone working for the CIA, and other boring shit like that.
I think if one is going to have a war or be at war, it's reasonable to use a method which tries to minimize 'friendly' casualties first and e'enemy' collateral damage second. Ie. does it reduce 'friendly' casualties? Does it reduce collateral deaths on the other side? I think the answer is yes to both.

I think drones reduce both and as such are a good thing, if one is going to be at war. Recall how in VN the VC suffered 2million casualties? Lots of that was due to collateral damage. Or in Afghanistan how the Russians decimated the enemy? That's traditional warfare.

The issue with remoteness and 'coldness' is an attempt to make this approach less palatable (appeal to some kind of war ethics?) on the other hand, if we were sending personnel on foot (a la vietnam) and people (soldiers) were dying by the dozen daily, people would feel aggrieved too (naturally).

Therefore I think what people should protest is 'war' not just a 'kind of war' because, to be honest, this new kind of war, if there needs to be one (and that's debatable of course), has its advantages over traditional (and that's becoming less traditional) warfare. It's less bloody and incurs less collateral damage is more targeted and effective.

So I think psychologically perhaps UAVs seem asymmetrical and unfair to a technological backward foe but realistically, they are at a huge disadvantage in traditional warfare anyway.

As weird as it sounds, I think UAVs are more effective and antiseptic than traditional warfare and thus 'better' as compared to boots on the ground.
Regarding your example, I think that one part of the problem (which you mentioned in the first paragraph of your comment) is that you are still a novice. I cannot claim to be an expert in FP or Haskell, but here's how I would go about your problem.

First, I think your problem really has two tasks to perform: getting a list of files that don't exist, and selecting only a part of those inexistant files. It would make sense to decompose these two tasks into two different functions, and since Haskell has non-strict evaluation, we don't have to worry about generating too much data (list of inexistant files) for nothing. Starting with the function to select inexistant files:

inexistantFiles :: [FilePath] -> IO [FilePath]
inexistantFiles files = filterM (\f -> doesFileExist f >>= return . not) files

Some Haskellers may prefer to write their functions completely point-free, but I like to have my variables in the code if it helps me read the coder better. And then we can write another small function to select only the `n` first inexistant files:

takeInexistantFiles :: Int -> [FilePath] -> IO [FilePath]
takeInexistantFiles n files = takeM n (inexistantFiles files)
where takeM n = liftM (take n)

(Surely, we'd prefer to just write `takeM` and call it directly on the result of `inexistantFiles`, but I prefered to go with the specialized function.) Someone who knows Haskell better than I do could certainly come up with a cleaner solution, but I think the code is readable, solves the problem you mentioned and isn't any harder to understand than the equivalent imperative code.

Have a Merry Christmas!
> What is so special about a to-do app that can't be done with paper or a plain old text file?

I'm not here to attack or defend to-do apps, but regarding your statement, the utility of software rarely comes from the specific things it can do, but how it does them. There's usually non-functional differences.

What can be done with Python that can't be done with assembly? Nothing, but (for most cases) you can do it quicker and easier.

What can be done on an iPad that can't be done with a desktop computer? I doubt there's anything that you can do on an iPad that couldn't be done, in principle, on a desktop computer. The difference is portability and stuff like that.
Unlimited email isn't free. Since limited amounts of synchronized storage is free, I'd say we are there today. It's a quantitative difference, not a qualitative one.
4m * $10/mo is about $500MM/year or 10x-20x valuation, or 8x the valuation in the article $4bn. Is that so out of whack?
Just about anything and everything can be broken down this way; in fact I struggle to imagine something that is incompatible with this! The author of this piece even fails to give any examples of what he means by something that couldn't be broken down.

Any chunk of work that pushes the limits of your brainpower is hard to break down into pieces.

For example, coming up with a Mathematical proof. You might be able to break the problem down to some extent, but there's a lot of time spent just thinking, and it's very difficult to predict how long solving a problem will take.
Yeah - these are somewhat fuzzy categories and not diametrically opposed. I just think that there are certain pieces of software that are sort of "high culture" - meaning so influential and well thought out (Unix) or elegant (Lisp) that they merit close examination by later practitioners.

As for academia, I think again there is a difference in intention (publication vs. production code) not necessarily quality. Academics tend to emphasize mathematical/theoretical under pinning and work from the general towards the specific - and some of the best have their eye on some specific applications. Coders in industry tend to work to solve today's problems - and the best do so in a way that is reasonably general and abstracted. Again, I tend to have this as a separate grouping in my mind.
Come on! He makes one reference to Haskell, links to the SO post on it, admits he has never used it, and all of a sudden he "shits all over his credibility by turning it into a language war"? It's an example of how ugly code can get for goodness sake.
And what exactly is the connection between those two? There are legal avenues for both.
How I Made My Best Friends Brothers Daughter Internet Famous in 1 Day
> Unless there is a culture of teaching (incremental code reviews are not enough) within the company, you will not have good code for very long.

Very insightful observation. Bad code is a problem that is both technical and social. Purely technical solutions won't cut it.
From a developer standpoint E17 is the best Desktop Environment you can dream of.
Try to write a simple app with the Elementary toolkit and compare that with writing a Gnome app.
You will immediately notice how much better E17 libraries are documented. With E17 it is fun again to write desktop apps.
Aerofs is something like that https://www.aerofs.com/

It is a really nice product, somehow I keep falling back on Dropbox in actual use though.
That is not entirely true. Nuclear fission is not powered by the sun, nor are nuclear fusion plants on Earth (when they arrive). However, fission is only possible because of the existence of heavy nuclei that were initially created during super novae explosions in massive stars billions of years ago so you could argue that is is also at least star powered.

The ingredients needed for fusion on the other hand are thought to have been created during the some of the early stages of the Big bang so fusion is truly independent of stars.
If I understand correctly, they are aiming at things that usualy get built with C++ nowadays. Its hard to get a sinple and elegant language here because a big part of the appeal is having very tight control over memory layout, execution order, etc.
I can understand having little respect for drug dealers as they can negatively affect communities.

But how on earth can you justify blanket-ly having no respect for the women themselves that engage in prostitution?
I get that...but the most important feature of a to-do list is its existence. Even if you are in the stone age like me and use a pen and paper, the most time you spend thinking about your list is maybe 2 minutes a day. Fancy features and slick interfaces are not a productivity improvement.
I was mystified by 'redheads', since I've never seen anyone with naturally red hair. The article also did help clear that up too.
Cmd.exe is twofold:

- a DOS-like shell

- a terminal emulator

Running git bash directly still invokes it inside this terminal emulator, which is the most atrocious piece of crap I've encountered, from font support to encoding to non-realizable width...
Apache Solr – Slow queries and frequent terms
No. See https://github.com/h2s/ppl/issues/5

The semantics of contact data exposed via the Contacts API is supposed to be quite close to vcard, which would make pushing data from Google Contacts to your Git vcard repository reasonably easy, but the other way could be hairy.
I was just pointing out what regulating guns like cars actually means.

If you actually don't want to regulate guns like cars, but instead want far more draconian regulations, why not just clearly state that?
As a completer of the "what a long strange trip its been" ( http://www.wowhead.com/achievement=2144/what-a-long-strange-... ), fuck Halloween.

A little randomness is good, it keeps the experience from being monotonous, but there is a balance between uncontrollable and unpredictable annoyance and quirky interesting outlier behavior. A lot of why WoW did so well was because it often walked the fine line, and it did it everywhere. In that game crafting had percent chances of giving skillups, you had to level weapon skills with a percent chance per hit of getting a point, you had critical % chance, hit % chance, dodge %, parry %, block %, you had talents that gave you % procs for special effects. Tremendous amounts of RNG that most people never even noticed but kept them playing for so long in many respects.
Be careful going to his proof site if you have epilepsy because at least from my experience there was a lot of random pixel flashing.
The Menace of the Term 'Terrorism'
For those interested in giving this a try, here are a few additional suggestions from my recent experience.

There are less expensive alternatives to Linode. I switched to Loose Foot Computing (http://www.lfcvps.com) about a year ago and their service has been great. They often have promotional deals listed on lowendbox. See http://www.lowendbox.com/?s=loose+foot&searchsubmit=Find

tmux is amazing and takes care of window management. No need for dwm or xmonad anymore.

Lastpass integration with the browser works great with Chrome OS. This replaced keypassx for me.

USB tethering with my android phone "just works" to get on the internet.

Really happy so far. This is the right mix of easy, fast, cheap, and secure for me.
What a terrible article. That line of APL is sheer beauty (http://www.youtube.com/watch?v=a9xAKttWgP4) - being ignorant of a language's syntax and not willing to invest the time to learn it is no reason to claim it is 'impenetrable'. I'm sure sheet music, replete with quavers and semi-breves and treble clefs is impenetrable the first time you see it, but once learned is far superior to playNote(double hertz, double duration).

Worse, it goes against his point just a paragraph earlier. The whole advantage of Q/K/J/Haskell style languages is that once skilled in them, the code is much (as in 10-20 times) denser than the equivalent OO-style code, and the entire flow can be grok'ed with ease. There is much less danger of over-engineering in those languages.
It's possible, but it could also work the other way around.

There may be significant pressure to "Go" if it takes a while to get to the destination, and you have misgivings only at the destination. I.e. sunk-cost fallacy -- we hiked for days to get here, and it looks a bit iffy, but we're not turning back now...
Previous discussion of the project, from another source:

http://news.ycombinator.com/item?id=4808061

(1 month ago, 180 comments)
Did Motorola Mobility Only Cost Google $1.5 Billion?
This thread on reddit (/r/math) celebrating Ramanujan's 125th birthday highlights some of his most interesting results and stories about him: http://www.reddit.com/r/math/comments/159q0h/today_is_sriniv...
Indeed. And an additional attribute that shouldn't be ignored is connotation or association. Unfortunately with HFR, it's going to be some time before people stop thinking "soap opera" when they see this kind of picture.
The Haskell code snippet is from a parody of Wikipedia, and is purposefully obfuscated code. Imagine someone holding up a piece of code written in C from an IOCCC entry, as an example of how C is a language to be avoided. Additionally, bringing it up is a total non sequitur, because Haskell doesn't have much to do with the problems the article discusses, and neither does APL.

I think it does ruin the author's credibility. They didn't do the most basic research before including that code snippet, and are just holding it up as a distracting side show. The rest of the screed might have some value, but I'm pretty skeptical of that after reading the last paragraphs.
I intended to respond to the parent post:

No, I think it's more insidious. These people knew what to do but social pressure and group dynamics kept all but one from opting out. The best decision they could have made was to abandon the run entirely. More training would not really have helped, as it would just confer more confidence.

Maybe the real training that people need for these kinds of high risk sports is to watch their friends die.
I just saw on the news that it wasn't one transformer that exploded (or at least, not a normal sized transformer), but a transformer substation, which I believe means multiple transformer units, maybe.

I'm guessing that, and our relative nearness to it explains why it seemed to fill the entire sky.

Either way, yeah, it was trippy. I've never seen the like.
And one language I’ve been warned about, though I’ve never had the opportunity to use it, is Haskell, an offshoot of ML. According to a friend in academia who’s studied it, it’s “the Taliban version of ML,” in which it’s all but impossible to write readable code.

He follows this with a line of intentionally hard-to-read code.

Everyone who is familiar with Haskell knows that it's possible to write code like this, but it's not common. You have to actually work at it to make truly awful code in Haskell or ML.
Thanks for sharing kyro.

2 Problems I encountered:

1.) At http://cl.ly/0s0N0b41262a, the "view in browser" link is broken and forces a download (in Chrome).

2. ) When I opened these in Photoshop CS5 (12.0.4) I got an error message, saying: "Some text layers contain fonts that are missing. These layers will need to have the missing fonts replaced before they can be used for vector based output." (see screenshot: http://pbrd.co/12wfmxs)
Email is free if you like to be targeted by ads and want to contribute to advertisement research. Also, next to no customer service and no choice regarding you contract.

Which is still a great bargain. But not one I choose.
Design is not as subjective as you are making it out to be. There're guidelines, popular conventions, trends..

Design is beyond "what it looks like".
True, though I don't think this article is really talking about pure CompSci. That would be about as relevant to Register's audience as books on physics.
An Intriguing 30 Second Exercise
Getting Rid of Flash
Very nice, thank you. I'll see if the git bug has been fixed in bzr and probably switch to it. I love how user-friendly it is.
> And who will make and sell them those drones?

TFA mentions this in paragraph 4.

Also, drones aren't nuclear science. Any number can play. the Iranians may or may not be making useful drones now ( http://theaviationist.com/2012/01/30/iran-a1/ ), to give some idea.

I'd guess that the enabling parts that didn't exist 20 years ago are today found in mass-market cellphones, so controlling the technology as if it was big uranium-enriching plants is not going to happen.
InclinedPlane mentioned "Working Effectively with Legacy Code," and I'd just like to add that's one of the greatest software engineering books out there.

Feathers (the author) methodologically chose to copy / inspire some of his examples from code he's worked with as a mentor / developer (some of it from his time @ Thought Works w/ Beck, et al.)

The book is similar to Fowler's Refactoring in that it provides some core thought processes / ideology and then a long list of heuristics and techniques for revising/updating legacy code. (I find his definition of "legacy code" as any software without automated testing to be challenging and insightful, especially since it indicts most code written ever. ;)

If you get the chance, you could also consider reading "Clean Code", it doesn't have /as much/ "real world" source but is still excellent.
What is the true measure of a storm?
I've said it before - Dropbox to Apple would have been an amazing fit since iCloud is meh. Damn you Internet over-valuations.
The whole point was that we were going to write a program and invite each other to find counterexamples for the statement proposed, so that we can finally stop the bullshit of ad-hominem arguments. I know it must be hard for you to switch but in the long term it will benefit you.
Take note peoples, this guy knows what he's talking about. The ~1/25th of a second retina persistence is exactly why 24 frames per second looks better. The higher frame rates actually "excite" and then "exhaust" our visual and perceptive systems.
A great payphone hack would be to make it a dead-drop. Ie: put in a hard drive and a usb port and small controller. Then plug in your usb key, dial a number, it gets copied to the HD. Next person to insert his key and dial your number gets the data you copied.
Heiko Fischer: The Future of Work