Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login
user: asark (* users last updated on 10/04/2024)
submissions comments favorites similar users
created: 2018-12-02 16:44:00
karma: 2712
count: 800
Avg. karma: 3.39
Comment count: 800
Submission count: 0
Submission Points: 0
about:


page size: | Newest | oldest

To respond to the implied dig, I've spent months to years using the following distros on desktops and laptops, in no particular order:

Gentoo, Red Hat, Fedora, Ubuntu, Debian, Mandrake

So I've had plenty of exposure to three major package management systems and a bunch of distro-managed repos, from the perspective of a desktop user (I've used Linux on the server plenty, too, but that's less directly relevant). I've poked around in a few others in a desktop context—Slackware, Arch, Nix, probably more that I'm forgetting.

I also used Macports for over a year.

Homebrew's the most pleasant overall solution for managing user-facing desktop software that I've used, by a long shot.


Hell, I can barely "hello world" in languages I've been actively and productively writing for months or even years, without context (i.e. existing code) to draw on and/or tool assistance. I've got a better than 50% offer rate on interviews in an over 15 year long career but in one of the ones I flubbed I blanked on the syntax for invoking methods on an object in the language I knew best, at the time, and wrote some other (more common) invocation syntax instead, which can't have helped. Ask me JS scoping trivia and I guarantee I'll screw it up, despite having written JS and TS as my main language(s) for 3ish years now. Look, I stick to a subset of that language precisely so that I can ignore that shit. We can just skip the interview and go straight to the rejection if you're gonna do that. Doubly so if you don't tell me you're gonna do that so I can drill on it before hand.

Coworker and manager feedback, and my compensation over the years, say I'm pretty damn good at adding value despite this. I've been considered the "smart one" and the go-to guy for hard or weird problems. But I will struggle to produce something that will even come close to compiling on your whiteboard, in a language I wrote 300 useful lines of yesterday, unless I spend a couple days basically flash-card drilling for your test. Go figure.


It's not a global object—it's an instance of the object for the component you're using. The whole thing's a terrible OOP system in a language that already has a built-in mediocre OOP system, which terrible OOP system is, in the end, just a(n inefficient) pass-through to same built-in mediocre OOP system.

The posters here wondering why you can't name them are on to something. I assume it's because then it'd be too obvious that's what they're doing, and whoever's paying people on that team (I really hope it's not more than one person, it's not hard work, but it probably is) might notice and make them stop, and maybe the React team at FB would even shrink in size, and we can't have that.

I'm not sure what other explanation there could be for such comically-wasteful sandcastle building. I assume it's a combination of individual incentives to work on something not-difficult but flashy and prominent, with project incentives to never need fewer people than they currently have.


>The posters here wondering why you can't name them are on to something

Imprecise phrasing on my part, the discussion here has been around naming hooks with Symbols.

> We had from 5 to 8 people on the team at different times. Maybe maintaining one of the most popular open source projects isn’t “hard work” for you but we find it challenging.

I meant React Hooks specifically, not Redux, which I assume is what you mean here.

> We try to solve problems that product engineers run into. If you have better ideas we’d love to hear them.

Use the built-in OOP system instead of writing a worse new one? Reinventing methods and properties with poor, misleading syntax as a thin layer over the OOP system of the host language is... well, it's helping bloggers, I guess.


> If we were chatting face to face would you also behave like this?

Maybe? I usually very much would not, of course, but JS "culture" creates significant irritation and wasted time for me daily, and has for years, especially in React-land, since that's where the money is lately so it's hard to avoid. The only other software that gets me this exasperated is anything Poettering thinks up, but at least I don't personally have to work closely with any of that daily (any more, and for now).

I'm sure I'll have to deal with hooks when people around me start using them. It's less that I'm upset that they exist than I feel like I'm being gaslighted. I've read the docs, and the source, because, again, I have to know this stuff. After the initial disbelief wore off I had a good laugh, like, actual LOL. This thread is the first of many I at that moment predicted I'd see as people who really, really in their hearts and in their actual technical needs and in the language they're using, just needed OOP, but are on the JS-must-be-functional-at-all-costs hype train, expressing frustration and confusion over this feature and burning lots of time trying to sort out how OOP works when you're trying so hard to not type "this" and pretending it's something else. It's a less-useful and confusing replacement for OO that re-implements just enough of it that people will 100% for sure hang themselves with it, and omits enough that people will complain about it. It's a perfect device for generating confusion. It's going to be used for no benefit, or misused harmfully, a ton, and meanwhile everyone's gonna be very confused about it.

