skysight-inc/HackerNews huggingface dataset:
The PHP project experience which cost me a job that I loved, nearly got me kicked out of my home, and prompted multiple evenings of suicidal ideation, and led my wife to be filled with anger at me even 7 months later is from the end of 2018.

I am responsible for how I manage my mental health. Part of exercising that responsibility is my firm choice I will never again work with PHP.
We've changed from https://mybuild.microsoft.com/sessions/6c6ecd46-c39c-49d8-ba... to a more accessible video.
That’s one narrative they form about the story of their life. In order to be free from that (often) faulty narrative, dissolving the ego is necessary. Either through psilocybin or other methods.
MD = VP for those not in finance
We've switched the URL from https://mybuild.microsoft.com/sessions/6c6ecd46-c39c-49d8-ba... to a video that anyone can view.
You can always release the game with some generic art and offer the copyrighted assets in a shop. With some luck the game becomes popular and people add further assets to your shop. Demand some commission and you may have created a cash cow.
because this kind of rants are pointless, they are not bringing any value. Every language comes with their own inconsistencies or oddity. Most of those points raised are just added to a laundry list for its own sake, it's not something you come along every single day. You might have a WTF moment once in a while but that's something that happens with every language. I'm still not able to understand why everyone hate PHP and then at the same time love Javascript or Python or Ruby.
Huh? Of course not. Are you being sarcastic?
its fun to trash talk PHP who cares if statements are accurate. PHP sucks because of the dollar signs everywhere. From a distance Wordpress code looks like Nigerian Prince emails.

And crazy coding conventions like mysql_real_escape_string. Really PHP?
Laravel is pretty sweet, I recently scoped it out (been in Flask land and itching to try some Elixir/Phoenix) and it's got everything, exploring the queues now. I really like the helpers for accessing array elements through dot notation. Example:

$data = [
'more' => [
'complex' => ['my value']
]
];

if (array_key_exists('more', $data) && array_key_exists('complex', $data['more']) && array_key_exists(0, $data['more']['complex'])) {
echo $data['more']['complex'][0];
}

You can do this:

echo Arr::get($data, 'more.complex.0');

Plus the bog standard php null coalescing operator "??" is pretty sweet.

// fetch the value of $_GET['user'] and returns 'not passed'
// if username is not passed
$username = $_GET['username'] ?? 'not passed';

Just some little things off the top of my head. *Formatting.
Not sure where I implied Go would beat BEAM on latency, didn't intend to. On the contrary, BEAM's had decades poured into keeping the long tail under control, while with Go it's a work in progress.

I singled out Go because it's the only reasonably mainstream multithreaded (need this for actors), statically typed (need this for CPU throughput), garbage collected (need this for ergonomics) language out there with an emphasis on keeping latency under control, and as such would be the only sensible target I know of to host the language I proposed.
I mean, that's already what Erlang/Elixir has, in the form of Dialyzer, a runtime "type linter" (which is what the typespecs in the article feed into.)

It's static typing that Erlang can't complete-the-triangle on; not typing generally.

The only problem is that "offline" type-checking like this does nothing to solve one of the main use-cases/pain-points where Erlangers want types (or, at least, think they want types): in the messages that actors receive. You can't make any sort of a type assertion about what other actors in the system are allowed to send this actor, and get that validated; because "other actors" in a distributed system necessarily include ones that aren't even part of your present codebase!

I have a philosophy about this—not sure where I picked it up, but I think it hews to the Zen of Erlang quite well:

If you already know the type of a message, then by definition, it's not a message any more, but just a regular data value. A message is an OOP concept (and Erlang is an OOP language, where processes are the "objects.") An OOP "message" is a piece of data the meaning of which is up to the interpretation of the recipient; where that interpretation can change as the recipient's internal state changes. The whole point of the "receiving a message" code that you write in an Erlang actor-process, is to allow you to do custom logic for that interpreting part. To use the value itself, in making the decision of what the value is.

