skysight-inc/HackerNews huggingface dataset:
Creating good APIs is about developing a good taste and not surprise the user.

In your case, the first job of designing the API is done for you by the app.

So as a first step, create the foundation layer by mapping the app's API to simple objects that represent the app's API.

Then you can build a layer above to simplify certain operations and build some logic on top.

Think in terms of responsibilities, relationships and who should know about what. That's how you achieve code reuse. When you find yourself reusing your own constructs, it means you've done something right. I find it's often that developers aim for code reusability, but IMHO code reusability is just a natural outcome to good design decisions.

Use your API by writing pseudo code and see if it makes sense.

Keep iterating. Avoid trying to nail it from the first go. IMO, building functionality is more useful than designing a perfect API.
Go with Django. Save yourself a lot of pain
Really bad move. Shows the investors are putting the squeeze on them for new revenue, what they can do is now more important to them than what they should do. Well, good thing I used my 'junk mail' domain to sign up with them.
Yeah, but one thing about the subways here in Japan that I think is weird: if I ride the subway to work (11-minute ride) most of the time literally nobody talks.

Nobody uses the phone (it's bad manners here), so like the only time anybody talks is like when a group of people gets on together (not usually the case when I commute).

I mainly bike so my subway experience might not be very typical, but it's one anecdata point.

Almost all my subway-riding experiences this year have been such that 95% of the other passengers are wearing masks, and nobody talks.

Can't be the main factor, but it might be one factor.
Right tool for the right job, I think. I’ve had absolutely wonderful experiences with Elixir doing web apps (both LoB style and SaaS style). Probably the best one, and it’s such a canonical example, is a group chat app using Websockets. It just feels so good, and with libcluster, multiple nodes in K8s can autodiscover and join each other. No problems at all having chats where the members are connected to websockets on different nodes; everything mostly Just Works.

On the flip side, I prototyped out a drone flight controller in Elixir thinking that the “fail and restart” portion would be awesome for reliability (if the RTK receiver craps out and restarts, no big deal, the EKF can just fall back to using the IMU until the RTK is back online). That part of it all worked great, but doing real-time numerical computing in Elixir is painful. As was generating the signals for the ESCs. I was making C modules to try to talk to the ESCs, and errors in those modules had the ability to corrupt the BEAM. I started looking at ports too (where the C code runs as a separate process), but gave up when it felt like everything was feeling way too complex and fragile. Let it crash is great, but “it crashes all the time” is not. I could have probably gotten it working, but... not a great domain for it.
Learn Data Structures – Linked List
> E.g. when using keyword lists for function options, callers need to pass the keywords in the exact same order.

That's not generally true in the language. Were you trying to pattern match options in your own functions? Newbies to the language can get excited about the pattern matching feature and try to apply it in places where it's not right (well I may be projecting there).

> Also mocking was difficult in tests.

This is true. Were you using Mox? Mox makes things considerably easier at the cost of some boilerplate, with the added benefit that you can run concurrent mocks. You also have to not think of mocks in elixir like Ruby, they are very different.

I'm sorry I wish someone more experienced with Elixir could have helped onboard you.
DeepMind Made a Superhuman AI for 57 Atari Games
I would humbly suggest that if you don't have answers to your questions, it is not yet time to quit your day job.

As other folks in this thread have suggested, being a successful freelancer / contractor / small-business owner, etc is all about dolla dolla bills. It all starts and ends with sales. Your brand, the marketing associated to it - everything is about building connections and making the cash register go ding. Yes, ideally you want to also be competent and produce quality work, but a lot of people who are really good at the tech part are not necessarily good at the bringing-in-the-bacon part. Figure out how you are going to create your pipeline and the actual steps of everything you said, IE: the mechanics of what to do, will follow. Get all that going before you jump into freelancing.
In prior article "slow by design", this was reported to Apple and the bug was closed that it works like that by design.
Personally, for building a client library I'd take a look at OpenAPI Generator (https://github.com/openapitools/openapi-generator) or Swagger Codegen (https://github.com/swagger-api/swagger-codegen) - especially if the API provider has an official OpenAPI/Swagger specification. (If not you can always write a specification yourself). Both tools support PHP among other languages.
You can tell the doctor that you need Plaquenil for your upcoming business trip to Africa. Thats how people started doing it back in March.

If you are in the risk group. Otherwise the chances are extremely low.
I edited my article with a link to the RFC of JSON Web Tokens, which is for me the first result on Google or DuckDuckGo when I search "JWT".
https://www.youtube.com/watch?v=rtw1AoJN00o

Also a video, showing some basics.
Focus on:

1) Dialing in a profitable offer
2) Building a predictable source of leads
3) Building a repeatable sales process

