skysight-inc/HackerNews huggingface dataset:
Far and away the most obvious is null checking. It's not a big deal in a thousand line program, but as things grow, the need to always remember to check for null becomes a real problem.

Related to null, you only get one null. the classic assoc problem. if i lookup a key in a hash, does the hash have the key, or is they value of the key null? Optional/Maybe is just wonderful for this case.

Semantic meaning of common types.

update(String name, String email, String address, ...)

vs

update(Name name, Email email, Address address, ...)

Strings get overloaded for lots of uses, and it's so easy to swap the order when you have multiple arguments.

Status codes, stuff like Email vs VerifiedEmail. Encoding those random flags in types makes it so much easier to enforce rules.

Yes, they are all "easy", but we've all lost hours or days to those problems. The sooner we can stop worrying about bonehead, forgot to check for null errors, the sooner we can concentrate on real problems. They're trivial problems, but we waste a big fraction of our lives dealing with them. Just taking those issues off the table makes it possible for average programmers to find bugs in timsort. The cognitive load of these dozens of details detracts from average programmers (like me) ability to actually detect the hard cases.

Typing isn't a panacea, but it is a help. It's akin to a socket driver vs a wrench. sockets abstract away the need to remove rotate and refit the wrench for every stinking quarter turn. You can do it with a wrench, but it takes so much longer.

There are no silver bullets. but there are regular bullets, and a good type system is one of them.
Our scripts are executed in a freeze mode.

When we modify DOM it becomes "dirty", and after our script finishes, reflow/re-render happens. But also, if our script queries DOM properties, like elem.clientHeight, DOM may need to perform the calculations in order to return us correct values, reflecting all the recent property changes. For example, if we access element.clientHeight browser may need to calculate re-flow (I recently encountered very slow clientHeight calculation by FireFox).

So, if we only modify DOM properties, all the re-rendering is deferred till the end of script.

Google about "DOM reflow"
Better if you could do it together with others. Join a study group of the tech you want to learn or even try going to relevant hackathons.
The original Evince was and still is my favourite PDF reader too. Unfortunately the newer versions feature a Gnome 3-style UI that renders the program unusable for me.

Anyway, I hope he had a happy life. RIP.
Good question about how far. I was thinking more in the direction of what will be the next transformation of the skills needed in the programming field or the type of work to be done.
I think I've got through two iterations so far: algorithmic and now integrative/automatic (I don't have a better name).
The latter meaning we are now building more advanced solutions integrated in everyday life or advancing science.
In this, the skillset and knowledge is much more advanced or larger then math and algorithms.
So I'm wondering or fantasing what could be next?
In the next 5-10 years.
You would need to upgrade to the next tier - we're working on adding "soft maximums", currently they are hard cut-offs.

We would, most likely allow a certain % overage, then notify the user, with some kind fo three strikes rule to upgrade plans.
I suspect that a lot of this has to do with simply having shitty configuration loading from horrible (XML) config files. This small example already gives me enterprisey nightmares.

The author also omits many of the arguments for config files other than change, like being able to easily check what the current setting is without having to dig into the code, or reading out the configurations from other tools.

I you work on a project where "configuration hell" is an issue, maybe one should focus more on addressing the "hell" part instead of taking the configuration out of the equation.
Number of Go positions computed modulo 2^64; source code available
Some sort of genetic constraint generator, where the fitness function is examples provided by designers?
You didn't ask if it's possible to have a knot perform the same tasks (break an uncontrolled descent) without friction, you asked if there were any examples of such a knot.

Is it possible? I can't rule it out.

Are there existing knots that do so? None that are commonly known, no.
>you need hard documentation and evidence.

