skysight-inc/HackerNews huggingface dataset:
> FP people don't use the term "design pattern" often, but that's what most monadic stuff really is.

This is exactly backwards. A monad is not a design pattern - a design pattern is an awkward manual reimplementation of a monad (or another category). In OO design patterns the structure behind what you're actually doing is buried under both the clunky type system of most OO languages and the arcane memorization of patterns and their names.

The whole reason design patterns exist is that in C++[1]/Java/Smalltalk/etc the type system is not quite good enough to enforce consistency with certain complex designs - failure management in concurrent systems being an excellent tricky example. In imperative/OO-dominant languages there is inevitably a huge amount of boilerplate around checking nulls, lots of wrapping things in try/catches, and so on. Design patterns are an useful abstraction of this boilerplate in a way that's easy to maintain (and, more importantly, are an intutive common language for many programmers). But they are no substitute for categories, which allows the compiler to make sure the design pattern is actually properly implemented.

But this stuff is quite complicated. It really does sound like a lot of navel-gazing mathy jargon. But the way you've phrased this makes me wonder - and I am aware this is condescending - if you haven't actually used categories in practice.

My thinking on this has been strongly influenced by this excellent blog series from Mark Seemann: https://blog.ploeh.dk/2017/10/04/from-design-patterns-to-cat...

This blog series is a very very good lower-level introduction from the same blog, with examples in C#/F#/Haskell: https://blog.ploeh.dk/2018/03/22/functors/

[1] That said, you can be pretty fancy in template C++ with category-level type programming.
I agree with you that private APIs should be off limits, particularly to the author of a library which has broad use. But at this point, Apple's previous inactions sent the wrong message and by acting on this now with zero grace period a lot of developers are left in the lurch. Whether you want to point the finger at Electron or Apple doesn't matter, Apple has the opportunity to make developers lives easier here and instead they are just indifferent to it which is frustrating.
Funny how you seem to be tortured by even the idea of Safari, while I (and millions of other people) use it every day and haven't even noticed these supposed atrocities.
Even more, the WebView on iOS is not Safari. It's dumbed-down Safari that does not support certain features that Safari supports (service workers and all PWA-related stuff). So it's not equal competition at all.
> But taking more aggressive measures poses risks. The people using services for free — especially younger consumers — may never agree to sign up for a subscription, no matter how many hassles they endure. That means companies would mostly just be alienating paying customers, who could get frustrated and stop using an app or cancel their service. In other words, there’s plenty of downside and possibly little upside.

Yeah, they never learn, do they?
Just reading the first two responses from "Ben" in that e-mail thread and parsing his attitude should make it obvious to anyone that this is a project you should steer well clear of.
So, are you saying that Apple should have to maintain any internal OS functions that Chrome uses as if they were stable API forever, because its Chrome?
It was actually an ironic take on the common "more-logical-than-you" stance that nuclear proponents often take, pre-emptively writing off anyone not gung-ho about nuclear as people who can't make objective evaluations either because they're either so irrationally scared of nuclear or are so hippy-dippy that they just want unworkable solutions that sound good but can never work. But yes, it is annoying isn't it?
No matter how outdated and irrelevant those computers are today, their look is so nostalgic to me like no other thing. Other things that disappeared from our lives, such as rotary phones, vinyl records (not completely lost though), the beautiful stereo systems of the 1980s, etc can never compare to the feeling of seeing and touching a computer for the first time. The magic of technology is lost at least for my generation, I don't know about the others.
> why precisely it seemed so important a century ago.

Free will is a proxy argument in the debate about physical determinism, which is a component when talking about metaphysical and spiritual reality, which comes up in discussions about the existence of God - whom the modern zeitgeist doesn't believe and/or wishes to disprove.
This whole storm about macOS. Which is an extremely open platform. You can develop apps with amazing tools by Apple or you can do C, C++, Ruby, Java, Electron you name it. You don’t even have to pay anyone money to build an app and share it.

There are a lot of misconceptions in this thread and claiming that macOS is not open is really the biggest IMO.
Thing I've tried and mostly failed to get across. There is usually plenty of money and resources to throw at products that are making money. Vs the amount for those that aren't.

As long as you're not painting yourself into a corner a lot of things can be fixed 'later'. Later when your not desperate to get the thing off the ground. Later when you can throw two engineers at it for six months. Later when the pain points are well understood.
And one of the reasons NoSQL didn't revolutionize anything is because people realized it's worthwhile to put on your seatbelt. It's either arrogant or naive to think that automated safety measures aren't going to catch any of one's mistakes.
What about the crimes against humanity commited by the US then? Should we ban US money as well? :D
I've thought about this too, but I think you've got two big marketing problems.

One is that discerning customers will be reluctant to deal with a startup. Most startups go out of business, and it will be challenging to convince people that you'll really be around even as long as the service purchaser, let alone their great-grandchildren.