In fact, I would extend that: the whole point of Erlang as a language is to do that "interpreting" part. Once you know what something is and have put it into a canonical validated structure, you may as well hand it off to native code (using e.g. https://github.com/rusterlium/rustler). If you think of native code as being a pure domain of strongly-typed values, then picture Erlang as the glue that lives in the ugly world of "not yet typed" values, making decisions under partial-information conditions on what types to try to conform received messages into, before they can enter that pure strongly-typed domain. That's Erlang's idiomatic use-case! (You can tell, because using it for that produces absolutely beautiful code; whereas using it to do e.g. crypto math, produces an abomination.)

Which is all to say: the interpretation (or, if you like, constraint) of a message into a typed value is a Turing-complete operation; and the logic for doing so is best represented as an Erlang program. Erlang doesn't need a type system for messages; Erlang is a type system for messages. :)
Did PHP ever decide whether NULL < -1 or NULL == 0? I want to hire people who care about correctness, and insanity like that really should bother them.
IIRC, earlier in the project, a differentiator for Drill was to be the ability to run drillbit processes across servers, and run distributed queries from one of them with Zookeeper as a coordinator. This would have been a simple approach to distributed queries where secondary extract and loading into a distributed filesystem or Parquet file was not desired [1]

Unfortunately to date, distributed queries will fail if the paths _and_ files are not symmetric in name - all file paths and names must exist on all nodes - therefore the "in situ" approach is not available. It appears the project focused on querying distributed file systems like HDFS and S3 and therefore had a lot of competition.

I hope some group picks up where HPE orphaned Drill after the MapR acquisition and pivots to a pure distributed worker approach. Running a drillbit on nodes where the data originates could be useful, the original example was SQL over http logs directly from webservers.

[1] https://mapr.com/blog/drill-your-big-data-today-apache-drill...
This sounds great... in theory. But has a pull request feature ever been created for a non-plain text format?

Intuitively, this doesn't really seem possible to me for a sophisticated document format. E.g., how would you represent a change to an embedded graph in a pull request? (And would that same approach scale to any form of embedded media?)
I have always felt that people use OO exactly the opposite as Liskov suggests. Liskov says that subclasses must be fully substitutable, and that implies that any valid operation on the superclass must be valid on the subclass. So say you have a Bag class. You can add elements to it at will. Then you create a Set subclass, and now inserting a duplicate throws an exception. You just broke substitutability. Even though the code is easy express with this hierarchy (if exists(element) throw else super(element)), your program blows up if you try to substitute. Doing the opposite is safe, of course, but the code reuse doesn't work when you make your Bag a subtype of Set. From an algorithm standpoint, a Bag isn't really implemented in terms of a Set, so you're writing a new data structure from scratch (rather than just changing one condition in insert() like the invalid example).

What I take away from this is that people are mostly using OOP to cut-n-paste code when two things are similar. I see the value in not wanting to rewrite code (or to create a third "common factor" that you will never use, to implement Set and Bag), but I think this use of OOP basically precludes any computer science reasoning when looking at your classes. Apparently that's not a problem, as people are ignoring Liskov right and left while building good stuff. But thinking about it deeper, I fear that we didn't find the right model when we invented OOP, and that is why newer languages are ignoring OOP in favor of composition.
I believe GitHub had a related vulnerability years ago before GitHub Pages had their own domain.
Great question, I actually think writing test code is harder than writing the product code.
> Developers hate PHP because you are more likely to get errors with a language that allows so much freedom.

Ruby gives you much more freedom than PHP. You can reopen classes, you can use any kind of object as a key in an associative array, you can write code that will execute when the class (not the instance) is being created. And yet I find it much easier to write stable code in Ruby.

> Developers hate PHP because it is the opposite of hype driven development

Does C# gets so much hate? Or Python? I don't think either of them is an example of hype driven development, and yet they are rather respected languages that don't get so much hate.

> Developers hate PHP because they believe the language has been stagnating for 20 years.

Again, I don't think that's it. I've been using PHP7 for the last few months and yes, it is different from PHP4. You have optional static typing, you have better tools, a lot has changed. Yet deep in its core the language is still badly designed. I constantly find some weird behaviours that just don't exist in other languages.

Example:

$array = [1,2,3,4]
array_filter($array, function($x) { return $x %2 === 0; });

In every other language I've used, such function would return [2,4], but not in PHP.

array_merge(
[ "a" => "w", "1" => "x" ],
[ "a" => "y", "1" => "z" ]
)

In every other language I know, it would return [ "a" => "y", "1" => "z" ], but PHP returns [ "a" => "y", 0 => "x", 1 => "z" ]

I know, these are just random examples and every language has its quirks. The problem is that in PHP there are so many quirks I keep checking how each function works, because after half a year I still can't remember them (and I don't remember whether array is a first or a second argument, because it depends on a function).

