skysight-inc/HackerNews huggingface dataset:
There are plenty of other lithium ion chemistries that use no cobalt. If push comes to shove we use them instead. I already use LiFePO4 everywhere I can.
Depends on whether you consider the extra columns to be yours or those of your audience. If they're yours, use them however you want. If they're your audience's, then stick to the 80-column standard so your readers can tile standard-sized windows the way they want on their large monitors.

Especially important for side-by-side code diffs.
True, but Rust feels like C with the good bits of C++, but none of the weird ones.

It doesn't have Rule of Three (or Five), it doesn't even have constructors. No SFINAE surprises ("templates" work like Concepts which are promised, but not in C++ yet). No headers. Pointers are "smart" by default and moves work without explicit std::move. "Panic safety" is less taxing and needed less often than exception safety. You can pass objects by value without accidentally truncating them, etc., etc.

C++ can do a lot of nice stuff, and even a lot of it quite safely, but I feel like it's going to backstab me every time I forget about some obscure rule, and it's going to be my fault for not knowing it. In Rust I can be confident that if it compiles, it's good.
Building hardware is the easy part. Making it play nice with the firmware (and, um, writing the firmware) is the hard part - we haven't been able to do that well with silicon, so far.
Mobile devices not supported (yet).

I really wanted to see what it’s about but I guess I won’t find out.

You could at least add some pictures and a simple description to entice people to go to a desktop to see it.
News addiction. But also an insane awareness of the latest tech that I’ve leveraged at startups for the past decade.
Nowadays it's really easy enough to use real Haskell in the browser with GHCJS, and FRP libraries like Reflex provide a much more complete experience than Elm's restricted form.
I can't see any numbers comparing the rust implementation and the optimised javascript. Did I miss them in the article?
I also poured over HN while working dead end retail for 3 years. It quite literally sent me into the mental health system.

I picked up a heeeap through osmosis, did a dev bootcamp for web dev/JS/React, spend a year being rejected from places, did almost nothing but self study + Github projects at the same time, self learnt Python and it finally paid off this past October with an offer.

I started my position as a graduate Site Reliability Engineer this last Monday since it's my employers inhouse program where grads rotate 4 times (ie frontend, backend, mobile) in the first year before settling into a position. Personally, I have 2x 6 month rotations of SRE and Cloud Data and it's very exciting!

Come to think of it, I've still been meaning to write a post about all the "junior" positions I was rejected from. It really sucks when you're starting out.

One startup who I did a test with, and never got a response, actually went bankrupt earlier this year which was a weird feeling.
exhaustive pattern matching
"And before you know it you'll be bad at 25 languages, instead of good in one or two that allow you to do what needs to be done."

I'm not sure that follows. Even if you choose to specialise in one stack, it is healthy to see a diversity of solutions and opinions/trade-offs in solving similar problems across different stacks. Even if you don't end up mastering any of those, exposure to those can help inform how you approach problems in other languages.

