skysight-inc/HackerNews huggingface dataset:
Effective Java is a solid choice, and a lot of the advice is still relevant six years later :) Also, JCIP is a go-to if you want to get more than a passing handle on concurrency in Java.
Night at the Museum: Secret of the Tomb Hits Theaters December 19th
Yeah, many users would actually not like some of these features. If you're using XML to serialize static tree-structured data in a fixed schema (like people commonly use JSON), would you expect that your parser would be vulnerable to this?

https://en.wikipedia.org/wiki/Billion_laughs
That sounds like a lot of work, and I'm sure a lot of folks have expressed or at least agree with the sentiment. But I'll consider writing about it in more detail.
https://ispc.github.io/
> Care to share more details of these companies including how the Ruby ones become profitable after a month with 4 guys on payroll? No offense but I've got to check the facts these days.. :).

It was small industry, those were basically the only two companies in it, I don't feel I can. (I've already changed some small details e.g. it wasn't actually Ruby). In any case it's just one person's anecdote - but I bet it's happened a lot.

> My apology, Java today is as productive as Ruby on Rails.

Citation needed. In the programming language shootout Ruby still comes out much shorter than Java, and like I said, the only proven risk factor for bugs is number of lines of code.

> One can slowly move from old Java architecture to the newer one but it'll be trickier from Rails to something else...

When I worked at last.fm this was literally my entire job (well, from PHP). You're rearchitecting anyway, creating stable interfaces and putting load balancers in there because those are also things you need to do as you're scaling up. Changing languages is no harder.

> don't forget the accumulated Ops experience managing jvm based app server, the devil in details for those experienced engineers who have been there and done that...

You can hire the experience - Java is literally the easiest language to hire for (I mean, hiring is still hard, and there are a lot of crap java programmers around, but there is a bigger pool of experienced programmers out there than any other language). And you're going to need to hire anyway; your ops team will have to grow, your engineering team will have to grow more, and you absolutely cannot rely on the engineers who bought the first version still being around when the time comes to rewrite; the half-life of an engineer in a startup is not large.

Twitter was the article's choice of example, not mine - and from a business point of view Rails worked really well there.
I'll meet you halfway:

ints.sort((o1, o2) -> {
if (o1.equals(o2)) {
return 0;
} else if (o1 < o2) {
return 1;
} else {
return -1;
}
});

Or may i suggest a version with a guard clause and a simple ternary:

ints.sort((o1, o2) -> {
if (o1.equals(o2)) return 0;
return (o1 < o2) ? 1 : -1;
});

There's definitely no need for the 'new Comparator' boilerplate any more. That's not the kind of verbosity that adds clarity; it's just ceremony.
Clojure too. Very fast. Very readable. Very expressive.
That Scott Walker is in the office now means either 1) targeting isn't bad enough to not be able to win a governor race or 2) the story about targeting isn't credible enough - in other words, people discount it enough (not enough proof of acting) so that it doesn't matter.

Curious what would it be.
lol
I couldn't stop myself from sharing this project here! :)
Didn't know this'd make it to front page.
C99 has a builtin complex type. "double complex" (similar to "unsigned int"). Of course all arithmetic operators are defined for that type.

Example:
http://coliru.stacked-crooked.com/view?id=0d295064bd367eca

Source:
http://en.cppreference.com/w/c/numeric/complex

Have you tried that? Of course Microsoft refuses to implement C99, so you could only try it on non-Microsoft C implementations.
As a Peano-player I'd represent the interger 3 in xml as

<succ>
<succ>
<succ>
<zero></zero>
</succ>
</succ>
</succ>
> So honest question: what's different this time?

We've rediscovered ahead-of-time compilation.
The 35 hours law was implemented very differently for blue collar vs white collar workers.

For white collar workers (including software/it people), the law was implemented with a certain number of extra days/weeks of vacation per year, above the standard 5. And each company had it different.

So if one talks about the 35 hours law in France about software/it workers, please do not start counting weekly hours. Ask about how many weeks of vacation instead.