I wouldn't say that I hate PHP. It's another tool that I know and am able to use. I just think in 2020 in most cases when you start writing a new web application, there are plenty of better options. So maybe that's where the hate comes from? That there are simply many more consistent languages that just remain less popular than PHP?
I think there's something people miss when looking at PHP as a system - the fact that it's a collection of hot swappable logic modules (pages)

PHP pages themselves can download packages of additional PHP pages and extend functionality as the website runs. For example the user can install a message board from the UI in WordPress, and PHP files themselves will download additional PHP files needed for a message board, and boom your site now has a message board - no recompile, install, or deploy. Your running system has extended itself in real-time with additional functionality.

Maybe I'm crazy, but I think there is something special about this that our typical compile/deployed applications aren't designed for.

Before the web, applications tended to carry their state in memory, but with the web we stored state in the database. Our logic really only needs to take the request from the user and either pull or modify data from the database and return. A lot of web apps today feel hollow as we rarely store state in them, we just pull, manipulate, and render database data. What if each major code path was its own binary? That's kind of like what PHP is.

With PHP the application is almost living as it is never really turned off/on, just modified over time. If there's a bug in one page, I just need to fix that one page. And a single page is lightning fast to deploy to my servers. The rest of the system keeps humming.

Now the language itself might not be the best, but do you see how this system is fundamentally different from single binary web applications?
I've found Generals fun too. Specially multiplayer.
And she's right. Just the `fopen` example is bad enough. It's characteristic of the whole ecosystem. Python and others do not have issues like that.

It's a footgun waiting to happen as you switch between PHP and other languages.
Probably not but for certain use-cases Intel is just way easier and less trouble (building a Hackintosh with Thunderbolt 3 connections for a UA audio interface, for one). And yeah, not everyone has such special needs but some of us do even though we may have one or multiple "real" Macs at home.
PHP is my favorite language to write SQL injection vulnerabilities, just like C is my favorite language to write pointer bugs.

(Disclaimer - The last time I used PHP was over a decade ago, and the last time I used C was in college)
> where and when a change was done, by whom, and with the reasoning sometimes added

On Office 365 at least, it does tell you all of those things.
I can't wait till they release the source code for FIFA 20 in about 2045. There is so much speculation in the community on how the game is rigged that I will be the first to download that repo ;-)
People get that mailing revisions of documents back and forth feels rickety. In my immediate circle I noticed that people some mild amazement that geeks use Wiki-style collaboration environments instead of office suites.
Sometimes color contrast makes more sense when you can see all colors in a scheme compared at once as color tiles with the contrast spelled out numerically. https://github.com/prettydiff/colorContrast

