Public Feed

Discover recent notes and bookmarks from the community

Want to share your thoughts? Sign in or create an account

ramblefeed-web-app: v0.0.0

Features

  • add release notes feature (6a3c954)
  • added /contact page for feedback (921a066)
  • added a beta alert/warning to the top of all pages (8d5cfef)
  • added open graph meta tags throughout to ensure all pages appear better when shared (4220456)
  • added schema.org microdata to notes, robots.txt, sitemap.xml (6e3975b)
  • As the user enters tags, there is now type-ahead completion for the user's existing tags to help reuse tags (928a012)
  • autosize text area when editing content textarea of a bookmark (fa9ef20)
  • bookmarklet now adjusts height down to fit iPhone 13 mini (812px) and responively expands content textarea on wider/desktop screens (e0de09f)
  • Bookmarks can be created/saved using the Cmd+S keyboard shortcut on macOS or Ctrl+S on linux/windows (420bfaf)
  • can delete note from the note list page (7c1281d)
  • ensure large image previews in Apple MessagesOG meta tags use HTTPS URLs (Apple Messages blocks HTTP images).Before the X-Forwarded-Proto header wasn't honored for returning the protocol to image links. (41b7093)
  • ensure login page has autocomplete behavior for email (7cec908)
  • hide headers in bookmarklet popups to make it more compact (caefcd6)
  • improve Apple Messages link previews by increasing social image size and size attributes (583cc01)
  • made it so title IS required and content is NOT required. Note editor shows bookmark editor below the title; notes//edit shows bookmark below title now in a smaller/muted format. /notes/ shows bookmark url below title in muted format (7558a79)
  • make space commit a tag in the note/bookmark editor since comma char and tab char are inconvenient on mobile keyboards (f279ad4)
  • moved the enter key on edit/new note forms to be the primary key to save a note (instead of commiting a tag) and removed Cmd+S (eaab4bf)
  • new tag editing experience (9befe43)
  • orange (ae23715)
  • Recently used tags are suggested on the bookmarklet so that if you're bookmarking multiple similar pages, you can apply the same set of tags easily (98a1ca6)
  • refined and cleaned up the experience and styling. Mostly icons, consistency (74819a6)
  • Selected text when posting via the bookmarklet will now appear as quoted in the note using markdown syntax (bc74ee0)
  • update favicon + phones (a98ad37)
  • update route: /bookmarks -> /notes?filter=bookmarks (cb0029a)
  • update styling of note card in note list so you can click on heading to view details, and remove veiw button; style url of bookmarks (e5ad69a)
  • update styling of the notes list to be clean and minimalistic (d010272)
  • users now have a page to share their public notes at (a53a09d)
  • various limits added to note fields and notes per user count. (d60b9bb)
  • when a bookmarklet note is submitted succesfully, the bookmarklet popup is closed (4a36b18)
  • when using bookmarklet to create a bookmark, if that url is saved before it shows a list of them (187e231)

Bug Fixes

  • add http->https redirect and Strict-Transport-Security header so visitors using http are always redirected to https (780fccb)
  • add rollup override to web-app package.json for Docker builds (d258bc2)
  • admin users page was sorting after paginating not before (133d9b3)
  • dark/light mode would flip when it shouldn't (c9b5a09)
  • database is now preserved between runs/restarts when running the scripts/dev script (9a91f6f)
  • enable releases by setting private=false (431e5fa)
  • exclude kube health checks from https redirect (013b4d0)
  • going to the bookmarklet page triggerd a generic error (21f7991)
  • hide the search link from unauthenticated users (cf10cd1)
  • lots of misc cleanup on /notes, /notes/{id}, notes/{id}/edit and /bookmarks (d683127)
  • missing package-lock files (d302f02)
  • move vite-plugin-svgr to devDependencies to fix Docker build (a3884e5)
  • only first 25 notes would be shown on the note listing page. Now it has 'infinite scroll' ability to gradually load more notes as you scroll (1cb9d25)
  • prevent risky html injection into markdown (a16d5f2)
  • there was a bug when deleting a note that would show an error involving useContext (68bee50)
  • update the root layout for cleaner code, better perf & resiliancy (6358265)
  • web analytics not working in prod (ca0cb1e)