1 offer, 1 channel, 1 sales process

Good luck!
Covid vaccine passes phase 1 human trial
> Static type checking does have some advantages, it can ease some of the low level testing burden. For instance, using a tool like Dialyxir (dialyzer) is helpful in elixir to give you that extra security of static type checking.

Dialyzer isn't an answer to static type checking. It barely works half the time and cannot be relied on to check things exhaustively. It's so bad that even libraries created by core contributors have type spec errors in them regularly. Why? Because they don't use it, because it's not reliable.

Both `Ecto` and `StreamData` had these issues several times and I can only assume you could find many more if you were even more invested in using larger parts of the eco-system.
Ruby on Rails is the worst language, so your first mistake is choosing Ruby.
^ There's nuggets of gold in this comment. I went through a very similar cycle. Learn from our mistakes friends!
> This is a hash designed for non-cryptographic use

The Readme specifically says "you can modify it to yield 128-bits or more if you want a cryptographically secure hash."

Which is a problematic statement, because it is not designed for cryptography even if you extended the output to 256 bit. It's not the output length that makes it cryptographicaly secure. (Rather it's the difference between "you won't find collisions by accident" and "you won't find collisions even if you try really hard using very sophisticated math", but there are more requirements.)

This is similar to the issues with a different hash by the same Github user posted two weeks ago:

https://news.ycombinator.com/item?id=23103521

Making fast non-cryptographic hash functions is a fun challenge and I appreciate the projects, but please, please do not make any claims about cryptographic properties!
The only big tech company I've seen take the public stance that the user owns their own data is IBM (of all people).
Golang, MySQL on ec2. Been using this formula for years. Turns out it works pretty well.
Long time ago I made a python script to manage my 2-monitor i3 setup.

The idea was to be able to quickly select things to be made visible on both monitors.

The two monitors are named primary and secondary.

To select something to be visible on primary you would press the combination (for example alt+f1) and the selected desktop would be placed on primary. Whatever was on primary would be pushed to secondary.

To select both primary and secondary you would first press what you want on secondary and then what you want on primary.

The idea is that people typically have what I call "scenes". Scene is particular arrangement of windows on both monitors.

This means that you can quickly learn your "scenes" and get them to be visible very quickly, in a fraction of a second, without having to hard-code the scene in your config file.
Not that I'm at all excusing all the shadiness of this opt-out nonsense, but just wanted to throw out that the notice that they may require ID to delete your account might be coming from the California Consumer Privacy Act. Source: https://www.latimes.com/business/technology/story/2020-01-01...
I'm absolutely in love with Clojure.

That being said, it does suffer the Lisp curse, in that I now feel unable to function in previous languages that I was proficient in because I'm now allergic to boilerplate and the inability to create my own syntax when needed. Lots of Python jobs out there that I feel like I should be pursuing, yet I just can't seem to get excited anymore by non-lisp languages.

Wish there were more Clojure job opportunities out there.
Random thought on emerging roles and future of work
Can someone explain #9?
It’s not even the future. 40 gig Ethernet is already faster than most SSDs. And you can get a card on eBay for $200.
Please don't do this.

