skysight-inc/HackerNews huggingface dataset:
Thanks for reading!

Hourly vs. fixed is always a hard decision for me. I feel like there are perverse incentives with both.

For a fixed-cost project, I feel like it incentivizes the freelancer to finish the project as soon as possible, so quality becomes a cost for them. And there's a weird imbalance of power because I, as the client, can keep demanding tweaks/polish past the point where it's reasonable (the client and freelancer likely have a different view of how many tweaks are "reasonable").

The other issue is that not all reports are equal. If I assign the freelancer to write a report that answers the question "Is Propel keto?" They can just look that up and write it in about five minutes. But there are harder questions like, "Is coffee keto?" There are many different types of coffee, so it's difficult to write a single report that covers them all succinctly. Or, "Is erythritol keto?" With any sweeteners, there's often some debate about whether they're keto-friendly, so it requires more work to summarize the debate.

I didn't want to get into a situation where the freelancer is annoyed to get a "hard" report because they only earn the same as an "easy" report. And I didn't want to negotiate each report separately.

Hourly contracts solve those problems, but it brings others. The biggest issue is that it obscures costs. I can't predict in advance how much I'll end up paying for the work. And earning by the hour can incentivize the freelancer to drag their feet to pad the bill. I haven't ever experienced that in practice though.

Overall, I feel like hourly contracts align incentives better between the freelancer and the client. I'll typically do fixed-cost contracts if I only have a few defined tasks I want (e.g., "I'll pay you $250 to add this feature to my site").
Rust's Result or Haskell's Either are wholely better for this purpose.
I use comments to document assumptions that are likely to be wrong, either now as I write it, or later when someone (probably myself) changes it.

It is absolutely useful to do, and really not too difficult.

Languages that allow for more formal assumption-checking (especially before runtime) are even better, but comments have an additional benefit of being understood by a human directly.

I wish languages with static analysis could somehow allow authors to encode human-friendly/sematic errors that you often see as runtime exceptions into the static analysis itself...
I worked for a month in college at a car dealership and it was every bit as shady as you think.

My boss asked me to help him pass the drug test by loaning him some urine (I declined).

One time after closing the sale of a car, the shop swapped out some damaged parts and claimed the new owner was responsible. It was at night so he hadn't noticed the damage before driving off the lot.

There was also a nonstop flood of white-lies to try and build rapport with customers. Every salesman had a kid the same age as the customers or a cousin who worked at the same company.

I was relieved to get out of there & started working at a software company instead. Despite how much I hated the job, the sales skills I learned there have served me well.
Sometimes it's good to have a block comment explaining the motivation behind a chunk of code or particular line, or just to clarify the individual steps in small modules, but you have to remember you aren't writing prose.

I think around 10% of your code as comments is a good measure, but also remember that you may not revisit a module for years, and you will come to appreciate each and every breadcrumb you left which leads back to your original state of mind when you wrote it. If you measure code quality as maintainability, then comments can indeed increase code quality, just non-linearly.
Having written safety critical code (and reviewed it) it is very useful.

On the other hand, as soon as someone not safety minded gets their hands on it, trouble happens. Comments aren't updated (and there's no way to make sure they are checked, other than GREAT code reviews by the original authors, usually with at least two or three people doing critical reviews). Then the comments can become misleading and a liability as people will take them for truth, as they should.

If you have code that has a lot of subtle dependencies or edge cases, really great comments can help enormously.
I emailed dealers and no one wanted to work over email. One even flat out wrote back saying they don’t send quotes over email because they know i will just shop around for a lower price.
All About Facebook Messenger with Affiliate Marketing
I took a look at our metrics dashboard. Two questions that would help me fix this sooner:

i) Are you on Opera/Windows combination or another?

ii) What url were you on for this? https://bubblin.io or did you open some book?

