skysight-inc/HackerNews huggingface dataset:
There was an article posted somewhere about why Haskell isn't used very much in the data science/ML community, and the feedback was that the tooling is mostly not so good. It was kind of amusing to read all of the comments on /r/haskell saying "no it's good." I don't think Haskellers would really understand, but lots of people (especially data scientists in my experience) view languages only as tools. The Haskell community seems to derive lots of value from spending tremendous time basking in the elegance of their tool, rather than actually using it to solve problems. So /r/haskell will continue basking, the rest of the world will continue not using it to solve problems.

Or an extremely long winded "yeah I have the same experience as you."
Leading Above the Line: My Interview with Leadership Expert, Jim Dethmer
Portable, Immediate Mode GUI in Go
I agree with you. I think it becomes pretty clear when applied to the example in the article of code review. If the abstractions are designed and named well, why should the reviewer need to jump to the declaration of the function in the if statement? Assuming the checkHasPermissions function wasn’t added or modified in the PR, the reviewer should just consider whether it makes sense to do_something if and only if checkHasPermissions.
I write a lot of code in the debugger, to be honest.
Visual Studio doesn't support edit and continue for 64 bit applications. I guess you can do your debugging in 32 bit but if that means compiling 32 bit versions of all your native libraries too, it's a giant pain.
I think also this idea of navigating files is wrong; shouldn't these functions, generally speaking, be in the same file?
Exactly, I ordered lots of 3d printing parts from AliExpress.

There are some sellers on AliExpress who stock top quality clones.

Now, if I try to get the original one I'll have to pay 5x and even then I might receive a counterfeit.

Getting it shipped from the source makes final price 7x of the clone.
In my experience Haskellers speak that way about every language that isn't Haskell or Rust, which I found to be probably the biggest turnoff for me wrt learning Haskell.
You are right. Django default auth backend handles this perfectly, but we wanted that functionality of login + signup in the same form, and that signup autofill in case login fail, so made our custom auth views and screw up some things (like username and password validation and going back to previous page after login)
In some sense, departments in a large company develop an institutional resistance to IT centralization efforts as a defense against the inevitable next reorg. Or rather, departments that don’t have this resistance didn’t survive the last one.

Though I wonder, if large companies are routinely this inefficient (which matches my limited experience as well), how do they survive? Naively put, why isn’t every large company killed by a startup next week?
The scale of the story was intriguing, but it feels like a murder mystery novel missing the last chapter. What did the company finally do to solve the problem? :)

Tef's "How do you cut a monolith in half?" is relevant:

https://programmingisterrible.com/post/162346490883/how-do-y...
or a guarantee they are not fakes.
“Look Sean! Two holes in this one. Call in the swats.”
Unfortunately, I only see a way to solve this for fungible goods where you would still need to get every actor involved in the supply chain to upgrade to the same secure tracking solution. It could be done in theory with crypto and tamper-proof packaging, but overcoming the network effect of today's archaic supply chains would be a huge undertaking.

The article points out how sellers are creating unique, non-fungible goods. So how does a customer even initially know that they're discovering 'the original' and not something that has been re-branded? With a Lamborghini, re-naming the car to another brand isn't a problem since the customer won't find it (and a supply chain integrity solution might work.) But how would you solve the Amazon problem?

I suppose you could have a time-locked escrow account where sale funds had to be locked there for N days. That way there would be time to challenge counterfeit sales and re-distribute the funds to the original authors (and / or make customers whole) when fraud was detected. But I am pretty sure people would hate that. Everyone would have to agree to use it for it to work and it wouldn't stop the potential for brand damage from low-quality counterfeits.

If it were a short enough time-lock though, it might work? High enough that it removes the incentive for fraud, low enough that it doesn't frustrate vendors.
Why would they solve it when it's in their best interest to let this issue foster. It increases trust in their own in-house brands.
There is none that can match the tooling of Delphi, C++, .NET, Java, Swift/Objective-C for RAD UI development.

Even the languages that target the JVM or CLR are not supported on the existing GUI tooling, forcing you to do workarounds.

So Scala, Clojure, F# can do it, but you end up having to save JavaFX or WPF layouts, while throwing away the generated code, and load them via library calls.

Or you write the UI layer in Java/C#/VB.NET/C++, while writing the rest as a library.

So at the end of the day you are forced to chose between RAD productivity or FP purity.

EDIT: I have naturally forgot Common Lisp, but for that you should make use of Allegro or LispWorks, not Emacs + FOSS Lisp compiler.
Idk how closely you guys are watching but industry around Amazon affiliates is huge and getting bigger. Amazon is basically outsourcing discovery to third party which means their AI can't keep up. I believe Amazon could be disrupted by niche player who do discovery and quality right.
The monsoons are failing (probably due to climate change)
Link to release blog entry: https://www.raspberrypi.org/blog/raspberry-pi-4-on-sale-now-...

(submitted as: https://news.ycombinator.com/item?id=20260863)
My PSP is still the best device I have for running emulators on a portable. The physical controls beat anything else I've tried - without being nearly as bulky as strapping your phone into an Xbox controller.
This depends hugely on what kind of code you're doing. If you're mostly writing "glue" code between in-house libraries which may not be battle-tested, it's probably a reasonable assumption. If you're writing large amounts of application code yourself and the libraries you're using are widely used, then it's much less likely that there's something wrong with the libraries.
Interesting differences to the pi 3 io is the dual hdmi out.

I don't use the hdmi out very much on any of my pis so I find this interesting. Are people using these as workstations? Even with stripped down Debian they seem kind of slow even just browsing the web.
> `is_foolike` to me, implies `test_for_abstract_quality_foo`.

Yes, which is why when `is_foolike` tests that a string starts with 'foo', that's rather unexpected. If `is_foolike` actually describes the intention of the function, then the function testing for the string beginning with 'foo' is a bug, because it doesn't do what it's intended to do.

Referring to "the quality of starting with 'foo'" as "abstract quality foo" isn't hiding implementation details, it's being opaque about what a function does.

Put another way, "what a function does" isn't its implementation. "How a function does what it does" is its implementation.

> `starts_with_foo` implies an assertion a string beginning with a particular prefix

Yes, exactly. Because that is what it is intended to do, we hope, since that's what it does. That's NOT the implementation: there are plenty of different ways to implement testing whether a string starts with 'foo', and the name `starts_with_foo` isn't coupled to any of them.

> The point being that even though, in this (again) entirely fictitious example, the intention of the method is different from it's implementation

Yes. `starts_with_foo` is also different from the implementation, while still describing the intention of the method.

Could you explain to me why you think `starts_with_foo(x)` describes the implementation `x.startswith('foo')` and not some other implementation (such as `x[:3] == 'foo'`)?
Random patterns in data yield random conclusions
> The most important change since 5.0.0 is a breaking one: Keywords are now completely distinct from symbols. Keywords are no longer accepted as identifiers nor as type names, which may mean you'll need to pipe-quote them or disable keyword syntax on your projects.

I'm curious to hear why a breaking change like that did not warrant a major version change? Not really a critique - I'm not a user of Chicken Scheme, so I assume that it's no problem for the people who actually use it.
I am sorry if I am being rude... Don't you think its a huge issue of trust?. The data can be sold to insurance or advertising companies ( no HIPAA or other laws to protect the data here ).
I don’t quite get the point of article. It essentially boils down to:

“Abstractions — or rather, indirections — are bad for for readability, but they are good in some cases.”

Umm... this can be said for pretty much anything. Over use of anything is bad. Inappropriate use of anything is bad.

> Mostly, I want authors to be aware that there is a human cost to indirection that is felt more acutely by everyone reading the code except the original author.

Sure. It’s a well known fact that abstractions have associated costs — nothing new there. However, the author seems to forget that not abstracting things can be equally costly — even when human readability is concerned.

Imagine someone trying to figure our the business logic be reading code. All they need to know is some conditions are being met for certain steps to be executed. The actual steps involved in the check are irrelevant to the business logic. The condition can be modelled separately from the business logic and can even change independently. For example:

def is_foo_condition_satisfied((self):
return self.variable.startswith(‘foo’)

In this case, it just happens that the satisfaction of a condition is implemented as prefix check. In the future, it might be changed to checking a flag or reading a database, or anything really. If you sprinkle the startswith() check all over you code, it will be hard to make the change. And it actually hurts readability. While reading a large codebase, you want to focus on specific parts of it — getting into the details of everything all at once does not make it easier.

The most important thing to note is — programming is not confined to s strict set of rules. It’s not an exact science. You can’t define a strict a rules that must be followed. What makes sense somewhere is completely useless elsewhere. The Linux Kernel is full of goto statements, despite the fact that goto is considered harmful.

Dogma Driven Programming must be avoided. Even well known programming practices are guidelines at best. One must evaluate whether a given rule fits a given situation.

Coming back to the example at hand, functions are meant to divide the program by the logical tasks being performed, not by number of lines or any other metric. As I said before, it’s more art than exact science.

Is the check for foolikeness of something a logically distinct task? It depends on the context. There is no way to write a cardinal rule either way.

PS. I sincerely hope no one comes to me for code review with a monolithic function because of all the inlining — citing this article as inspiration.

Edit: Typo correction.
Even better (IMO), "hasPermissions"

It isn't clear whether the "check" prefix means the function returns based on whether the checking was successful or not.
The point made by the article (avoid using due to problems for debugging and code review etc.) does not hold much water. 'Indirection' can be invaluable while separating 'how you got it' from 'what to do with it' (it=some data), for example. 'what you do with it' can remain unaffected by changing 'how you got it'. This will not mess with code review practices but make understanding the pieces easier. It will also make debugging easier as you can test both those pieces independently. What the OP calls indirection is just bad code or meaningless abstraction.

Zed Shaw puts it well: "Abstraction and indirection are very different yet cooperating concepts with two completely different purposes in software development. Abstraction is used to reduce complexity. Indirection is used to reduce coupling or dependence."
Was thinking the same thing. It can drive two 4k displays. Yay! Who the hell uses these like that?
Has anyone had success using an ARM based system for local development in Linux?
Hopefully mdBook[1] will have proper PDF output[2] soon.

[1] https://github.com/rust-lang-nursery/mdBook

[2] https://github.com/rust-lang-nursery/mdBook/issues/88
If I remember correctly there was a complete Cyrillic translation of COBOL back in the Soviet days. Other than that, I think that although it would help, it's not absolutely necessary to learn English. Learning the Roman script is, though.
DoEvents
Given that Lobste.rs makes moderation actions public, please provide some references

Contrary to how you believe the site operates, they private messaged me.
Oh my! This is such a crazy upgrade. I've been using the RPI2 as my HTPC/NAS at my folks, and I'm so happy with it. I was itching to get the last one for myself.

USB 3.0! Gigabit Ethernet! WiFi 802.11ac, BT 5.0, 4GB RAM! 4K! $55 at most?!

What the!? How the??! I know I'm not maintaining decorum at Hacker News, but I am SO mighty, MIGHTY excited!

I'm setting up a VPN to hook this (when I get it) to my VPS and then do a LOT of fun stuff back and forth, remotely, and with the other RPI at my folks.
All of these examples sound like they should be rather serious crimes. Are people going to prison over this? There's quite a big difference between fake brand clothes or copies of novels, and fake safety/medical gear and badly copied medical books.
The Biggest Alleged Startup Frauds of All Time
They get used as a 'kiosk' a lot, even for commercial use. I'm guessing this caters to that need.
For USA customers, how looking for dream home
See also Zed Shaw's "Indirection Is Not Abstraction". The blog post is a bit overlong, but Shaw's point is important:

Abstraction and indirection are very different yet cooperating concepts with two completely different purposes in software development. Abstraction is used to reduce complexity. Indirection is used to reduce coupling or dependence.

https://zedshaw.com/archive/indirection-is-not-abstraction/
I’ve often noticed Pi’s attached to the back of tvs running adverts in retail situations. Perhaps this has something to do with it.
Delphi or its FOSS clone Lazarus.
I frame myself as a contributor, because as I stated before, I would be contributing via the same proposed methodology as anyone else, via a tax on investments. Additionally, I haven't downplayed this, me downplaying it would be me either obfuscating my debt, or not discussing it at all, I haven't hidden the fact that I'd benefit from it, I'm arguing the merits of the proposed policy and why it would be good not just for me, but for society writ large(including you my friend)(benefits include increased consumer spending, increased GDP, etc...). Furthermore, given the potential timeframe on this, and any investments I would likely make in the future, it is well within the realm of possibility that I end up paying far more than the $40k that I might gain in the short term which would seem to reasonably answer "you're a net taker argument".

As I argued in my previous post, taxes are not altruism they are a cost of living in society, it's why we have a progressive tax system the more one benefits from society, the more they pay back. I do argue however that I'm more than happy to pay this tax so that current/future generations are better off, which doesn't seem to be a point that you've refuted at all. It seems that your argument is that because you struggled, everyone else should have to as well which seems fairly draconian to me(and ignores a basic sense of fairness, depending on how we want to define fair), and also seems to ignore the potential struggles of others and any questions of why they took on such debt (but that's another question for another time). I have no idea why you keep framing this as a means of "takers" vs everyone else, when I've kept bringing this back to the more nuanced point that yes I would benefit, and yes I would also contribute. It's also strange to me that you haven't seen fit to offer an alternative or any kind of compromise, but rather dismiss the whole proposal out of hand.

I suspect that you're going to come back to the point/continue belaboring the point that "you're a net taker"(while conveniently ignoring any other points) as if somehow: A. The only point of society is for no one to benefit from it. B. The only point of society is to make a profit. Neither of which is true, because frankly everyone "takes" from society in one form or another to varying degrees, we do this because everyone should have a reasonable shot in life. It seems unreasonable to ask people who are just starting out, to be potentially hundreds of thousands of dollars in debt in the hopes of pursing them for the rest of their lives to make money. This is a question of lives/quality of life versus money, you seem to be fairly square on the side of money which is certainly a position one can take. Generally the point of society isn't profit, but to try and make the society a better place, and sometimes that comes at a cost, or with things we disagree with(I disagree with ag subsidies, but it likely helps rural farmers somewhere, so I'm OK with that in the end).
Apart from work, we learned to write bare bone code on these so it was necessary having an HDMI output.

Our project was to re create a classic game without using the OS, straight up programming on metal. So the HDMI was much needed.
The Raspberry Pi 4 is here
Also an idea that was explored in other 4GL tools of the day.
I was hoping for dual ethernet, to use as a cheap firewall. Dual everything else except that.
Do you mean, can anyone set up a factory and get through the startup phase before Trump's whims change?
Oh this is great. WiFi and gbit ethernet onboard is what I needed.

Is USB and network bandwidth still shared?
Definitely !

I do not use my laptop's keyboard, mouse or monitor.

Everything is external for me.

A much more powerful rPi means it might be possible to ditch the laptop form factor for good.

The only missing piece of technology for me is a laptop body WITHOUT a compute core ( only screen and a cheap keyboard ).

So that I can attach a rPi at the back.

Linux runs very well on ARM, in relation to Intel. and the power consumption is tiny !

I can run an rPi on portable battery for days !

it would be really cool if I could attach, reattach multiple battery pack onto my laptop.
4GB RAM is a lot better than before, but I had hoped for 8GB. If the Raspi had a decent amount of RAM I would seriously consider using one as my main computer.
The pitch adjustment wasn't actually up to 2.5 degrees. It was 2.5 degrees each time MCAS was activated. After two cycles it can reach maximum nose down trim of 4.7 degrees. (Or after 8 cycles under the original 0.6 degrees pitch limit).

The Boeing safety analysis did not seem to have realized this was a possibility.
Yup, seems like the author had trouble following badly written abstraction and/or indirection and came up with the idea that they are bad.

Abstractions are invaluable if you are dealing with a large codebase. Even the original author can’t keep everything in their head.

Indirections are invaluable if you want to be able to modify code in the future without making a gigantic mess — and potentially breaking compatibility in the process.
It still works that way for those of us on Windows development.

For example, https://www.devexpress.com/
100% agree but I use the term organizational instead of political because I feel like "political" hints that it's only necessary because of the organization's dysfunction and I believe microservices are useful even when the organization is functioning well.(though maybe the point where it makes more sense to transition is later in a well functioning organization)
Amazing improvements. Seems like they are getting much closer I'm terms of performance to ODROID.
The tool to port to .Net wasn't as bad as the article claims. I ported a pretty big messy WinForms application which was somebody else's years of work and today it's even more successful than ever. It took maybe a week or two to work through the many 100s of errors, but none were that difficult. I had already learned not to rely on proprietary binary libraries that were popular back then because you knew they wouldn't be supported in the future when you'd need them.

I'm very grateful for VB.Net. It's much cleaner and safer than VB6. My biggest wish now is for a way to port to C# piecemeal instead of doing the whole project in one shot.
Education users? K-12 classroom use probably would be as workstations, and dual displays would be useful for the teacher (monitor + projector).
A step up to A72 cores while retaining the same price is huge. Kudo to the Raspberry Pi team.
What did you have problems with? I wrote the Emacs integration for GNU APL that provides a decent environment for it. All you have to do is to compile and install GNU APL from source, followed by loading the Emacs Lisp code.

I created a video showing how it's used. Sorry for the poor quality. I originally planned to make a new one, but I have been working on different projects since then:

https://www.youtube.com/watch?v=yP4A5CKITnM
Pretty sure there is one orange pi or Banana pi for that.
It doesn't stop being what it is just because the standard library does it.
This is similar to the point made in Ted Chiang's short story "The Truth of Fact, the Truth of Feeling." When writing replaced oral storytelling, people's memories and experiences shifted as well. He makes the case that having one's experiences always available for playback will create another kind of shift.
Bisecting K-Means Algorithm
My first reaction to the specs:

Pros:

+ USB 3: Very nice! Finally a pocket-sized, fast USB host.

+ Dual HDMI: Could be useful as a projector computer.

+ 1.5 GHz: Good, it might be fast enough for some real work.

+ Gigabit Ethernet: Excellent for those using it as a NAS.

+ USB-C for power: Not surprising, it's the standard now.

Cons:

- MicroHDMI: Incompatible with the 800x480 HDMI 3.5" screen [1]. Also different again to the MiniHDMI on the Pi Zero (will there be a new Pi Zero soon? Who knows.)

- Power consumption! They recommend a 15W power supply, which means I'm pretty sure this won't run on batteries.

[1] https://www.aliexpress.com/item/New-3-5-inch-800x480-IPS-LCD...
Again, it doesn’t really matter whether the library actually has a bug in it: you’re just tricking yourself into finding the bug by looking at code that’s not your own. However, from personal experience well-used libraries and tools have more bugs in them than you’d think ;)
You could buy a ( usb -> ethernet ) cable for less than 5 dollars.

I use ( usb -> ethernet ) for the rPi zero.

You even get ( usb -> ( ethernet, usb, usb , usb ) ) accessory, which is really cool.
Finally Ethernet is not throttled through usb2
You can still get them

https://www.devexpress.com/

https://www.grapecity.com/componentone-studio

https://www.componentsource.com/

https://www.tmssoftware.com/site/tmspack.asp

It is just UNIX world is still busy replicating text terminals and daemons.
> Is that really what you want?

Yes, exactly that, since they've proven to be so utterly inept (or complicit) when it comes to regulating counterfeit products.
It’s not just a problem for review and debugging. I think it’s even worse for refactoring and new feature development, because it makes it so much more difficult to know where to make a change. If the condition in the (silly) example needs to change, should you write a new function to replace the call to is_foolike, should you rewrite its implementation, or should you add a parameter that alters its behavior?