As somebody has already pointed color contrast is defined by a relative luminosity calculation defined by W3C.
Still need to know where the top-level page is loaded from, though: you do want to allow requests from 127/8 to "localhost".
You could have just cut through the pseudo-spiritual junk and say "self medicate with mushrooms". I know it doesn't have the gravitas, but that's actually what you're suggesting.
GM Working on Ultra Cruise Hands-Off Driving for City Streets
I'm not defending this use case, but one example I can think of is that Spotify runs a local server so that websites you access can control it, e.g. if you are on Billboard looking at top music charts, clicking on a song could start the song in Spotify, and even embed a player in the web browser, without you needing to be signed into Spotify in your browser.

Here's an interesting tangential article about how they get around obstacles with SSL certs for localhost: https://letsencrypt.org/docs/certificates-for-localhost/
Why is that called “package manager”?
Ah yes, I love working out which is the most recent document out of:

* Document1 FINAL

* Document1 FINAL DRAFT (DO NOT EDIT)

* Document1 FINAL EDITED

* Document1 v2 FINAL
Ask HN: How to know when an idea is worth pursuing?
I have often found myself annoyed because of ideas that I never manage to pursue, sometimes because of a lack of time or money or honest interest, but they still resonate in the back of my mind causing minor stress.

Then again other ideas I manage to pursue, but for some reason or another find out they weren't so good after all and time is wasted, with the exception if I learn something useful in the process.

What is a good way to determine whether an idea is a good idea worth pursuing before actually doing too much about it?
For quick one offs I still prefer WPF over Winforms even without MVVM and thereby avoiding the learning curve. In the long run MVVM is probably better (although I am not so sure on that either. I have seen plenty of nightmarish “proper” WPF apps too)
Considering how huge the Unicode standard is, it's more surprising that there are so little (known) errors. CJK characters alone account for thousands upon thousands, and these can sometimes vary by just a single stroke. I suspect the majority of redundancies or suboptimal choices were the result of subsuming so many existing standards though. There might also be plain errors in research but are probably in the more obscure blocks.

See also, ghost kanji: https://www.japantimes.co.jp/life/2018/10/29/language/ghost-...
Not entirely, but might will lower the barrier to entry and make you require fewer developers.
Discussion was about the design of the language only.
Yeah but using webpack is not how majority of websites deployed, so it's probably not worth the effort for ads companies to support it. They will consider this when webpack/wasm become mainstream enough (approaching 50% web), which may or may not happen. Probably won't happened but the thought always linger in my mind.
This is not really a question like any other, because it's a very polarizing one.

It's fair to intentionally ask polarizing questions if the objective is to find how if a candidate can take moderate positions in those contexts, but it's definitely not like "any question in interviews".
Yeah, I think that goes back to something the OP said, which is that it's a victim of its own success. It's old enough that everyone has had a bad experience with it. I've had many that are directly or indirectly tied to PHP - my college blog was a hodgepodge of unmaintainable PHP scripts, I've run Wordpress blogs with plugins that broke in horrible and confusing ways, some things like argument order and operator precedence are confusing.

Combine with a long-enough life to have some famous bugs (like the hash collision DOS attack), and you have a recipe for widespread derision.

But it kept getting better. I work in PHP at my day job, and I enjoy it. Tools like PhpStorm and Phan make the experience excellent. If PHP 7.4 were launched today as "AWSLang", a stateless object-oriented optionally-typed scripting language that seems designed for working with Lambda functions, we'd love it. "You mean it just dies at the end of the request by default? No shared mutable state between requests? How functional!" Sure, we'd have a few things to complain about. But don't we always?
A few things that I use it for: Pre-programed D&D stat trackers because it's free and Pathfinder is... complicated. Factorio base ratio calculations, and EvE online related market data. Quickly sharing database query output. A simple weight tracker.

Most of these things are and can be independent services, the issue is if I need something now that's ad hoc, then Sheets provides a computation sandbox in a format that most people are familiar with.
Shodan is used by most of the Fortune 100 companies for a variety of use cases. Here are the most common ones:

1. External network monitoring: know what you have connected to the Internet and get notified if anything changes unexpectedly. This has actually gotten significantly more challenging with services deployed to the cloud where your IT department might not even know which IPs to keep track of.

