The nonprofit RSL Collective brings together millions of online publishers and creators to protect their rights and negotiate for fair compensation from AI companies.
Definitely something to keep an eye on moving forward.
The nonprofit RSL Collective brings together millions of online publishers and creators to protect their rights and negotiate for fair compensation from AI companies.
Definitely something to keep an eye on moving forward.
Zoning rules prohibit the construction of apartment buildings on roughly 75 percent of America’s residential land. Throughout much of this territory, land-use laws effectively require all single-family homes to be spacious (and thus, pricey to build or buy). Even in city centers, parking mandates often make multifamily housing financially or physically nonviable.
Just nuts. No great mystery why there isn’t enough housing. 🙄
The app has had a major overhaul to all areas while keeping a familiar UI. Base 3 is faster, more capable and even nicer to use.
Very nice.
In making it easier to build urban housing — despite the furious objections of some environmental groups and labor unions — California Democrats put material plenty above status quo bias, and the public’s interests above their party’s internal harmony.
Better. I want more.
In September, GRIC is planning to break ground on another experimental effort to conserve water while generating electricity: floating solar. Between its canal canopies and the new project that would float photovoltaic panels on a reservoir it is building, GRIC hopes to one day power all of its canal and irrigation operations with solar electricity, transforming itself into one of the most innovative and closely watched water users in the West in the process.
As someone in Arizona that spends a lot of time walking the canals, there’s one that runs close to my house, a great place to walk the dog or for jogging, I think this is a great idea.
For the past 17 years, I’ve been chasing a dream.
Not a startup IPO. Not a billion-dollar exit. Just one thing: to launch my own app in the App Store.
Seventeen years. That’s older than some developers now shipping their own indie apps. In that time, I’ve started and stopped more projects than I can count. I’ve sketched wireframes in coffee shops, coded into the night after work, tried learning new languages, jumped between frameworks, abandoned ideas halfway through, gotten distracted by other responsibilities–and sometimes, I’ve just run out of steam.
There were dozens of beginnings that went nowhere. Notes in old notebooks. Xcode projects lost to time. GitHub repos full of good intentions and TODO comments. Each time, I told myself “maybe next time” or “this just isn’t the right idea.” And each time I watched others launch, I quietly wondered if I’d ever get there myself.
The truth is, it never stopped mattering to me. Even when life got busy–kids, jobs, burnout–I still carried this tiny ember of hope that someday I’d ship something of my own. Not for money. Not for fame. Just to prove to myself I could finish. That I could take an idea all the way from a blank screen to someone tapping “Get” on their iPhone.
And now… I finally have.
This week, after nearly two decades of trying, I submitted my app to the App Store. And it was accepted.
I keep opening the App Store just to see it there. My app. With a name, an icon, a real page. It still doesn’t feel real. I’ve cried. I’ve smiled. I’ve just sat in silence, overwhelmed.
I know there are people who crank out apps every few months. I admire them. But for me, this moment is sacred. It’s not just about this app–it’s about every failure that came before. Every lesson I had to learn. Every time I kept going, even when it felt like I never would get here.
To anyone reading this who’s still trying, still failing, still dreaming: don’t give up. Your timeline doesn’t have to match anyone else’s. Your path might wind and stall and break and restart. But if it matters to you, keep going.
Because one day, your app might just show up in the App Store. And I promise–it will feel like everything.
There may never be an iOS 19 or a macOS 16, according to reporting from Bloomberg’s Mark Gurman. At its Worldwide Developers Conference next month, Apple reportedly plans to shift toward version numbers based on years rather than the current numbering system. This is intended to unify the company’s current maze of version numbers; instead of iOS 19, iPadOS 19, macOS 16, tvOS 19, watchOS 11, and visionOS 3, we’ll get iOS, iPadOS, macOS, tvOS, watchOS, and visionOS 26.
That’s a nice quality of life update.
There’s a special kind of purgatory that comes from submitting your app to the App Store. It’s the modern-day equivalent of sending your kid off to their first day of school–you’ve dressed it up, fed it well, double-checked its backpack for bugs, and now… you wait. And wait. And refresh App Store Connect like it owes you money.
I submitted JournalPlus (my lovingly crafted, slightly obsessive ode to daily themes and intentional living) to Apple for review. And now I am absolutely not pacing back and forth refreshing my email every 3 minutes like a sane person.
This is the part no one tells you about in the indie dev stories. They tell you about the design, the code, the user onboarding flows–but not about the emotional death spiral that is “Waiting for Review.”
Meanwhile, my brain has chosen to cope in the only way it knows how: frantically making a list of all the things I’m going to fix once it’s approved. You know, because it’s totally rational to make a post-launch roadmap before you’ve even launched.
So far the list includes:
Anyway, this post is mostly a stall tactic, but also a little time capsule of this oddly magical/frustrating moment. If you’ve been here, you know. And if you haven’t–just wait.
Literally. Just wait.
– Jesse 👨💻⏳📱
Probably refreshing App Store Connect right now
Starting today, CarPlay Ultra, the next generation of CarPlay, is available with new Aston Martin vehicle orders in the U.S. and Canada, and will be available for existing models that feature the brand’s next-generation infotainment system through a software update in the coming weeks
Announced in 2022 initially, and now finally available.
“Therefore, I have concluded that permanent ineligibility ends upon the passing of the disciplined individual, and Mr. Rose will be removed from the permanently ineligible list.”
Manfred’s decision ends the ban that Rose accepted from then-commissioner A. Bartlett Giamatti in August 1989, following an MLB investigation that determined the 17-time All-Star had bet on games while managing the Cincinnati Reds.
Wow. While I’m not much of a baseball fan these days. The idea of ending Pete Rose and Joe “shoeless” Jackson is just nuts. I didn’t think I’d ever see the day.
“The new rules profoundly undercut the integrated iOS ecosystem that this Court sustained as lawful and that is the foundation of user trust and confidence in the App Store,” Apple’s motion reads. Compliance with the order would cost “hundreds of millions to billions” of dollars, “which Apple can never recoup,” Apple argues.
Hahahahahhahahahah. 😂 Apple playing the “woe is me, we’re losing so much money, we wouldn’t be able to survive?!?” card is, in itself, hilarious.
Comcast executives apparently realized something that customers have known and complained about for years: The Internet provider’s prices aren’t transparent enough and rise too frequently.
This might not have mattered much to cable executives as long as the total number of subscribers met their targets. But after reporting a net loss of 183,000 residential broadband customers in Q1 2025, Comcast President Mike Cavanagh said the company isn’t “winning in the marketplace” during an earnings call today. The Q1 2025 customer loss was over three times larger than the net loss in Q1 2024.
Shocking. 🙄
Life has changed a bit for Mauch since he became an Internet provider. “I’m definitely a lot more well-known by all my neighbors… I’m saved in people’s cell phones as ‘fiber cable guy,'” he said. “The world around me has gotten a lot smaller, I’ve gotten to know a lot more people.”
I’d be open to running a neighborhood network for cheap reliable fiber to the home.
TSMC, or Taiwan Semiconductor Manufacturing Co., is the world’s biggest chipmaker and announced a $100 billion investment in US chipmaking last month. It began producing chips using the 4nm process at its Arizona factory in January and has plans to make chips with the more efficient 2nm technology by the end of the decade.
Well that’s impressive that they are producing 4nm and not legacy nodes and planning 2nm in the years ahead.
“We believe this is due to the scarcity of data representing sequential decision-making behavior (e.g., debugging traces) in the current LLM training corpus,” the blog post says. “However, the significant performance improvement… validates that this is a promising research direction.”
This initial report is just the start of the efforts, the post claims. The next step is to “fine-tune an info-seeking model specialized in gathering the necessary information to resolve bugs.” If the model is large, the best move to save inference costs may be to “build a smaller info-seeking model that can provide relevant information to the larger one.”
Safe for now I guess. 😉
Barring a sharp correction, Apple looks increasingly likely to miss out on a generation of developers conditioned to first reach for tools like Cursor, Replit, or v0—especially as Apple’s own AI tooling remains notably absent. This goes well beyond enabling new entrants to “vibe code”—experienced mobile developers who, despite history with Xcode and a predilection for building native apps, are begrudgingly swapping out their tools in acknowledgement of the inarguable productivity benefits.
I would say the tipping point has passed Apple by. As an institution they are unable or unwilling to self correct. High profit margins and market pressures won’t kick in until it’s far too late. (See Intel’s last decade of record profits before their recent collapse) The product of AI has come and passed Apple by. As a platform juggernaut they will use those platform and duopoly powers to hold tight and remain relevant.
The early data suggests that congestion pricing is working just as it should, improving commute times and raising nearly $50 million in its first month
The reality is that the state of public transit in many American cities is abysmal and requires a lot of money. And the best solution to those transportation woes isn’t to make driving more affordable; it’s to make public transit more accessible for everyone.
Congestion pricing everywhere!
shipped in Deno 2.2. There is still some work left to do to support ESLint’s config format, but you can already run (or write) raw ESLint plugins and have them run with deno lint.
Wow. That is really great. Fantastic walk through of the process.
Apple has stopped offering its end-to-end encrypted iCloud storage, Advanced Data Protection (ADP), to new users in the UK, and will require existing users to disable the feature at some point in the future. The move comes following reports earlier this month that UK security services requested Apple grant them backdoor access to worldwide users’ encrypted backups.
What the shit?!?!?
The most effective and broadly-understand articulation of this idea is the phrase, “the purpose of a system is what it does”, often abbreviated as POSIWID. The term comes to us from the field of cybernetics, and the work of Stafford Beer, but this is one of those wonderful areas where you really don’t have to read a lot of theory or study a lot of the literature to immediately get value out of the concept. (Though if you have time, do dig into the decades of research here; you’ll enjoy it!)
The system isn’t broken. It’s working exactly as it was designed to. What to change to the system. Change its desired outcome, its incentives to be successful. That where the correction is needed.
What we have right now in America is a society that is increasingly marrying European levels of stasis to American levels of social welfare policy, and that is the worst of both worlds. We’re not helping people go where the opportunities are and we don’t help them where they’re living either. And that strikes me as dangerous and unsustainable and also inhumane. And so it’s a real choice that America faces at this moment to decide which of those two models it wants to pursue.
A pretty good rundown with resources from Perplexity DeepSearch.
The evolution of web development frameworks has introduced tools like Stimulus and Turbo Frames to address the growing demand for interactive, single-page application (SPA) experiences while maintaining the simplicity of traditional server-rendered architectures. This report examines the technical distinctions, use cases, and complementary roles of these two components within the Hotwire ecosystem, providing a comprehensive understanding of their unique capabilities and optimal application scenarios.
Hotwire (HTML Over The Wire) represents a paradigm shift in web development by emphasizing server-rendered HTML delivery over client-side JavaScript execution. This approach combines three core technologies:
Within this ecosystem, Turbo Frames and Stimulus address different layers of application interactivity. Turbo Frames focus on content replacement patterns through server interactions, while Stimulus enables client-side DOM manipulation without server roundtrips[2][4].
Turbo Frames implement partial page updates through <turbo-frame>
HTML elements that create independent content contexts. These frames:
<turbo-frame id="user_profile">
<a href="/users/1/edit">Edit Profile</a>
</turbo-frame>
When clicked, Turbo intercepts the request, fetches /users/1/edit
, extracts the matching <turbo-frame id="user_profile">
from the response, and swaps the existing frame content[3][6]. This occurs without full page reloads or custom JavaScript.
loading="lazy"
attribute[6]Stimulus employs a controller-based pattern where JavaScript classes attach to DOM elements via data-controller
attributes:
<div data-controller="character-counter">
<textarea data-character-counter-target="input"></textarea>
<span data-character-counter-target="counter"></span>
</div>
Controllers implement lifecycle hooks and action handlers:
// character_counter_controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static targets = ["input", "counter"]
initialize() {
this.updateCounter = this.updateCounter.bind(this)
}
connect() {
this.inputTarget.addEventListener('input', this.updateCounter)
this.updateCounter()
}
updateCounter() {
this.counterTarget.textContent =
`${this.inputTarget.value.length}/500 characters`
}
}
connect()
and disconnect()
for resource management[4][8]Characteristic | Turbo Frames | Stimulus |
---|---|---|
Update Mechanism | Server-rendered HTML replacement | Client-side DOM manipulation |
Network Dependency | Requires server roundtrip | Operates offline once loaded |
State Management | Server-controlled state | Client-maintained state |
Complexity Profile | Simple HTML structure requirements | JavaScript implementation needed |
Accessibility | Automatic focus management | Manual ARIA attribute management |
Performance | Network latency impacts responsiveness | Instant client-side feedback |
this.element.reload()
[7]data-turbo-frame="_top"
for full-page navigation breakouts[6][9]# Rails controller frame response
def update
respond_to do |format|
format.turbo_stream { render turbo_stream: turbo_stream.update(@user) }
format.html { redirect_to [@user](https://micro.blog/user) }
end
end
data-action
attributes instead of manual listenersdata-*
attributes for state persistence[4][8]// dropdown_controller.js
export default class extends Controller {
static targets = ["menu"]
toggle() {
this.menuTarget.hidden = !this.menuTarget.hidden
}
}
<turbo-frame id="search_results" data-controller="search">
<form action="/search" data-search-target="form"
data-action="search#submit">
<input type="text" data-search-target="input">
<div data-search-target="loading" hidden>Searching...</div>
</form>
<!-- Results populated via Turbo Frame -->
</turbo-frame>
// search_controller.js
export default class extends Controller {
static targets = ["form", "input", "loading"]
submit() {
this.loadingTarget.hidden = false
this.formTarget.requestSubmit()
}
}
data-turbo-cache="false"
for dynamic contentdebounce
for input handlersdisconnect()
Turbo Frames and Stimulus represent complementary approaches to modern web development within the Hotwire ecosystem. Turbo Frames excel at server-driven content updates through HTML fragment replacement, while Stimulus specializes in client-side interactivity through targeted JavaScript behaviors. The optimal implementation strategy involves:
Developers should prioritize Turbo Frames for server-side functionality and progressively enhance with Stimulus when client-side behaviors become necessary. This approach maintains the simplicity of server-rendered architectures while delivering SPA-like experiences through systematic, layered enhancement[8][9].
Sources [1] Turbo Streams: How They Work and Differ From Turbo Frames https://www.writesoftwarewell.com/understanding-hotwire-turbo-streams/ [2] What exactly is the difference between Turbo, Hotwire and Stimulus … https://www.reddit.com/r/rails/comments/1cnpe04/what_exactly_is_the_difference_between_turbo/ [3] Thinking in Hotwire: Progressive Enhancement | Boring Rails https://boringrails.com/articles/thinking-in-hotwire-progressive-enhancement/ [4] What is the difference between Turbo and Stimulus, and what … https://www.ducktypelabs.com/turbo-vs-stimulus/ [5] Hotwire with Turbo Frames, Turbo Streams, StimulusReflex … - Satchel https://satchel.works/@wclittle/full-stack-hello-world-tutorials-part-8 [6] Decompose with Turbo Frames - Turbo Handbook https://turbo.hotwired.dev/handbook/frames [7] Reload turboframe with Hotwire (Stimulus/Turbo/Rails) https://stackoverflow.com/questions/76096510/reload-turboframe-with-hotwire-stimulus-turbo-rails [8] Hotwire Decisions: When to use Turbo Frames, Turbo Streams, and … https://labzero.com/blog/hotwire-decisions-when-to-use-turbo-frames-turbo-streams-and-stimulus [9] Progressive enhancement philosophy and WHEN to add Hotwired? https://discuss.hotwired.dev/t/progressive-enhancement-philosophy-and-when-to-add-hotwired/4690 [10] Hotwire Modals in Ruby on Rails with Stimulus and Turbo Frames https://blog.appsignal.com/2024/02/21/hotwire-modals-in-ruby-on-rails-with-stimulus-and-turbo-frames.html [11] What is the rule of thumb for deciding whether to use turbo_frames … https://discuss.hotwired.dev/t/what-is-the-rule-of-thumb-for-deciding-whether-to-use-turbo-frames-or-stimulus/3295 [12] What is the rule of thumb for deciding whether to use turbo_frames … https://discuss.hotwired.dev/t/what-is-the-rule-of-thumb-for-deciding-whether-to-use-turbo-frames-or-stimulus/3295
AAA’s study also points out how difficult it will be to fix some of the contributors to this problem. In many places, the built environment needs to be changed, but it’s expensive, and American society is just too accepting of traffic deaths to demand it happen. There are clashes between local and state governments—the latter often owns the arterial roads where these deaths are happening, leaving the cities powerless to take action themselves.
It’s a long slow path back from the car centric cities we’ve built. The time to start is now.
There’s absolutely nothing fundamental in the App Store concept that requires it to be the only pathway for software on the iPhone. But limiting things to the App Store gave Apple complete control of its new software platform, which in those early days was very much still under construction. I understand why Apple had that impulse, why it wanted to protect what it was building, and why it didn’t want the iPhone to be defined by software in any way that Apple didn’t agree with.
But over time, the inevitable happened: Apple used the exclusivity of the App Store and its total control over the platform to extract money through rent-seeking and to bar businesses from admitting that the web existed outside their apps. Perhaps worst of all, the App Store’s exclusivity allowed Apple to essentially treat app developers as Apple employees, forcing them to follow Apple’s guidelines and please Apple’s approval apparatus before their apps would be allowed to be seen by the public. Whole classes of apps were banned entirely, some publicly, some silently.
Enough said.
We then handle user requests by using the embedding model to create an embedding for the query. We use that embedding with a ANN similarity search on the vector store to retrieve matching fragments. Next we use the RAG prompt template to combine the results with the original query, and send the complete input to the LLM.
A nice quick rundown of RAG implementation.