Ditto Redux—which is at least not funny in itself the way React Hooks are, though the flailing and consternation around it are—which is dead simple if you don't use the wrong words to describe things, yet how many person-hours have been lost trying to decipher what's going on there? So, so many. On the one hand it's funny, and I do legitimately enjoy all the accidental humor in React land. On the other I have to console, counsel, and train the folks who run into difficulty with this stuff, and live with or fix software in which it's been misunderstood and misused.


I entirely share your "ew, gross, no" re: mixins generally. That their being added to React in the first place is part of this history is definitely interesting.

Thing is, I don't even consider Hooks not OO. They're just a really limited in-JS partial re-implementation with bizarre syntax. React tracks your "this" for you so it can dispatch the calls correctly. Your constructor gets mushed around in your render function for some reason. But it's attaching properties and methods to an instance. It's going to require care and discipline to use it correctly, given its quirks, so just direct that same discipline toward composition-over-inheritance instead, is my thought, which you can do without yet another way to write things. The fix is quit hitting yourself, in short, but if you don't I guess we'll hand you another way to hit yourself, but differently? This is just one more layer of complication that everyone's now got to understand (or, more likely, not, but use anyway) to even read other people's React codebases.


> There’s neither methods nor properties in Hooks code. I think you might be doing the same thing you think we are doing — you’re projecting the API you see onto the metaphors that feel more familiar to you. But these metaphors don’t really match what the API is doing or what it represents.

I mean that Hooks implementation re-implements key elements of a typical implementation of methods and properties, and end up mimicking them in important ways, differing mainly in the parts of that it doesn't include. Not that it actually uses methods and properties (though it does, of course—the "current component" that React tracks is an object, and the Hooks code leans on that to determine its calling context).

> you’re projecting the API you see onto the metaphors that feel more familiar to you.

Place a typical OO implementation next to what Hooks are doing, and you don't even have to squint to see that they're quite close. The porcelain's super-weird, yes—magical in all the "wrong" places, explicit in all the "wrong" places, missing a ton of mostly-inheritance-related stuff—but even with all that a Render function using Hooks manages to look an awful lot like a class declaration, as if someone had implemented classes in a language but forgotten to add any of the syntax to support it.

EDIT: I mean, seriously. The source is public. It's a really fun read.

https://github.com/facebook/react/blob/master/packages/react...


Holy crap, have we worked on some of the same projects? GraphDB inappropriately applied to a process definition/exploration application. In my case I'm pretty sure the correct solution taking into account all desired functionality and existing support was a desktop (sigh, maybe Electron I guess) app and good ol' SQLite, but nooooo, we did a web app with server-side storage in Neo4j. I tried to sell PostgreSQL as it was 100% for sure a better fit for the kind of queries we'd be running, but that didn't fly. They had a Neo4j "expert" to whom I sometimes had to explain how Neo4j worked. The highest-tier tech manager at the client with whom I interacted was learning about Neo4j from what was mostly a marketing book from the Neo4j folks, turns out.

They burned a shitload of money on those bad decisions, on that and other products they'd previously stuck on Neo4j for no good reason, which were also seeing poor and unpredictable performance and having a rough time with immature supporting tools for the DB. Whole thing's closely related to the "we have big data, it's in the single digit GB range, so big! We need big data tools!" error, I think.

> My takeaway from both of these experiences was that unless you intend to ask questions about the relationships, a graph might not be a very good fit. Even in that case, other databases will likely perform just as well.

Precisely the same conclusion I reached, at least in the case of Neo4j. If the main thing you need to do is answer questions about graphs, it might be an OK DB to use. If the main thing you need to do is extract data from graphs, then you sure as hell don't want it as your primary datastore. Maybe—maybe—some kind of supplement to a SQL DB or whatever depending on your exact needs, but it shouldn't be what you're actually storing most of the data in.


War Zone Taxi Driver (GTA: San Andreas with cheat codes "everyone has guns" and "everyone's hostile to everyone" applied, and me in a taxi running missions) is a really, really good game. I'd absolutely buy and play a whole game of just variations on that.

> this is Brian from Massassi

Oh man, thanks so much. That site's awesome.

Jedi Knight's one of only three online shooters I ever played much of (Wolfenstein: Enemy Territory and one of the Elite Force games, I forget which, being the others) and the only one I ever got good enough at to be accused of "hacking" at least a couple times a session (never, ever did). It has a special place in my heart. Thank you for your work in the community.


>> You will always find people who you can argue unfairly benefit from a redistribution scheme.

> A redistribution scheme is inherently unfair.

I would love to see what a strong defense of this looks like, that doesn't wind up having all kinds of weird and probably unintended implications. I can't think of one. Best I can do is to define terms such that it becomes tautological.


I'm increasingly convinced the worst health effects of tech are mostly about sleep, with any secondary effects being negligible by comparison.

I'd challenge anyone who thinks they "just can't" sleep on a normal schedule to drop all light-emitting devices and all artificial lighting aside from a couple candles, a bit after sunset in the Winter, or at sunset in the Summer. See if you still can't, or if you just don't want to. Not that I blame individuals for it, as it's really damn hard to stay away from all this hyper-engaging stuff at night. I haven't been able to. But trying that for a couple weeks gave me some serious insight into the why of my lifetime of screwed-up sleep. It's incredibly bright nighttime lighting (try the candle thing and see if you aren't surprised at how obnoxiously and unnecessarily bright even a single 60w bulb is after) and screen-based media (TV on up) to blame, entirely.

Turns out if you light your house up like it's daytime, then put 1,000,000x the top-quality entertainment an emperor of yesteryear could hope to command on a given night right at your fingertips, it's very hard to sleep. Go figure. But that's what's overwhelmingly the norm now for most people's evenings.


I had to add "food ordering" to "ritual" to get DDG or Google to tell me what you might be talking about. The landing page doesn't explain what it does, at all, above the fold. "Make friends with food" is the largest text and it appears this does something called "social ordering". Is that like group orders? Or catering? Or does it automatically post everything I order to my social media? "Make friends with food" plus the image on the page makes me think maybe it's some kind of food-related meet-up thing, like you take a slot at a table with other strangers who are also using the app so you're not alone at lunch.

Whatever it is, I can "order now". Scrolling reveals that yes, it appears it's just group orders and take-out. What a revolution.


> Basically, any suggestion to improve sleep by boring myself to death for 6 hours is a non-starter, and the holier-than-thou attitude of people on the internet who do so is starting to annoy me.

Sure, but the flip side is you get a whole lot of "I just can't sleep a normal number of hours at a normal time, I guess I'm just built differently" and... well, no, probably not. I mean maybe. But probably not. You just like Netflix or late-night hacking or video games or whatever, too much to get a healthy amount of sleep. So does everyone else, to varying degrees.

And it's less a trade against end-of-life years as a trade against your ability to remember what you did or learned today tomorrow, and much shorter term mental and physical health issues (harder time with weight and blood pressure, generally lower energy and happiness, and so on). Though yeah, go for it. Most of the rest of us do, too, just not because sleep is some really hard thing that people are bad at and ordinary daytime schedules are unreasonable and demanding like many special Internet snowflakes claim (Nb not accusing you of making any such claim), but because our homes are, 24/7, more entertaining and brighter than a mid-tier amusement park.


I'm not a long-time Beatles fan, but I've been going through a bunch of major popular music albums from the 50s on up in chronological order over the last few months, and gave IIRC seven Beatles albums at least one pretty close listen each as part of that project. Their qualities that still make them stand out as really damn good:

1) Their albums are eclectic. They're are all over the place in the best way. You listen to someone like Hendrix or Metallica or whoever and you're kinda in for just the one thing. Maybe with some notable variation here and there, but they're not gonna go way off some totally unexpected direction. They may be great, or they may just play the kind of thing you happen to like a lot, which is fine, but that's pretty much all you're getting. The Beatles may, by contrast, have five songs each with very different sounds and emotional content in not much more than ten minutes, somehow without giving the listener whiplash.

2) They do that thing great artists (in other media, too) do where they have complete confidence that they can come up with more good ideas, so they'll toss out great stuff and move on like it was nothing—they don't cling to good ideas, because they know more are coming.

3) Contributing to all the above, the creative input of various members of the band shining in different songs.

4) Legit good songwriting, music and lyrics. Rubber Soul, which is the album I keep coming back to (not sure I'd defend it as their best? The White Album is ~1.5 LPs worth of top-notch stuff spread over two LPs and it's hard to argue against it) has a some really good, understated moments of humanity and humor in just the first few tracks—lyrically, they know what to write and, as importantly, what not to. The Beatles could be blunt as hell when they wanted, certainly, but could also achieve sublime subtlety. Even their more straightforward songs often have one or two little thorns to catch you as you go through. The music itself is, as mentioned, eclectic but mostly very good despite ranging freely across instruments, styles, and continents. Haha, I've got that fuzzed-bass part from Think For Yourself stuck in my head now just from thinking about this. So, so good.

