Yes, I'm glad to see a comment on Prolog. I think of it as _the_ foundational programming language for solving such problems. It isn't so much that it's a back propagation language; it's just that, based on which variables are bound at a given point, it will go forward deductively, or backwards inductively.
To me, it feels like most feed readers are made by people who don't use RSS, and just exercise their feed reader on a few feeds. I seem to be at 211 feeds with (currently) 13,000 cached entries, organized across a couple dozen categories.
A reader where you'll click into the body under a headline only 1-5% of the time is a totally different beast.
Too true. Not that every user has to be some sort of power user but its rather telling when a reader can hardly scale to a modest amount of articles, has no filtering mechanisms, or methods for organizing otherwise.
The Amazon culture that exists today is nowhere comparable to the culture that existed 5-7 years ago.
A lot of the Amazonians who had a "mission first" mindset at the mid- and upper-level rungs of engineering and product management all ended up become leadership or executive management at other companies, or founding their own companies.
That said, it is important to highlight the mindset that did help Amazon during it's golden era.
5-7 years isn't that long ago and it was just as terrible back then.
Yeah, the same "leaders" now have infected other tech companies with their culture and are actively ruining the industry.
It is from a career perspective - at least at AWS, a large portion of high calibre Engineering and Product Leadership left during that time period and the backfills for those roles just plain sucked.
> same "leaders" now have infected other tech companies with their culture and are actively ruining the industry
In what way? Demanding that people who are being paid $200k-400k TC need to execute and show that they can execute is something which needed to be done in the tech industry.
> In what way? Demanding that people who are being paid $200k-400k TC need to execute and show that they can execute is something which needed to be done in the tech industry.
Where does this come from? Maybe if you're drinking whatever (toxic) koolaid Amazon gave you, but Amazon has a lower profit-per-employee than Docusign: https://www.trueup.io/revenue-per-employee
Not exactly the steward of execution you think it is.
Hey, cut them some slack. They're barely getting by: they only made $18 billion in profit last quarter. They gotta cut some dead weight to stay solvent.
I'm not sure I understand this viewpoint. Just because a company made a big profit doesn't mean it has to keep positions it decides is unneeded. This isn't the first time I've seen this type of attitude and I'm genuinely curious about the alternative. Once you make above $X in profit, you're obligated to keep employees who aren't necessarily doing the work you want done?
They take huge personal, family and financial risks to move for a job. When you are getting rid en-masse people, you are ruining local communities. There is a real societal cost.
It also sucks for businesses, because hiring & onboarding is so freaking hard and expensive. Not to mention that once the company has established a reputation of a revolving door, then nobody gives a shit about it. They will exploit it for the short term and let it die.
Layoffs should the absolute last resort for a company due to the disruption they cause. If the market dynamics do not naturally lead to this, then regulation should shape the field.
I absolutely agree with your assessment that it should be the last resort option due to the societal cost of a large number of people losing their job. On top of the risks you mention, there's also the mental hit that often accompanies layoffs not just for the folks who were fired, but the increased feeling of paranoia from the people who are left.
But can it not be the case the this /was/ the company's last resort? There's another option of moving people around and retraining them to do another function. What if that was considered and then rejected because there weren't enough departments growing to warrant that? Rhetorically, if they don't have the ability/opportunity to re-assign people, then what?
I understand your argument but it just seems like you’re purposely being contrarian.
Here’s why what you wrote seems needlessly contrarian: Amazon just posted an $18B quarter, so there is no pressing financial pressure. Okay, so you suggest this may be a last resort in lieu of retraining, but we’re talking about 14k jobs across many teams (I know of at least 40 affected), levels, and job families. The idea of needing to cross train is obviously not the culprit at that scale; An SDE laid off from one team can easily perform the same tasks on many others internally. This also completely ignores how Amazon works internally, with managers required to rank employees for pip, and, for events just like this one, URA, regardless of whether or not they deem them to be competent or not.
Of course, Amazon has also been documented to use automated processes for pip/layoffs, and the idea that layoffs involved any ounce of consideration as a last resort is so unbelievable it feels almost inflammatory.
The notion that criticizing one of history’s most profitable companies laying off thousands (at the height of their profits) is the same thing as stating, “every company beyond profit X should never do layoffs” is a blatant misrepresentation and ignores any context.
If you know people affected, then you have more information than me and I'm not going to pretend like I have a better grasp on the situation than you.
However, the "last resort" comment I made was a guess to their reasoning - it wasn't an authoritative explanation. My core point is that Amazon seems to think they can do the same, or about the same, or an acceptable amount less with fewer people. If that's the case, then from their perspective, they're overpaying on labor. That's it.
From the outside looking in, if your "last resort" comment truly was a guess to their reasoning, then I'm rather shocked. We're both on HN, so I have to assume we both work in tech and have access to the same information regarding why Amazon has earned its awful reputation.
Beyond that, I agree with your larger point, with an asterisk on "overpaying", as I do think an American company should have an incentive to prevent laying off workers just to refill them with offshoring and hiring H1Bs, especially at Amazon's scale of profitability.
I think you're missing a more human point: people dislike the effect of hiring and firing thousands of people with zero consideration. They hire thousands because it makes management look like they're ramping up to solve problems, and then they fire this many people because it makes management look like they're cutting costs to be more efficient. It's all about management keeping up the illusion that they're "on top of things", when in reality they're just playing number games.
There's empathy involved in the revulsion toward this kind of process. Please take time to consider that not everyone fired is a $300k/year rockstar programmer who can just as easily walk over to Meta or Google for a job. I know of people who have uprooted their lives and work under the idea that if they do a good job they'll stay on, when in fact the reality is more like gambling and they could be fired at any point.
I'll explain you how it works: upper management needs urgent spend cuts in the next 3-6-12 months to get bonus -> upper management lays off N thousands people in order to reach goal and get bonus.
Because 25+ years of experience in American Capitalism as its evolved and practiced today has taught me that C-Suite and upper management makes FOMO driven decisions on fear, politics and corporate quarterly returns, ie humans forced into a hunger games like culture of lowest common decency and hype driven cycles of management speak - 5 years ago it was Crypto and offshoring and now its AI more offshoring -paying only lip service to employee obligations with no attention to anything beyond that (forget pensions or decent healthcare of the 20 Century)
Ultimately even the most talented people are numbers on spreadsheet strewn aside at the end of the day as MBA capitalist hackers try to optimize every aspect of a short term numbers game to get ahead in stack ranking..
I’ve watched as incredibly talented and driven people are thrown by the wayside and ageism and lack of human decency or respect is has become the norm
Watching hardworking people and the middle class suffer because Billionaires, insane growth expectations, MBAs and Private Equity had burned this country to the ground…
And yes, don’t forget that those type As who worked on NASA missions - “Mission focused” as the article naively trumpets to get attention - once they get cancer, get a little past 50, have kids with needs ie suffer some through life - like all of us eventually do..they get on the chopping block - and are quickly forgotten trust me, I worked in Mission Control too once
Now, Amazon has never been an ethical company—and I’m sure its employees know that to one extent or another but they have indeed been a relentless one and that relentlessness and metric driven culture has driven the humanity out of the tech world (whatever little it had as Autistic or Nerdy edgelord billionaires fund ever more corrupt politics and misery for the masses) as our society is rewarded with even more shorter term thinking and an attention economy with the attention span of a Goldfish.. all these tech companies deserve worse than the skewering they got in HBOs Silicon Valley
Ok end of Rant.. hope some younger folks take heed and try to change up this shitty system
> If the market dynamics do not naturally lead to this, then regulation should shape the field.
Look no further than the economies of France and Germany… both of those countries have very stringent regulations around layoffs. And none of whom have the dominance of American companies or breadth of unicorn startups.
Making firing difficult makes hiring difficult, which disincentives risk and innovation.
The leave/fire at-will contracts of most tech jobs in the US is a feature, not a bug.
> It also sucks for businesses, because hiring & onboarding is so freaking hard and expensive.
Sometimes, but sometimes not. Layoffs are important to get rid of low performers who could be replaced with better talent, and they’re important to help companies adjust their labor to market conditions.
Neither France nor Germany have access to the high-risk capital that American startups enjoy.
Layoff protections and entrepreneurship in this case have a correlation but not a causation relationship.
If your thesis was correct startups would thrive in States with absolutely zero protections, yet the most successful tech startups are in the most “stringent” (for American standards) State. California.
Even if it is the most stringent, California is still an at-will state. You can fire people for any reason at any time, minus protections for discrimination or retaliation, etc.
France and Germany require a lot more bureaucratic red tape (documentation, severance pay, notice periods, and justification). I have not seen this personally in France, but I have in Germany and it was a nightmare. I will be very careful about hiring in Germany next time.
An incredible amount of capital is in the United States for a reason (you're on a website of those capital providers). While termination protocol is obviously not the only reason, it is undeniably one of the many that contribute to the States having the most favorable environment to build a high growth, innovative company.
Well in fifty years, I likely won’t be here judging by life expectancy numbers… so I guess it’s a moot point for me.
Kidding aside, it’s a whole bunch of pieces. Including the dollar, including the friendly regulatory environment, including friendly tax treatment for founders (which European nations are starting to adopt), including small areas with lots of great schools, plus those schools helping to connect founders with capital, plus gobs of money running around looking for high risk opportunities, plus…
It’s not just the ability to fire someone, and it’s not just the dollar.
California prohibits non-competes, which is one of the reasons why so many new start-ups are created here.
So, while it is not the most 'business' state, it is actually very startup-friendly.
> Or the one that has the world's largest startup economy?
The reason there is excess capital is because of opportunistic and predatory behavior. Optimal capitalism, which other countries can't compete with (fully). This doesn't make it a net good for the American public, nor an optimal strategy for other economies.
If you see the startup economy that has minted an absurd amount of wealth for some very talented people as predatory and a net negative for the public, we see things very differently.
And so do most who come to the Valley to be a part of it.
This strikes me as such an abjectly absurd thing to say that I can’t imagine we’ll come to a common conclusion on this.
And by the way, you’re writing this comment on a forum operated by one of the largest “predatory” sources of capital in the Valley.
Is the friction of hiring and firing responsible for all of Europe’s economic stagnation? Only some of it? If only some, how are you quantifying the proportion?
I pulled myself from a recent Amazon interview process because of how bad they are. At first I had the opinion that this could be interesting and exciting, but the more I thought about how they treated people, the more I realized that the internal culture must be terrible. And honestly I just don't need to be involved with any of that.
14k is massive layoff, even for a company as large as amazon. it isn’t about the “employees who aren’t necessarily doing the work you want done” for sure (all the while they are off-shoring by the more thousands while “america first”-run government is bailing out argentine :)
That's 4% of corporate employees going by Reuter's 350k corp employee count[0]. Sounds well within the trimming-the-fat numbers. The rest of your comment alludes to an obligation towards improving the domestic economy. That can be done through regulation, but then there's a balancing act between under/over regulation. Too much and you end up in an EU situation that hinders small tech business growth.
So we come back to my previous statement/question. Above what profit amount should a company be obligated to keep (in their eyes) unproductive workers?
to answer your question - company should have a right to fire 99% of the people if they want at any point in time and there should be no regulation of any kind against that ever.
what america should do is add $250k per year per employee tax for any employee hired outside of the US.
People won't unionize because they don't actually have very much power nowadays compared to corps. People who unionized in the 40s, 50s and 60s could afford a home on an hourly wage. In the labor market its pretty much serfdom, unless you come from money. Look at rents vs incomes for goodness sake
They’re people, not disposable objects. The alternative would be to distribute the cost of the layoffs evenly across the employer and the employees. Right now employees pay a disproportionate portion of the cost.
The cost you're referring to is fairly abstract - I'm not sure how it can be implemented for the employer. The cost to the laid-off employee is a loss of income, mental trauma, potential loss of residence. What would your ideal solution for the employer be here?
Loss of money? Layoffs normally have severance packages that are paid out to the employee - this can be seen as the company taking a monetary hit - though not proportional like you said. But what's the alternative here? 5x/10x'ing the severance package? I feel like that would make the job market even rougher as companies would be even more conservative with who and how much they hire.
Mental trauma? I mentioned it in another comment, but the employees after a layoff normally do have an increased fear of future layoffs which impact morale which would result in lower productivity.
Loss of residence / food? I'm coming up blank here.
Yeah I’m not sure there’s an obvious/ideal answer.
I do think there’s value in disincentivizing churn though. What we’ve been seeing lately is rapid hiring followed by rapid firing. I bet there’s some inflection point where the job market would actually benefit from less churn even if it comes at the cost of higher unemployment in the short term.
A solid starting point, but it's easy to lose sight of the other critical part of the puzzle--integrity of the voting rolls. High quality vote tabulation needs to start from voters, where _only_ legitimate voters vote, and each only votes (at most) once, after which yes, their vote is accurately tabulated.
Voter rolls are public information in the US; there are several watchdog groups that perform verification services and have done so for decades; and to date, none have uncovered the kind of large-scale voter fraud that would necessitate doing anything differently from what we do now.
In fact, I'd argue that having 50 different voting systems with 50 different ways to prove eligibility makes our elections more resilient to large-scale voter fraud, even if it makes it more difficult to verify voter rolls wholesale.
Once, on a previous account, he actually replied to me. It's like a kid going to guitar center and the guy who replaces your strings is Axl Rose.
If you're on here, Walter, you're my hero. I also once interacted with Brendan Eich, who I admire as much for his role in web history as for his activism.
"originated as a re-engineering of C++"
"influenced by Java, Python, Ruby, C#, and Eiffel"
"design by contract, ranges, built-in container iteration concepts, and type inference"
"array slicing, nested functions and lazy evaluation."
"Java-style single inheritance with interfaces and mixins"
"function overloading and operator overloading"
"supports five main programming paradigms" (including OOP)
... et cetera
Though it does support things like in-line assembly and the like, I'm sure most C programmers would pass on it, as a C-alternative, based on those factoids.
Yes, I understand the C++ aspect, but I was never a C++ coder, and D "fit in my hand" in a way which made me certain that its creator had coded extensively in C and understood the aspects which made it so perfect for its time. It really felt like D, not D++ to me.
(Oh, disclosure, I'm just a D user, no organizational or financial interests here.)
Yeah, I have used Odin before, I am thinking of giving C3 a try as well.
At a quick glance though:
> Enum support various reflection properties: .values returns an array with all enums. .len or .elements returns the number of enum values, .inner returns the storage type. .names returns an array with the names of all enums. .associated returns an array of the typeids of the associated values for the enum.
I do not like that the length is named ".elements" instead of just ".len". And why are there two ways, or are they not the same? Etc.
FWIW I have spent the weekend testing out C-replacement languages and their interop (linking to libsdl3 and libtcl) with D, Go, Rust, Odin and C3. My quick impressions:
- D is featureful, but too much so. It feels an unfocused kitchen sink worse than C++. Overall the actual dev experience was nice.
- Go I know pretty well, but saddened that CGo is very slow, so I cannot consider it truly a C replacement
- Rust I also know decently well, but writing types and lifetimes isn’t my idea of fun. I’d rather have less safety when playing with code, I’m not always writing mission critical apps. Overall walks the fine line between excellent and unergonomic; pulls half a gig of dependencies just to include SDL3 which is pure madness.
- Odin I have played with before, excellent for the gamedev world, but some features seems like they have been added just because the author liked them. Having to explicitly set up the context variable in cdecl callbacks feels bad. I dislike the whole context thing actually, because it is rigid though convenient.
- C3: documentation is bad but feels the closest to a better C. Still in the breaking phase, I sent a PR this morning to adapt the SDL3 library to the latest release. Has macros which I haven’t tested but it’s a big plus. Some syntax makes no sense, like block labels and generic in {braces} but it’s the one I will keep playing with for this project. No one seems to use or know about it, which doesn’t bode well for its future.
- Zig I haven’t used this weekend, I loathe that unused variables are errors and it is very verbose. Docs and stdlib are way undercooked. comptime is a brilliant idea. Could be decent past 1.0 release.
- Jai: I’d love to try it, if I had access to the beta.
A lot of paper cuts and small issues, nothing is really worthy of being called a C replacement, but I do not want to write another header file again so these will make do for now.
Thanks for sharing! I think there is hope for C3, if they do not mind breaking backwards compatibility, which I hope they do not, for now!
We have similar experiences I would say. I do like Go a lot, but I rarely had to touch CGo though. The language does not get in the way of being productive. Rust seems like it does.
I would give Jai a try, too!
Have you tried Zig, or perhaps even Nim? Curious about your thoughts.
Nim I played a bit with, I don’t really like the syntax but I admit I need to dive deeper. My other issue is that it is so different syntax wise to C, and sometimes so high-level, it’s hard to tell what construct is efficient, and what allocates and takes 500 instructions to run. This is pretty crucial for a low level system language.
Oh `.elements` would you believe that this is a remnant of C2's builtin function `elemsof`? Its used so rarely (I think two uses in the entire stdlib), so it hasn't come up. I opened an issue for it: https://github.com/c3lang/c3c/issues/2130
This is a good example of the sharp edges I hope to smoothen out in 0.7-0.9.
> That D exposes a curated subset of D doesn’t make it a C alternative,
But why? You comment does not clarify what does this subset lack which prevents it being used as a C alternative. The intention is explicitly stated and the "spirit" argument is weak as overly subjective.
It has been a while since I dived into the land of Dlang.
To me, and originally, Dlang was a C++ replacement. However, C and C++ can still be rather mixed despite them being "two different languages"
In my words, BetterC is a tool to help you transition a C programming project to a Dlang one. Turn on the BetterC flag and the transition is quite mild. The goal is to slowly migrate your (now) D code into "proper" D. Then, you can turn off the BetterC flag.
That.. to me.. is the original goal of BetterC. However, I noticed that BetterC has become rather popular in the D community to simply write programs with the GC disabled. There is a slight divide/debate in the community of what D should be.
I remember trying the full features of D and slowly moving to coding in BetterC to.. eventually.. moving away to another language.
Why?
As much as like Dlang - it tries to be everything. By default it is an OOP, GC language. However, it has functional support, BetterC, as well as (dip1000) Borrow Checker, and others. In the end you end up with programs written in D in various ways. Imagine when using the package manager. You can search for packages.. but how are they implemented? Is it using the GC? Will it work on the latest version o D? So many questions. You end up looking at the code yourself to determine if the library is going to do what you want.
I am not sure if D is a "C++ replacement" today. It tries to compete with orther, modern languages like Rust or Go and others would prefer it to be a C# or Java competitor.
This is why I like Odin. It makes it very clear what it is and isn't. Sure this means that Odin in various ways will have less features than D but atleast I know the code is simpler, and when taking on other Odin projects I know it still follows the same format.
C is liked particularly, even considering all its shortcomings, for being a relatively limited language in scope, being raw but flexible.
D's scope seems to go far beyond what your average C programmer would want in a language; "use only 15% of the language and you'll be fine" (paraphrasing: "use only the 'better-C' subset", if that is what you meant, and it does seem to be a subset of D) seems a weird proposition; it still complicates things, as in collaboration, idiomatic feel and look of code, the amount of knowledge required to be competent in the language, complexity of a compiler implementation, portability of code etc... and by that logic you'd have to prefer C++ over C as well (since a lot of C is valid C++), or prefer C plus one safety feature added over C; but the "rawness"/limited scope/small size/procedural nature of C is what's appealing for many to begin with.
I for one think that a proper C replacement (C's strength also being the simplicity in which to implement a compiler for example, being the reason it's so ubiquitous in the embedded world) will be a much more limited proposition than D is.
RAII
Full metaprogramming
Nested functions, nested structs, delegates and lambdas
Member functions, constructors, destructors, operating overloading, etc.
...
Where to draw the line will be different person to person, but D doesn't seem to be a language "in the spirit of C", or a "modern version of it", at all.
Viewing it as a C++ alternative makes much more sense. A `Better-C` "limit yourself to a subset of the language" compiler flag doesn't change that much.
I wouldn't like RAII, and why I didn't add it to Odin. It's not a feature C programmers want. And you've just agreed that C don't want ctors/dtors, which is necessary for RAII to work... ctors/dtors are bad for their own reasons (mainly because you cannot handle error cases except through exceptions, which many people disable too).
If you aim to be both a C alternative and C++ alternative, in reality you are just a C++ alternative because you haven't understood why people prefer C over C++. Therefore D is a C++ alternative and that's what it was always trying to be, even with "BetterC".
Most C programmers I know pretty much do that. I use C11 just for the atomics and that is it. And I know many C programmers who still use C89/C90 exclusively.
Well yeah, I use C99. I would never use newer C, it is too C++-esque. You can actually use some stuff from stdatomic.h with -std=c99 -D_XOPEN_SOURCE=700, such as "atomic_bool" and whatnot.
Is there any sign of its effectiveness (or lack thereof)? It seems like the world of dense regulatory language may actually be amenable to such techniques. If a (presumably bright) college person driving the tool gives good results--who cares?
I agree. Saving web-links is a solved problem. Saving the CONTENT afaik is not solved and I've wanted a solution for YEARS, as well as the rest of humanity has needed this (including those who don't even know they need it, haha!).
Closest thing would be to "print" to PDF but that always creates a trainwreck in the PDF and is never good enough for me. Looking forward to trying Omnom if it's open source.
That looks like a pretty heavy-weight solution, with a lot of complexity, and I don't mean that as a criticism at all. I'm not a 'go' developer myself. I've always wanted a pure JS solution (as a browser extension, maximum of 200 lines of code) that can capture the content of a web page (doing a virtual scroll to the bottom, to capture the whole page). Since there's no perfect way to translate HTML to PDF, my idea had always been to capture the IMAGE of the page (aside from capturing keywords for DB indexing which can be done separately just for 'search' support later on).
The fly in the ointment is of course the scrolling too, because some apps have "infinite" scrolling, and so in many SPAs there's literally no such thing as "The whole page". Anway, I haven't tried your app yet, because of not-JS and not-Small, reasons, but I'm just sharing my perspective on this topic. Thanks for sharing your project!
I recently released a Chrome extension that converts webpages to PDF. It's free, but you need to register to get a key. Unfortunately, this solution isn't client-side JavaScript; I'm using an API underneath. To be honest, I mainly created it to promote the API, but if it's useful for people, I might develop it further. Perhaps it could be useful to you in some way. I don't know your requirements, but maybe with this base in the form of this extension, it wouldn't be difficult to add something that meets your expectations, let me know. However, if you want to export a PDF from Ahrefs, for example, I'm afraid that might not be possible; currently, only basic authentication is supported. Unless maybe I could add an option like in my API to pass JavaScript code, but I also doubt that would work because Ahrefs probably has some bot protection.
Assuming this act even moved forward (big IF), "bugs" like this show up in first drafts of bills all the time. They'd do a little research, then apply a fix. Amusing that the "coverage" didn't seem interested in "how could this easily be addressed?".