The other is that non-discerning customers won't be able to tell a truly well-designed and well-endowed long-term archive company from one that just talks about it. So you'll have competitors that will charge 10% of what you do, and once who will charge the same but put 5x the money toward advertising.

I suspect this is a market only truly available to companies with long-lived brands. It's sort of like how cloud computing took off once Amazon put their brand behind it; if what you're selling requires deep trust, startups face big hurdles.
Are ToS violations still considered a CFAA violation?
Not stating a limit doesn't mean there's NO limit. It means the limit is implementation defined. If the way you interpret a spec implies a requirement of infinite memory or infinite stack, then the way you interpret it is wrong.
Yeah, I can expand on that. What I meant is that when I have been on teams that are basically just writing services that we are exposing via an API, it has been sufficient to just have really great test coverage and monitoring.

When I have been on teams that are doing a whole vertical as part of a product that includes UI work, it has generally been nicer to have real dedicated testers on the team.

So because I think you can't really generally say what is going to be enough, I think you just need to ask people about their process and decide based on what the project is.
Dup : https://news.ycombinator.com/item?id=21480623
We have removed our product from the Facebook Audience Network
This should be a joke, but considering how often it's actually the case it's unfortunately not that funny.
The WebRTC thing is nasty. If I tweet or text a link to our company’s WebRTC application I have to detect it and explain how to reopen the link directly in safari.
These kinds of things are exactly why foreign keys are so helpful to keep things from getting corrupted. Invoices should always reference a user in the user table.

The relationship should not be "ON DELETE CASCADE" but probably "ON DELETE NO ACTION". Then when some junior dev tries to issue a DELETE on the users table, the DB will correctly tell them to get bent and throw an error because there are dangling invoices still associated with the user. Because you are a smart person, you've also prohibited DELETE and UPDATE's against the invoices table for the db user that is used. The application cannot delete the invoice, and it cannot delete the user either--which is the only correct course of action. The database can now protect itself from hostile input from all your junior devs. Exactly why you want FK's. You can't trust user input.

The fact that the author of the article shudders about cascading deletes demonstrates that they have zero authority to speak about databases--something that is very common in the developer community. DB's aren't mysterious black boxes. They are really fucking cool tools that can do all kinds of neat shit to keep your data nice, safe, cozy and warm (they do way more than that too... a good database is perhaps one of the most underutilized tools developers have in their toolbox)
So now we are back to having to do things like Microsoft where you have twenty different app specific hacks because developers wanted to use private methods.
Some people have also found temporary relief with the finger drumming method (sometimes called the "Reddit Method/Cure" because it gained popularity after he posted it on Reddit[1]):

> Place the palms of your hands over your ears with fingers resting gently on the back of your head. Your middle fingers should point toward one another just above the base of your skull. Place your index fingers on top of you middle fingers and snap them (the index fingers) onto the skull making a loud, drumming noise. Repeat 40-50 times. Some people experience immediate relief with this method. Repeat several times a day for as long as necessary to reduce tinnitus.Dr. Jan Strydom, of A2Z of Health, Beauty and Fintess.org.

[1] https://np.reddit.com/r/WTF/comments/3l3uri/these_guys_light...
Browsers depend on tons of 20-year-old C libraries.
At the moment, the top link from the Twitter account you gave above is this one from November 6:
https://twitter.com/LazyFishBarrel/status/119228101802954342...

It reports a total of 37 issues in:

- freetype2 (C lib, 20+ years old)
- usrsctp (C lib, age unknown)
- libexif (C lib, age unknown)
- libxslt (C lib, 20+ years old)
- imagemagick (C lib, 20+ years old)
- mruby (C)
- php (C)
- openSSL (C, 20+ years old)
- curl (C lib, 20+ years old)
- ffmpeg (C lib, 18 years old)
- ghostscript (C lib, 30 years old)
- irssi (C, 20 years old)

In that list were also Skia and libsass, two projects actually written in C++.

In Sass, the issue is a nullptr issue:
https://github.com/sass/libsass/issues/3001

In Skia the bug was in intrinsics code:
https://skia.googlesource.com/skia/+/0f55db539032a23b52897ae...

Of course that's a single data point, but it shows what I think is a reasonable argument: most of the issues indeed happen in (old) C code, for well-known reasons (no standard string, array or collection support, no RAII), but because C++ supports those things by default it largely avoids those issues.
LNG has 1/3 to 1/2 less CO2 per MWh than coal. Don't let perfect be the enemy of good.
If you like hard sci-fi I'd recommend reading Zendegi by Greg Egan. One of the main plot-lines is about a father creating a digital version of himself to leave for his son when he dies.

- https://en.wikipedia.org/wiki/Zendegi