Going through those albums has been one of my favorite experiences to come out of this listening project. I'd barely heard anything but their radio hits (to be fair, there are a lot of those) until last year. Now they've got five albums in my regular rotation[0].

[0] The Beatles (The White Album), Rubber Soul, Abbey Road, Let It Be, Sgt. Pepper's—I've given Revolver two full listens and just cannot understand why people like it. I like a couple songs but most of it... bleh. I'll hit it again in a few years but for one that's often put up as their best, man, I don't even like it. Go figure. Magical Mystery Tour's (US version) back half is incredible, since it's just a bunch of their previously-released between-albums singles, but almost the entire first side sucks.


To back you up, I can confirm that people who spend their time thinking a lot about this stuff (political scientists and those in related fields) spend zero time quibbling over the use of the term "democracy" as it's commonly used, and are likely to eye-roll and attempt to disengage from conversation should someone push their glasses up their nose and "well, actually..." the issue. In most contexts they use democracy as an umbrella term, the same way everyone else does. Doing otherwise marks one as an outsider to the field, or a novice—any in teaching positions get to correct plenty of "clever" freshmen on the issue every year.

The actual act of writing code, maybe, but:

1) 4GB—let alone 1GB—is already cramped with just Slack and any one of your usual bloated shitware issue trackers/wanky PM toyboxes (Jira, Asana) open in a tab or two, plus the usual few tabs of DDG/Google, Stack Overflow, some docs, et c. That's before any actual code-writing tools enter the picture. The basic suite of tools to just be working at all in almost any role is just barely not-painful to use on 4GB. Worst case you're in an agency and have all your tools, plus several duplicates for the same purpose for a client or three, and so on, all open. Yes, it's because all these tools are terrible and eat like 20x the RAM they have any right to and even that's generous, but I still have to use them.

2) Better hope you don't need any design tools at all. (Sketch, say) if you're trying to get by on 4GB or less for everything, unless you like only having one thing open at a time or dealing with UI sluggishness I guess.

3) Docker(-compose) or minikube or whatever? Service dependencies, local mock services? Running test suites? Without a strong CPU and 16GB you'll see slowdown.

4) A fan of any of the fancier webmail clients, like recent GMails or Inbox or Outlook or whatever? I'm not and just keep the Basic HTML version of Gmail open because its full-page loads are faster than the "speedy" AJAX garbage on those, but if you are into that sort of thing take a look at their memory use some time.

FWIW I think almost all the tools surrounding and supporting development these days are god-awful resource hogs that somehow still manage not to be very good and think 1GB absolutely should be enough memory to get by doing node/ruby/php dev, but I still have to work with that junk, and 8GB's the bare minimum to do that without hitting swap constantly, IME, and even with that you've gotta be careful. 16GB's much more comfortable, especially if you sometimes have to do things other that just Web dev.


1) Crap standard library and core language, with lots of accidental complexity. These problems are fixed or (more often) swept under the rug many times over by library authors over the course of years, then eventually the core language/lib provides its own attempt at a fix, but by then there are a ton of implementations out in the wild and it'll takes years for a typical mid-size projects dependency tree to shake out all the "deprecated" libraries of any given feature like this, if it ever does. That so many libraries have to pull in other libs for really basic stuff bloats your node_modules dir in a hurry.

2) Platform incompatibility plus no-one actually writes real Javascript that can run directly on any platform anymore anyway, so there are polyfills for yet-to-be-implemented language features and compatibility overlays galore.

3) And yes a lot of it's just the fault of Javascript "culture".


IIRC at my last employer an Asana tab + Slack ate ~1.5GB all on their own, and Asana was so slow to load that one hated to close it.

Jira's not as bad as Asana but depending on the set-up it can be pretty close. Then there's Invision, et c which are much lighter than those but still pretty damn heavy, if you're trying to get by on 4GB or less. And/or maybe you've got Outlook and Teams and all that. And that's just the communication & collab tools, not even any of the stuff to produce actual work output. Temporarily having to use a 4GB machine with that kind of workflow is why I'm now permanently on Basic HTML for Gmail—it loads fast enough I can close it, and uses so little memory there's no reason to. I couldn't spare the 300+MB for Inbox or whatever with all that other junk open, and besides, Basic HTML's much faster.