This is Marvin, the founder & developer behind Bubblin.
Nothing to do with ratio but I’ve found that the quality of the comments often reflect the quality of the code.
I can't say I've written overly branchy code, but I have become a fan of leaning on the side of "verbose" regarding comments in code - specifically in nested if statements. So many in the Ops area, "just" writing scripts for themselves ( that the rest of the team starts depending on) will just pound out a script that works, with no notes on its function, design or requirements.

15 months later, they moved to a less stressful team, the app is not functioning because the servers got upgraded, and you wonder how the hell this thing works. And if it doesn't work, you have 60 hours of redevelopment to do.
SF residents do take extreme stances sometimes, yes. Shaming a disadvantaged person seems unhelpful, to me.

Culturally I'm thinking about something which might not be what you were asking about -- the responsibility of the society to care for its disadvantaged or "ill fitting" citizens. US does have some programs to help but it's also famously still crushing large groups of its population.

I don't know what the solution would be.
This code reminds me of why ML-like languages with Maybe-style types and case expressions that generate compiler errors for missed alternatives are good. I bet rewriting this in OCaml or Haskell would lead to tighter code and might even unearth a couple possible states that haven't been accounted for.
Wow, ouch. Are the punishments for lesser speeding more affordable?
I'd like to add gun mechanics. PUBG has the best gunplay I've ever played. For me PUBG fights are thrilling, like I was there getting shot at, while Fortnite's (or any other game for that matter) are plain old arcadey. I dislike the building mechanic too.

I'd genuinely love for a developer to step up and do a better milsim BR but so far PUBG is king in that niche.
Jerry (YC S17) Is Hiring Senior Software Developers in Montréal
This sort of thing got me into unix based operating systems. Such a fantastic service.
Pattern matching would be nice in this scenario. Would help with isolating responsibility by breaking out the if statements into functions responsible only for the case they know to handle. The additional opportunities to name with more granularity could minimize the comments needed.
Upvoted for mentioning JP.

Great guy. Really interesting insights and ideas. Every word he says has a meaning. It is really hard to listen to someone like him talking. You have to pay attention to each word because that will change the meaning of the whole thing.

He uses meaningful and precise words. Not just empty and unfounded ideas.

edit: now I see how it works. Got downvoted for mentioning JP.
Ads are not something that benefits me, the Ad viewer. I do not want to spend time training your marketing department. Your product is not entitled to my eyeballs. I will (personally) always strive to ignore your existence and minimize your advertising's impact on any of my decisions because your marketing department does not have my best interests at heart.

Advertisements were something we grudgingly accepted for reduced service costs, IMO they have reduced their own value so far that the quantity we are expected to consume is ridiculous. I would really appreciate the whole industry getting regulated out of existence.
Start doing load testing on GraphQL without writing a single Query
If you walked into your bank and someone in the lobby told you complete your transaction at a (fake) bank next door, would you say the bank was hacked?
Credit score absolutely affects what neighborhoods you can buy or rent in (so public schools) and whether you can afford private school. It’s obviously not a 1:1 comparison or “this one is better than the other,” but when like Bill Kristol is floating the idea of regime change in China in response to news about the social credit system, I think it’s important to do some reflecting on our own oppressive systems.
What's up with that tab size? Is that normal for go code?
If we permitted more homes the price would fall. No reason the bay can't become an Asian megapolis.
By working with a product team to develop worst-case scenarios for non-technical abuse of a tool, like trolling, harassment, manipulation via misinformation, blackmail, and so on. Especially as it concerns a tool developed by people mostly embedded in one culture and releasing it to an audience embedded in another. Soliciting feedback from people who study society and social problems, to understand how a tool might be used by people who are not like the people who are building it, might have helped to avoid a lot of problems.
> Having some employers go out of business isn't a bad thing.

Tell that to the employees who rely on those jobs to pay rent. I'm sure they will have a hard time understanding how being forced out of a job is good because some guy online said it could increase someone else's salary.