2. 3rd-party risk assessment: understand the security exposure of your partners, vendors, supply chain or other 3rd-parties. For example, lets say you're an insurance company that wants to provide cyber insurance. Shodan data can help you understand what sort of risk you'd be taking on. The data has also been used in M&A as part of due diligence to get a metric on the security of the IT department of the company they're thinking of acquiring.

3. Market intelligence: basically Netcraft on steroids. Shodan doesn't just have web information but also for many other protocols. This information is used by hedge funds and vendors to understand which products are purchased and deployed to the Internet. The data is skewed due to the nature of public IPs but there are still things you can do.

4. Policy impact: get a measure for how policies at the country-level are impacting Internet connectivity. For example, the OECD used Shodan to get a measure of Internet-connectivity per capita.

5. Fraud detection: is your customer trying to make a purchase from a machine that's been compromised? Or running a a VPN/ proxy? Shodan is used in transactional fraud detection to flag suspicious payments.
Just wanted to point out screen readers and other disability tools are a very important reason to read and modify another application memory. My understanding is this was a primary motivator for the detours library. Though I can't seem to find the MS Research blog post talking about this nearly 20 years ago, I'm wondering if there's some revisionist history that's happened :(
The Kotlin KTOR framework is the most promising new web stack I’ve seen. It doesn’t have the higher level runtime features of Erlang but it checks most of your other boxes.
Its a distributed SQL engine that can query files from various database engines (via connectors or JDBC drivers), including structured file formats like CSV or Parquet (using the Hive metastore).

Presto does not manage storage itself, but instead focuses on fronting those data sources with a single access point, with the option to federate (join) different sources in a single query.
My problem is that I go through spree’s which I was fine so you’re later when Go Daddy tries to hit me with a $500 bill.

That’s how I lost:
Porcelain.com
Getreviewed.com
Helpmebreathe.com
And a few others well hundreds of others but the stand out
Debt: The First 5000 Years – alexdanco.com
I'm a PHP developer and I really don't like this language. Right now it's paying my bills but I hope my next job won't be related to it. People are saying that PHP has become better and that's very true. But still far behind modern languages like Go, Python, Rust, Elixir.
PHP is full of inconsistency, legacy code, and missing features. Core developers are doing great by adding a lot of new stuff and optimizations, but caring too much about backward combability disturbs the language from becoming better IMO.
I don't know if that has to do with dynamic languages. Elixir reduced the scope of variables so that, for example, you must export it out of if statements, which irritates devs coming from most languages but which I think is a fantastic feature.
> Having periods of blurry vision, like looking at something far away for some time without glasses or contacts, may be beneficial in that it may signal the eye to become less football shaped to help correct for the blurriness it now is experiencing.

I literally just had that yesterday, and was wondering what it was. My eyes have always been very good, but I have been a bit worried of late after a few such blurry episodes...
Much less mature.

There's no distributed execution yet.

Easy to get going locally.

I'm not sure but I think Presto is in-memory? We're optimizing for SSD disks to easily support big states, and achieve durability this way. SSD disks are still plenty fast.

Definitely better streaming support. We're very much concentrating on good streaming ergonomics. OctoSQL isn't a batch execution engine at its heart, it's a streaming one.
I'm having trouble understanding what you're saying. If living hand-to-mouth gives people satisfaction, purpose and fulfillment, then why are you offering some vague advice about choosing to pursue the wildest aspirations of heart and mind? Why would that work instead of the proven route of struggle for basic needs? (I also doubt those poor people are pursuing their wildest aspirations, they're probably just trying to not die).
php > $array = [1,2,3,4];
php > var_dump(array_filter($array, function($x) { return $x %2 === 0; }));
php shell code:1:
array(2) {
[1] =>
int(2)
[3] =>
int(4)
}

what's the problem with array_filter then? That keys are not reindexed?