> Missing Features — HOFs, Composition

Uh... I'm pretty sure I've used both in TypeScript projects.


> Consequently, in his point-based model, he assigned that particular feature of the language +0.1 points.

That's because his stupid chart is comparing a bunch of different things to TS instead of just comparing it to JS. In that case he's putting it up against TDD + code reviews, for reasons that I entirely do not understand. His numbers are so wildly incommensurate that they don't even make sense for any sort of informal water-cooler analysis.

[EDIT] if... if I'm reading his reasoning for that 0.1 score correctly, he'd still give it a -3.9 ROI if it caught 100-friggin-percent of bugs that would otherwise reach production, unaided by any other tools or practices. WTF.

[EDIT EDIT] for reference, that means he rates the overhead of noting one's types at 3x as bad as the benefit of magically catching 100% of bugs would be good. This is what I mean by these individual values being ZOMGWTF incommensurate.


I just don't like having to look things up, or remember them, or tell someone else about them, or make sure the things I told them or that they told me are still true six months later, or check manually that I haven't typo'd a variable name, and so on and so on, when a machine can do those things for me.

The absolute worst case with TS is that I'm as bad off as I would be in JS (use "any", or "as", or provide a dummy anything-goes d.ts for a lib, or whatever). I haven't found that I actually need to do those things very often, even being fairly lazy and having a very low tolerance for time lost to managing my tools.


No, I read it. It's nonsense and your numbers are bad beyond any excuse of napkin-math. They're plain ol' down-home gibberish.

[edit] let me demonstrate: the most basic problem is that your numbers in various categories do not measure up to one another in any way that makes sense. -3 for writing typings, +0.1 for catching 10-20% of bugs that would reach production. Either you're having way more trouble writing types than you should or you have so few bugs that catching 10-20% of them isn't very valuable. Plus, read the thread. You just ignore all kinds of benefits of TypeScript (mostly benefits of having any, even half-assed, static type system on top of JS, period). If you like something else, propose it and compare TS to that. You're saying it's 1/10 better than vanilla JS with TDD + code review but 30x worse in terms of that benefit than JS when it comes to time spent adding types. 30. Times. That's just one example, the whole chart's a wreck in a similar fashion. Plus I bet if you ask on this thread folks will be happy to suggest + entries you simply omitted. See the ones suggesting (correctly) that static types make both TDD and code review, which you like, a hell of a lot faster.

In the worst case if some little thing you want to do won't work well in TS or is too expensive to type properly, write that piece in JS. Yes, that's terrible. [pause; significant look; raised eyebrows]. But it's not worse than JS. Obviously. And you can do that in TS. It's part of what makes it such an incredibly easy sell.


> Yeah, this can be a pain. In situations like this, I've defined types like `type RequestWithAuthField = Request & {auth: AuthField};` and then in handlers that I knew came after the auth middleware, I'd immediately cast the request parameter to that type. It is an escape hatch and I'd prefer to not have to do that though.

I find this less than ideal, of course, but still not worse than writing the same in plain JS, since at least this way the next person to come along (or you, a few months later) has clear guidance re: wtf is going on with those weird extra fields on the Request object. It's less effort—for reader and writer—and is more maintainable than expressing the same information as effectively in docs and comments.


> This is the person behind PulseAudio, Avahi, and systemd.

Huh, I didn't know he was behind Avahi. That... explains some things. Thanks.


It's weird that the version of Windows that finally added tools that might make it possible, if not pleasant, for me to do real work on it without truly doing all my work in a VM, also went so far into crazy-town that I don't even use it for gaming anymore.

Not just Facebook. Any site without attention paid to on-site SEO is basically impossible to find since Google gave up fighting the spammers and (effectively) stopped trying to provide access to a bunch of the web. That was back in, like, '08 or '09.

The other day I was trying to find a Russian world-traveller photo blog I used to read but lost track of, and it was plain from the results that Google's 1) heavily penalizing low-traffic sites to the point of giving me top results that contain almost none of my keywords when there 100% for sure had to be sites that contained all of them, and 2) barely paying attention to text linking to a site anymore. I'm not even upset I couldn't find the site I wanted using my search terms so much as that part of their surrender to the spammers meant that most of the top results were "legitimate" content-mill spammers-by-another-name. I don't think I could have found anything like what I was looking for. Any similarly-obscure sites are just invisible now.