Accordingly, when I moved from France to the US, for the same company, i lost a few weeks of vacation, but boy, the days were WAY shorter.
Visual Revolution Of The Vanishing Of Ethan Carter
I learned to touch-type on IRC.
Because they improve maintainability, they are not redundant.
"in reality, France’s 35-hour week has become largely symbolic, as employees across the country pull longer hours and work more intensely, with productivity per hour about 13 percent higher than the eurozone average. And a welter of loopholes lets many French employers outmaneuver the law."

What concerns me from a public policy perspective is that people vote on politicians and platforms based on some simple, plain-language representation of what they stand for. "35-hour work weeks for all!" is pretty catchy, and I might could be behind it.

But then when the policy is implemented, it's done so in such a convoluted and byzantine fashion that I am not longer able as a voter to determine whether it was a good idea or not.

So we then begin all these partisan debates over the slogan, when in fact the slogan was never really tried. This is a defect of centralized, complex governments: it really has nothing to do with your political stance or what you support or oppose. I could say the same thing about Strategic Defense Strategy in the U.S. If something is explained on way, supported by the public in one way, but implemented in such a way to confuse what's really going on? The system fails.

I think the saddest result of this is watching very intelligent and passionate people debate various positions and policies, none of which ever have any chance to actually be implemented in anything near the terms in which they describe. So it's like watching smart people debate the relative merits of their own imaginary castles.

As a programmer, I like it when I code something and it doesn't work. The computer language causes me to express my desires exactly, I must transcribe them faithfully, and even then, sometimes I get it wrong. The feedback loop is quick and honest.

Such is not the case in these matters.
I'm also taking it to help flesh out my Haskell learning. I rather like it.

Be aware it starts out really slow then 50% in ratchets up the fun into "scare away the freshman" territory with monads. I have to say preexisting knowledge has been quite helpful.

About my only complaint is the amount of "which of these 9 implementations are valid" exercises. Although i've been cheating and using hspec to tdd my way through them.
Measuring Results at the NSA – James F. Miskel [pdf]
Well aren't we a bunch of perverts.
No fuel, no pilot, no problem: perpetual flight (2013)
Put a flashlight under your chin
I didn't expect a kind of Spanish Inquisition...
Social learning will become a huge space. I love where you're positioned and if you continue to iterate on the UI, I think you could really have something. I'd be working on some killer use cases.

You should certainly also allow visitors to see some cool content without having to sign in (and give you partial access to my Google account.)
This is great, nice work, I have been looking for a lightweight browser based alternative to anki.

After showing the back of a card when practicing, I find myself wanting wanting to see the front of the card at the same time. Either that, or be able to flip it back and forth.

Any plans to add an ability to batch import from a .txt or csv file?
This is horrible, but not because of the Java part — it's the webview that puts your desire for a single UI technology stack ahead of user's desire for a decent UX.
I think you both a) are greatly unfamiliar with bridge building practices and b) underestimate the ability of 1980s software design.

Seriously, were there shortcomings in the software design of yesteryear? Almost certainly. Are they blown vastly out of proportion in most discussions? My assertion is that they are.

Sadly, I do not know as that I have anything coherent to offer on how to fix things. What I can offer is that I think we'd do better by not always looking across the horizon to a silver bullet language/framework/whatever and keep focused on what the job at hand requires. The amount of failures I have witnessed due to a desire to over generalize is staggering.
NET Binary Modification Walkthrough (2013)
Show HN: Dropbox for translators with job matching
What he said, but C#.

C#'s one of the most versatile languages which can target most of the popular platforms, e.g: iOS/Android (Xamarin), WindowsPhone, Windows, Linux, OSX, Silverlight, PS4, XBox (announced), Unity3D and NaCL.

C#/.NET's biggest weakness of sub-optimal cross-platform support should also be resolved in the near future now that .NET's compiler, core runtime and class libraries are OSS and with Microsoft announcing support and plans to release official distributions for Linux and OSX - so .NET will finally have multi-platform support of a single code-base resolving earlier issues or running .NET on OSX/Linux due to different impls.
> But if you take a look at how Sinatra (or Rails) serialize the returned object, you notice the duplicated code. Especially if you want to return both JSON or XML based on the request header. To add to this, both frameworks do this serialization as part of the code logic that you have to write, instead of slapping annotation once...

I can't speak for Sinatra, but in Spray I'd just write a directive for this - maybe it exists already, but if not, it's a couple of lines - and then I can use it just like any of the built-in directives. And this is a perfect example of why "just code" is so powerful. Jersey is a very well-designed framework and I'm sure you can find examples where the built-in Jersey thing is better than the built-in Spray thing. But no framework is perfect, at some point you find yourself having to extend these things - and in Jersey's case, IIRC once you want to write your own annotation you need a magic .service file containing a class name to use to interpret that annotation. And then the only way to pass dependencies to that processor is by static global variables. Good luck refactoring that, and don't expect to be able to use hot code replace when debugging it. And good luck remembering how the mechanism works in six months' time. "Plain old code" has a lot to recommend it here.

> Let's take this further: exception mapping to http response code. In JAX RS, you can map application exception to certain WebApplicationException with specific http response code, I believe you have to handle them manually in Sinatra.

Again, trivial in Spray - I do my error-handling with Either and then I have a meta-marshaller that knows what to do with the error case. Better still, error handling isn't a special case - I do exactly the same thing if I have async code in my methods (can JAX-RS handle Futures? Can it handle a different kind of Future from a non-standard third-party library?). I can do exactly the same thing with a database-transaction monad, and then I can have session-in-view but in a principled, safe, zero-magic way. I can do the same thing to e.g. show debug traces if a special header is present - like Jersey's dynamic choice of serialization format that you were so impressed by, but it doesn't have to be built into the framework, it's just code that I can write myself.
That's the feedback I got from a German co-worker when I was working in Silicon Valley. In Germany they just work 8 hours. But it's all heads down working. In the US we screw around (talking, surfing the web, etc) much more.

But I know from experience that workers in Spain screw around A LOT as well during the work day (and lord the long lunches at sit down restaurants!). So all Europe is not the same.
errno was of course a mistake once things went threaded. It is not of course supported by system calls, with the error number values either being in the return code, ie return -errno not -1 and that chunk of values is invalid, or returning two values, depending on OS and architecture.

Obviously it is going to be really hard to change...
I don't understand the point. Are you claiming that search and replace functionality provides the same ease of use as an actual rename refactor ?

Foo x = new Foo();
int Fool = 5;

I'm sure you see the problem.

Dynamic languages are great, until the program grows. Then you hate yourself for having picked a duck/dynamic typed language (including Go, btw : programs become unmaintanable if they grow, not as bad as python and the like, but ...).
So far the only serialization format I've found which isn't stuffed with surprising quirks is protobufs.
you didnt even read the article did you
If making your parser spec-compliant makes it more vulnerable to security problems that would tend to suggest something other than the parser is problematic.

See also: https://www.youtube.com/watch?v=PE9fXM7aOxo
Let's be clear here: this is for people sailing with tonnes of instrumentation who want more instrumentation. There's a fairly large resistance in the recreational sailing community to relying on electronics, and smaller boats generally have none (people just use a phone for GPS or whatever), so I guess this is destined to be a niche product.
Sleepless in America explores toll of sleep deprivation
Add in a algorithms text book (and perhaps a lecture series) and an OS book. And you would probably have something more comprehensive then a lot of undergrad CS degrees.