#

The 50 year mortgage is a scam. I’m just not sure if the administration actually knows that or not.

By the numbers: Consider someone taking out a $500,000 home loan. The current rate on a 30-year mortgage is 6.22%, per Freddie Mac. For these calculations, let's assume that a 50-year loan's interest rate exceeds the 30-year by the same margin that the 30-year rate exceeds a 15-year rate.

That translates to a 6.94% rate on the 50-year loan — which would then have a monthly payment of $2,985, only $83 less than the 30-year mortgage. Zoom in: In the early decades of the loan's repayment, the 50-year borrower's payments would almost entirely go to interest, paying down the debt much more slowly.

After five years, for example, the 30-year borrower would have paid off $33,481 of the loan balance, versus $6,707 for the 50-year borrower. After three decades, when the 30-year mortgage is fully paid off, the 50-year borrower would still owe about $387,000.

Be patient. Not afraid.

For layoffs in the tech sector, a likely culprit is the financial stress that companies are experiencing because of their huge spending on AI infrastructure. Companies that are spending a lot with no significant increases in revenue can try to sustain profitability by cutting costs. Amazon increased its total CapEx from $54 billion in 2023 to $84 billion in 2024, and an estimated $118 billion in 2025. Meta is securing a $27 billion credit line to fund its data centers. Oracle plans to borrow $25 billion annually over the next few years to fulfill its AI contracts. 

“We’re running out of simple ways to secure more funding, so cost-cutting will follow,” Pratik Ratadiya, head of product at AI startup Narravance, wrote on X. “I maintain that companies have overspent on LLMs before establishing a sustainable financial model for these expenses.”

We’ve seen this act before. When companies are financially stressed, a relatively easy solution is to lay off workers and ask those who are not laid off to work harder and be thankful that they still have jobs. AI is just a convenient excuse for this cost-cutting.

Last week, when Amazon slashed 14,000 corporate jobs and hinted that more cuts could be coming, a top executive noted the current generation of AI is “enabling companies to innovate much faster than ever before.” Shortly thereafter, another Amazon rep anonymously admitted to NBC News that “AI is not the reason behind the vast majority of reductions.” On an investor call, Amazon CEO Andy Jassy admitted that the layoffs were “not even really AI driven.”

We have been following the slow growth in revenues for generative AI over the last few years, and the revenues are neither big enough to support the number of layoffs attributed to AI, nor to justify the capital expenditures on AI cloud infrastructure. Those expenditures may be approaching $1 trillion for 2025, while AI revenue—which would be used to pay for the use of AI infrastructure to run the software—will not exceed $30 billion this year. Are we to believe that such a small amount of revenue is driving economy-wide layoffs?

I find Helm to be against a fundamental principle of Kubernetes: Declarative Configuration (further rooted in Promise Theory).

While Helm is written in a mostly declarative-looking syntax, the control structures (among other things) result in it being procedural. The end result is that a helm chart and it's templates become deceptively complex and each value in the values file needs fresh new documentation - because it is unique to that one helm chart.

Usually you'll find something like this in a repo:

# values.yaml:
replicaCount: 2
image:
  repository: blah.com/hello_world
  tag: v10000
service:
  type: ClusterIP
  internalPort: 8000
ingress:
  enabled: false
...

It looks declarative, but in reality all of those inputs are just fed into some procedural code in the chart to be interpreted uniquely by that procedural code and producing anything.

Engineering & Operations Divergence

As a practical consequence, I find that this results in an Engineering organization increasingly being detached from Kubernetes and and relying on a set of "Kubernetes experts" and thinking that Kubernetes is so complex that only those experts can work with it. However, generally this isn't the case.