How is anything Snowden released hard evidence? Every single thing Snowden released could have easily been faked. Hell, those powerpoints look fake. Who thought an intelligence agency would use something straight out of the world of TPS reporting and cookie-cutter presentation templates? Note, I'm not saying they're fake, but it would be trivial for someone to make this stuff if they wanted. So the argument that there's this overwhelming proof that the public can't ignore seems like weak sauce to me. The public isn't terribly interested in hard proof (or have the time/expertise to weigh claims), historically. If they were, we'd probably be a society of hard atheists scoffing at anything that can't be trivially proven in the lab.

The real issue here is why certain things go viral and others don't. Snowden's fleeing was fairly dramatic and I'm assuming that helped get the ball rolling. The timed release aspect of his disclosures are fairly clever too. Frankly, I think Assange cut a path for him by normalizing this type of leak and the journalist/news system was ready for it. In the past, this system was too busy avoiding these issues, or worse, being a mouthpiece for the current administration (See the NYTimes' disgraceful Iraq pre-war reporting, repeating Bush admin propaganda without question.)

Without the Assange/Manning path, the previous whistleblowers only received marginalized exposure. Now news managers realize how profitable leaks are especially with the White House not reciprocating with the 'blocking of access.' Obama's more liberal direction probably guarantees more leaks in his terms. We'll see how things are with the next POTUS. I suspect a GOP POTUS won't be as forgiving as the Bush administration has shown (Valerie Plame/Wilson affair for example).
Hell, Drake warned back in 2005, and Congress rushed back into session to make it legal. Drake managed to do it without passing reams of classified data to Wikileaks, too...
ed + cat seems like an odd combination: why not use just ed (it has a print command, p)?
Hack your reading list – the easiest way to save articles to Pocket
Looks nice and might, going to try it now
Try using Justworks.
For all we know, Snowden is a CIA agent who's taking one for the team as part of the ongoing NSA/CIA turf war. Honestly I kind of lean that way -- he was a CIA direct hire before he was an NSA contractor.
> humans will be unneeded

Nice try, Skynet prototype.
When I saw this it immediately reminded me of the "lysine contingency" from Jurassic Park, where they genetically alter the dinosaurs to be dependent on lysine supplements to prevent their ability to survive outside the park.
This is silly. If you don't have a single constant, you could have the situation where one piece of code had a maxRetry of 5, and another with a maxRetry of 2. Good luck trying to figure out why things are failing when they should retrying 5 times.
How would you patch bugs? Add bug fixes after boot? After a while that will take hours to download and install.
Amend an image loaded from the ROMs in flash, so each one is updated means pirates can send updated flashloads around.
Apple uses a unique chip with serial etc, but even that is defeated. recently they require a serial number for each free OS download - that has crimped bootlegging, but there are new updated OS on torrents daily, so only the sheep are corralled...
That's what initially sold us on Zenefits, though — it puts a reasonably polished interface on ADP, which is reliable enough for the commodity money transfer service it provides, I guess. Same goes for Aetna — Zenefits puts a nice UI on commodity health insurance. Working with a traditional broker was a nightmare.
Heartache for Japan's real-life 40-year-old virgins
1st source: http://www.businessinsider.com/the-most-violent-cities-in-th...

2st source: http://www.statista.com/statistics/243797/ranking-of-the-mos...

I live in Brazil
I think if you can't reliably find all occurrences of a value then it shouldn't be hardcoded - 6.022e23 is easier to find in a large source file than 5. If you work in a statically typed language with a decent IDE you can usually see the constant value just by hovering over the identifier.

I'm guessing there are different tradeoffs in dynamically typed languages since the hardcoded number will also identify the type.
> in this field
:)
I believe the current trend of high level languages will continue. Your average coder already is working at a high abstraction level, with many not even having to deal with direct file access or memory management. Even the ones who do work at lower levels frequently do not get down to assembly.

When I started this career a couple decades ago, this was not the case. Most people worked in C, with the majority at least having had exposure to, if not direct professional experience at the assembly level. The abstractions we work at today existed, but were were just written off as toys and script, not "real programming".

I think this will continue - most software developers will be re-using components, piecing them together like legos. Actually writing code to make those components happen will be less common.