You mentioned and more about the books recommended to you, what are some of the others?
I'd have to agree, the GP is very bloated when a simple ternary will suffice.
Its not clear why anyone cares what my text editor is.
Practicing specific tags would be a good function to add.
This may be true but there are many existing SOAP webservices out there still, and the parent mentioned consuming a SOAP API.
WebStorm for development, Atom for a GUI, and VIM when I'm in the console.
Needs a WebStorm option
My version would be "what he said, but choose any well-supported statically typed language, particularly one with decent type inference, since that gets you a lot of the convenience of dynamic typing without all of the very many runtime-error downsides".
I use Coda2 because it integrates the IDE, terminal tabs, browser tabs, and my (s)FTP file management all in one fullscreened window. Having my entire workflow contained within one app keeps me focused!
I can recommend the book "Creating Interactive Fiction with Inform 7" - http://www.amazon.co.uk/Creating-Interactive-Fiction-Inform-... - it walks through the process of creating a quite complex game and has some useful recipes and examples.
> As for Java and C# on the web. I just wish it was more accessible to smaller companies. 100% of my freelance stuff are using cheap hosting that rarely support anything more than Perl/PHP.

One year ago I would have agreed with you, but I have since discovered some of the newer PaaS solutions like CloudFoundry / Pivotal CF [1] and OpenShift [2].

I'm using Pivotal CF for my current side project (a public website + web service) and am paying about $7/month.

[1] http://www.pivotal.io/platform-as-a-service/pivotal-cf

[2] https://www.openshift.com/
> There are some valid points raised too, such as concerns about Python's scalability

But if you think about the two python scalability problems :

1) speed

2) programs become unmaintainable as they grow way quicker than they do in java and the like

Nobody's arguing to write shell-scripts in Java. Why are people arguing writing websites that will include more than a trivial amount of functionality in anything but Java ?
Not true - here's my attempt:

Windows: http://www.solaraccounts.co.uk/images/screenshots/invoices.j...

OS X: http://www.solaraccounts.co.uk/images/screenshots/invoices_m...

The trick is to use the Java SWT library rather than Swing. (In my case I also added a few platform-specific hacks such as having a big toolbar at the top of the main window in OS X but not Windows).
> I've watched a company spend two years, dozens of developers, and over a million in ESB license fees failing to write a site that was expected to have, at peak, 100 users/day.

I'm sorry to hear that. But you understand that this had nothing to do with Java, right? Java didn't make those people do that. That was just good old fashioned human stupidity. It's entirely possible to write simple things in Java, without ESBs and a person-century of effort.

It's even possible to write simple things in Java EE - there's an enjoyable little book about it: http://press.adam-bien.com/real-world-java-ee-night-hacks-di...

> Nor are the performance advantages "permanent"; even if you use Java, you will probably have to rewrite if you reach Twitter scale, because your initial app won't be clusterable (or if it is, it's massively overengineered and your business will fail).

I don't think this is true either. The normal approach to writing scalable apps these days is the twelve factor approach:

http://12factor.net/

And that works just as well for tiny deployments as huge ones. It doesn't involve doing anything arcane and expensive up front. It's mostly common sense. Scaling out will involve a lot of changes, but incremental ones.
It bugs me that Shellsort is almost everywhere the seemingly fastest algorithm.
That is a really great link there. Thank you for that.
2012 German GDP per employee: $43,243

2012 American GDP per employee: $68,374

On paper at least, the US is much more efficient creating value from employees.

http://data.worldbank.org/indicator/SL.GDP.PCAP.EM.KD (Both numbers are in constant 1990 PPP $)
Definitely missing a IntelliJ/Webstorm option
+1 for Coda, one of the cleanest, nicest workflows out there.
Nitinol Heat Machines [video]
Right. So it eas pretty new in July, then?

https://github.com/coolwanglu/vim.js/commits/master
Ah very smart. Thanks.
one line is way more readable than 7 lines taking up valuable vertical and brain space

it could also be accomplished with

return -1 * o1.compareTo(o2);
"If you ran valgrind (and mudflap) then any error that might be detected by a compiler with range checking will be detected."

Only if you can be sure you have touched all the interesting portions of input-space. Ideally your tests are doing this, but wherever your tests miss aren't covered by valgrind or mudflap but are covered by a change of language. That's a part of what's meant by safe. It's not that it's impossible to write correct code in an unsafe language. It's that it's difficult to impossible to verify that you have written correct code. I'm very willing to include available tools in that calculation, but valgrind and mudflap (while tremendously useful) cannot give guarantees.
Great list. Another book I've found helpful is "The Intelligent Asset Allocator" [0]. The concepts on modern portfolio theory it discusses seem to jive with Matt's article. Basically, when investing for the long term, focus more on balancing the asset classes in accordance with your risk profile than picking specific investments within an asset class. It was a very readable book for someone like me without investing experience but didn't feel like it oversimplified things.