A lot of great ideas in modern ecosystems were stolen/inspired from lateral solutions (e.g. using immutable datastructures with React from the ClojureScript world, Netflix's Falcor influencing om.next in the other direction).
Here's the bug:

https://bugs.chromium.org/p/project-zero/issues/detail?id=14...

It's a race condition that allows an ACG bypass. Under ACG, only privileged processes in the browser process ensemble can create new executable pages. But the mechanism by which privileged processes "give" executable pages to less-privileged processes enables the lesser processes to populate them with code of their choosing. It's medium severity because it's just a bypass of a (relatively new) security control. For it to be useful, you already need to have an RCE-able bug.

The headline is a bit misleading, and the article keeps you on the hook for a couple grafs before explaining.

You don't get "indefinitely, until the patch is released" from Google. You get 90 days. It's on you, the vendor that shipped the buggy software, to figure out how to ship a patch within 3 months. If you can't, you can ask for a grace period, which Google isn't obliged to give you (but did give here). I believe, but am not sure, that Google will give longer grace periods for very severe vulnerabilities, at their discretion.

This is how it has to be. Big vendors --- Google almost surely included! --- will backburner patches for months and months if they aren't given hard deadlines. Deadlines serve the users --- not just of the vulnerable software, but of all the other users that might depend on the people who use that software in some indirect way.

Either way, it doesn't look like anything was done to spite Microsoft. But a "business continued as usual" headline wouldn't attract as many clicks, I get that.
Thanks a lot for Redis!!!
90 days + 14 days grace time.

Why isn't that enough?
How to Create the Story for Your Startup
This is a great article and goes to show that statements like "X language is fast" are a little blurry when you put the language in the hands of a skilled developer, who can go beyond the standard idioms and surface level understanding of a language to use it like it's another language.

At the end of the article, the author wisely chooses to move some objects out of the control of the GC:

We are allocating hundreds of thousands Mapping objects, which puts considerable pressure on GC - in reality we don’t really need those objects to be objects... First of all, I changed Mapping from a normal object into a wrapper that points into a gigantic typed array...

This suggests to me that we are no longer programming the way one usually does in a dynamically typed, garbage collected language -- and thus it might still be the right decision to move to something like Rust (or Swift or Go) where there is considerably more control over allocation.

The author is able to achieve a speed-up of ~4x which is close to the 5.89x achieved by the Rust implementation. There are benefits to having all ones code in the same language; but there are also benefits to switching languages to obtain better ergonomics and safety properties.
The capitalisation issue is the sort of thing you'd tell a junior developer to avoid in code review: By tying one design decision (what access levels are possible) to another (code style), they effectively made it impossible to cleanly change the design around the former, because the latter won't admit any more values.
Great article. The one that hit home for me "One lone engineer on a big project silo’ed away".

Was on a project where we had multiple applications. The team had a new employee code an entire system as a prototype but then it was decided to put it into production. Nobody ever reviewed this code, and that engineer told me himself that the code was crap. He left the project to get away from this code and I inherited a mess, with nobody to ask questions from.

To make matters worse, the entire company relied on this system and there were about 20 regular users of this system. I was responsible for handling all of their feature requests and support which was often. Many bugs I fixed were extremely challenging edge cases, and there was zero appreciation for the complexity of many of these.

My manager was telling others at the company the code was solid, and it's "just python code" which can be figured out.

I notified the company I was leaving and they begged me to stay. Even offered to "release" me and hire me at a higher salary under another manager. The only issue was I would be required to support this same project.

My manager refused to give me a release date so I had to call HR and tell them I needed to leave at any cost. Pretty sure it's a disaster there since I left.
I too dislike the right/left classification. It didn't really exist until the French Revolution, and the attempt to stretch it into a universally encompassing political continuum has resulted in an impoverished view of politics, imho.

For instance, despite the similarities, I don't think that the prevailing progressivism in SV can be equated with classical Marxism, which is far-left in the original sense, since they disagree fundamentally on the most central questions to the Marxists, which are the centrality of economic class, and private property. I find the links between Fascism and far-right (again, in the original sense) Conservatism to be equally tenuous, given that they radically differ on the attitudes towards tradition and progress. Even the Republicans and Democrats don't really fit the mols. Think about it: what grounds do opposition to abortion and market liberalism have in common, really?

Trump doesn't fall neatly onto the line either, and I suspect that the tendency to place him somewhere on the old line has contributed to the rather confused, and reflexively negative reaction that many in the political class have had to his emergence and presidency.

It's best to think of political outlooks as clusters of positions in a high-dimensional space. The left-right model is like a poorly-executed PCA -- a reduction that confuses as much as it clarifies.
Nah I worked at Google and even there most engineers didn't like Go.
It's only necessary in edge cases of super-hot code, avoiding argument adaptation "because performance" is a bad idea.

It's also a v8 specific weakness, it's not hard to imagine a small fix getting rid of the performance penalty.
I once had stumbled upon this long back, been looking for it since then (for other purposes) cheers!
Hence, the Outer Space Treaty. Not a coincidence that this was signed shortly after the Cuban missile crisis, and while Soviet and American space programs were in full swing.

https://en.wikipedia.org/wiki/Outer_Space_Treaty
I'm a very happy Neovim user, what could I do to become a very happy Neovim contributor as well?
I work on SpiderMonkey JS performance (and got mentioned in the article for fixing a perf bug!) and this is exactly the point I wanted to make. If you're not a VM engineer, it's much harder to write fast JS. Wasm also gives you much more predictable performance across engines, without requiring (often engine-specific) 'hacks' like function cloning.
> At this rate, it’s not if your kids, or mine, are involved in a school shooting, it’s when.

I mean, I think Americans are idiotic when it comes to guns but come on. This is just an out-right lie.
The recording of steps is called event sourcing and both vuex and redux implement the pattern, I'm sure elm is great but that benefit is not unique to elm

https://martinfowler.com/eaaDev/EventSourcing.html
Another article to add to https://github.com/ksimka/go-is-not-good
With an interruption every 15 minutes, sounds like you would never reach a state of flow.
uMatrix is a superior alternative to noscript and should be recommended instead. It allows for a far greater amount of control over displayed and loaded content than noscript, and with a more intuitive UI.
it's important to voice these concerns to minimize the chance that one will end up having to use these tools in future jobs

Go and its history shares a lot of similarities with Java, but it hasn't had its 5.0 moment yet
Oh god. As a former spare time programmer (current PM, former arch/eng), with a three month old. There. Is. No. Time.
> I do really like that Go makes the AST a first-class citizen and a core part of the standard library.

Seconded. But I wish they would go one step further and make its compilation / code generation a first-class citizen too, including dynamic loading of generated code.
Async only interop to JS is a bit sad though
Let's learn from Patagonia
We do a weekly standup with the team (working on the same product) and monthly company all hands. It's very useful to be aware of what everyone is working on. Sure it takes 15 minutes and it's a distraction. Thats why we do it only once a week in person and every day via a Slack channel (simple message, hi i'm working on xyz today). Not doing a standup makes it easier for things to go off track. People working on the wrong things, making mistakes with prioritization by not being aware of what other people are working on. Maybe you don't notice this as much as an individual contributor. As a manager I've seen this go wrong so many times. The group of people should be relatively small. Definitely < 20. But for that group every should have a rough idea of what everyone else is working on.

It's also the realization that I can't/won't fully plan out someone's personal roadmap for them. They need to understand what the team is working on, what the business priorities are and make their own tradeoffs. I set high level priorities of course, but I think people should have control/ownership over their day to day tasks.
> The tried and true approach of providing a compare method works great and has none of these drawbacks.

https://play.golang.org/p/JNhlfYoZgCV
>Deadlines serve the users --- not just of the vulnerable software, but of all the other users that might depend on the people who use that software in some indirect way.

What if a user/users would rather a company spend their resources into adding a feature they care about, than fixing a bug that doesn't impact them? (Not that I disagree with Google's position here..., just a contrarian view)
Why not just gzip the JSON? Should make complicated JSON around an order of magnitude smaller, and be more portable to boot.
The language design choice to use capitalization instead of a public/private keywords is, in my opinion, a poor one. It seems like they've made choices to minimize keywords rather than be explicit and intuitive.

I'm not saying that it can't be learned/taught. Also, IDEs like GoLand help, but at the end of the day the capitalization approach seems like an unnecessary annoyance
Rust is ambivalent about it. You can put tests in external files and force yourself to test only the public interface if you want.

But you can also throw a `#[test]` function alongside the implementation. It's sometimes super convenient to test a leaf helper function directly instead of mocking a whole program around it. And because the test lives next to the implementation, it's easy to change or delete it when the impl changes.

There's another nice side-effect of having one standard test framework - `cargo test` can test any Rust program. The Rust team can automatically test new compiler releases against all known Rust code: https://github.com/rust-lang-nursery/crater
Are you burned out? Perhaps a weeks vacation or even longer if you can afford it might be in order.
Having micro-optimized and maintained JS code over years and dozens of browser versions, I cannot echo this enough. Tuning JS both the in face of fickleness of VM quirks and data/context is a losing proposition for all but the most speed- and core-functionality-critical code.

The point of rust+wasm benchmarks is that one can write reasonable, maintainable, functionality-focused code (not to mention all the rust-specific benefits) and get good performance out of the box.
For gay marriage, the part that made being against it bigotry is the part where you are denying other people fundamental rights, and all of the ancillary rights that go with that. You are, in essence, creating second class citizens. And for something that literally had zero effect whatsoever on those that were against it.
I think "Jewish" in this case refers to whatever racial criteria Germany was using to choose people to exterminate, not religion.
Power laws and scale-free networks are discussed in
https://arxiv.org/abs/1801.03400 with HN comments at https://news.ycombinator.com/item?id=16144867. Both this and the cited paper are worthwhile reads for power law users.
But LiFePO4 has much lower energy density right? So not great for cars or airplanes.
Thanks fafhrd!
the pace of making changes grinds to crawl as codebase becomes larger and more complex. eventually the time spent trying to understand code, figure out what changes can be made safely and paying down tech debt outweigh the time spend making measurable improvements.

key things that help
- focusing on extensibility/abstraction in areas of code that will require ongoing changes. This is where you most need experienced and talented engineers.
- maintain testing discipline
- conservative dependency management and picking the right battles between DIY and open-source
- creating periodic blocks of time for engineers to refactor software or architecture.
continued...

There is no mental trick here; maybe it’s a pre-mental trick. It’s not even a habit. Habits are mental. There is a deep power in the moment that originates before the mind arises. Slip into these depths before the mind muddies the water. Feel it wriggle in protest. Let it wriggle; let it pout. You don’t need him anyway no matter how much he proclaims you do.

Just get up when you want to get up. Sit down when you want to sit down. Work on a project when you’re feeling restless and want to work. Work on a project when you’re passionate. Work on it when you’re bored. Don’t wait for a preconditioned moment. Your body will naturally ebb and flow between work and play. It has an ancient understanding of this rhythm, trust it.

You’ll be surprised how many moments in a day you want to sit down and create something. You’ll easily get in several hours. It’s like making tea. It doesn’t require thought. It’s just a series of simple motions. Stop planning, stop hacking, stop thinking.

Don’t believe the mind when it pretends to be your friend. It comes up with all sorts of ways to fix procrastination, but every solution is by definition not the work itself. Just work! And play! And work again!

You want to see what it looks like in action?

You’re looking at it! I read his comment and replied just a few minutes ago. I enjoyed the process, so I expanded on my comments. A few minutes later and here we are. No tears; no blood; just joy. And now some tea.
I'm afraid this illustrates how poorly informed you are - you clearly are not an accountant with significant experience (just saying). This goes doubly so of your wife - if this is her level of understanding that is very worrisome - the idea that she is licensed with this attitude is scary - it's what you don't know that can bite you.

Some facts for those that may read the above and get the wrong idea. EVERY major big four firm and their clients and all other major players have had great difficulty in this area. It's super painful because the question is not - are the numbers right - which pretty much everyone in accounting would understand putting efforts towards, but a very meta (and wide) question on systems getting to the numbers (with turns out to be subjective).

What's crazy is I can step back from this type of thing and without even going into a company spot lots of issues likely illustrating poor control or even worthy of enforcement action (actual enforcement) from the outside. Seriously, go to a consumer complaint website - if you see a ton of the same complaint it's worth a look.

This is why CFPB was such a powerful idea. Yes - they overreached slightly but 90%+ great work - and very focused on bad actors which was wonderful to everyone trying to do right thing. Absolutely should have kept going with that idea.

Just a flavor... pay close attention to words like all and every which open up each item to huge scope - the auditor here picked a random month to test a system and actually went in person to a meeting where reconciliations were performed. Now repeat this 100x for each client. Every firm out there doing audits has had issues like this (many).

These are the MOST experienced people - so I laugh when I hear that "only inexperienced people" have problems.

KPMG:

A.1. Issuer A

In this audit, the Firm failed to obtain sufficient appropriate audit evidence to support its opinions on the financial statements and on the effectiveness of ICFR.

The Firm identified this manual control and certain other manual review and reconciliation controls as compensating controls, but failed to sufficiently test these controls.
Specifically —

o To test the review and approval of changes to the financially
significant applications, the Firm tested a sample of changes to
determine whether they had been appropriately approved. The
Firm's testing was not sufficient as ... its sample was limited to changes made in only
one month (the third month before year end) and the Firm failed to
consider whether this month was representative of changes made
throughout the year.

o To test the manual review and reconciliation controls, the Firm
obtained certain monthly operating review reports and
reconciliations and attended certain monthly management meetings
where the reports and reconciliations were discussed. The Firm's
testing was not sufficient, as (a) it did not test controls over the
completeness and accuracy of the data in the reports, and (b) it
failed to test whether these controls identified all of the relevant
issues for investigation and, if so, whether such issues were
appropriately investigated and resolved.
Yeah, this is also where value types are really awesome and you can get the same results from(assuming no strings). Sadly other than C# most of the mainstream GC'd languages don't include them yet as a feature.
Presumably he means taking his vacation days so he doesn't have to put in any days of work in the 2 weeks after he puts in his notice. I'd guess he isn't American -- the term "holiday" is interchangeable with "vacation" in most of Europe, for instance.

That being said, your point about bank holidays is a good one. Never give your company free labor -- they'll never give you free capital.
Saved a life.

About 5 years ago a friend was kidnapped by Indian police on behalf of their parents who were trying to gain custody of them, in India, on a Friday evening. By the time they landed in Delhi on Saturday, HN had helped me and another prominent user here find a lawyer to take the case. When the case was heard first thing Monday morning the lawyer demolished it and this friend regained their freedom (and has had it since). Whilst I cannot be sure what would have happened if the case had gone the other way, I think it could easily have ended in this friend's suicide.

HN has helped me in countless other ways but this one trumps them all I think. You don't get much more tangible than actively saving someone from abuse and possible death.
A pretty reasonable test would be that some function panics on invalid input, in this case by way of integer overflow. This test would pass in a debug build, but could cause unintended, possibly even insecure, behavior in a release build.

Ideally you would run your tests in both debug and release modes, though. :)
Needs a (2016)
I don’t think that’s right. You can have the account in your name AKA sole proprietorship with a dba and then change it to the legal entity later (you may have to migrate to a new account, I can’t recall) but it’s not too hard. Anyway until you have paying customers I’d put off everything else.
While it's not perfect, if you use Dep and VG your vendoring issues are pretty much solved: https://github.com/getstream/vg https://github.com/golang/dep
All that time spent arguing with me wasn't wasted after all!
True, but I'd classify both as overriding explicit user preferences.
Interesting distinctions. How do you get them to work together? Http and TCP/IP?