Search

Ideas that are…

Search Ideas


2392 ideas match your query.:

Maybe fun = profitable thinking.

#4514​·​Dennis Hackethal, 3 months ago​·​Criticized1

Idea: ability to lock an idea to prevent edits. If you submit the first version, you get to lock the idea. Useful especially on your own profile that you might use as more of a blog and don’t necessarily want others changing your ideas.

#4513​·​Dennis HackethalOP, 3 months ago

web-haptics: Haptic Feedback Finally Comes to iOS Safari

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:

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:

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:

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:

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:

ruby
# config/importmap.rb
pin "web-haptics", to: "https://esm.sh/web-haptics@0.0.6"
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:

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.

#4511​·​Dennis Hackethal revised 3 months ago​·​Original #4509

web-haptics: Haptic Feedback Finally Comes to iOS Safari

lochie just published a package bringing haptic feedback to the web: 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:

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:

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:

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:

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:

ruby
# config/importmap.rb
pin "web-haptics", to: "https://esm.sh/web-haptics@0.0.6"
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:

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.

#4510​·​Dennis Hackethal revised 3 months ago​·​Original #4509​·​Criticized1

web-haptics: Haptic Feedback Finally Comes to iOS Safari

lochie just published a package bringing haptic feedback to the web: ‘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:

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:

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:

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:

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:

ruby
# config/importmap.rb
pin "web-haptics", to: "https://esm.sh/web-haptics@0.0.6"
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:

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.

#4509​·​Dennis Hackethal, 3 months ago

Users can now pick a custom @username.

I just changed mine from @dennis-hackethal* to @dennis.hackethal. (Period instead of hyphen.) Old profile links are automatically redirected. Old @mentions have an asterisk and explain the change on hover while linking to the updated URL.

@usernames used to be assigned automatically based on a user’s first and last name. Now, users can choose.

To change your @username, go to Settings.

#4507​·​Dennis Hackethal revised 3 months ago​·​Original #4506

Users can now pick a custom @username.

I just changed mine to @dennis.hackethal. (Period instead of hyphen.) Old profile links are automatically redirected. Old @mentions are automatically updated.

@usernames used to be assigned automatically based on a user’s first and last name. Now, users have more choice.

To change your @username, go to Settings.

#4506​·​Dennis Hackethal, 3 months ago​·​Criticized1

I did some e-sleuthing around this thought and found On Creativity - The joys of 5 minute timers by Neel Nanda. …

My favourite part of the article is this:

I noticed a slight inconsistency here. You give exact links for each quote (by “exact” I mean links to highlighted passages) except this one, where you link to the article as a whole. If you turn the word “part” into a link to the passage, you’ll have perfect quoting consistency.

Here’s the exact link: https://www.lesswrong.com/posts/FHiM34PmrN224pqTz/on-creativity-the-joys-of-5-minute-timers#:~:text=Set%20a%205%20minute%20timer%2C%20and,5%20minute%20brainstorm%20for%20anything%20left.

It’s nice that you give exact links. Makes verification easier for readers.

#4503​·​Dennis Hackethal, 3 months ago​·​Criticism

There is, in the comments.

#4502​·​Dennis HackethalOP, 3 months ago​·​Criticism

But there’s no indication that the current version has been superseded.

#4501​·​Dennis HackethalOP, 3 months ago​·​CriticismCriticized1

…the site should let [visitors] know if there is a superseding revised version of [an idea].

There are arrow buttons linking to the previous and next version, and the UI says which version you’re currently looking at.

#4500​·​Dennis HackethalOP, 3 months ago​·​Criticism

I first want to see some more people posting to their profiles so there’ll be enough ideas to show in that tab.

#4499​·​Dennis HackethalOP, 3 months ago​·​Criticism

Valid, done.

#4498​·​Dennis HackethalOP, 3 months ago​·​CriticismArchived

Both ideas are about working toward a universal theory of creation by studying parallels between mind and economy.

#4497​·​Dennis Hackethal, 3 months ago​·​Criticism

Somebody on Twitter wrote, addressing old-school programmers in the context of vibe coding, “Your once exclusive access just got democratized.”

I wonder if that’s the same or at least analogous to minds error correcting some skill to the point they automatize it.

In both cases, access to knowledge becomes cheap and fast.

#4485​·​Dennis Hackethal, 3 months ago

Let me know what you think about all this.

One of my colleagues at Apple was an incredibly competent veteran engineer whom I respected a lot. One of the things he taught me was to not always go with my first instinct, but to come up with several solutions to a problem and seeing which one is best. (Looking back and putting it in Veritula terms, I’d rephrase it as: which one survives all criticism. I think in practice, that’s what he did, too.) So your post resonates with me.

Many of my choices are kind of uncreative—I simply do the first thing that pops into my mind …

This approach isn’t necessarily bad, though. I think it depends on whether you already have a considered opinion on a matter. Sometimes, you might do the first thing that pops into your mind because it’s the result of many rounds of previous error correction from similar situations, and you’ve automatized the solution. Then I think it’s fine.

#4484​·​Dennis Hackethal, 3 months ago

But don't let impatience cause you to reduce the number of minutes you go with—the best ideas often come when we are getting bored or feeling a little friction.

That sounds like it could be a bit self-coercive at times.

#4483​·​Dennis Hackethal, 3 months ago​·​Criticism

Some of those ideas would suck, but some of them would probably be a lot more useful and interesting than whatever I would’ve done otherwise that week if I didn’t spend 5 minutes exclusively thinking about it.

Should it say ‘hadn’t spent’ rather than “didn’t spend”? Or ‘would do … if I didn’t’.

#4482​·​Dennis Hackethal, 3 months ago​·​Criticism

I also found Nate Soares blogposts talking about using this approach (I’m guessing the Neel Nanda article was at least partly inspired by Nate Soares):

In 'Obvious advice', Nate Soares writes:

You have two consecutive colons there. Maybe you meant to merge those two parts?

#4481​·​Dennis Hackethal, 3 months ago​·​Criticism

Fixed as of 9ea99f9.

#4480​·​Dennis HackethalOP, 3 months ago​·​CriticismArchived

Should be fixed as of 9ea99f9 but let me know if you’re still having issues.

#4479​·​Dennis HackethalOP, 3 months ago​·​CriticismArchived

Done as of af4e814. There’s now a default wall tab and an activity tab. The wall only shows posts made specifically to the profile. That means posts by the user and others to that profile, and the user’s reposts from anywhere. Version chains are collapsed into the most recent version.

#4478​·​Dennis HackethalOP, 3 months ago​·​CriticismArchived

Using https://haptics.lochie.me/ by lochie, mobile devices now give haptic error feedback when exceeding the limit.

I love obsessing over small details like this one.

#4477​·​Dennis Hackethal, 3 months ago

Nice bio:

A life aimed at infinity 🦉 🐚 🕯️ 🚀

I’m guessing:

🦉 = wisdom
🕯️ = enlightenment
🚀 = progress

But I wonder what the seashell means… 🤔

#4476​·​Dennis Hackethal, 3 months ago

… the posts are lost amongst the other user activity.

To be clear, when you say “posts”, you mean specifically ideas the user posted only to their profile, outside of discussions?

What about reposts from discussions?

#4475​·​Dennis HackethalOP, 3 months ago​·​Archived