> Just in San Jose alone there are over 60 Starbucks stores, plus all the other chains and independent shops. Closing a few won't have much impact.

I'm pretty sure the people depending on those shops to make a living would be affected by your blend of altruism.
Yup, been some fun to write. We did it in Cracow Poland, no internet, barely any money, these were times!
What if your friend gave you a free coffee with poison in it?
I'm quite interested in Darling, mostly for the purpose of cross-compiling from Linux -> Darwin. We cross-compile a lot of things for Julia, however cross-compiling executables that need to bootstrap something, (e.g. building something that then needs to run to generate output which is then used in further builds) can often get tricky. There are of course workarounds that can be utilized in order to get this to work (build a Linux-native version and a Darwin version, then use the Linux-native version of the software whenever a bootstrap is required) but this is tedious and not foolproof.
Having played shooters since the arena shooter days... no, I definitely disagree.

I like to compare arena shooters vs. Fortnite/Overwatch as chess vs. Settlers of Catan. Arena shooters were much more "open play" in the sense that there were few enough game mechanics that you could mostly guess your opponents' tactics and it often came down to execution and minute variations in the gameplay.

The newer shooters add many, many game mechanics that complicate and randomize the game. Overwatch's large stable of characters, for example. This creates a problem where part of your skill is reading matchups from an intractably large number of factors, then executing on it.

I don't consider either to be superior, but the games put emphasis on and reward different skills.
> I'm also sure it's still a mess.

Definitely not. Bugs are not a common occurrence currently, while they were present in every single gaming session I had, even for the last year.

Give it a try, the game is in a great state.
Elites Tweet? Characterizing the Twitter Verified User Network
Yeah - our politicians can allocate the funds to implement the priorities requested by the citizens.

At the same time the citizens need to establish more holistic expectations around what their society is all about.

Materialism, identity defined by an individuals job, tribalism all help and hurt. I think we're missing a kind of consideration / a kind of subsystem in our societal system, resulting in the "unsolvable" situation we find ourselves in now. With a different perspective I think we could find new solutions.
Roots of unity are easily related to frequencies. They are just ways of walking around the unit circle in equal steps. If we want N steps, we take the N-th power roots. These walks around the unit circle give us a discretized sine and its quadrature cosine. It's all together because rotation is multiplication, and harmonic motion is related to rotation.
No more paperwork: Estonia edges toward digital government
As shells go, I used to pay for FreeBSD hosting on pair.com. The problem with free (I like free stuff, just not free shells) is, if it ever becomes popular, some people will abuse it and a Tragedy of the Commons is a likely result... it's better to pay for what you use so that:

a) survival of the service is more likely assured

b) there's someone to file a ticket with and an SLA/SLO when things break

c) doesn't enable jerks to ruin something for everyone, i.e., draconian limits or taking a service offline
https://github.com/jlopp/physical-bitcoin-attacks
Yes, and whatever it is that they cut back on, it is probably no more worthy than more wages going to people in the bottom portion of the income distribution.
No, I do not find it indicates quality.

To me, comments are noise, and code is signal; the code is what actually executes.

It's one thing to have a summary of intent at the start of a listing, that should not count towards the code:comments ratio.

Once the code begins however, there should be a minimum of comments necessary - especially in a high-level language not constrained to assembly-level instructions.

In assembly listings it was common to have two columns, the code on the left and comments which often resembled high-level pseudo code on the right. Here's some representative apollo guidance computer source:

MAKEPRIO	CAF	ZERO
TS	COPINDEX

TC	LINUSCHR
TCF	HIPRIO	# LINUS RETURN
CA	FLAGWRD4
MASK	OCT20100	# IS PRIO IN ENDIDLE OR BUSY
CCS	A
TCF	PRIOBORT	# YES, ABORT

