Recent submissions

Comment · 3 years ago
It’s the same reason as the third-party app API changes: prevailing forces within the company want to know that for every X API requests made, Y targeted ads were put in front of eyeballs. Most mobile browsers can block ads at this point. Plus, native apps offer more ways of gathering user data opaquely, which is worth lots of money in the eyes of finance people even if they haven’t started doing it, or if they expect it to be limited in various ways by mobile OSes and/or laws. The profits vs losses just point them this way, at least according to certain financially-minded people. This isn’t really a new phenomenon.

If Reddit execs thought they could take the same approach on desktop (forcing us all into desktop apps with unblockable ads and more system access), they absolutely would. They see that Slack and Discord did accomplish this effectively, and probably want to catch up.

Comment · 3 years ago
Also being a wealthy software engineer, there still isn’t a better multi-monitor mobile solution than this at any price point. If you’re only working from home sure, but I like to cowork with friends in a variety of places.
Comment · 3 years ago
The most sensible option is that we remove academic credentials from job qualifications entirely. We’ve increasingly introduced non-credentialed ways to learn, and we have non-credentialed ways to determine what a candidate can do. So why are academic credentials related to our job applications at all? Why continue to enforce the whole miserable, class-hierarchy-reinforcing, metriculative education system at all?

The most straightforward option we have is to fund true public education, without credentials or metriculation. Simple, public class-by-class grades and recommended tests would suffice, and could be done with nothing more than HTTPS servers and .edu domains. We have no need for all the other cruft keeping people uneducated.

Comment · 3 years ago
Based on the actual article, it's more like "the more cats owned, the more liberal/progressive/socialist men vote and behave, and the more conservative/tribal/fascist women vote and behave." Which fits well with my experience tbh. The 5+ cat ladies I know are all surprisingly conservative.
Comment · 3 years ago
1) Having worked for a company that did this (after learning that it was an anti-pattern at a previous company)... Putting all Protobuf files in a single "registry"/repo is definitely an anti-pattern. You should put them in the repo that implements the service. That service is responsible for maintaining API compatibility between versions (i.e. keep field numbers "stable" and deprecate/update them so as not to break clients).

(If you want a "registry," the better approach would be to have something that uses all the services as dependencies to consolidate their protos.)

2) Going along with this approach, gRPC has a reflection service; most server implementations can expose this (I have personally done it with Tonic/Rust but I know Golang and Java bindings, probably Ruby and others, support it). If you use something like gRPCurl against a server with reflection, the only "path flags" you have to worry about are, like... just the method names. It can't really get more terse than it is with gRPCurl and gRPC reflection, though autocomplete would be nice to have I guess.

The basic intent of gRPC - indeed, its advantage over JSON - is to promote composable, decoupled services. Unless you're monorepoing all your services, putting all protos in a "registry" type repo, that everything depends on, only makes things harder for everyone that needs to do things with those protos.

Comment · 3 years ago
I would add that clubs, gyms, and meetups are a good, often free or very cheap option as well. Running, biking, skateboarding, climbing, calisthenics/acrobatics, board games, maker groups, art, music… all have very low cost of entry and likely have communities in any town or city.

I feel compelled to also add that while it seems well-meant, I think the tone of your last paragraph is a bit unproductive. A lot (most? all?) of us, at some point, fall out of the habit of exercising our senses of curiosity and wonder and trying new things. This can be caused by many combinations of family, economic, and social conditions, or for some, because of chemistry (ie “serious depression”). Therapy is indeed a good way to develop the skills to work against this and identify whether it’s actually a chemical problem in need of a chemical solution. But it doesn’t help to go straight to calling this “serious depression” needing “professional help.” Literally all of us can benefit from therapy, and making it out to be a big deal and putting labels on people makes many less likely to pursue it.

Comment · 3 years ago
These features aren’t each supported by all those languages though. I also don’t think expecting a dev interested in Rust to understand several C-like languages is unreasonable, at least enough ti understand these straightforward example cases.
Comment · 4 years ago
Presumably it starts well below that, reaching $190K mid-career. And it’s still less than I make as a software engineer with an undergrad state school CS degree that left me only $30K in debt…
Comment · 4 years ago
I mean, had we gone to nuclear power immediately as soon as we could, we likely wouldn't be where we are today. The window isn't that narrow. But there are definitely certain aspects of our ape brains that make us likely to extinct ourselves.
Comment · 4 years ago
I’m shocked to not see Flutter supported here. It’s not truly truly native I guess. But Dart is very modern and capable and the Flutter framework is better for building native UIs than nearly anything else out there. It’s also ridiculously developer-friendly to get builds going for all your target platforms quickly.
Comment · 4 years ago
In Ruby it’s “require” rather than “import.” But it would be more like “require bar; foo()”.

However, Ruby does have auto-loading conventions. So you could define “module Baz{ module Bar { def foo end; } }” in “baz/bar.rb” from the root of your project. You should then be able to call “Baz::Bar::foo()” from any other file in your project structure without a “require” at all. This is not standard Ruby IIRC, but Rails and other frameworks use it.

Comment · 4 years ago
For most Americans, exposure to outside cultures will happen much more through reading about them or interacting with, say, foreign exchange students and foreign cultural social groups, than visiting the places. Americans who grow up with the money to travel abroad a lot often come from general wealth, which also lets them afford to spend more time doing things like grad school. This affects the liberal causes well-traveled American liberals might support; they may care less about economic fairness than gender/racial equality for instance.
Comment · 4 years ago
You actually have the option to just use any USB-C charger in the 3 USB-C ports though, at least on my work 14-inch M1 Pro MBP. I just keep the MagSafe charger in my backpack, because those are the situations where I'd want it (rather than at home... though with my dog, maybe I should get more MagSafe cables).
Comment · 4 years ago
I've paid $40/year for RoboKiller (the source of the data in this article) since 2020, and consider it worth every penny. For reference, I was a long-time Pixel user before then who enjoyed the Google Assistant call filter. It's not quite as good as Google Assistant (it's based on call forwarding) but by far the best solution on iPhone, and it filters SMS spam as well as calls.
Comment · 4 years ago
It does: I've used RoboKiller (who provided the data from the article) since I switched to iPhone in 2020 and missed the Google Assistant stuff from my Pixel. It has a free and a $40/year tier both of which are good compared to the alternatives like Truecaller, and it does both call and SMS filtering.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton