skysight-inc/HackerNews huggingface dataset:
Is it primarily requirement volatility, or primarily ill-defined requirements? (If it's the later, that's some super-irony.)

That would explain at least a couple of further issues mentioned here. Like rewrites: software doesn't always define it's own outcomes well; the requirements don't change they're just poorly defined.

Requirements changing, and feature creep are subtly different too -- with static ill-defined requirements features could change as the requirements in a particular facet of the software become more clearly mapped out further on in the project.

For example, in the Berlin airport situation (in a comment here), adding a new floor could be due to a realisation that a static requirement for floorspace want going to be obtained, because (say) a static requirement for through-flow hadn't been fully defined and expanding the capacity to meet that requirement then limited the available floorspace. None of the requirements needs to have changed.

Perhaps that's to much of a philosophical distinction.

(Not a [software] architect, or project manager or anything, feel free to tell me I'm talking rubbish.)
I would say that viruses are not alive not because they cannot just reproduce on their own, but because they do not have any metabolic activity on their own.
> Wait, Isn't the appeal of a stream of bytes that the OS is agnostic to whatever the application layers above are doing with it? That way, you can separate concerns and evolve each layer independently.

Dude, we all know the supposed theoretical ideal state of things. And yet it almost never happens.

> It's probably the reason the OS has had such a long staying power of decades.

Or the fact that without an OS your hardware is a simple paperweight? Not sure what is your point here, can you clarify?

> It seems to be the same strategy of IP (internet protocol)--that it's a narrow waist architecture--so the layers above and below it can evolve independently.

We don't have that much choice there either. Networks have to be streams of bytes due to the physics and realities of our network hardware -- which aren't likely to change anytime soon. So I don't think yours is a transferable analogy.

> How would versioning of the data structures work? Would it be append only?

Yes. That's how FlatBuffers work and every single team I talked with are grateful that they moved to it and no longer use JSON. Has to mean something.

(FlatBuffers also allows you deprecate and thus ignore parts of the structure you are transmiting. But indeed and as you alluded to, anything new can only be appended at the end of the byte stream.)

> I'm pretty sure part of the reason abstractions are hard is because we don't know exactly how to model the domain the first couple of times around.

Sure, agreed. But as an area IT already has a lot of experience and can tap into some past lessons already.

Configuration: zero programming language constructs inside it, please!
You need config with programming? Here's that small subset of LISP or Lua, you can only use that.

I see nothing wrong with an approach like that. People will grumble a lot and will adapt to it as they always do. It's not like Ansible's YAML programming language is better, no?

> And lastly, I'm afraid when we invoke meaning in a stream of bytes, different groups with different interests will have different ontologies they want to enforce. We see these in format wars and internet working groups. I'm not sure we can easily agree what these data structures are, and how to evolve them. Maybe there's a good way and I just haven't seen it.

I also haven't seen it and I am sure most people don't as well but it doesn't mean we shouldn't try. Stuff like RDF were pretty good for describing many types of data, for example. And if somebody needs something drastically different, well, they shouldn't use that format.

---

IMO the author's point isn't that tomorrow we can have the one ultimate programming language and data format to rule them all -- of course not. Their point is that nobody is even trying. And we actually have a lot of low-hanging fruit, the "everything is a string on the shell" being one of the best examples.
> don't joke about rape

Where do you draw the line? Are jokes involving death also out of the question?

I’m not a big fan of rape jokes, but is there some specific list of things which are unacceptable to joke about in 2020?
In my recollection, Tencent (WeChat's owner) derives a lot of their revenue from microtransactions, so engagement in the core app isn't as big a deal for them.
The Building an Indie Business Podcast- the Importance of Owning Your Content
ABS programming language: the joy of shell scripting
And that is very minuscule fraction of his wealth.

This is really scary because it means that if somehow billionaires and companies that received assistance from Quantitative Easing decided to spend their wealth, it would cause considerable inflation.
People might use them less, though.
Great stuff! Since we're working on things like that on the daily, you have inspired me to do something like that in elixir :)
Safe? Shine on you crazy diamond!
There was a time when mobile phones gained many sensors, and it all kind of stopped 10 years ago. I expected high-end phones by 2020 would measure distances and temperatures, air quality, UV exposure, radioactivity, infrared photography, etc. In essence, baby tricorders.

In fact, several of these they can already do with a combination of the existing hardware, but sadly, the market has laser-focused on visual social media.
Realistically tens of millions at best. Assuming the Bloomberg campaign hires 200 people for this strategy (the article states "hundreds") it would take 167 years for him to spend $1 billion on it.
Still no regular expression negative look-aheads?
Giving hints is hardly victim blaming.
This is hyperbolic. Plenty of completely reasonable tech stacks are over ten years old. You could have started writing a web application in TypeScript, my current language of choice, over five years ago. I can go write a web application in React and Spring Boot (which I also like) that's almost completely recognizable, and could have been carried forward from the state of the art of, 2014. Much older, in terms of the backend; Spring Boot is relatively new but it still uses the Spring that somebody might know from 2010 and builds very incrementally from there. Even that noophile bug zapper, Golang, is most of a decade old now.

New stuff shows up, but that doesn't mean you are compelled to leap upon it.
Related article about London Black Cab drivers brains

https://www.scientificamerican.com/article/london-taxi-memor...

> Maguire discovered that London taxi drivers had more gray matter in their posterior hippocampi than people who were similar in age, education and intelligence, but who did not drive taxis. In other words, taxi drivers had plumper memory centers than their peers. It seemed that the longer someone had been driving a taxi, the larger his hippocampus, as though the brain expanded to accommodate the cognitive demands of navigating London's streets.
It depends, of course! But usually the issue with shell scripts is that they create many new processes, which has high overhead. In the instances you're spending more time in dd than bash, in Python you're probably inside an in-process memcpy.
Oh, come on, it's only about 10 years away [1].
Granted, it's been 10 years away for about a decade, now.

But that leaves the question of whether Toulouse will get a TGV before nuclear fusion is invented, Thomas Pesquet walks on Mars, or anyone actually start working on an Hyperloop instead of faking it [2].)

[1] https://actu.fr/occitanie/toulouse_31555/pourquoi-projet-lgv...

[2] https://actu.fr/occitanie/toulouse_31555/hyperloop-piste-ess...
Actually I have recently analyzed some python code that does some shell calls and if I can eliminate them with pure python.

It was quite frustrating. A lot of stuff that the shell has simple functionality for can't be done easily in python.

Examples:

* Call to chown -R. Sure, python can change file owners (os.chown()). But it has no parameter to do this recursively. You need to build a loop around it over some file iteration function.

* Call to setfacl. Can't be done with the python standard library, needs pylibacl and you can't rely on it being installed.

* Call to killall -HUP [processname]. You can send kill signals with python, but only to pids, not to process names. You'd have to parse the system process list or something like that in order to simulate.

In all cases I decided to keep the shell call, it just wasn't worth it converting that to less readable python code.
Interestingly I would imagine pulling the non-CG part out of the frame would be possible as they have the ability to generate the exact image without the real-world aspects. Basically a virtual green-screen. Combine that with a stereo camera and the fact that the source CG is actually 3D and you could get very convincing 3D movies I'd think. Yeah, that simplified a lot, but I'd say it's possible. And they still get the benefits of the lighting aspects as well as the immersion for the actors.
I'm always fascinated about software running on hardware-restricted systems like planes, space shuttles, and so on.

Where can someone (i.e., in my case a software engineer who's working with Kotlin but has used C++ in his past) read more about modern approaches to writing embedded software for such systems?

I'm asking for one because I'm curious by nature and additionally because I simply take the garbage collector for granted nowadays.

Thanks in advance for any pointers (no pun intended)!
It explicitly says that there are good use cases, just that they’re very rare.
Bloomberg debate video would violate Twitters deepfake policy but not Facebooks
Not sure how this is related. A general purpose allocator with a plain malloc interface can’t use this to do anything useful wrt lifetime because there is no correlation to lifetime provided by the interface. Internal arenas can be useful to address contention and fragmentation.
Yep, BNP have been doing this for well over a decade for their online banking. They also do it on their mobile banking app.
Do you really think the python popen() workalike with optional shell inclusion is better than running in a shell? More secure perhaps? Easier to read? I forced a developer from my team who would not stop using subprocess calls (including $SHELL) in random new python scripts with hard coded arguments instead of writing a single shell script that could be reused. subprocess is a tarpit and is more misused than any other python function.
> The problem with the strategy was that it required a lot of CPU and RAM to startup a new process.

It's not really kosher, but why not just keep around a fresh process that they can continually fork new handlers from?
The original ballot was 3 yr -> 13 months with ballot 185 which did not pass. Text reason[0]:

> The validity period of certificates represents the single greatest
impediment towards improving the security of the Web PKI. This is because
it sets the upper-bound on when legacy behaviours may be safely deprecated,
while setting a practical lower-bound for how long hacks and workarounds
need to be carried around by clients.

Another reason I see is that your HTTPS certificates aren't invalidated when you don't renew a domain name, so an attacker could potentially MITM HTTPS if they previously owned the domain and had a valid long-lived certificate. The browsers all want automation and 90-day certificates, but that's the polar opposite of what CAs want.

0: https://cabforum.org/pipermail/public/2017-January/009373.ht...
https://elizabethwarren.com/plans/health-care
Scaling of Greenhouse Crop Production During Nuclear Winter
The number of feedback cycles is pretty much what defines waterfall vs agile.

And it's hard do do a proper waterfall when you hardly have an idea of how to even approach the problem.
As a web developer with 20 years experience I would argue that one web SPA project is more similar to the next than comparing two bridges and developers still can’t figure it out.

One difference is that a license is required to practice civil engineering. Most web developers, on the other hand, require large tools to do theirs jobs for them and recoil in irrational fear and disgust when standard DOM methods are used. I still have people argue with me that the DOM is slow even though all the evidence and browser vendors claim updates to the DOM is simply switching a bit in memory. In other words many web developers have utterly no idea how their platform works.

Another difference is that many developers cannot write. Everything about a bridge is planned in extreme detail before work on the ground ever starts. This level of planning is absent in software. Documentation is also largely absent. In most cases everything is an ad hoc mess. In any other industry this would be a cause of numerous lawsuits.

Another difference is that construction is treated as a business project with a dedicated project manager and project budget. Most business software, on the other hand, is treated as an operation. If you cannot discern the difference between a project (temporary) and an operation (living) your software will never be released as a product to a specified level of quality by a specific date.
I wish more people would study IT security since a lot of this kind of silly discussions are cleared up during the first lecture.

Basic 101 security. In order to calculate risk you take the risk threats minus risk mitigation. The bigger the threat, or the fewer the risk mitigations are, the bigger the risk.

You might have forgotten that in 2010 there was this data leak called cablegate. NSA lost 251,287 diplomatic messages. NSA did store them on an encrypted server, and used transit encryption, and yet the data leaked. A major risk to data security is access, and in that case an administrator with access leaked it.

With my mail server, that administrator is me. One of the larger benefits of personal servers.

When you compare Gmail and my mails server then you include social risk just as much as technical risk. You compare the physical risk, that is servers located in multiple places on the earth. You compare the political risk of a single entity that control 80% of the world email with a private email address used by one person. you compare targeted attacks with passive and optimistic attacks.

Lets put money where out mouths are. Want to bet that google will have a new data leak before I do? Looks like a very lucrative bet to me.

In 2018 Google had a data breach. five million user's data was compromised. In 2018 I had zero data breaches in any of my servers. Zero users data was compromised. I have been running my own server for almost 20 years and not a single bit has been lost.

Have I Been Pwned? has billions of leaked accounts, not a single which belongs to me. What about you?

> So you're not talking about pgp/e2ee, you're talking about, like, SMIME or something.

No. There are RFC for email security written in this century. The adaption of putting pgp keys in dns is not great however which is why personal email servers is currently better, but both solution works fine either way as long both side of the conversation does it.
> The goal of software engineering is to make that development predictable and cost-effective.

Is this true?
I don't see how Bloomberg did anything wrong.

Paying people to publish your message is part of normal political campaigning.
Economists should learn lessons from meteorologists
Nothing you state above contradicts anything I stated. I explicitly stated that non-toxic flow is easy to make money from. I explicitly said that you make money by capturing some of the spread. You say "pocket the spread" which is simply wrong. No market maker gets the entire spread. My point is that there are many versions of "front-running" that are not "shenanigans." You seem confused as to how all this works.
> To explain what I think this comment means. When working on embedded systems, you can interact with hardware devices by writing directly to specially mapped memory areas.

And why can't you do this in rust?
I hope it is satire as sibling comment suggests.
Show HN: Automaza – A VR Programming Game
Because "we" keep incentivizing them to.
The actual context of your quote:

> Just so we're totally 100% clear: I hate linked lists. With a passion. Linked lists are terrible data structures. Now of course there's several great use cases for a linked list:
>
> - You're writing a kernel/embedded thing and want to use an intrusive list.

So I’ve got no clue what you’re railing about. The project specifically acknowledges that there is a need in kerneldev for those data structures.

I’m a kernel dev using Rust for my kernel. I use both intrusive linked list and growable vectors in it. The thing is, the sentiment expressed in the article really resonates in me: in most cases, growable vectors are a better choice, performance-wise.
Trying to find something from Apple, but only can find https://support.apple.com/en-us/HT210176 which talks about 825 days.

Here is another one with some more meat then the register article: https://www.cbronline.com/news/apple-tls

Another one: https://www.thesslstore.com/blog/ssl-certificate-validity-wi...

> Apple announced their unilateral decision at a face-to-face meeting of the CA/Browser Forum (CA/B Forum) on Feb. 19, which is the industry standards group that consists primarily of certificate authorities and several of the major browsers.

> While there’s been no formal posting anywhere that we’ve found by Apple about this change, we were able to verify this information with some of our CA partners who were in the meeting.
I.. think I need a little pot of coffee before rereading your comment.
It does not. Maybe somewhere else it does. That section, verbatim, says:

It's niche. You're talking about a situation where you're not even using your language's runtime. Is that not a red flag that you're doing something strange?

It's also wildly unsafe.

But sure. Build your awesome zero-allocation lists on the stack.

And this is (1) wildly mistating the requirements and (2) deeply offensive to those of us who work in those regimes.

Obviously, yes, there's room for a reasoned argument about this stuff and whether alternative paradigms can be deployed in heapless contexts. This isn't it.
The Bloomberg campaign was doing this following the FEC regulations, meaning that the shill accounts had to identify themselves as such. If an account pretends to be a shill account, the Bloomberg campaign can simply show that the account was not one of theirs.
Your link contradicts your definition.
give the machine guns to protect themselves
First, please hold yourself to the same standard that you're holding me to. I see no citations to your (paraphrased) "identification of gender is exceedingly hard for humans". That goes heavily against most people's intuition and thus carries a higher burden of proof.

Now, 0.6% of Americans identify as transgender [http://williamsinstitute.law.ucla.edu/wp-content/uploads/How...]. That means using sex prediction alone, we can achieve a theoretical maximum of 99.4% accuracy here. This ignores the fact that transgenders often signal their gender via behavior or clothing, or attempt to obtain the physical characteristics of their assumed genders as well, both of which could further improve performance.
I change the requirements of my personal projects all the time.

Once I get a prototype working I get lots of ideas of how to improve things. I also see that some of my initial plans did not work I out as I envisioned and have to iterate on them.

If I can't get the requirements right on my own projects, then I have no expectations that others could do so either.

Have the expectation that requirements are wrong on any project. It is better to embrace that these will change rather than try to fight them.
(Had to edit in a quote to what I was replying to because you fixed the original):

> The actual context of your fake quote:

Good grief, that was a verbatim quote! Here's a link to the exact text I quoted:

https://rust-unofficial.github.io/too-many-lists/#mumble-mum...
The article is about how we navigate. I've noticed that some people are quite good at giving concise understandable directions and other are virtually unable to describe in any useful way how to drive a route they drive every day.

I knew an intelligent, successful person that would give directions like "Turn at the stop sign two streets before the yellow house that has the flag pole. Then keep going, but at the train tracks you've gone too far so before that turn at the light. After Elm street, well right there they were going to build a house on that corner, but they didn't because the husband got a different job in Ohio and I didn't know them that well when they moved away. But anyway make a turn, right no left well the road kind of goes right but stay to the left, but not at the red sign in front of the old hardware store, instead I drive to the next street.", etc.
Actually the story implies the opposite

> they had calculated the amount of memory the application would leak in the total possible flight time for the missile and then doubled that number.
It's not the miniscule ad budget. It's the thousands of troll accounts and the email hacking.
Studio Ghibli suddenly makes 38 albums of anime music available for streaming
>push for a change, take leadership and convince others

Oh yeah just stage a grassroots political takeover of the engineering team, no biggie, I'll get right on that. Doubt anyone will have any issues with that.
Twitter is upset that Bloomberg paid people and not Twitter to do the ads.
Another way to approach the issue of code quality is to just keep throwing the code away until you start to understand the problem...
> It links to several RFCs. RFC-7158 and RFC-7159 differ only in (a) that one is RFC-7158 and the other is RFC-7159 (b) that one is dated in March 2013 and the other is March 2014 (c) that one obsoletes RFC-7158 in addition to RFC-4627 which they both obsolete. It appears that 7159 was pushed only to handle an error in the dating of 7158, given that the irrelevant RFC-7157 is dated March 2014.

"they only differ in", yeah, indeed.

Dude. We all have work to do and grappling with some obscure JSON parsing corner is the last thing we need in our workday. This applies to 95% of commercial programmers, I am willing to bet.

What you described does sound simple and small in isolation. Now multiply it by 50 and see how "they only differ in" is a problem that must not be allowed in the first place.

Where's the-one-and-only JSON spec? Why no organisation has the courage to step forward and standardise it once and for all?

Given the current realities, just cut your very small and ignorable losses by losing those obscure JSON parsing corners and let people describe JSON simply as:

"RFC #ABCD".

That's it. Nothing else. Only that. Everything is contained in it.

Complexity compounds and makes everything non-deterministic. We should stop allowing that.
The point of discussion here is not to make oneself look good. Do you disagree with my statement?
I went through this a few years ago for fun. It's a great guided tour of the compiler errors when working with complex memory safety needs. The most important thing to know about these is that you would almost certainly never do these in a real project: lists are in `std` but even then the vast majority of cases should use `Vec`.
paying people to promote your message is normal if they disclose that they're being paid (even if the disclosure is implicit)

paying people to tweet nice things about you as if it's just because they like you is dishonest.
Out of curiosity, what laws which govern bias and fairness are you referring to? I tried searching for some, and the closest I found was the FCC fairness doctrine which was revoked (https://en.wikipedia.org/wiki/FCC_fairness_doctrine).
I run a startup and we use GAAP.