I have seen this in practice. A simple CRUD app split across literally 100 of "re-usable" repositories. The business logic is all over the place and impossible to reason about. Especially with step-functions, now the logic is both in the code and on the cloud-level. Each developer gets siloed into their little part and not able to run the whole app locally.

The whole thing could easily fit in a single VM as a Rails or Django application.

The only one that will be happy about this is AWS and contractors because it's a guaranteed lock-in.
Thanks for ZeroTier! Managed to convert a few friends from using Hamachi for LAN games, which was always a pain to setup previously. It simply just works for my needs.
Is RN still used widely? Most people/companies I know have ditched it. It's never a time saver and usually just a pain once you wanna do something complicated.
It's not even correct - "thy arrogance" should be "thine arrogance"
It's kind of hard to decode the explanation given that it spends a lot of text on useless formalism instead of substance, but it seems like this language has three fatal problems:

1. Borrowed pointers are not a first class concept, but just syntax sugar over returning a parameter from a function, i.e. &T or &mut T are not actual types in Rust parlance

2. There is no mention on how to achieve safe shared mutable data or even just shared read-only data, i.e. the equivalent of Rust's Arc<Mutex<T>> or Arc<T>, which probably means the language has no support

3. It seems there is no way for a struct/record/tuple to contain another non-primitive data type without the latter being allocated on the heap

So as far as I can tell aside from the dependent types this language is much less powerful than Rust and cannot fully utilize the CPU, and hence far from the goal of having a perfect Rust+dependent types language.
MP5s are modern high-quality weapons.

They'd need MP5s in case a group of terrorists attacked the checkpoint, or got caught going through the checkpoint and decided on plan B (just kill as many people in the airport as possible).

They need security clearances to ensure that they're not going to help someone get a bomb onto the plane.
Yes, the history matters.

If your point is that you can contrive edge cases then, well, duh. There are also edge cases involving free speech and just about every other legal/moral/political concept.
I bought a Wacom tablet to use with Krita and have been totally unable to figure out how to make it work. Every tutorial/video out there is for Windows and most of the settings that affect Krita are done in a windows setting area. I use Fedora/Gnome and don't have access to that level of settings (tho there are some settings available through Gnome via libwacom, which itself is awesome).

Anyone using Krita with a Wacom tablet under Linux? How do you draw?
I'm curious - as a user of a triple-monitor desktop setup - is there a single video card that can drive 3 of these Dell 8k monitors he uses ?

I don't need high performance or gaming or 3D, just full resolution at 60hz - as he is using his - but three of them ...
I first heard about this in the context of language categorization.

You compress samples of each language and then to categorize a new sample you compress it with each compressor and the one that does the best job tells you what language.
Company runs phishing simulation (they were already remote)...is that news?

One in five isn't bad. As you target them, based on content and recipients, the results can get much worse. And when non-tech companies run these, the results are...scary.

It's no wonder the most sought after entry point into a network, the most reliable and probably the cheapest, is phishing. All it takes is one out of 50,000 to fall for it.
Yes, but AWS is crazy expensive for just running VMs.
Any new constraint on password inputs will result in attackers creating a fake password input without any constraint, via CSS / JS.
I believe that was a joke.
There's better and worse in advertising, sure. But third-party ads are a compromised business model even at their best. I'm not saying businesses don't involve compromise, but the goal should be to figure out how to have the most net benefit to the world (I don't think profit as an end in itself is a respectable goal). Thus, choose the compromises that are least detracting within the scope of real-world options.
>* Casting NULL is pointless, as it's already defined by the standard to be a pointer constant, compatible with all data pointers.

You should still cast NULL when passed as an unnamed argument to a variadic function. While NULL is defined to be a null pointer constant, that doesn't mean it has a pointer type (all integer literals with a value of zero are null pointer constants in C, but they have an integer type).

(Strictly speaking, all unnamed pointer arguments to variadic functions should be converted to a compatible pointer type that the variadic function expects. For example, the printf-line of functions expect a pointer-to-void argument for a conversion specifier %p. If you pass a pointer-to-int instead, technically the behaviour is undefined.)

(To whom it may concern: I would appreciate at least a rebuttal. It's not like this is a subjective matter.)
I did see the previous article (another comment of mine should be easy to find on its HN post). Do you know how to find the issue that was referenced? There was an ID given but I have no clue what tracker that was on.
Desperate workers rush to delivery-app jobs to find low pay and punishing rules
You're absolutely correct.
Which is enough to identify people who are looking for a new job.
Would it be an idea to team up with someone who loves to do sales?

Isn't there a service for freelancers to find jobs?
This seems like a natural outflow of a company design process that
(a) prioritizes security highly
(b) prioritizes regular users over developers
(c) does not allocate sufficient resources to the product to thoroughly cover all the bases
(d) is developed by people in North America, for whom the USA === the whole world, and are used to near 100% seamless internet connectivity with latency < 20ms.

I love macOS, but their software generally has issues with flakey internet connectivity and long latencies - down here in South Africa, ~400ms RTT is not uncommon.
> How would you know closing park benches or beaches works?

I was responding to what I took to be your full claim, which seemed to cover restricting movement as well as these two measures. (That's why my first question was whether I was understanding the full claim correctly.) I agree that closing or marking off park benches probably doesn't have much effect, but I don't know; but I think restricting movement and closing public spaces where people stay relatively still for an extended time (as opposed to, for example, trails on which people walk or run) do have an effect.

> But we know it doesn't because people still go to grocery stores without wearing masks or taking any other precautions and cases are dropping rapidly.

Not in the non-New York US! I admitted up front, and hasten to say again, that I am speaking from a US-centric perspective.
Predeclared aliased pointers, STATEM/HSTATEM constants, len/Len, that kind of stuff.
> an employee would not not be obligated to tell HR where one is working from

Unfortunately, that’s not how payroll taxes work. You absolutely need to provide your employer with your real address. If you move out of state (or out of the country) there are very real tax liability issues that they will need to address. If you work for a decent company, they may even help you address your personal tax liabilities too.
This is dope bro good shit
How to fight the next epidemic – Bill Gates (2015)
US blocks Huawei access to design tools, foundries
This may sound like a dismissal, and in a way it is, but: get a better type system, and really understand it. The kinds of logic problems that you describe can be greatly limited—without wasting one’s time—with a more expressive type system. This is one of the reasons I lean so heavily on TypeScript today; I can express my data in the forms it actually should be expressed in, pretty easily, and use that to constrain the logic involved. I can then use features like assert guards (“if this method returns then the listed argument must be type T”) and type guards (if returns at all, the single passed argument must be type T”) to strengthen my understanding of the processes resulting in that data. I can then use a much thinner and much faster to write set of unit tests to proof cross-cutting concerns and integration tests to prove the end-to-end case.

It’s not a false sense of security; it’s automation to cut out the stupid bottom 75% or so of boring-to-write, disastrous-to-screw-up test garbage that we all have better things to do with our time than duct-tape together.

(Also, Dialyzer is pretty bad by comparison to a real type checker. At best it’s spotty and inconsistent, it fails open in weird ways, and libraries rarely implement it. Elixir has an argument for “the least worst dynamically-typed language in common use” but Dialyzer ain’t it.)
> You don’t get to decide the site’s business model.

I didn't say I get to DECIDE the site's business model, I get to JUDGE it. Do you want to argue about my judgment that ad-based business models are harmful?
I'm surprised nobody mentioned that Windows Defender does something very similar (checking for never-seen-before binaries at runtime, uploading them to Microsoft servers, then running them there) : https://news.ycombinator.com/item?id=21180019
For Clojure fans, there is [Overtone](https://overtone.github.io/), which uses the SuperCollider audio engine, but allows you to write more functional code and utilize REPL based development (within emacs!).
side node: obviously, the dev mode of neo lets you run your apps without any JS builds at all.

node & webpack are just tools for deploying the dist versions, which are required for FF & Safari.

Your apps & most parts of the framework do not run inside the main thread, but inside the App (web)worker.
Isn't this what Venmo and Zelle are doing (sorry US perspective here)? The trick is to get companies to accept payments via those methods where the customer has control over the recurring payment.
Come September, when new iPhone comes with 90 or 120hz display comes out, web devs will be back to square one with these nonsense “60fps animations” “challenges”, which are the simplest thing to do in native development.
>when using keyword lists for function options

Proplists should be replaced with maps pretty much everywhere.

>Also mocking was difficult in tests

Interesting, what exactly was difficult? You just replace one function with another.
is SQLite used for big data storage ? What are high end use cases than small data points which I mostly use it for. excuse me if its a dumb question
With issues like this and the 4000 series Ryzen mobile processors, top specced MacBook Pros are very noticably slower than $1k alternatives.
What you're doing is wrong and unethical, period. Do the right thing and walk back this ridiculous plan. Until then, I will do everything I can do to avoid your service and have others in my network do the same.
I'm sorry but I don't know what to make of this. Of course harassment is terrible, but what the hell is going on?

Last week a reddit thread discussing this list was linked on HN, someone linked to a site where you could see deleted comments. There were a lot. But it was mainly people asking very reasonable questions and wondering out loud whether these "power mods" got paid, perhaps by advertisers or influencer agencies, because doing this kind of moderation is clearly way more than a full time job. Other deleted comments were wondering if those accounts were perhaps shared (again super sensible question given the amount of time it would cost). At the very worst some of the deletions devolved into wild speculations (as reddit is wont to).

Point is, obviously they do get protection from the site. And apparently sometimes unreasonably so.

Some stinky stuff is going on below the surface, is my feeling. Doesn't mean that person gets to be harassed, of course.

Also, I don't really buy the mental health comparison to FB moderators. The latter is an absolute shit job, and it's done by anonymous teams of paid people. That doesn't really rhyme with being the most upvoted Reddit celebrity of all time, with their seemingly superhuman sense to post the juiciest meme at the most opportune time.
Does the arxiv accept xetex yet? That's one constraint which kept me away.
I’m interested now: why?
> I doubt they will be affected by a small bump in traffic from my project.

You underestimate the HN crowd :)

But I get your point.
This is kinda true of serverless, too, it can degenerate into tight coupling. EventBridge now solves that (somewhat). I've also seen huge StepFunctions, which are also awful to test (except for uploading them). Every project needs some discipline.
>There should really be a browser-managed 'tainted' flag on any tab opened from an email that prevents password input

I was going to say that couldn't be done, but then thinking about it - obviously the way OS currently works you can't know if it came from an email but you can know it came from an application that was not the browser (although that of course would require the browser to keep track of where a tab came from, which I assume they already do), but then links opened from web based email client would not have this scare warning click through.
Came here to post this.

I enjoyed playing with overtone very much a few years ago. Haven't been at it in while.

Are there any new learning resources or pieces of the ecosystem I should know about?
Some people never do ;)
Similar to you, I've had to increase text sizes gradually over the past decade. Currently I have 3 monitors, from left to right:

Portrait 1080x1920 22" Dell. Landscape 4K LG. Landscape 4K LG. Plus the macbook pro screen, but I hardly ever put stuff on it.

I'm not a fan of the LG monitors I got, model "27UD68-W" in 27 inch. The standby light is bright white and flashes slowly, you have to switch the screen off to stop it. Which is a huge #firstworldproblem, I know, but no other monitor I've used has done this.

I wish I had gotten a higher-refresh-rate screen with less than 4k resolution. Would really like to play some games at faster than 60fps.
On iPhones this process is: press the side button five times, or hold that an one of the volume buttons down, just FYI.