[0] http://www.amazon.com/The-Intelligent-Asset-Allocator-Portfo...
This starts out talking about engineering having a "theory" to work with, meaning physics, materials science, etc., that is the source of its ability to construct new reliable systems.

Then it proposes a mechanism to develop a "theory" of software engineering where the generated theory seems to consist entirely of methods of project management.

Am I completely missing the point of the article? Because that doesn't seem at all parallel. Engineering has methods of project management too, but that's not what makes bridges not fall down.
This is Ezra's brother, Eli Zygmuntowicz. Thank you all for you kind comments. I know he valued his programming and tech community immensely. He will be sorely missed by his family, friends and son. If any of you are interested, we are having a memorial service for him in Portland this Wednesday, Dec 3. We are also setting up a memorial trust fund for his son, Ryland. Please email me at eliziggy@hotmail.com if you would like details about either the service or fund. Best. Eli
> "Today’s circulating libraries are hardly perfect. Not all publishers participate, and you won’t find many of the newest books. As with all e-books, privacy is a concern because someone will always know what you’re reading. On the other hand, all-you-can eat pricing certainly promotes feasting."

Feasting .. without newest books and only a few publishers?

No mention of Archive.org, the web and CC-licensed content, none of which existed 200 years ago, all of which compete with Oyster et al.

Or the difference between ownership (purchase and First Sale doctrine, including the ability for descendants to inherit ownership), renting (Oyster), licensing (Kindle) and shared access to a city-funded-and-owned resource (public library).
That's a cultural and management problem. If working long hours makes you "look committed" or otherwise puts you on fast track for promotions etc., that is a problem. It leads to people arriving early and leaving late, and basically not working efficiently because we all know it's simply not sustainable to do 10 or 12 hours in most jobs requiring any thougt work. Obviously, cutting down on the hours without also fixing the cultural and productivity issues may be a bad idea.
It has a lot to do with language.
If your language's runtime has solid threading and reasonably pauseless GC (at several gigabytes heap) you run into much much less problems with scalability.

Java people take many things for granted.
But the assertion is that bridges could be built today using techniques from the 1950's, and they would still be good bridges, because the principles and physical laws they were built on haven't changed.

Software design had a lot of cool things happening in the 1980's (possibly more in the 1970's, though), but the mindset has shifted since then. How many people are implementing their own VM's? How many are running on non x86 intel/amd chipsets? Things that needed to be heavily optimized in the early 80's might actually run faster now with JIT & whole-program optimizations. And so on.

It's hard to build an engineering discipline out of such a shifting substrate.
Needs a VisualStudio option?!
Intuitively
People seeing a high number votes for an editor they have never heard of may check it out and discover something new.
For me, it depends on what I am working on.

Android Studio	: Android development.

XCode	: iOS development.

PyCharm	: Python projects.

RubyMine	: RoR projects.

WebStorm	: AngularJS projects.

Sublime Text	: other Front-end, NodeJS stuff and everything else (including making grocery list, writing down phone numbers).
What are you up to these days?
REIFax – Powerful Online Tool to Find Real Estate Deals in Florida
Brackets also missing.
a large part of American GDP is not based on employee productivity
As most of the times, there are about a hundred different – not all of them necessarily better – ways to achieve the goal of this project. No issue there.

Putting part of such a project to $SHAREDHOSTINGSERVICE however, that's were I'd stop.

Then again, more sensitive stuff floats around on the intertubes.

(Also, not serving it by yourself feels like stopping halfway, and not in the hackers-do-take-shortcuts-way).
Introducing BitReddit
And Guava has Map<String,User> userIdMap = Maps.newHashMap() which uses Java's type inference rules, and works in 1.6 (I think even in 1.5)