skysight-inc/HackerNews huggingface dataset:
Any language can become the language for everything, if it sees enough evolution and features enter the platform.

The problem with Java is that it clearly shies away from more direct memory control, and as a result it's significantly disadvantaged on modern hardware in terms of raw performance.

You may dismiss this and say "but Java is faster than C++ in some cases". In some cases yes, like when you do raw math and don't load and store much state. But handling state efficiently is Java's weak spot. Objects are tiny fragments scattered around the heap.

Look at .NET and C#. Unity can implement architectures like Entity Component Systems, because C# has decided long time ago to be the "Java for everything" and that's precisely what it ended up as. It started as a Java clone, but added some features of C and C++, it has some features of JavaScript and Python, it has everything. EVERYTHING. It even has a native AOT profile, in case you wanna write a kernel driver or an entire OS in C#.

The only thing stopping C# from taking over the world is the association with Windows, I bet, otherwise everything would be C# by now.

As for Java... it FELT completed a decade or two ago. But now, it feels lacking. It's basically become EnterpriseScript. We'll see how Valhalla and Panama pan out, but for now evolution is a bit slow.
When we have an answer to the waste, we can talk about efficiency.

On nuclear build up timelines, and remember we cannot be rushing it, because we do not have answers to the fuckups and risks and waste, a build out effort like we did for fossil fuels would combat the problem as well and would have the benefits delivering for us a very long time.

Besides, tons of people need work. So we put that work out there, many families see higher standards of living and mere mortals can do the vast majority of that work too.
"EVERY developer in the team earned 150k USD"
Years ago I had a contract with IBM so I got Rose for free. It had really neat demos but once you started using it, it was basically useless or worse. You got a few stub classes and then spent the rest of the time keeping the models in sync with reality.

I think only Clearcase had a bigger negative impact on productivity than Rose.
If and only if you own the land (or enough land) to put solar collection on!!

That's NOT MOST PEOPLE. And not that many "average people".
surprised to see 256 there
Is this really higher performance than the existing protobuf support in Rust+serde? That uses macro programming to generate code at compile time based on a high-level description of your data format, so it can be quite fast and will certainly be a lot safer than cowboy-coding raw C.
lipograms that avoid a particular non consonant (not a or i) is highly difficult to do. It can only last for a short amount of words until a struggling author is struck by a long fit of insanity. And nonwithstanding said authors hard labours, his work shall probably pass into oblivion without making any impact on a world blissfully ignorant of authors long and painful hardships. His puny contribution shall only attract criticsim as fruit of a bad author who is failing at artful writing. But an author of lipograms is truly an outstanding artist. A work of art only functions as a display of an artists vast imagination. Now, a lipogram of any type-long or short, is argubly as high a form of grammatical art as anything.

At the start, i didn't think i would start two paragraphs, but this sort of writing only grows on an author. I am loving writing this, and in fact i think all of us should try lipograms occasionaly. Now, i must finish this topic to maintain what small amount of wit i can still call my own.

I thank you humbly for glancing at my pitiful try at a lipogram and i wish you a good day.
Was it ever alive, really?
> Conversely, if they fail to grow into the role they might need to be let go to make room for someone more appropriate for the position.

How many places fire people because they thought they might be a star performer but turn out to be only average? I thought Netflix was newsworthy for being "ruthless" in that way, that it was rare and that few companies have followed their example.
I remember "Booch Blobs." The original system diagrammer was Grady Booch, and he used these little "clouds." I think Rational Ro$e used them. He ended up throwing in with Ivar Jacobsen, and they came up with UML (which Jacobsen started). More boring, but also more practical.

I use "pseudo-UML," as a "quick and dirty" diagrammer, but only when I want to do things like this: https://littlegreenviper.com/miscellany/swiftwater/the-curio...

I don't bother with the "official" definitions of UML. I kinda make it up as I go along.
It would be difficult to do really anything with such a pole.
Some past discussion:

Java for Everything (2014) - https://news.ycombinator.com/item?id=11386306 - March 2016 (83 comments)

Java for Everything - https://news.ycombinator.com/item?id=8677556 - Nov 2014 (338 comments)
Ah, but if you open a new window, then users will have too many windows open and get confused or frustrated! You would need some kind of innovation in window management beyond the 1990s for that to be feasible.

But desktop OS vendors seem to still be operating under the paradigm of making their desktop environments as approachable by computer novices as possible. Maybe still a good business decision, but the future for desktop OSs is clearly with professionals and enthusiasts, and it's my hope more advanced human/computer interface approaches will follow.

You can have better window management facilities on Linux, but you have to choose between software that copies the mainstream paradigm of, as you say, pushing new views onto navigation controllers (and I'd add using tabs/split-panes built into the window itself instead of being offloaded to a more sophisticated window manager), or software that's quite rough around the edges.
> Going from Portland to Oakland is supposed to take 18 hours but actually took 20 when I rode it.

Seriously? That's the speed of our slowest local regional trains here in Europe. Long distance trains are about twice as fast per km even on a trip one fourth the length and with several stops. If this is a regular state of affairs then it's no wonder that the state of train travel in the US is what it is.
There is some “hope” with Swift...

Just as SwiftUI has allowed me to ditch endless awful Apple UI file formats, Swift Packages are a relatively simple way to avoid much of what might otherwise require the rest of Xcode to configure.

I feel like there may be an internal tug of war happening in Apple but I sincerely hope the people advocating for damn-near-undiffable file formats will lose.
Sequence diagrams is actually good. The initial idea was improved before it became a part of UML.

https://en.wikipedia.org/wiki/Sequence_diagram
The funny thing (having lived through that time) was that while it was very trendy to pretend that construction was not a giant disaster most of the time from a planning, delay, cost overruns, etc. perspective - it was pretty clearly not the case even then if we’d looked even a little!

Like many things, the big promise was a fad, but we learned some valuable things out of all of it, and some still survive.
Honestly, I think complex architectures are best demonstrated as diagrams—and those can be developed in an agile fashion. Stable, well-thought-out architectures can’t be slapped together without nice diagrams. There’s a ton of folks who just “start coding” to get a feature going, but when someone else takes over the project, how are they to learn the code? Diagrams are always the best way for me—and there’s limits on what doxygen says, depending on how bad the implementation is.

Main point of UML is to tackle both diagramming/architecture AND forcing basic coding to reflect the diagrams. It forces code and documentation to both reflect the architectural truth.

This doesn’t have anything to do with agile methodologies, as any task can follow agile workflow.
Pretty much the only auto supplier that wasn't forced to move to just outside the automaker's own factories and on the tight chain of just in time. It was just acceptable to not highly integrate them, and oops. Maybe the automakers will make their own fabs. Which is what is really needed. But then again, we've been in a gut because of over production for years. So really, this is just automakers shifting the blame for the lack of demand of the last decade to someone that their stockholders are ok with blaming, because why admit your mistakes and fix them, when you can blame someone else?
You fail to understand construction reality.

The LGV route is a far more open and "flatter" (relatively speaking) than LA to SF. There's way less for them to tunnel or grade, which gets expensive quickly. HSR requires more gentle changes in direction than traditional rail. Building on flat, open terrain that no one is using is great... but that kind of terrain is already in use or owned by someone. Thus, easements or having to outright purchase the land. If not and you go for cheap land, it's going to come with downsides, like being mountainous.

At that, France sees less than 10 earthquake events over 2 magnitude a year on average. In the past week, there were already 6 events over 2 magnitude between LA and SF alone: https://www.cisn.org/map/index.html An LA to SF line is practically on a fault line. Devastating earthquakes are a real reality for a Cali line, not so much for France. The Cali standards for building rail are going to be higher than France, and for EXTREMELY good reason. Thus, price goes up for construction.

There's a lot more at play to building these things. What I mentioned barely scratches the surface to the complications. Claiming NIMBY is pretty naive if you don't take into consideration the real world problems and needs to achieving something compared to the lofty, idealistic wants of a project.
I live my material life out of a single piece of carry-on luggage, so I guess I am well disposed to answer this question. I am always making tiny tweaks to what I carry to reach that one-bag global maxima. I'll excluded the electronics, which are all vastly more useful than just about anything that's ever existed before and are all 1-10 of my top ten items. Otherwise, I'll cheat and list 3:

1. A nice sleep mask. Light is terrible for good sleep and popping one of these on can help me get good rest no matter where I am. Currently: whatever I found at the last CVS I visited.

2. Wool socks. They don't smell and stay warm and comfortable no matter the weather. Currently: point6 merino lightweight ankle.

3. A wind and water resistant jacket that packs into an Avacado-sized pocket. Currently UNIQLO Pocketable Parka.
My impression as an undergrad learning UML was that it gave an architectural level view - so the effort would go in at a different level of thinking, not just in a different part of the process?
We do not have good answers for the waste yet.
> Go throws all the boilerplate away

Wait, what?

I spend my life nowadays writing boilerplate in Go. The language and ecosystem is riddled with boilerplate and needing to repeat yourself. That said, I find the language plenty productive, but concise and reusable Go is not.

The rest of your post has nothing to do with the Java programming language and instead has to do with your frustration at the Java enterprise ecosystem, the desire to make things abstract for extendibility etc etc... considering Go is now being adopted heavily in those same enterprise shops and often being written by former Java developers I predict it will suffer a similar souring of public opinion by 2030 or so.

Enterprise Go is coming.
Once you combine those into "use one statically typed language" it narrows down the field to just a handful of languages, though. The "use one language" stipulation requires that the language is actually appropriate in a wide variety of situations, and has libraries to back it up in all of those. Like, you can't use Rust as an everything-language, it has limited libraries and is designed for a specific domain.

Between the two requirements, I think Java, C#, and TypeScript might be the only languages that qualify.
You could turn the paragraphs about "not enough money - turn to affiliate etc" into criticism of print magazines being overly nice to advertisers etc., which just a bit earlier were considered to be above such things.

> Many people who make Youtube videos about still photography and still photography equipment vastly overestimate how much people want to see them

likely, but it's primarily their own time they are wasting. For me, the entire thing is very much in the "so what" category - I'd rather have more people try and getting a few more good ones out of it than it being an exclusive club by some random criteria.
Ask HN: Is there a text-based tool to create a timeline diagram?
some tool like https://www.websequencediagrams.com/. but for timeline diagram.

This is an example timeline diagram (https://mk0trumpexcelrq4mcds.kinstacdn.com/wp-content/uploads/2014/06/Milestone-chart-in-Excel-Pic.png).
Not the Gantt chart
Granted, but you can do the same and much more with different methods, and avoid fighting the frustrating, unreliable and time-consuming UML tools altogether.
The article is talking about weaker public health 'surveillance'.

Try spending a bit more time thinking, and less time jumping to conclusions. I guess this is why they say 'reading' and 'comprehension' are two vastly different things.
You are right. I meant to say "... is not just about the destination ..."
It's not that bad. Sure I'd call parts of it broken, but this isn't it:

> any type might silently be another type which doesn't support any of the methods the static type would indicate

When an object is typed differently from its actual runtime type, it's usually because it's hidden behind an interface type. So it indicates fewer methods than it supports. Safe, but unergonomic!
"AbstractFactorySingletonProxyFactoryBeans" I don't think that this meme phenomenon is prevalent in modern java projects, and I would say that it is even less in the Kotlin ones.
A new way to read (and print) double-sided paper (2016)
Spotify Podcast Subscriptions. Unlike Apple, They Won’t Take a Cut from Creators
This article is cribbed from https://www.thedrive.com/tech/39647/tesla-admits-current-ful.... Submitters: please follow the site guidelines, which include: "Please submit the original source. If a post reports on something found on another site, submit the latter." (https://news.ycombinator.com/newsguidelines.html)

Previous discussions:

Tesla Admits Current ‘Full Self-Driving Beta’ Will Always Be Level 2 - https://news.ycombinator.com/item?id=26390834 - March 2021 (186 comments)

Tesla Admits Current ‘Full Self-Driving Beta’ Will Always Be a Level 2 System - https://news.ycombinator.com/item?id=26533489 - March 2021 (36 comments)
The IKEA office chair. e.g. MARKUS

Has been using one for 8 years now. Planning to buy another one for the secondary office.
It's not stupid to use an array, because it's the most natural data structure for representing one, two or more variables that can have different ranges and capturing their values.

For example, if I have a function 'foo(a, b, c)' and I am using subproblems whose solutions use smaller values of a, b, and c, then the most natural solution is to tabulate the solutions in a 3-d array with the (fixed) values of a, b, and c indexing into the 3-d array to get at the (solved) subproblem.

It's of course also fine to use a hash table to construct the triplet (a, b, c) and use it as the key to store (and look up) the solution to the subproblem that corresponds to the particular value of (a, b, c), and most reasonable interviewers would be happy to accept this as a valid approach.

As for recursive solutions automatically using the method stack, the overwhelming majority of programming languages provide the ability to do this, and the generally accepted understanding is that if you use this facility, you are using automatic recursion, letting the compiler/machine/runtime maintain the stack for you. The generally accepted terminology when you explicitly allocate your own stack is 'iterative'.

Also, the generally accepted terminology is 'Dynamic Programming' == 'Bottom-up tabulation', and 'Memoization' == 'Top-down recursion with caching to avoid solving the same subproblem'.
https://phys.org/news/2021-04-trees-world-offset-society-car...

Here:

> While this process naturally releases CO2 through the respiration (or breathing) of microbes that break down dead organisms, some fraction of plant carbon can remain underground for decades or even centuries. Together, land plants and soils hold about 2,500 gigatonnes of carbon—about three times more than is held in the atmosphere.

This was the point I wanted to make, probably worded awkwardly.
I just read this today.

https://www.governing.com/now/taking-the-commuter-out-of-ame...

The primary problem in Boston (from my perspective and I expert alot of other people) is the schedule of the commuter rails is terrible. They just make zero sense. You can take a train into Boston between 6-10am and a train out of Boston between 4 and 7pm, otherwise, you have to wait hours for a train.
> There’s a nice side-effect, too: The CI definition documents how to compile the project.

Okay, sure, but that's not an argument for CI. That's an argument for a Makefile.

In fact, I find myself going back to Makefiles all the time not in spite of all these specialized build tools, but because of them. Even if the steps are straight-forward for someone who's familiar with the tools, just having a Makefile there in the repository root will be helpful documentation to help someone new (or myself in 2 years) get started with how to build the stuff. For example, for LaTeX, it could be something like:

build: slides.pdf handout.pdf

%.pdf: %.tex
pdflatex $*
pdflatex $*
How we should be using Git
Sure - OP seemed like they were implying they're already comfortable with IntelliJ. If you're trying a new language, and then also trying new tools to learn that language, it sounds like you're taking on too much at once.

If you're already comfortable with IntelliJ, you can continue to use IntelliJ.
> I assume that's for good use of the CPU's instruction and microcode caches.

I don't think that is the reason. These are microbenchmark results, where realistically all the code will be hot in caches anyway.

The problem is that a compiler optimizes an entire function as a whole. If you have slow paths in the same function as fast paths, it can cause the fast paths to get worse code, even if the slow paths are never executed!

You might hope that using __builtin_expect(), aka LIKELY()/UNLIKELY() macros on the if statements would help. They do help somewhat, but not as much as just putting the slow paths in separate functions entirely.
There is a big legacy of spring/j2ee or pre-dependency injection apps which either look like a pile of needless factories, or a pile of XML.

Modern Java is a much more pleasant developer experience than that. For extremely large applications it also comes with the benefit of being able to remove the boilerplate and ceremony required to do basic things like call an internal service, internal service auth, rate limiting, circuit breaking etc.
> > To hyperbole a bit, I'd rather spend time writing property based tests and a few types in haskell in a way.

> I'd rather spend some time making sure I'm building the right thing, rather than testing that what I built correctly does the wrong thing.

I don't believe the GP was saying to use tests instead of planning. They were saying to use the tests as planning.

They called out property-based testing in which you describe behavior of the system as a set of rules, such as `f(x) % 2 == 0`, and the test harness tests many inputs trying to find the simplest example that fails that criteria.

They also called out defining types (in their chosen language, not a step removed in a UML diagram), which allows you to think about how the data is shaped before you write an implementation that forces a shape.
Chromium supports a single process switch at least to use for development of Chromium itself. While it does reduce memory consumption, it does not help much. All data structures in Chromium are tailored for multi-process case with no memory sharing. Replacing processes with threads do not change that.

As for removing V8 JS engine from blink I guess it is possible. But again, blink is tailored for accessing from JS and the layout and rendering code is huge so one does not save much.
I read the beginning of this C guide and also found it very helpful and made things very easy to understand (coming from C++). Thanks!
No, every object can be null, which just doesn't support any of the advertised method. You can have a `Frobnicator frobnicator` variable where `frobnicator.frobnicate()` blows up at runtime because its runtime type wasn't what you expected.
If you complicate things enough you can sell consultancy and certifications.
Funny story, in 2013 I was working for the Google Earth team. A new clean slate version of Google Earth was in the works (which has been released since) and this was at the time that wonderful demos were being made with asm.js

I convinced one of the engineers to try compiling it in emscripten. It was a total success, running at 45 fps. The middle manager got so excited about this that he decided to make a full push for this version of google earth to be used since
it was truly cross platform product running in the browser at near native speed.

The portable Native client / webassembly team caught wind that this was happening and convinced management to kill the project. The middle manager who was overly excited about this technology, was also let go.

All this to make way for web assembly which was “right around the corner” but actually wasn’t (back in 2013). Today web assembly is essentially doing the same thing that asm.js was doing 8 years ago.

If Google had not messed up this decision it would
have really been a trailblazer for other companies to
follow suit.
Nice to see Java adopting val.

Little things like this make a language so much more pleasant.
As a hardcore fan of static typing, how would you convince me to use a gradual typing model?
if you think this way about go, you probably have a REALLY good team that can design in a really proper, DDD-ish way (in that case, go en masse to google asking for your hard earned 500k TC, since even google has confusion on the best way to structure go projects) or you simply program toy stuff/basic integrations which boils up to a map from a type to another. go doesn't scale to huge codebases in normal teams.

otoh, you are totally right about the 8 layers deep root functionality, but that IMHO reduces to mindless application of textbook oop patterns to applications (I still have to see a company randomly "changing databases" so the 8 layers of abstraction over the db are correct).

still, I adhere to a lost standard these days, which is less code as possible. golang is automatically disqualified since it thinks that a 8 LoC for loop with temp variables is "simpler" than a .map(fn) (so much for "throwing boilerplate away"). it likes to introduce point of failures, and I dislike point of failures
In terms of hardware, pixel size is a fixed, literal specification of the actual display panel independent of its size.
That's the "Tucker Carlson defense".[1] "The Court concludes that the statements are rhetorical hyperbole and opinion commentary intended to frame a political debate, and, as such, are not actionable as defamation."

That worked in a defamation case, but the First Amendment defense probably won't work in a false advertising case.

[1] https://assets.documentcloud.org/documents/7216968/9-24-20-M...