skysight-inc/HackerNews huggingface dataset:
Ditto, I'd love to get my hand on some of these at the prices he found them ($1.4/unit). There's nothing in the usual places (eBay, AliExpress), and the raw e-paper units (no battery or micro-controller, or case) start at $5.
> From a practicality perspective, I get that the best programming language is the one you can use to build your product, but I tend to long for languages like C# or even Go when I'm trying to deliver a product on a team with 10+ people. Static typing really helps when you're interfacing with someone elses code, and Typescript only aids this point.

This. Languages like Java and C# are great for teams and codebases starting to scale out. Hence their popularity in enterprise.
Well to me the "gotcha" wasn't that you could control the match from the abstract class, it was all the silly things that you could do. Which for me was the point of the article. I mean the first palindrome example was pretty cool no?
You're likely breaking Zillow TOS, so expect a C&D before you monetize
To add to this thread, some people have done this exploration before, see slides 11 and 20 of [0] or Figure 1 of [1]. Could you just throw more RAM at your problems in a disk-backed system? In practice, probably. But there are distinct advantages to designing upfront for an in-memory scenario.

[0] https://15721.courses.cs.cmu.edu/spring2020/slides/02-inmemo...

[1] https://15721.courses.cs.cmu.edu/spring2020/papers/02-inmemo...
Please reach out “info at pillr.io” . FYI, I’m a single person, not a big company.
Fedora 37 to officially support Raspberry Pi 4
If you listen to him talk, he's the purple guy.
Don’t let the marketing budget fool you. They’re a subprime lender wrapped in the veneer of a fintech while being a closeted sweatshop. A large proportion of their engineering team used to be H1Bs about 5-7 years ago, unsure if that’s still the case with quotas shrinking recently.

https://newrepublic.com/article/155212/worked-capital-one-fi...
Just uttering the words "this only really happened because of the dramatic increase in organized crime prosecutions" is not really evidence that transaction records are not useful, neither is noting the date of money laundering laws. Money laundering laws necessarily came after the organized crime crackdown because we had to study these cases to proactively address them. You can't build an Al Capone-style cash empire in the US anymore.

Unlike what you imply, money laundering is not about tacking on charges but rather detecting and tracing criminal organizations so it can be effectively prosecuted. Money laundering's critical role in organized crime is now widely understood [1]:

- without money laundering, criminal finance is easy to discover

- criminalizing it provides a legal basis for international cooperation that wouldn't otherwise exist to pursue global organizations

There also aren't any Great Depressions and bank runs anymore, but we don't ask to remove those finance laws even though they historically didn't prevent the Great Depression.

[1] https://www.unodc.org/e4j/en/organized-crime/module-4/key-is...
Your ignorance doesn’t mean the science didn’t happen. The predictive models from decades ago have held up quite well, while deniers have moved from one wrong excuse to another.

https://climate.nasa.gov/news/2943/study-confirms-climate-mo...

https://arstechnica.com/science/2012/12/ipccs-climate-projec...
This is something we are investigating. We would like it to interoperate with the wider ecosystem.
What cult? PHP is technically, objectively inferior to almost every other web technology (which is impressive, actually, given how terrible most web technology actually is) in almost every use case one can think of. That doesn't mean it's bad or that nobody should ever use it, or that it isn't a superior solution in some cases. But in basically any non-trivial use case, it's a poor choice.
Node isn't included with JavaScript. No package managers are included with JavaScript.

You're splitting hairs about Node/NPM which is completely irrelevant to their point about JavaScript not having package managers built in.
But premature optimization is the root of all evil! I'm a better programmer for actively ignoring these optimizations! /s
Matrix supports mobile great - you don't need to run a client all the time.

It's well worth trying Element or FluffyChat on iOS/Android.
they’re quite different

first and foremost, working out at home has always been available. If you prefer working out at home you were probably already doing it.

Second, a lot of people enjoy a social aspect of gyms, or even just find it motivating to be around other people working out even if you don’t talk to them.

You only have to spend a little time around fitness oriented folks to know workout at home was never going to stick

I worked in a consumer goods VC during this time and we couldn’t believe anyone was touching these companies, most were just instagram-aesthetic branding on cheap machines
Shopify makes $100M strategic investment in marketing automation startup Klaviyo
Welcome to Chicago, Hot Dog Town, USA
It definitely is. I’m seeing this as well in the LA area.
Ask HN: How can I improve my team’s process for testing our web-app?
I am trying to improve my team’s process for testing our web-app. It’s a bit cumbersome between Confluence docs and Jira. Anyone else facing this? Does anyone have any suggestions on processes or tools?
I haven't, my local public transit bans food and drink.
The examples in that PEP range from pointless (`if hi is None: hi = len(a)` => `hi ??= len(a)`) to cryptic (`libpaths = libpaths?.split(":") ?? []`).

Remember the Zen of Python: “Readability counts”.
The whole thing is run through Discord bot, which is unfortunate but I guess it allowed them to get half their infrastructure for free? You interact with the bot through Discord commands and it generates and returns the photos to you.
I hope it happens soon!

But, if I understood correctly, that design both requires you to explicitly mark a type as a value type when you define it and it doesn’t support inheritance, so I’m skeptical that it will see any real adoption for a long time.

Java hasn’t had decades to develop a culture around this feature the way that C# has, and neither are like Go where everything is value typed unless it is one of the built in pointer types, or you explicitly put the value behind a pointer. (The pointers themselves are values, of course, but I think few people are interested in that distinction here.)

Go isn’t perfect by a long shot, I just don’t think adding the millionth keyword is going to be a silver bullet for Java’s predisposition towards GC pressure.
Matrix syncs a buffer of messages and scales to large rooms of hundreds of people without issues in my experience.

Importantly it manages to do this while supporting end to end encryption giving you high privacy in DMs, and high anonymity Signal etc can not match due to phone and phone number requirements.

Also Matrix bridges well to other networks. I have several slacks bridged to mine so I only need to use Matrix. Think of a messenger and there are one or more bridges for it.

Supporting matrix also means supporting open software and networks, unlike proprietary walled gardens like Discord that can at any time leak or monetize your chatlogs.
Homer Simpson's mother was named after Steve Job's sister.
Afaik, US Supreme Court has ruled that it is not illegal to scrape public data for a similar case with LinkedIn. As for me being a pain for Zillows bandwidth - I’ve requested them umpteen times to allow me to pay for their API. They just simple ignore me. I’ve found a way around their captcha, in the long term, I have to obtain the data directly from the MLSes
Try Dendrite. It is the light server you are looking for.

For a minimalist client try weechat.
"Only $10M." Right. In a country where the median full time, year round worker makes $56k per year.

https://en.wikipedia.org/wiki/Personal_income_in_the_United_...
Maybe I have a different perspective working in healthcare. People with mental illness tend to self-medicate with whatever is available, so you can’t lump dynamite and rope together with psychoactive drugs as the degree of actual harm is a different order of magnitude. As always, with any libertarian approach to regulation, it’s vulnerable people who suffer (mentally ill, poor, children) for the ideals of others. I find this is rarely a good deal in the final analysis.
One thing that has helped me grow over the last few years building startups is: microservices software architecture and microservice deployment are two different things.

You can logically break down your software into DDD bounded contexts and have each own its data, but that doesn't mean you need to do Kubernetes with Kafka and dozens of tiny database instances, communicating via json/grpc. You can have each "service" live in its own thread/process, have it's own database (in the "CREATE DATABASE" sense, not the instance sense), communicate via a simple in-memory message queue, and communicate through "interfaces" native to your programming language.

Of course it has its disadvantages (need to commit to a single softare stack, still might need a distributed message queue if you want load balancing, etc) but for the "boring business applications" I've been implementing (where DDD/logical microservices makes sense) it has been very useful.
This idea is incredible, and extensible beyond these notebooks. I’d like to see something like this as a general code authoring/collaboration tool, would be nice to see when I’m working in the same code as a co-worker, or supercharged pair programming. Obviously scaled too large this would be chaos, but on a 6 person team I think this would be killer.
It really doesn't have to be.

If you come from a hardware background, you get used to the idea of quickly prototyping with techniques (e.g. breadboard electronics) and materials (e.g. 3D prints in plastic instead of CNC milled parts) because it is vastly faster and cheaper. See also scale models etc.

The problem with software is it nearly infinitely malleable, so the tempation is always there to think that you will be faster if you ship-of-Theseus your current prototype into production code.

It works sometimes, but often it's faster to actually prototype, then do it "right" from what you've learned. It's a skill though, to know what to concentrate on and what to skip/fake/ignore.
The debate is just team sports at this point. The camp that likes IRC likes IRC. The camp that doesn't like IRC doesn't like IRC. In 2022 I doubt there's going to be someone who re/discovers IRC as the next big thing. It always gets upvotes here because there's overlap between the vocal i-detest-social-media crowd and the IRC crowd.

I'd also add that IRC is very easy to write a client for, especially if you're in a language without too many niceties, like an HTTP client library. As long as you can open a TCP socket and read/write from it, you can make an IRC client.
Matt Levine called this the "Bored Markets Hypothesis" at the time. Seemed pretty obvious both then and now in hindsight.
Most of the medical device industry could move a lot faster than they do. There are an interesting collection of reasons why they don't, but it's not inherent.
You don't have to run one yourself. Some networks like Rizon provide bouncers themselves. Otherwise there are a few third-party-hosted bouncers like chat.sr.ht. But yes, self-hosting is always an option.

That said, having set up self-hosted ZNC (the de facto IRC bouncer) last week, it's a damn PITA if you want the same experience as what you get with newer messaging stacks.

First, the default operation of ZNC is to replay the last lines from the client buffer regardless of whether your client already has them or not. To work around that, you have to install the non-built-in "playback" module. The OS I run ZNC on (Debian 11) doesn't package that, so it needs to be compiled from source with znc-buildmod, which means installing a C++ compiler. This also makes auto-updates harder because the module has to be recompiled out-of-band every time the ZNC package is updated by the package manager.

Second, the playback module uses a ZNC-specific capability which your client may not have support for, in which case you'd need a script to work with it.

Third, the playback module only operates in terms of server time. Your client asks the bouncer to replay all messages since timestamp T, where T is presumably the timestamp of the last message you received from the bouncer before the disconnect. But because of precision errors, this ends up replaying the message you received at time T, the one you already have, so your client ends up getting that message duplicated.

If you were to artificially add some milliseconds to T to work around that, you could miss out on any other messages that did occur in that time, so that's not a good solution. (Message loss is worse than duplicate messages, especially when the point of setting up a bouncer is to not have message loss.)

IRCv3 doesn't fix it either. The IRCv3 version of the CAP allows the server (bouncer) to implement either server time or "message IDs" or both. Message IDs would indeed solve this problem, but since server time is an option you can expect bouncers to only implement server time and not message IDs. Indeed, from a brief glance at the ZNC playback module code it seems ZNC itself makes it hard to add message ID support to that module, and even the new soju bouncer only supports server time.
Bringing new meaning to software debt
IRC is antiquated in most of the ways that matter, but there's one thing it has that I continue to miss in every other chat platform I've had to use: painless automation.

I spend a lot of time in Slack for work, and maybe half of that time is manually connecting pieces of data (who should I ping for a review on X? what's Y's email address or other contact information?) that I could trivially script with an IRC bot that listens for prefixed commands. I know I can do that with Slack Apps (or whatever else), but just looking at them gives me anxiety: there's tokens, and webhooks, and all kinds of ambiguously permanent or ephemeral state that's going to eventually break or expire. IRC bots, by contrast, have virtually no cognitive overhead: the only moving parts are the socket, and maybe a username and password for server authentication.

Ultimately, the tradeoffs are probably the right ones. But whenever I find myself chatting on IRC outside of work, I can't help but think of what would be possible if our "serious" chat services were just a little more hackable.
Flight radar isnt exactly live. There is a slight delay if you compare flights over your head to what flight radar is telling you about those flights.
Yes lol. Realtor.com is also scrapable so that’s the immediate backup. Long term I have to speak FTP csv files from a bunch of archaic MLS integrations. If I need to go that route, I need money.
this is also known in some circles as "functional core, imperative shell." I agree that it's an excellent intermediate paradigm.
I think I learned it through a couple of venues. I am still thinking this one out, and definitely plan to write a post about it.

1. designing "big" enterprise software from scratch, on paper, and then building a toy implementation.

I would say 95% of the actual work that goes into a big enterprise codebase are error handling, logging, changing requirements, covering the 80000 different user cases, while the architecture itself (a message bus, a pub sub pattern, a cache) can actually be written out in a few hundred lines of code.

This toy implementation can then be used to run multiple experiments: what happens if the message bus gets choked out? what happens if messages get reordered? how do you change a message schema?

These are rare and intense efforts in real life, but you can cosplay them with a few docker containers.

2. reading big existing enterprise codebases.

This is a skill that is not often taught, and people starting to read big codebases from "main.go" are usually doomed to fail, as they will hit the "big wall of enterprise indirection". Instead, try to get the codebase to compile, skim all the files at random until you think you recognize something, set a breakpoint in your debugger and run some part of the test suite or the real thing if you are adventurous. Then, try to mess with it some.

Once you found your marks, try to understand where all the big blobby nebulous enterprise nonsense comes from, and why it is there. Often, it helps to look at the source control history to see when it was introduced, and if design documents relevant to the change can be found.

I try to "read" a big unfamiliar codebase every couple of months. It could be kubernetes, or nginx, or webpack, or typescript, or react. You learn a lot about real world production code.

The amount and quality of opensource projects out there is nothing short of incredible these days. When I was coming of age in the early 2000s, it was linux, GNU, apache and a few other autotools driven monstrosities, with a CVS repository and a crusty mailing list.

3. learn to write RFCs

I started practicing writing relatively late (in fact, my blog just got started a few weeks ago), but learning to communicate clearly about design is vital. I have always done a tremendous amount of whiteboarding, and do most of my development on paper with boxes and arrows. I think this also develops a sense of "architecture" vs "code".
great breakdown

any conclusions you can think to highlight given all that. for instance when would you choose one or the other?
Those look cool but they aren't really logos, they are illustrations. Will look bad at small sizes and aren't vectors
> In "CEO of a major corporation most people in the world have heard about," it's basically nothing.

Perhaps CEO pay is beyond the pale generally, and these are obscene expectations.
Even if fully electrified train is difficult, hybrid and energy regeneration could be better.
Every missing knob is another reason for a risky rewrite hoping perf might improve.
The hacker, Paige A. Thompson a/k/a/ erratic, was a former AWS engineer who abused her access to download the CapitalOne data along with 30 other companies data. Insider attacks are so deadly.

On top of her having insider access, she is mentally ill (hence her fitting online moniker) so that doesn't help any. She was long known about in the hacking scene before the hack. Very aggressive and rude online behavior.

She got convicted recently and her sentencing is in September, looking at 20 years. I think she'll get that. Hopefully she doesn't follow through on her previous statements of wanting to attempt suicide or fleeing the country.
Is there any evidence to this? Or is the source just irrational car hate.
"By and large, language is a tool for concealing the truth."

— George Carlin

One of the most salient features of our culture is that there is so much bullshit. Everyone knows this. Each of us contributes his share. But we tend to take the situation for granted. Most people are rather confident of their ability to recognize bullshit and to avoid being taken in by it. So the phenomenon has not aroused much deliberate concern, or attracted much sustained inquiry. In consequence, we have no clear understanding of what bullshit is, why there is so much of it, or what functions it serves.

On Bullshit, Harry Frankfurt, Princeton University

http://www2.csudh.edu/ccauthen/576f12/frankfurt__harry_-_on_...
Reminds me of Pinata where they recently changed their pricing and I went from needing a $20/month plan to $1000/month.
Dragontown (Ttrpg Zine)
Dragontown is a fantasy-noir TTRPG zine set in Dragontown, a massive city of a billion souls, teetering between prosperity and apocalyptic decline. Dragontown seeks to give players a rich setting complete with fun noir flavoring. The zine also seeks to give players an easy-to-learn game system that balances crunch with narrative.
I wonder what it's stuffed with
Inspired by this I spent all my free credits trying to generate a QSL card for ham radio. I got pretty close but I think I have to accept I'm just not that good at making art, even with a great AI :)
I think Java and C# are indeed my favorite languages for huge projects with wildly varying developer competence. Python is probably my most hated for that situation.
Positivity culture exists because there’s no real downside for the people exuding it. You swing for the fences and the losses and layoffs are someone else’s problem. Most decent people might find such decision making distasteful and that excludes them from leadership.
Why? Let the proles panic and leave on their own accord, it will cost you much less in severance.
Matrix makes it fairly easy to grab an app token and start development, FWIW.
I think people will just continue to roll the dice. When your competitors stay on the cloud, and you have higher expenses because you don't, they'll out-compete you unless they get knocked down by this. But not all of them will and you're competing from behind against whoever is left. It's like not listing on Uber as a restaurant, many individual owners say they hate it but have to do it because everyone else is.

Regulation mightn't be the answer but it serves well in such situations, by removing some of the risk of engaging in risky behaviour because profit always wins. Something very basic like a right to explanation so you can argue your day in court and so on.
You might make more impact finding the highest paying finance job and then donating most of your income to climate causes.
I don’t see the irony. The paper isn’t called “legible printing”. Well typeset full-justified text is considered prettier than the jagged layout of left-justified text.

Justification-wise, this paper doesn’t look bad to me for the time period.

[1] some printers would go as far as tweaking the text to improve the layout.
I dont think the saynig it knows this but
Eurodollar is a real concept

https://www.investopedia.com/terms/e/eurodollar.asp#:~:text=....
PHP was my main language from 2000 to 2011. I liked PHP 4 very much. "Pass by value" was the default, so it accidentally introduced me to the Functional paradigm, even though it didn't have the memory management to allow for real functional programming. (It did not internally share memory between old and new versions of an object.)

I dislike the direction that PHP has taken since the introduction of PHP 5. For the last 18 years or so, the language has been trying to become something like Java, but without the speed benefits we might get from it being compiled, and without the strictness benefits we might get from being strictly typed. Nowadays it has most of the heavy rituals of Java, but without any of the benefits.

The single greatest thing about PHP, circa 2000, was the abstraction it calls an "array" which combines what other languages would call a vector (or a list) and a hashmap (or dict in Python). That array construct was very flexible and allowed me to get away with a great deal. Later on I discovered the "seq" abstraction in Clojure, which is even more incredible, and has the added benefit of being done correctly, in an academic sense.

After 2011, I increasingly relied on Clojure, for any task where dynamic programming was reasonable. Clojure puts me on the JVM and allows me to drop into something like Java, and strict typing, in the rare cases where that seems necessary.

PHP in 2000 was extremely lightweight but nowadays it demonstrates of envy of heavier object oriented languages, but again, it still lacks the speed benefits of being compiled or the correctness checks offered by strict typing.

The article lists these benefits of PHP:

* speed

* ease of deployment

I don't think anyone would pick PHP purely on the basis of speed, again, there are many languages that are faster.

In terms of easy of deployment, any deployment of PHP (or Python, or Ruby) tends to mean deploying tens of thousands of files. By contrast, when I work in Clojure, I typically uberjar the code, and then I only have to deploy one file, which makes deployment ridiculously easy.