- http://www.gregegan.net/ZENDEGI/ZENDEGI.html
Show HN: JMBL – Delightful jumbled word puzzles (iOS)
Wow, nobody tell them about "Netflix and chill".
Follow up on your analogy:

The cost to read this comment is $1 million. If you do not pay me, I am losing out on $1 million. AKA: $1 million in lost revenue (lolling to myself right now...)

Did you read this comment and not pay me? Who do I go after to get the money owed to me??! HackerNews, for not enforcing my price? You, for reading it? Your ISP, for allowing you to read it? Or myself, for being a moron?
Let’s be clear: they are important APIs that would allow non-Safari (WKWebView based really) browsers be competitive on macOS.
Actually the mandatory death penalty for blasphemy award goes to PK. Gotta out Saudi the Saudis when you’re on the dole
It's a bit of a convoluted analogy, but if you want to extend it to cars, it's like stealing a car off the end of the assembly line, and leaving behind a briefcase full of cash to cover the marginal cost of production.
They'll just stop distributing versions through the Mac App store and the Mac App store will become even more irrelevant.
CTF Field Guide
Can you explain how that comic applies in this circumstance?
> YAGNI

OK so then does YAGNI apply to investment? Why not let existing firms handle it in the S&P?

> YAGNI (continued)

over-engineering is definitely a problem, but so is hindsight bias.

I think that most non-trivial tech builds involve some smart investments and some dumb ones. It's essentially a portfolio of decisions made in the face of uncertainty. YAGNI is cynicism and hindsight bias, and over-generalization.

I think this is less obvious than it should be because of the popularity of the highly cynical "agile" approaches that consider a project that does not plan beyond the next sprint as somehow not taking on code debt.
You signed an agreement for your own use, not to allow your friends to use their servers. Its about the agreement you made.
> Reporting and bi data might get hosed.

> Account management might get hosed.

LOL, if I read the data directly from the db instead of via the application's API then sure, I lose the application's guarantees. But, y'know, same might be said if I just go and read the DBs files from a sidecar shell script or something.

> It puts all applications on top into a undefined state

...that's just an assumption that's false.
Reading "MUST" when specification says "may" is also wrong.
Thank god. An Electron app is essentially a kiosk-mode web browser, and offers (almost) no advantages over just running the application in your real browser... except you lose browser extensions and customizability and everything else that makes browsing the web bearable.

If you're going to publish an "app", do it properly (natively) or not at all.
Download a bloated electron app to do the imaging, like you're on Windows.

https://www.balena.io/etcher/
There's a cost to providing the service in terms terms of bandwidth, servers, and development staff.

There's also a cost to the new, original content they're putting on there, like the Mandalorian.
well it's not like gitlab.com was stable either way
I basically agree with the crux of your post. However:

> Apple doesn't make any money from the "web," they make it from their platforms which aren't HTML/JS/CSS

Apple makes their money from selling hardware, which is priced to provide a very healthy profit margin. Once upon a time, that seemed to be enough for them.

Now it's not, and Apple products are broadly worse as a result. The App Store should not have an entire tab dedicated to Apple Arcade, and the Music app should not be a giant ad for Apple's streaming subscription service.
Besides technical limitations: the iOS App Store rules are clear: it is simply not permitted.
InnoDB's foreign key support predates the existence of Rails by several years. However, InnoDB wasn't the default storage engine for MySQL at the time, so that may be a factor.
U.S. military unknowingly bought Chinese surveillance tech, prosecutors say
but that raises the pitch of the audio
Oh, the irony of publishing this on Medium.
I couldn't disagree more.

If you need to serialize and deserialize data between tools written in different languages -- e.g. write data to a file and read it in another tool -- then what would be better than JSON?

Nothing about JSON is inherently good or bad for deeply hierarchical/recursive data.
Salt the Pass
I see - maybe I got your point wrong at first. Sorry for the confusion.

Here in Germany, it's basically the same: A carpenter goes to school and work in a dual system for 3 years, and can then put a master on top of it after several years of working experience. This takes another 2 - 4 years and a ton of money.
"I want something for cheaper than you are willing to sell it to me so therefore I will steal it" is....not a great answer.

We don't accept that answer for other products.
There appears to be a sizable segment of society that is unwittingly expanding their definition of politics to encompass civility and human decency. To treat them as if these are somehow merely political opinions, rather than the foundations of professional ethics. We're living in an era of political extremism and populism, and it's going to clash with everyday and professional life. This is not the fault of those holding the line of ethics. It should be seen as a wake up call that the things being touted as opinion and politics are actually far outside the realm of normal. And while this is somehow being tolerated in the political sphere, there's no reason to expect that to be the case in smaller more intellectual areas, such as the Linux Foundation.
Do Chimpanzees help each other?
Solution: Get a virtual assistant in a low CoL country without DMCA applicability to purchase, rip and upload Blu Ray movies to your server on demand.