With entry-level knowledge of Kubernetes' Deployment, Pod, Service and maybe PersistantVolume and Ingress any software engineer can be competent in making changes to any app deployed in Kubernetes. This is probably ~1 day to learn the basics and I'd say comparable learning curve to docker compose. For someone comfortable in a docker compose file, then it will be even easier!

What's the Alternative?

The alternative is instead of putting a Helm chart into a repo, put plain Kubernetes yaml resources into your repo. At most you can use kustomize and overlays to adjust them further (e.g. to adjust environment variables for different environments).

So What's Helm Good For?

Helm is good if you're distributing a "packaged application" to others to run in Kubernetes. For example, someone packaging a Wordpress with a database, Helm makes sense. In a case like this, the the internals of how all these things work inside the cluster don't matter to you and you won't have any other Kubernetes resources deployed that are coupled to them (within the cluster), then the packager can simplify things for you and update things over time and the consumers of the package don't have to know or worry about the details.

However, this is fundamentally different from an engineering organization developing and operating their own application internally. In that case the "infrastructure" of the application, is just as important for engineers to be able to understand and maintain as it is for them to understand the code. Putting that infrastructure behind opaque code that spits out a bunch of resources dynamically at runtime only adds complexity to understanding the resources. You still must understand all those resources, but now you must understand the procedural code that deployed those resources too. So why not just maintain the resulting resources and stop writing more code to produce them?

Looking for all that money Sam plans to spend…

“This is where we’re looking for an ecosystem of banks, private equity, maybe even governmental, the ways governments can come to bear,” she said. Any such guarantee “can really drop the cost of the financing but also increase the loan-to-value, so the amount of debt you can take on top of an equity portion.”

OpenAI is losing money at a faster pace than almost any other startup in Silicon Valley history thanks to the upside-down economics of building and selling generative AI. The company expects to spend roughly $600 billion on computing power from Oracle, Microsoft, and Amazon in the next few years, meaning that it will have to grow sales exponentially in order to make the payments. Friar said that the ChatGPT maker is on pace to generate $13 billion in revenue this year.

Meta internally projected late last year that it would earn about 10% of its overall annual revenue – or $16 billion – from running advertising for scams and banned goods, internal company documents show.

On average, one December 2024 document notes, the company shows its platforms’ users an estimated 15 billion “higher risk” scam advertisements – those that show clear signs of being fraudulent – every day. Meta earns about $7 billion in annualized revenue from this category of scam ads each year, another late 2024 document states.

Much of the fraud came from marketers acting suspiciously enough to be flagged by Meta’s internal warning systems. But the company only bans advertisers if its automated systems predict the marketers are at least 95% certain to be committing fraud, the documents show. If the company is less certain – but still believes the advertiser is a likely scammer – Meta charges higher ad rates as a penalty, according to the documents. The idea is to dissuade suspect advertisers from placing ads.

A theme throughout the argument was a concern shared among several justices and the plaintiffs, summed up neatly by Gorsuch: “Congress, as a practical matter, can’t get this power back once it’s handed it over to the president,” the Trump appointed justice said. “It’s a one-way ratchet toward the gradual but continual accretion of power in the executive branch and away from the people’s elected representatives.”

“We will never get this power back if the government wins this case,” said Neal Katyal, who represented the small businesses challenging Trump’s initiative. “What president wouldn’t veto legislation to rein this power in and pull out the tariff power?”

Mike Johnson, the Speaker of the House and a representative from Louisiana, has offered several explanations for the delay in swearing in Grijalva—ranging from waiting until all votes were certified in the special election (despite not requiring Republicans who also won special elections to wait) to claiming the House needed to return from recess (despite precedent showing new members are typically sworn in the day after their election, regardless of whether the House is in session). Most recently, Johnson has said Grijalva will not be sworn in until the government reopens.