There will always be people who can work at all levels of the systems... but the crowd of coders just making a living will move higher and higher in terms of abstraction.
Interactive Maps with Leaflet, TopoJSON and ChromaJS
The catch is that you'd probably need everyone to upgrade their hardware and you'd still have to maintain an installable copy for the VM users
People seemed to be talking rather angrily at each other without actually reading what they said.

> So what?

Call me old fashioned, but I think it's worth responding to what's actually been said.
Engineer at Zenefits. Can confirm this.
Deleting your browser history may be illegal
It's aptitude. The point is I do this rarely enough that I have to read a man page each time...
>If you're getting your emotional high from playing rather than the hope of winning, then perhaps the $5 is a good purchase, it's hard to say; otherwise, I'd say it's better spent on something the _does_ have a financial or emotional reward.

It may not be worth the $5 even if it does give you an emotional high — perhaps especially so. I am reminded of http://lesswrong.com/lw/hl/lotteries_a_waste_of_hope/, which argues that winning the lottery is the wrong sort of hope to invest in, both financially and emotionally. I found that article's argument convincing.
Play Assassin's Creed on an MSI GT72 with Your Eyes. Sick
What I wanted to read about but couldn't find it was the actual ROI of this product. How many batteries must I use so that it would make financial sense to buy the product? (So that we could compare with actual results and see if they match)
ADP has some of the worst online offerings. In order to see my paystub or signup for health coverage I use one site. To request time off I have to use a different ADP site. Both have different usernames and passwords.

Both sites look like they were made in the IE 5/6 web development drought. I have no real complaints though with how everything actually works though, never had an incorrect paycheck or messed up PTO.
You are totally missing the point. This one lottery game was set up in a way that if you spend enough money at exactly the right time you are mathematically guaranteed to make more money than you spent. You can't guarantee success in the stock market and certainly not 20% ROI in a few days.

It isn't like they just threw $600k at the lottery blindly hoping for a payout. This was a mathematical analysis.
It is unlikely that a major new operating system will emerge at all because of high investment cost, momentum and compatibility
Jerry Seinfeld thinks political correctness has gotten out of control
Google Photos for Work – a hypothetical new product
We'll be writing yet another goddamn reporting system for marketing. However, the coffee will be exquisitely made by Blue Bottle's autonomous cybernetic drone.
I have read "Debt.." twice and really enjoy and appreciate it.

However, even as I approach his summary and final chapter with an open mind, I remain unconvinced that monetary debt and financial contracts can be divorced so easily from personal morality (or reputation or "face" or whatever).

Certainly there is some nuance to explore here when an entity or group of entities manufactures desires and then provides easy credit for those desires at bad terms and then uses morality as a strong-arm to enforce that debt.

However, to whatever degree you cry foul to that exploitation is also the degree to which you admit your own gullibility or vulnerability to manipulation. You can't have it both ways and righteously walk away from your debts AND maintain the posture of someone who can't easily be duped.
The makers haven't given enough information for anyone to calculate this.
The article that I posted, while older, presents a more realistic and objective look at the JS crypto problem. I chose to criticize the matasano article as "dated" because some of the positions it takes are no longer accurate. The older article does not depend on dated information to make its points.
Just out of curiosity, what makes you say IDEs are bad?
we will probably continue to program the problem solvers for some time to come.

$code = '$z = 0;' . PHP_EOL
. '$y = 0;' . PHP_EOL
. '$x = 0;' . PHP_EOL
. '$x = 0;' . PHP_EOL
. '$y = 1;' . PHP_EOL
. 'for ($count = 0; $count < 10; $count++) {' . PHP_EOL
. ' $z = $x + $y;' . PHP_EOL
. ' echo $z;' . PHP_EOL
. ' $x = $y;' . PHP_EOL
. ' $y = $z;' . PHP_EOL
. '}';

$this->assertPhpAndResultEquals(
$code,
'123581321345589',
$this->asPhp(
'sätt x till 0 och sätt y till 1 och upprepa följande 10 gånger:'
. ' sätt z till x + y'
. ' och visa z'
. ' och sätt x till y'
. ' och sätt y till z'
)
);
If the problem is the email address, why not give them one of your companies emails?
"While most students at [MIT] use their powers for good [...] others are busily using their prodigious math skills to" win the lottery.

Interesting morals on display by the author.

Further: "While the students’ actions are not illegal, state treasurer Steven Grossman, who oversees the lottery, finally stopped the game this year."

I expected the last part to say they'd filed charges against the students. Since they didn't (because their activity wasn't illegal), the state treasurer made the right decision to stop the game.

I'm not impressed by this author's writing skill.
Same here. Particularly the idea that "information" and "entropy" are the same quantity. That was an eye-opener.
I really like the Om/Omniscient model of using immutable data to represent application state - deciding whether or not to rerender a component and all of its subcomponents only requires comparing a hash.

However, for the app I'm working on, I want most the single source of truth for most application state to be on the server. I'm passing data from server to client in JSON. Has anybody come up with a good way to serialize/deserialize immutable objects? I might try out transit-js, but I'm wondering if anybody has already gotten this working?
Using Mobile App for the Management of Chronic Wounds
Consider the field from its inception and how it has changed over time. We move into higher abstractions and release ourselves from having to worry about details such as memory management. Even so, as an embedded software engineer I find myself wrestling with memory usage and throughput budgets. As AI becomes reality, it would be ideal to mold (evolve?) an AI to help me address specific weaknesses in my capabilities to allow me to focus on "the problem at hand". If you're curious about that sort of AI development as it relates to embedded software, check out "hyper-heuristics".

You can really answer your question according to the observable trends of the field. The role of the "programmer" will shift, that's all.

Regarding what a programmer needs to know, I think you'd be hard pressed to find something that wouldn't be useful in some way. Personally, I am trying to read as much of the "Old Masters" as I can. I've started with Claude Shannon and have tried to hit all the big names along the way. Bernard Widrow's work (http://www-isl.stanford.edu/people/widrow/publications.html most articles are free) got me started.
We sound eerily similar save the financial independence/measure of success. I've come to describe it as a "genius complex" though I don't think that's an actual phrase. It's basically that I think almost everything is ignorant, that is people choose to be dumb. I have absolutely no time for this behavior and when someone I consider neutral to smart ventures into ignorant territory, my care to continue interfacing with them drops to 0.

Conversely though, I don't consider anything others do to be boring even if everyone can agree that it is. I also won't offer an opinion because I have numerous examples in my own life. You would likely consider me very boring but it's largely because I've shut my mind off to cope with the lack of meaningful input. I think a large part of the population does this without even being able to articulate what's happening.

The best answer I have is empathy. My greatest connections come when I exercise high empathy levels and all I'm really doing there is engaging my imagination to try to understand how someone else feels in the situation they're in. I think most of us on the planet, and especially here, have this capacity but I think we see futile efforts a far ways off so we don't bother to engage. I'm stubborn enough to forgo that understanding to commit an insane act that in rare instances make me feel close to other people. I don't have all quality connections with people but the ones I do have tend to run pretty deep and I believe I owe it all to my ability to relate to how someone else feels.
And ZF should'nt distinguish those sets for which the logical "for all x there exists a y" defines a function or not. If you want the notion of a unique function, you should have the logical statement "for all x there exists a unique x".

I have no problem with Banach-Tarski. Sets of points just do not describe properly our intuition of 3-dimensional space. Measurable sets of points more so.

Type theory just shuts out certain things its inventors don't want to think about. How does that help anyone?
Maybe start by attending user groups or meet-ups on the tech you're interested in. That might lead to some potential freelancing gigs or even just some open source work in that field.

But, in general, I think many, many companies are willing to hire 30-somethings with experience. Perhaps seed-funded startups aim for cheap low end labor, but enterprises and well-funded startups consistently value experience over skills with a specific stack or language.
The Attack on Truth
This seems like it'd be particularly helpful for dealing with the incredibly excessive CSS layers in Google websites like Google+ (which locks up my browser for five seconds when it loads). But I'd be pretty iffy giving my login details through a proxy like this.
Hey downvoters, he actually was a CIA direct hire before he was an NSA contractor. Read the Guardian's profile of him.
I'm absolutely sure you are aware of it, and is making a sarcastic account of the misattribution. But just to spread the 'correct' knowledge - the quote, while attributed to Voltaire, as it fits his style so succinctly well, is not actually said by him.

It was a quote from 'The Friends of Voltaire', and misrepresented him.
> Why can't they be useful for a subset of programmers on a subset of projects?

They can, but that would hardly make a deep impact on the industry. And my question would then be why do you think they'll be useful only for a subset of programmers and a subset of projects?

> Types can be used to encode complicated invariants of software systems, which will be automatically be machine checked throughout the entire lifetime of your project.

I know they can, but so can other verification mechanisms that are less intrusive, or even pluggable types, like those that have recently been added to Java 8.

One point of difficulty -- that the article is talking about -- is precisely those variants that are really hard to enforce, like "every request X will be handled within 300 ms", or "the server will never respond Y if the user has never asked for Z", or "the system will never contact the database if the operator has turned on the offline flag". Similar (though less sophisticated) kinds of guarantees are made and verified by Esterel, without requiring the programmer to supply the proof. Other approaches include behavioral programming[1] (made by the same people behind the research that had led to Esterel), which simply let you specify a rule: "if offline flag is on, disable calls to the database", which will be enforced no matter how much lower priority rules try to access the database.

Types are just one approach for verification. There are invariants they excel at proving, and those that not so much. People who research type systems should, of course, explore anything that's possible with them, but software developers should realize that types are not the be-all and end-all of writing verifiably correct programs, and that for some program properties there are better approaches than types.

> They model invariants, help design and allow easy reasoning over large software projects.

I agree in theory. But I also think they may help up to a certain point and then start hurting. The problem is, this has never been put to the test.

[1]: http://www.wisdom.weizmann.ac.il/~bprogram/more.html
Just sign up for ZenPayroll first and then back port into zenefits. That's what we did.
You're going to have to do it on your own time. Make it a pet project, make it visible on github, and make sure to link it on your resume so potential employers can see what you're capable. of.
Compass – The real estate experience redefined
>showed everyone the documented and recorded evidence that a totalitarian dictatorship was forming

This "dictatorship" involves virtually every country in the West cooperating. That narrative does not work very well so we concentrate on how evil the US is and ignore who is working with them. This line of thinking guarantees the status quo is safe.
Another tactic that has worked well for me is to expose a flat namespace of flags and tunable parameters in config while shunning instantiation of complex object graphs. Complex nesting in configuration tends to be too "raw" for users and sysops, and hurts usability.
What was said up there was that the longest high-speed rail link in France is 106km long. This is obviously absurd and wrong, which even the most cursory investigation would reveal.

What did I fail to read, exactly? Is it that seszett didn't explicitly specify "high speed" in that one sentence? As I said in my reply, so what? The overall point, that the 106km figure is ridiculous, stands regardless.
Wouldn't it be better to just eliminate or reduce HR's involvement in the hiring process? Especially at a large or medium sized company, HR has roles outside hiring, like dealing with workplace harassment, ensuring compliance, and managing employee documents.

Beyond filing paperwork, I agree that hiring shouldn't be an HR job. Unless HR is hiring for HR, let the teams decide who to hire.
I don't think anyone was ever credibly claiming that Snowden's documents were fake, so that doesn't really seem relevant.

There's a huge difference in terms of media appeal, journalistic norms, and general public appeal in having original source documents vs just a story.