DDG wasn't much better. The spammers won and "web search" doesn't really search the whole web anymore, or even close to it.


It is as soon as several must-have apps (say, the ones all your friends and family use to communicate) are side-load only. If they allow other channels to install apps and make them easy enough that non-nerds can do it, network effects will quickly make it de facto necessary to run at least some apps from outside the app store.

Even without the definitely-evil incidents that have occurred, simply greedily collecting and then hoarding that much information about people is so grossly and willfully negligent as to qualify. The very basis of everything they do is hopelessly tainted.

Yes, that makes an awful lot of other companies—not just tech-first companies—pretty damn evil, too. "Everyone's doing it" and "it's not illegal and is making us money" aren't defenses I accept for this disgusting behavior.

[EDIT] that said, piling on people for working at evil companies is probably unproductive and unfair for many of the same reasons that e.g. boycotts are wildly ineffective, plus such a large percentage of the economy's kinda-evil that the whole thing would get confusing and nasty and kinda pointless. Piling on someone for being delusional about whether their employer is evil, though... well, that's an awful lot less unfair.


I'm pretty sure you can take the GED before you're 18. You can likely enroll at a community college if you've done that. It's what I considered doing when I was 16, and now, a good long while later, wish I had. All the last couple years did was make me more discouraged and lazy. First ~3 semesters at No-Name State University were just a repeat of material from 7th(!) to about December of 12th grade, could have been working on that for college credit much earlier. Pointless. Could have had a better "story" to sell myself to a a nicer school, more time working the tech job I already had in high school and making money, and a bunch of college credit (transferable or not, at least I'd have it) to my name by age 18.

Bonus: once I went to college I found that 15hrs of 100-200 level college courses took up one hell of a lot less of my time than high school plus the ~2.5-3hrs of homework they assigned a night (I understand that part's even worse these days—what a joke). Like, under half as much. Waste of a couple good years. I'd strongly recommend giving that plan consideration, to anyone who thinks they can pass the GED and is having anything other than an outstanding time in high school.


In my mid-sized Midwestern city, the worst schools pay their teachers the best by a long shot. The best schools pay at or under average.

They still have trouble finding teachers. Probably due to all the lock-downs due to credible threats of violence, being cursed at and threatened by 7-year-olds on a regular basis, that kind of thing.


I think part of it's because they almost exclusively hire people who will soon leave if they're told to do too much "boring" work and aren't allowed to half-ass it to get it done fast and move on to something more fun.

IIRC you're right, and bussing's one of the only actually-effective tools we've found for solving this problem—but it's also an incredibly-unpopular policy among a pretty large set of the population. Like, get-people-out-in-the-streets-rioting unpopular, if you kept at it.

For racist reasons, yes, but also because home prices have become a proxy filter for schools (filtering for kids whose parents are able and willing to pay inflated prices to send their kids to school with other kids whose parents are able and willing to pay inflated housing prices—it's a feedback loop).

The premium's a good 20-25% around these parts for safe-neighborhood-good-schools versus safe-neighborhood-mediocre-schools, so not nothing, and the entirety of many home buyers' equity early in their mortgage. Harder to compare with neighborhoods where the schools are outright bad since the houses there are usually in much worse shape and in high-crime areas, but one must assume the effect would be far stronger still, if one could find an all-else-being-equal comparison.

Still worth doing? Maybe, but if you just tell those middle and upper-middle class folks (actually rich people unaffected, as usual) to screw off and eat a loss you're gonna have some difficulty. And that's before racism even enters the picture, which of course it would.


> You admitted you don't have a longitudinal view. Results really are less accurate, less relevant; we're not hating on G.

Yeah, whatever their intentions, sometime in the '07-'09 time frame they very obviously changed things in a big way and appeared to simply give up trying to separate spam from small-time sites, and just down-ranked the lot. The search results for certain types of queries are somewhat better now, as a result. The search results for other types of queries have gone from "pretty much perfect" to "totally useless", though. Anyone who's been a heavy user of Google for a long time has noticed this.


Look at it this way:

Say tracking is perceived to add some value over content-based ad selection (doesn't matter if it actually does). Say it also provides a bunch of important looking metrics for middle managers and execs to play with, whether or not any of it means anything (that it certainly does). Say the price premium charged by Google and FaceBook and friends is under what companies value this stuff at, in dollar terms. There's a small premium to it, say 10%, some of which goes to the sites displaying the ads.

Boom, practically all advertising is now of the spyware variety. That's all it takes. Competing without spying (and without a huge trove of data or a way to get it fast) is now nigh-impossible.

Now outlaw all the tracking crap. "Oh no the Web is doomed no one will be able to pay for anything!" you will hear/read from a disturbingly large number of people. They are dumb. It'll be fine. That 10% premium goes away, yeah. Content advertising is back. Having a huge trove of user data is no longer a moat, or indeed much advantage at all, in the ad space, so Google'd need to scale back and/or learn how to launch a product that can stand on its own without the backing of their spyware empire. IOW yeah they'll probably actually be in serious trouble, but there's no good reason for them to be. FaceBook might die or have to pivot hard. But that does not mean the end of the web, or anything like it! It just means the ad money goes somewhere else. Probably to a bunch of much smaller (though still maybe quite large) companies.

Anyway TL;DR it's difficult to succeed with non-spying ads in a spying-is-allowed world, but it's 100% for sure a viable business model that can support more or less the same junk we have now if you outlaw that sort of bad behavior. To the extent DDG's succeeding I assume it's their dark patterns and maybe (I am just guessing on this second one) they also do that extorting-companies-into-buying-ads-for-themselves thing like Google does.


Eh, it happened pretty quickly and in the middle of a bunch of "we're making our search experience better!" stuff around the same time. I only gave a range because I'm fuzzy on the exact year it went to hell. Notably, the failure mode isn't that it finds a bunch of spam sites that happen to contain the keywords I want or have great SEO for those keywords, which is what one might expect if it were a wheat/chaff thing. In fact the more obscure and specific I get the more Google's results seem to try to wrestle me back to the middle, and the more it shows me page after page of blogging-as-income and similar lowish-value sites that are wildly far from what I was trying to get, and are in no way trying to masquerade as anything like the content I was looking for.

I think the others don't go against this trend because they also don't want to spend more money fighting spam to try to salvage a use case / usage pattern that is at this point so old that a lot of Web users have never seen it work, and that many users even back then didn't use effectively.

Those of us who relied on it heavily disagree strongly with the notion that Google only improves their search, though. For me it's much worse today—to the point of being entirely useless, in fact—for a significant percentage of queries I'd like to try against it, and noticeably worse though still usable for a bunch of others. It is definitely better at sending me to Wikipedia and at finding local restaurants or whatever, though, which is the kind of thing that probably constitutes 95+% of all queries against it (throw in people typing "example.com" into search rather than the address bar and it's more like 99%), so I'm sure their metrics look great.


Plus, spy-vertising and creepily recording users' mouse movements is 100% not required for Web advertising to be A Thing that Pays For Lots of Stuff. The notion that if we kill the moats that Google and friends have with their vast troves of user data and various spying methods it'll be anything more than a speedbump to the Web generally is ridiculous. Bad for Google and Facebook and so on, yeah. But so what.

You know, to this day, if someone came to me and said "we want to run a site for five years on an LTS Linux distro release on a fairly weak machine, with auto-updates to system packages but no other maintenance intended. We're not gonna bother with monitoring or whatever. It's mostly static but it'll have a small dynamic component, say 500 LOC worth, maybe. If we ever have to manually touch this thing aside from maybe bouncing it once or so a year we'll consider that a failure. What should we use?" I'd probably say... Apache and PHP.

Sometimes I'm in the middle of messing with the Lovecraftian horror that is the modern JS stack or screwing with extracting what I need from whatever awful request object someone cooked up or any number of other things that aren't accomplishing anything of business value and I wonder whether maybe somewhere we veered way in the wrong direction, as an industry.


At least one major (like, major) management consulting firm turns basically all their communication into a PowerPoint, sooner or later (usually sooner). I gather they've found they can't consistently get C-level folks to pay attention to any other format, but it also ends up being their own internal format-of-record for almost everything. It's bananas.

N4J's a lot slower at tons of common tasks. If you look into its underlying data model, it's clear why. It achieves the speed it does at certain graph-traversal operations by storing its data in such a way that it's highly specialized for those operations—one would expect this to come at a high cost for other operations, and sure enough, it does.

It also doesn't bother with tons of consistency guarantees and such that you (may) get from, say, PostgreSQL. Yet is still slower for many purposes.


I used it ~1.5 years ago and would consider using it again even if it only worked on Android, just to avoid having to implement designers' various flights of fancy in native Android. Styling, at least back then (I really doubt it's improved—it'd already been bad for years) was horrible as soon as you deviated much from "change the colors". Bizarrely, their support for their own crap, like Material Design, wasn't even very good. Worse than it was in web-focused JS libs from the big G. Fits the pattern, I guess—their Android maps API was missing features from their web/JS one, too.

This despite the fact that React Native was in fact a giant pain in the ass for a bunch of reasons. Native Android styling's that bad. Also saved me having to run Android Studio most of the time, which is a bonus. Though to be fair AS is more pleasant than Eclipse was, at least.


Yeah kids and commuting eat at least half that. Take another hour off, minimum, for basic chores to make sure you have food and your house doesn't turn into such a disgusting mess that makes the nightly news.

Also all hours aren't created equal and congratulations, you now have what are probably your three—at most—worst hours left to try to "make" in, without cutting into sleep. BTW unlike a job the time commitment is barely better on the weekends. Hope you can work productively while having 1-10 minute interruptions every 1-10 minutes. If not then the math's identical to that for a weekday.


Their must-have time demands and wrecking-your-house tendencies don't seem to start to trend significantly downward until age 5 or so. Believe it or not they get much worse before they get better on those fronts, after the infant stage. Sleeping-through-the-night (call it 3 to 6 months) through ~18 months is a pretty great time. 18m to ~4yrs, depending on the kid, is... hellish.

I got a lot of reading done when my kids were infants. Way more than I do now, which is almost none. There's a good long span when you can just read them whatever, since they don't know WTF is going on anyway. Great time to knock a few titles off your own to-read list (yes for the record I did also read them plenty of picture books and such).


I dunno about the poster you were responding to, but any time the massive worldwide spying platform I can't not use gains more capabilities I'm not really thrilled about it. Even if the security against exploits is somehow perfect, it'll leak data. It'll be used to spy on us. The whole platform became hopelessly pwned when we started letting any ol' page send data without explicit user action and say-so. The by-design low effort and rapid linking between documents never should have been coupled with the capabilities of Javascript.

Reads like a case for passing that off to whichever program responds to a request to open some help HTML.

Yeah, I figured that'd be a response, but if you're gonna call mime type handlers dynamic linking we may as well give up on using the term at all.

I just don't think "I need to let the user open an HTML document, though not as any core part of my program's functionality" is a strong case for "well I guess I'll have to embed an entire HTML rendering engine if I statically link my deps".


No, I'm arguing that including a manpage doesn't mean your program is now dynamically linked to the man command, or that receiving a .doc attachment in my email client doesn't mean my email client is now dynamically linked to a word processor. If you're going to call that dynamic linking then we've officially reductio'd this out of the realm of usefulness.

It'd be remarkable if it wasn't used for spying, given the history of features added to web Javascript. When has an API that gives JS access to more data or device capabilities not been used in this way? Often spying's among the top use cases in the wild for a new feature. At a minimum it'll be another dimension for fingerprinting.

My favorite job ever, as far as the job itself, was working peon-tier helping to run a campground for a Summer. Only non-tech job I've ever had, had worked for years in tech before and years more after. Location was even pretty awful by outdoorsy standards, somewhere with mountains or... anything, really, would have been better still.

Too bad it paid, you know, a tenth of what I make programming.

It was great. No screens, just a normal-ass cash register to work from time to time. No sitting unless I wanted to, no meetings, golf cart to drive around once or twice a day. Firewood to carry. People to talk to. Plenty of time to read or write and no-one remotely interesting in claiming the copyright anything I did then, let alone during time I was off the clock. Pretty much nothing about the job was evil, while so many tech jobs are at least a little. None of that general soul-grime of corporate life.

I'd do that for a whole career if it paid anywhere near what software dev does. I'm only in software because 100% of the things I actually want to do pay half as well, at best, and some of them require a lot more up-front spending and time for education. Programming's great when I need to do it for a personal project. As a career, it blows, compensation aside. It's not even high status, for the most part, despite the comp.


> All useEffect and useState does is turn pure functions into mud that reads like a class but drops all the syntactic sugar that makes it readible.

You've nailed it. Their solution to the issues with certain JS OO features was to re-implement Objects minus the features that were a problem, with new syntax. The code's worth a read for anyone who's read how the feature works and is still thinking "no, surely they didn't, it must work some other, magical way".

next

Legal | privacy