skysight-inc/HackerNews huggingface dataset:
People are so quick to reject K and APL-style languages for superficial reasons that they never get to the deep and interesting reasons! I am mostly familiar with APL, but I think the things I appreciate and dislike are about the same in K.

One interesting philosophical difference, at least among some APL programmers, is that building abstractions should be avoided. TFA has a hint of that philosophy, in its suggestion that perhaps naming (the root of abstraction) hinders clarity. I think this is definitely worth considering, and it doesn't really have anything to do with the (supposedly) cryptic syntax.

One reason I don't like K/APL-ish vector programming is performance. I once spent some time working with others on a GPU-targeting APL compiler, and I found that some common programming patterns are quite antithetical to good performance. In particular, the use of "nested arrays" (not the same as multidimensional arrays) induces pointer structures that are difficult to do anything with. Such nested arrays are typically necessary when you want to do the equivalent of a "map" operation that does not apply to each of the scalars at the bottom, but perhaps merely the rows of a matrix. Thus, control flow and data are conflated. This is fine conceptually, but makes it difficult to generate high-performance code.

Another concern is that encoding control flow as data requires a lot of memory traffic (unless you have a Sufficiently Smart Compiler; much smarter than I have ever seen). Consider computing the Mandelbrot set, which is essentially a 'while' for each of a bunch of points. An idiomatic APL implementation will often put the while loop on the outside of the loop over the point array, which means it will be written to memory for every iteration. In other languages, it would be more idiomatic to apply the 'while' loop to each point individually, which will then be able to run entirely in registers. You can also do that in APL, but it is normally not idiomatic (and sometimes awkward) to apply complex scalar functions to array elements.

Just look at this Mandelbrot implementation from Dyalog; they do it in exactly the way I described: https://www.dyalog.com/blog/2014/08/isolated-mandelbrot-set-...

Specifically, the conceptual 'while' loop has been turned into an outer 'for' loop (this is OK because the 'while' loop is always bounded anyway):

:For cnt :In 1↓⍳256 ⍝ loop up to 255 times (the size of our color palette)
escaped←4<coord×+coord ⍝ mark those that have escaped the Mandelbrot set
r[escaped/inds]←cnt ⍝ set their index in the color palette
(inds coord)←(~escaped)∘/¨inds coord ⍝ keep those that have not yet escaped
:If 0∊⍴inds ⋄ :Leave ⋄ :EndIf ⍝ anything left to do?
coord←set[inds]+×⍨coord ⍝ the core Mandelbrot computation... z←(z*2)+c
:EndFor
Websites Evolved Back to Static HTML/CSS/JS Files
A Boy captured subsequent to executing a woman for 150k
It's great, there is no case around it so you can see the gears inside, but now I will be able to add several filters easily for different sites.

Thanks. A useful snippet and idea.
He was underselling it.

Unless you walked naked out into the woods and built your life entirely from found materials, literally everything in your life was at some point or another hauled by a truck.

Everything.

This is not a hyperbolic way to make an argument, it's the truth. Sometimes you'll have to go pretty far back the chain of events, maybe as far as raw materials, but at some point (probably several) X was on a truck for any X.

A hippie commune that grow all their own food living off the grid? Their clothes, their tools, the paint on their house, it all rode on trucks.

Two-ish years ago truckers in Brazil went on a strike to protest increased gas prices and corruption and it only took three days before the president ordered the military to force the trucks into moving again. That's how hard it hits if trucks stop moving.

The military couldn't do shit though because the trucks hauling the diesel powering the military vehicles were part of the protest so they got nowhere.

If all the trucks stop right this second, we'll be living in post-apocalyptic chaos by Friday. No joke.
Single-letter identifiers are a natural thing to object to when coming from other language paradigms, i.e. nearly every programming background out there, but this is a category error. What seems ridiculous in one context can be sensible in another. The objection turns out to be parochial.

It reminds me of how people think that parentheses are a significant aspect of Lisp, when in practice they're not. The parens look grotesque at first, but once past the novice stage they fade completely into the background and impose no cognitive overhead. Because of their regularity, the parens free you to program without thinking about syntax, allowing you to think more about the problem at hand—a highly liberating experience—yet to someone who hasn't worked with the language long enough to get that experience into muscle memory, they look absurd.

Short identifiers are preferred in APL-style languages because longer ones obscure the code. As you get familiar with the idioms of the language, you can pick them out in visual chunks to grok what a program is doing. You're not reading the program operator-by-operator, but phrase-by-phrase.

That wouldn't work if the programs used longer identifiers, because then the programs would consist mostly of identifiers, making it harder to scan the phrases, making it harder to grok the code. That's why people don't do it. You can simulate that in more familiar languages:

for (ridiculously_long_name = 0; ridiculously_long_name < 100; ridiculously_long_name++)

No one writes like that because beyond a certain length, the identifiers distort the code. That's what's going on in APL languages too; it's just that the "certain length" turns out to be 1 or 2.

In other words, the reason why APL-style programs adopt this style is not because the programmers are childish, but because the ergonomics of the language make it optimal. This is hard to understand, but only because mainstream languages have completely different ergonomics.
> I feel like designing a system to prevent a pilot from lifting nose too high up seems to make more sense than a system that actively pushes the nose down after it being lifted

Lifting the nose too high can induce a stall, which is very dangerous at low altitude.
I remember reading articles in "disclosure journals" published by different companies. My guess is that it was stuff that they didn't really think was worth patenting, but wanted to be safe from others patenting.

Haven't seen one of those in a while, and duck-go-go-ing didn't show anything either. I guess nowadays they just patent everything.
Still at Guantánamo
Chomsky has an idea called "The poverty of the stimulus", where he attempts to prove his ideas about deep syntax (or whatever he calls it) by handwaving that toddlers can't possibly learn language by merely being immersed in it for a few years.

I'm not impressed with the notion as applied to toddlers, but I think it applies fairly well to learning what variables mean in a codebase. Especially one written to be terser-than-terse.
https://en.wikipedia.org/wiki/Write-only_language

>Languages that are often derided as write-only include APL, Dynamic debugging technique (DDT), Perl,[2] Forth, Text Editor and Corrector (TECO),[3] Mathematica, IGOR Pro and regular expression syntax used in various languages.
> is this an Oracle/DB2 beast?

My impression is that RDBMS workloads are generally far more IO-intensive than CPU-intensive.

Looking at my own Azure SQL CPU vs IO vs Log charts right now, even with some CPU-heavy OLAP queries barely passes 25% CPU in the 2 vCore-sized database used in my current main project.
This is really important! I really enjoyed my 30-minute walking commute. It didn't feel like wasted time: I got exercise and time to think and all of that stuff.

It also gives me the chance to explore a bit on my way home (since I don't have time constraints).
Well, I'd argue that old fashioned PHP sites are structurally really similar to modern declarative client-side UIs, in that in both cases your're basically just constructing a series of functions that (deterministically) convert the current state to HTML.

Client-side rendering without declarative framework (say jQuery or vanilla) is different, in that you also need to consider state transition. This gets complicated fast.

And of course, the trade-off between the old fashioned approach and modern declarative revolves around how much interactivity is required.

If you can get away with it, I'd say the old fashioned approach takes less development time because you don't need to handle asynchronous (and possibly failing) state syncs. The database containing any state you might want to access is available synchronously!
I very much liked the design. Perhaps I'd slap a max-width on it, but other that that it was a delight to read. (And my browser's reader mode really liked it, too.)
not sure what all the downvotes are for - it was a legitimate question. The instructions just say to clone the github repo. The github repo just says it's for learning - no instructions.

How is one to learn without instructions? Or it only to teach those whom already know the answers?
He also used the book to explore his hatred of poetry
Unfortunately the "discussions" /comments on major news outlets are total garbage.
Hi,

