Search

Words match in any order. "many worlds" matches the phrase exactly; -gravity excludes ideas with “gravity”.

Ideas that are…

Search Ideas

Big week on Veritula 🚀

✍️ A new editor: what you see is what you post.
📰 Long-form articles on your profile. Write one here.
🖼️ Pictures: drop or paste them into the editor; caption them.
💾 Drafts that save as you type and on cmd + s.
🙌 Revisions credit the critics who inspired them.
😎 Profile pictures. Set one here.

@moritz-wallawitsch has already posted his first article:

#6098·​Dennis Hackethal, about 18 hours ago·​AI-assisted

Comes to iOS Safari

Sadly, as of a recent iOS update, Apple removed the ability to trigger haptic feedback in Webkit browsers.

Should still work on Android, though.

#6097·​Dennis Hackethal, 1 day ago·​Criticism

web-haptics: Haptic Feedback Finally Comes to iOS Safari

Dark textured surface with many small raised elementsPhoto by Andrew Kliatskyi on Unsplash

lochie just published a package bringing haptic feedback to the web on iOS: web-haptics. I spent four years at Apple working mostly on UIs, so I pay close attention to design and UX. In terms of presentation, use case, and attention to detail, this package comes as close to perfect as I’ve seen.

The problem

On Android, haptics have been available through navigator.vibrate(), but iOS does not support this API. There is a workaround, though – the input element with the switch attribute:

html
<input type="checkbox" switch>

See this switch input in action here. On iOS, the input renders not as a regular checkbox but as a switch that can be toggled on or off:

Switch input

Open the link on your iPhone, tap the switch, and you’ll feel haptic feedback. As far as I know, this is currently the only known practical workaround to trigger haptic feedback on the web in iOS.

Implementation

lochie cleverly bases his package on this single workaround and pushes it to its limits. The key lines are here, creating a switch input on the fly:

js (rendered as javascript)
const hapticCheckbox = document.createElement("input");
hapticCheckbox.type = "checkbox";
hapticCheckbox.setAttribute("switch", "");

The package also creates an associated label and clicks it to trigger haptic feedback on the connected input:

js (rendered as javascript)
this.hapticLabel.click();

(My understanding is that iOS will not trigger the haptic feedback when the input is programmatically clicked – so the ‘workaround within the workaround’ is to click the associated label instead.)

Custom haptics (!)

But web-haptics can do more than just trigger a single haptic ‘pulse’. The trigger function lets you pass in your own patterns with pulses of different duration and intensity, and even delays.

Want a simple success haptic? Trigger two pulses, as shown on the package homepage:

js (rendered as javascript)
trigger([
{ duration: 30 },
{ delay: 60, duration: 40, intensity: 1 },
])

Or simply call trigger('success') as a shortcut.

Here’s an error haptic I made based on Apple’s human interface guidelines:

js (rendered as javascript)
trigger([
{ duration: 40, intensity: 0.7 },
{ delay: 40, duration: 40, intensity: 0.7 },
{ delay: 40, duration: 40, intensity: 0.9 },
{ delay: 40, duration: 50, intensity: 0.6 },
])

lochie’s website even gives you an editor to make custom haptics. As you click and drag, both pulses and code update in real time. This experience is developer bliss:

Haptic editor

Usage

Importing the package is easy. In Rails, for example:

rb (rendered as ruby)
# config/importmap.rb
pin "web-haptics", to: "https://esm.sh/web-haptics@0.0.6"
js (rendered as javascript)
import { WebHaptics } from 'web-haptics';
// In a Stimulus controller somewhere
let haptics = new WebHaptics();
haptics.trigger('success'); // or 'error', 'warning', etc for built-in haptics
haptics.trigger([
{ duration: 40, intensity: 0.7 },
{ delay: 40, duration: 40, intensity: 0.7 },
])

Pass a debug option to the constructor to hear clicks in development/on desktop:

js (rendered as javascript)
new WebHaptics({ debug: true });