IANAL
How? FK constraints are trivially expressed in SQL. It is just a "REFERENCES table_blah ON DELETE DO BLAH ON UPDATE DO BLAH".
I can still hear the sound that an ASR-33 would make as it was typing out a listing. I was fortunate to attend a high school in 1975 or so that had a DEC PDP-8 with an attached ASR-33 with paper tape reader and punch. I remember that it took something like 45 minutes to load the BASIC interpreter from paper tape. Good times.
Or WhatsApp, if you want to message people who aren't on ios.
Suggestion: make two technically-different widget models, sell the more expensive one on amazon and the cheaper one on own website. The differences don't have to be much, but as long as they're different products you're compliant with Amazon's terms.
Ahh, errors. A programmer's best friend or enemy or both? I may be a rookie, but I'll say this:

- A few years ago I chose to learn Python "The Hard Way"[1] because I already had experience with scripting and a little bit of C++/Java/PHP/Js. While I fell in love with the flexibility of the language — how idiosyncratic it could be made, how quickly fluency came — error handling remained a mysterious dark space to me, a "TODO" for later. [which I didn't because I didn't program much after this first real training]

- I later tried to become "Eloquent" in Javascript[2], and while I can never praise that book enough, the language's paradigm wasn't what made error handling 'click' for me. Now I see, but it took a trip far, far away. [Js isn't my problem space, and when it is I'd rather use TypeScript probably]

- And finally Go. While I haven't finished once "The Go Programming Language"[3] yet — just followed a few great online books/courses so far (notably by Jon Calhoun[4], Xoogler), and only built a few basic things — I can say this: now I get it. I mean errors. I really do.

I think these few points mattered:

- Go has error checking 'in your face' indeed and makes it useful, because passing a value makes sense, and error type is no longer abstracted as in more OOP paradigms, it doesn't feel "otherworldly" to the present code, it's right there in the imperative flow.

- Testing is well-integrated (`_test.go` files; I know, at a basic level, but that's what I expect from a 'standard' tooling). Because it's a core feature and quite easy, you tend to use it; and testing helps thinking (conceptualizing) of a 'meta' framework around error handling. As a Go programmer you quickly understand that it's clearly, totally up to you to define this "otherworldly" space where your code exits its normal 'world'.

I find it hard to phrase it for now, but I'm positive Go's implementation of errors (essentially forcing you to go through it) made me level up big time. You clearly see the "normal execution space" and the "erronous space", and how design helps you keep your code either well within the former, or graciously through the latter. It feels incredibly safe, especially as a newbie.

Also, emmet snippets. Makes writing fast, but seeing the `if err != nil { return ... }` blocks is extremely beneficial to reading code, which is what we do most, by far.

Also, people don't mention these much but things like `panic()` and `recover()`[5] help you think of and learn about your own problem in elementary terms, first principles — do we need to halt execution or can we recover from this? It's all part of a sane and safe executive thread, or so it feels.

I don't know if I'll be programming Go at my job 5 years from now, I really don't; but I'll always have Go to thank for making me understand much in programming first principles.

[1]: https://www.goodreads.com/book/show/15858137-learn-python-th...

[2]: https://www.goodreads.com/book/show/39866497-eloquent-javasc...

[3]: https://www.goodreads.com/book/show/25080953-the-go-programm...

[4]: https://www.calhoun.io/

[5]: https://blog.golang.org/defer-panic-and-recover
Fun fact: rust’s original implementation was in OCaml.
Thank you, this was helpful for me. I still don't, frankly, recall (did I ever know) how Rails implements the latter without the former.
Deep Ecology
Well when you use MySQL, you end up with MySQL hacks like this
That's probably true. The only tell for that, really, was the complexity around migrations/schema changes, which seems a lot more painful on MySQL.
Or they mark it as an attempted delivery for up to 2 days. Next day shipping is a lie.
> Whenever a server failed and restarted, it would pick up processing from the last successful commit. If a server did not restart, the worker count would be updated and remaining workers would redistribute the partitions among themselves based on the shard keys of the records.

You don't describe how you come to a global view of which is the "last successful commit". Do you mean that the co-ordinator recovers (such as from its own log) and uses that information, or do you mean you use local information? In the latter case, what you describe doesn't sound like it preserves transaction atomicity across node crashes.
I believe 80x25 is the default for iTerm, qemu, as well as cmd/command on Windows, minicom, kermit, and CentOS console. Anyone know of other current users of 80x25?
While the parent poster presented the issue as one of morality, it's more honest to frame it as self-preservation. It's rarely wise to allow another country too much influence over you - even rarer when it's as openly hostile to the US as China.

Any wrongs you may have done don't enter into consideration when trying to prevent being wronged by others.