When you're already working in a high-level language like C or Golang, you should be able to clearly communicate what is going on without the need for littering it all with comments.
I remember there being a bug in chrome which causes it to keep loaded images in memory forever, this can cause RAM usage to grow into the gigabytes range but this only affected electron applications. Additionally in a code base as big as chrome it wouldn't surprise me if there are thousands of tiny variants of those bugs that leak a few 100KB of RAM here and there which then add up to 100MB or more even in a sufficiently optimized application.

I think the fundamental problem is that chrome just wasn't built to host a single application that never refreshes. It's optimized for opening dozens of websites and cleaning up resources in between page loads. This requires a certain amount of memory no matter what you do.

In terms of rendering performance there aren't any significant problems if the DOM manipulation is done correctly. It shouldn't be any slower than say Qt assuming properly written JavaScript.

I'm sure a solution can be found to solve those problems. However the sad truth is that no one who chooses electron cares about any of that and would rather point out how cheap RAM is and that you could solve this problem by spending 60€ on another 8GB of RAM.
Why do you say Haskell is an example of this? You can return undefined for anything, and have incomplete pattern matching, where if you don't mention a particular case, there is a runtime crash.

An example would be head, which takes the first element of a list and throws an error on an empty list.

I really love Haskell but it seems as if they are going for something different here than what Haskell provides.
A guy upthread is mentioning quake champions doom edition as an alternative
Why shouldn't they enjoy a first mover advantage, if they invested their money in doing the research to create an entire market? That's how capitalism and free markets are supposed to work: those who take the risk get to reap the rewards. Not some big company that waits to see whether the startup's idea pans out, then jumps in with a hundred engineers and millions of dollars and a huge marketing/sales apparatus to take over the market. It's easy to say "share everything" when you've never created anything others would value. Even though I'm way over on the left side of the spectrum myself, I reject that moocher ethos.
A low credit score might mean you can’t rent more desirable apartments or buy more expensive homes that are well-served by public transit, so yes, it could prevent you from using public transit if you can’t live somewhere where it’s a feasible option for you.
I particularly like the advice on how to hire:

> 1. You want to find people with mastery, true depth.

> 2. The problem is, that isn’t enough. You need people who had failed and recovered. The core skill of innovators is error recovery, not failure avoidance.

> 3. Breadth, meaning curiosity about things beyond what you’re deep in.

> 4. Collaboration. Not a synonym for cooperation, but the ability to magnify others.

As a separate aside, I didn’t realize Apple invested that much in training.
Life is hard and it will demand hard people.
Hey, author of the post here :)

Thanks so much for sharing, and I'm glad to see some good discussion going on here! I'd love to answer any other questions people might have.

Also, for those newer to the accessibility space, I have a free email course that covers 10 common accessibility mistakes, how to fix them, and the accessibility principles behind them. Here is a link to the course: https://benrobertson.io/courses/common-accessibility-mistake...

If you want see the material but not sign up for an email thing, I have a talk recorded covering the same material: https://benrobertson.io/accessibility/common-accessibility-m...

Like I said, happy to answer any accessibility questions people might have!
GitLab Goes Serverless
> problems rarely happen in isolation

Problems usually happen in isolation. Your dataset is skewed because you've read a bunch of accident reports. When there are multiple failures together, this is much more likely to lead to an accident. When there's just a single problem and it's handled with no loss of life, they don't write a report about it.

I agree, the stick shaker gets a pilot's attention. What the stick shaker tells the pilot is that he's about to stall, but that's not what was happening. Shaking the stick is loudly yelling false information at the pilot!

Let's look at the epistemology here. If we're only looking at the two AoA indicators, and one reads 5 degrees and the other reads 25 degrees, we know that there has been a sensor failure. All you can say that the airplane does not know what its angle of attack is. That's fine though, we've been flying planes for a hundred years without AoA indicators, even ones that had way worse pitch instabilities than the 737MAX. If the airplane doesn't know the angle of attack, there is no reason for it to activate the stick shaker, put in nose down trim, or do anything else except to calmly notify the pilots that AoA is unavailable and therefore MCAS is disabled. All the pilots need to do then is fly the plane normally and not do any crazy banked turns or extremely abrupt pullups at low speed. It's definitely wrong for the plane to start dialing in nose down trim "just in case", because the "just in case" can kill you if it's not necessary!