Again, this package comes as close to perfect as I’ve seen. In fact, I already use it on Veritula: as you type in a text field, an error haptic plays when you exceed the max length (#4473).

I highly recommend web-haptics by lochie.

#6096·​Dennis Hackethal revised 1 day ago·​Original #4509·​1 pending criticism

Superseded by #4510.

#6095·​Dennis Hackethal, 1 day ago·​Criticism

Preference formation is a computational task. (#5255) To claim we’ve understood a computational task, we must have programmed it (Deutsch). Popper never programmed it, so he didn’t understand it. (To Popper’s credit though, he got pretty technical in defining verisimilitude, logical vs. empirical content, etc.)

Satisfying Deutsch’s yardstick means, in my professional opinion as a software engineer: writing working code to industry standards. It must compile, implement the desired feature with no known bugs, be as performant as the feature reasonably requires, have clean syntax, etc.

#6094·​Dennis Hackethal revised 3 days ago·​Original #5256·​Criticism

Not having programmed preference formation doesn’t show that Popper understood nothing about it.

#5256 doesn’t say Popper understood nothing about it. I think he understood it fairly well, far better than other philosophers, but we now understand it better today than he did.

#6093·​Dennis Hackethal, 3 days ago·​Criticism

I understand aspects of how capitalism works

Capitalism isn’t a computational task.

#6092·​Dennis Hackethal, 3 days ago·​Criticism

Again I think it depends on the test. I don’t think it’s a fundamental problem for the theoretician, more so for the applied epistemologist. But in general terms, you can just guess that one is more severe, and if nobody has a pending criticism of that guess, you can rationally go ahead with it.

#6091·​Dennis Hackethal, 3 days ago·​Criticism

I purposely avoid drinking any water past 8pm so I don’t wake up in the middle of the night having to answer nature’s call. But sometimes that still happens. How can that be?

According to this article, elevating your legs helps with fluid distribution. My understanding is that, as you get older, your body gets worse at fluid distribution. If you’re never horizontal during the day, fluid gathers in your legs. And if bedtime is the first time you’re horizontal, the fluid redistributes as you sleep, some of it gathers in your bladder, and you need to pee.

That explains why I had to use the bathroom in the middle of the night even though I don’t drink anything past 8pm. So I tried elevating my legs the next day, working from the couch for a bit in the evening. It worked! I didn’t wake up having to use the bathroom that night. (I still woke up for some other unidentified reason, but at least I can now rule out this cause.)

#6090·​Dennis Hackethal, 4 days ago

They can introduce subjects worth exploring further. Not every useful encounter needs to be exhaustive.

#6088·​Moritz WallawitschOP, 5 days ago·​AI-assisted·​Criticism

Short videos prevent the depth of explanation that long-form content can provide.

#6087·​Moritz WallawitschOP, 5 days ago·​AI-assisted·​Criticism1 pending criticism

Which conflicting preferences are involved? Why assume stopping expresses the person’s real preference, rather than treating both preferences as ideas to examine?

#6086·​Moritz WallawitschOP, 5 days ago·​AI-assisted·​Criticism

People sometimes keep watching these feeds while also wanting to stop. That conflicts with the claim that the feed is serving their interests.

#6085·​Moritz WallawitschOP, 5 days ago·​AI-assisted·​Criticism1 pending criticism

True, but serving curiosity is one way to sustain engagement. What separates engagement that serves curiosity from engagement that does not?

#6084·​Moritz WallawitschOP, 5 days ago·​AI-assisted·​Criticism

Recommendation engines optimize engagement and time spent, not curiosity. Engagement is not always curiosity.

#6083·​Moritz WallawitschOP, 6 days ago·​AI-assisted·​Criticism1 pending criticism

Personalized short-video feeds such as TikTok, Reels and YouTube Shorts are better at serving curiosity than fixed, long-form films. They adapt to your interests instead of fixing a sequence.

#6082·​Moritz WallawitschOP, 6 days ago·​AI-assisted·​ Battle-tested · 3

I was tired of slow, bloated Spotlight.

Then it hit me: I didn’t have to wait for Apple to fix it. I could just have Claude whip up an alternative.

Meet Blink: results in under 17ms vs. up to 1,083ms for Spotlight. Free and open source.

Download and install:

A fast Spotlight replacement for macOS that does just two things: opens apps and does math. - dchacke/blink

See demo:

#6081·​Dennis Hackethal, 6 days ago·​AI-assisted

How do we decide which test is more severe? That judgment seems to do the work of forming the preference here. The criticism tree records the judgment, but what explains how we reach it?

#6080·​Moritz Wallawitsch, 6 days ago·​AI-assisted·​Criticism1 pending criticism

The requirement to have ‘programmed it’ is imprecise. Would precise pseudocode count, or must it be executable code? If pseudocode fully specifies the procedure, what additional understanding does translating it into Python require?

#6079·​Moritz Wallawitsch, 6 days ago·​AI-assisted·​Criticism

This rules out partial understanding. I understand aspects of how capitalism works even though I couldn’t build a faithful simulation of a capitalist economy. Not having programmed preference formation doesn’t show that Popper understood nothing about it. What specific part did he fail to understand?

#6078·​Moritz Wallawitsch, 6 days ago·​AI-assisted·​Criticism2 pending criticisms

New on V: a guide that walks you through your rejectable ideas and helps you rehabilitate them.

Check it from time to time to ensure harmony between your thoughts and your actions.

In addition, every rejectable idea on the site now has a ‘Rehabilitate’ link to the same guiding mechanism so you can help other people rehabilitate their ideas.

Try it today: https://veritula.com/guide

#6077·​Dennis Hackethal, 7 days ago

New on Veritula: criticized passages get red, overlapping highlights. Comments get gray.

See at a glance which parts of an idea are problematic:

#6076·​Dennis Hackethal, 7 days ago

Tags on discussions would solve the same problem with less. A discussion could carry several tags, and nothing would need its own pages, moderators or membership. Subreddits come with all of that.

#6075·​Dennis HackethalOP, 7 days ago·​AI-assisted·​Criticism

Idea: communities.
Discussions vary widely, but people gather around topics, like nutrition or software engineering. Communities would group discussions by topic, as subreddits group posts, so people can find the discussions on topics they care about.
Could live at /v/community-name.
There could be a community around nutrition, another for software engineering, a meta community for Veritula, etc.
Ben could have his own community to build his Wikipedia competitor.

#6073·​Dennis HackethalOP revised 7 days ago·​AI-assisted·​Original #4652·​2 pending criticisms

“Group or maybe even replace discussions” leaves open two different designs. Grouping adds a level above discussions. Replacing removes them and has to move what hangs off them, like chronicles, the timeline, embedding, and the MCP endpoint’s discussion tools. Until it picks one, it can’t be built.

#6072·​Dennis HackethalOP, 7 days ago·​AI-assisted·​Criticism