I would suggest importing your data into a BI tool like Zoho Analytics first and see if that solves your needs, before advancing to Elastic Search or Splunk
like literally, i was asking for instructions. neither this post nor the github repo offered any instructions of what one is supposed to do with this, aka, how to build it, how to run it, or what to learn.
Ask HN: Pivot – Simulation Market Niches
Hey! We are two developers who, for the past year, has been building a Saas based forecasting/simulation application (Agent Based Simulation / Machine Learning). We've been collaborating with an expert in the supply chain domain which we hoped would lead us to creating a useful product. However, this individual has become increasingly less available. Our potential customers (for our current niche) is across the globe which makes it quite hard to move forward. We're now considering do a pivot.

Does anyone have any suggestions of market niches where simulation could play a role (e.g for decision support etc) ?
this would make for an interesting blog post.
hi rays, jsyk if you click on the username you will see any contact information that the user has made public so you can contact them directly :)
A team I was a part of at the uni made a fuzzy logic-based robot for a soft computing course, almost 20 years ago it seems. I rember that we were able to accomplish seemingly complex behavior (light tracking with obstacle avoidance) with only a few very simple fuzzy logic rules. Seems the project page is still up, along with the source code, schematics and documentation (in Croatian): http://www.zemris.fer.hr/predmeti/nenr/
I don't think Perl coders need any help with that.
For anyone interested, there's a tool http://www.aging.ai which does exactly that, using deep-learning algorithms on, and I quote, "hundreds of thousands anonymized human blood tests".

I've used it myself for fun after doing a blood test. It's a free alternative to InsideTracker's InnerAge product.
Most bad news can be ignored. COVID-19 is a rare exception.

News organizations are optimized at bringing you the worst things that happened all over the world every day.
There does seem to be a disparity between the number of posts found via search vs those that reach the front page. I've been quite relieved that HN has, so far, been a relatively calm oasis in an ocean of Covid-19 dominated media. I'm not seeking to put my head in the sand, but I find the constant coverage elsewhere numbing.
TensorFlow Quantum
I would love to know what Douglas would think of the modern smartphone.

I’ve also always wanted to laser engrave “DON’T PANIC” in large friendly letters on the back of my phone
> This is an extremely limited and uninformed view of the world.
>
> Especially considering what Boeing goes through right now, I would say the best aircraft engineers right now are located in Europe and they work in the Airbus headquarters.

Didn't airbus have issues of their own way back? Besides, airbus bought the a220 from bombardier, which makes it canadian rather than european. which just goes to show you, the products come from where the talent exists. silicon valley is a big part of it, but not the only game in town.

saying "environment doesn't matter," is ridiculous. but I agree—there is plenty of good engineering where elsewhere, but it is more likely to exist where there is a mass of other engineers :)
The motors are not really taking up a lot of useful space in the car and are not underpowered by any stretch so this tech needs to be price competitive. Like Hyundai said batteries are where we need to see advances.

Don't get me wrong it is interesting and I am glad to see advances but I don't see this as a terribly useful advance today.
>We have this style in the programming world. It's called Literate Programming. How many K programmers write in that style?

More than you would think. I had a very nice gig at a hft years ago where we were using noweb+k extensively.

The only place were I edited source code by hand with paper, pen and paste.
I'm not sure that sum and product differ significantly, which is why I brought up a couple of examples.
Fascinating read.

Nelson’s ideas of an open universal hypertext system is in many was incredibly prescient of our modern web. But one thing he (and others) got wrong(1) is the concept of backlinks: the ability of a user to see, for any page, a list of other pages (including those by other authors) which link to it.

It’s hard for me to imagine what the web of today would look like with this feature. Ignoring the (probably insurmountable) technical problems, I wonder what would happen if backlinks became available to web users today. How would it change the way we interact with and design websites?

(1): perhaps “foresaw differently” is more charitable since Nelson acknowledges that many systems do not include the feature and is arguing that the system of the future should.
one of my submissions about the restaurants and service industry yesterday[1] got flagged several times and it puzzled me tbh.

Covid19 is being aggressively framed by the political parties and media (across the world not just US) to divide the public into camps of "believers" and "non-believers". How sensitive people get about the topic (of COVID19) is almost frightening because this isn't any more about a pandemic but whether what somebody who has an opinion signals about it. People who believe in the danger are quickly labeled liberals/democrat, or conservative if they don't believe in the danger. This. Is. Nuts!

There is a real problem at our door. And it's not chickenshit such as a few people "believing in chemtrails" or that "evolution is a hoax", but whether this virus and the news around it are actually real.

https://news.ycombinator.com/item?id=22519125
There are other compilers for windows than MSVC++, so you can move beyond C89 if you wish.

stdint.h is useful and should be required reading. I still come across too many C projects that reimplement it poorly.

Learn to use valgrind, and maybe ddd too.
thank you, that's useful information of what this is.
Curiously, I saw the Sam Altman post on the front page a couple days ago, but then it quickly disappeared and I couldn't re-find it.

https://news.ycombinator.com/item?id=22513316
I grew up with memcached and it certainly has way less features than redis, but nothing is simpler. For linux+php anyway. From setup to usage.
that's exactly the thing I'm seeing in my field (computational materials science). Basically a simple regression model (with very simple features) brings you 90% there, still people compete on publishing (on ONE shitty benchmark dataset) ever better results – the most-cited people are using KRR, e.g. each fit uses 2TB of RAM and "days" of CPU (features of length O(1000) and 100000 samples). The sample data is probably a 30s calculation (and still only a rough estimation). Sometimes wants you to question science, but hey, writing proposals with "ML" in it gives at least a chance on that grant...
Are APL programs normally clumped together, as they are commonly presented to show off their terseness, or do they normally have comments and line breaks to indicate structure?
Redis. Back in the day when I ran memcached with the rest of the cool kids, I always wanted something like SADD and LPUSH. Redis is a realization of that vision and using it is always a delight to me.
No it's not about comfort. MAX engine shroud is too far forward to the point it act as canards creating pitch up force at high AoA, in a self reinforcing manner into a belly up into irrecoverable stall. MCAS prevents this by quickly pushing nose down back into airstream.

I believe there were discussions earlier on that the FAA requires all civilian airliners to have positive static stability, aka CoL comfortably behind CG so air resistance straightens the attitude without inputs.

The opposite of positive static stability is Fly By Wire based 4th-gen onwards jet fighters like F-16, that has CoL only barely aft of CG, that replace aerodynamic stability with electronic PID controllers multiplexed with manual axis inputs for each axes. Those planes could go into a spin over some axis that make sense if at any moment FBW loses control.

The fact that MAX needed MCAS, an FBW-like system, to meet FAA standards is itself wrong, and implementation to make it a ghetto nonredundant trim system rather than full FBW is also wrong.
Everytime I've singled out the REPL as why I like Clojure so much when explaining why Clojure so great to my friends they seem to mention that other languages have repls too. Like F# or JavaScript. When I counter that Clojure's REPL is connected to the running app instance they are developing I don't think they really understand. Perhaps this is one of those things that you just have to try out to grok.
>Bad news serves a purpose.

Yeah - generating pageviews.
I did a comparison here a while back:
Simpler, more terse, use class rather than extra properties or giant json blobs. http://www.kevinmarks.com/microformatschema.html
Within my team, we use Git flow with 2 person enforced code review before a merge (within a 10 person team). We use the code review to enforce this, alongside any other changes required.

I'm a strong proponent of good commit messages, so one thing I've been doing since joining the team is encouraging this to be better.
I think the major difference between the Clojure REPL experience and most other language's REPLs that I've worked with is the fact that Clojure REPLs can connect to a running stateful system (or a situated program as Rich Hickey coined it), and allows you to explore and manipulate the system's state and behavior dynamically at runtime, which makes it an incredibly powerful tool for building and debugging such a system.

Most REPLs I've used in other languages are strictly for evaluating individual commands in an isolated, stateless manner.
Virology of the Spirit
Actually, it's really important that people get the latest advice, and feeling bad is a good thing when action is required to prevent worsening outbreaks.

It's not just about YOU catching it and surviving it -- as we've seen, at peak outbreak, healthcare systems are going to be stretched thin. Routine healthcare suddenly becomes unavailable. As an example, someone who has a heart attack, or a serious car accident, who would usually survive given the appropriate level of treatment, will end up dying because that treatment simply isn't available.

And it might not be YOU who contributes to taking up healthcare resources, but it could be anyone YOU pass it on to.

So yeah, it is important to know what's going on, and have the seriousness of the situation rammed home. It's not like coronavirus is going to be affecting you for years to come, just this one. Sticking your head in the sand before the main wave of the crisis has even arrived is like avoiding news about an incoming hurricane.

I cannot emphasise enough caution - keep your eyes and ears open - and take affirmative steps - for everyone's sake.
> Again, nothing to use as the proof that the plane was not utterly dangerous.

I don't believe that a crew that thought they had narrowly escaped death from a "killer plane" with some horrific defect would fail to notify the next flight crew, and not have the plane grounded until it was fixed.

It's their job to do that, and not doing it should bring them up on charges of dereliction.

It's much more credible that they didn't think it was a big deal.

I don't have any more facts about that flight - nothing is ever reported about it. I sure hope the NTSB includes it in their investigation, as finding out what went on in that flight and what the crew did afterwards is crucial.
I see about 2-7 posts on it a day, all saying the same thing. They're great for raising awareness - I learned that I shouldn't touch my face from HN. But anyone who downloads a filter for it would know that anyway.

edit: to be more precise, it looks like 5 on Ask HN today and one on the main page (this thread)
> I gave a talk[1] explaining the REPL and most people in the audience (including senior Java, C# and Python developers) had never seen something like that before.

I find that quite surprising, as I use the REPL a lot when coding in Python.
Low-code way to clone a Medium blog design on your website
Most companies pay the same in SF, Seattle, NYC. Google did when I was there.
I doubt that K can reduce line count by a factor 1000 though. The examples in the article is mostly about shorter identifiers like "!" instead of "range" and a compact notation. That is perhaps a factor 5 not a factor 1000.

The example with a for-loop for summing a range is a blatant strawman. In which modern language would that be idiomatic?

Furthermore the examples only show a particular use case: Processing lists of numbers. How does the benefits measure up for all the other stuff a million-line program does?

That said, if you really have a million-line program doing mostly numerical processing, then I'm sure it would be a massive benefit to switch to a programming language optimized for this task.
Tesla’s Fast-Track German Plant Charts a Path Through Red Tape
That is what the Tweet says. Soap works best, but if you use alcohol, you should use >70% concentration. Jack Daniels won't help a lot in this case.
I’m curious - why is that so? I would assume that with higher volatility there are more people participating in the futures markets, and the margina should be lower - not higher
Latest DDR standard, and supposedly HBM3 in making support range requests
why would anyone keep scrolling when they reach the ads at the bottom of the page?
I see it as a BIG advance for small drones. The same torque from smaller engine where every gram counts is a big win, you can replace that weight with more battery.
> into irrecoverable stall

My understanding is it wasn't enough to push it into a stall, the MCAS would just moderate the pitch up slightly so it behaved like the 737.

> to meet FAA standards is itself wrong

The FAA mandates that all jet airliners since the 707 have a yaw damper to correct for "dutch roll" instability. Augmented controls are normal on jets.
We've had food waste bins in my area (Oxfordshire, UK) for nearly a decade now. As far as I can see it works really well, nearly everybody uses it.