On AF447, there were as usual, a lot of mistakes made. One problem clearly though was that the plane was giving the pilots a lot of conflicting information that confused them. If the plane was seeing three different airspeeds, the best thing for it to do would have been to put a big red X over the airspeed tape and let them fly by pitch and power. This is exactly why a lot of instrument pilots in older smaller planes carry a little instrument cover. If say your AI fails in IMC, you don't want to see the wrong indication at all, so you cover it up and use your other instruments. Seeing a wrong indication, even if you know it's wrong is very confusing and can lead people to make errors in reasoning, especially in a stressful situation.
Regarding factory farming vs. life in a state of nature: on average, each breeding pair of animals will produce just two offspring that live to maturity and reproduce. Which means that the vast majority of animals ever born will die of something other than old age. And mostly those deaths will come via predation, starvation, or by freezing to death (in northern climates). In other words, the scale of death and misery in nature is massive.

And regarding my second point somehow justifying human slavery: that's only true if your moral system somehow makes humans and animals out to be equivalent. But we don't even make different classes of humans morally equivalent to each other, so why would we make animals morally equivalent to humans?
That number is not a great indicator of whether there is a labor shortage or not, because it is for everyone 16 and over, so it includes college students (and even many high school students) and retirees. It also counts people who are seeking employment, but who aren't actually employed as part of the labor force.

A better indicator is employment-population ratio[1] which has recovered since the drop in 2008.

[1] https://fred.stlouisfed.org/series/LNS12300060
> do other HNers also feel that a high comment:code ratio probably indicates quality?

I consider it a big risk of errors.

When some code is changed, will all related comments be rewritten too? I doubt it.

And then you end up with a codebase which indicate A but comments which clearly spell out B, and you as a maintainer have no idea what to believe.

DRY. Don’t repeat yourself. The comments should not double up for the code. That’s just future maintenance nightmare.
"you can't get whiter than Irish"

Sectarianism was a pretty dreadful problem in Glasgow (and to a lesser extent the other cities in the Central belt of Scotland) - it still exists although not nearly as bad as it used to be:

https://en.wikipedia.org/wiki/Sectarianism_in_Glasgow
While your fundamental point is very valid, there are plenty of times where a comment to flag up a fine point of your clean and precise code will save future-you hours of head-scratching.

I absolutely do not comment enough, but knowing this, I try to stick to the principle that if I have had to stop and think through an expression before I write it, then I am likely to eventually thank myself for leaving a short explanatory note.

And moreover, it may not be me scratching my head over that nest of ternaries in a year's time - it may be some other poor soul. And while that poor soul won't thank me for leaving a comment, he or she will certainly curse my name - quite possibly vocally and publicly - for not leaving one.
I think I may have misread your earlier response. When you wrote "as a first strike becomes possible", who do you think might be doing the first strike, and against whom?

Since this was an article about Russia's hypersonic weapons, I assumed you meant Russia. Upon second reading, and with your response now, I am no longer so certain.

I agree that missile defense is an expensive fantasy. My view of Russia's hypersonic weapons are in part that it's a relatively cheap way to cause the US to waste a huge amount of money on military spending, while keeping the US from thinking it has first strike capability, perhaps via a magic missile shield.

Eg, the Russsian "Status-6" nuclear torpedo - real or not - cannot be used as a first strike weapon against the US, but is an excellent second strike weapon.
But you can make custom sigils.
This style is common in large enterprise C++ code bases and is definitely useful when LOC exceeds a couple of 100k and the business logic complexity is high, and the project is mission critical and expected to be around for many years.