Dennis Hackethal’s avatar

Dennis Hackethal

@dennis.hackethal​·​Joined Jun 2024​·​Ideas

Founder Veritula. Author. Software engineer. I study the mind and build tools for thinkers. Ex Apple. Translator of The Beginning of Infinity.

 User
Registered their account.
 Initiator
Started their first discussion.
 Engager
Participates in three or more discussions.
 Novice
Posted their first idea.
 Beginner
Posted their 10th idea.
 Intermediate
Posted their 50th idea.
 Advanced
Posted their 100th idea.
 Critic
 Private
 Lieutenant
 Captain
 Defender
 Shield
 Watchman
 Copy editor
Created their first revision.
 Assistant editor
Created their 10th revision.
 Associate editor
Created their 50th revision.
 Professional
Posted their 500th idea.
 Deputy editor
Created their 100th revision.
 Colonel
 Master
Posted their 1000th idea.
 Bulwark
 General
 Editor
Created their 500th revision.
  Dennis Hackethal reposted idea #4624.

Curing addiction

If I’m right that the cause of addiction is an entrenched conflict between preferences (#3040), then there’s a simple cure for addiction:1 common-preference finding with yourself.

Common-preference finding is a concept I am borrowing from a parenting philosophy called Taking Children Seriously (TCS), cofounded by David Deutsch:

common preference is a solution to a problem, or resolution of a disagreement, that all parties prefer to their prima facie positions, and to all other candidate solutions they can think of. It is the solution that pleases everyone involved in the disagreement.

I think common-preference finding is not only the solution to conflicts between people, but also to conflicts between preferences inside a single person. When such conflicts inside a single mind are entrenched, we are dealing with addiction. Since addiction is a special kind of conflict, the solution to addiction is the same as the solution to conflicts generally: common-preference finding.

Consider an alcoholic. The two entrenched preferences, in the simplest possible terms, are: to drink, and to stop drinking. In this context, I think it helps to view this single alcoholic as two people. In other words, we can view each preference as a person, or an autonomous actor of sorts. Not because the alcoholic necessarily has a split personality in the clinical sense – although we’ll soon see that the addict acts as his own adversary – but because it helps illustrate the logic behind common-preference finding: it’s fundamentally no different within a single person than across people.

So again, let’s view an alcoholic as two people, just as a thought experiment. They’re forced to be roommates and combine their finances. One of them wants to drink and spend their money on alcohol, whereas the other does not want that. Moving out – choosing not to associate – is not an option because there’s no freedom of association inside a single mind. Although we may choose not to be roommates with an alcoholic, the alcoholic has no choice but to be roommates with himself.

How are these two ‘people’ to live together in harmony? As long as they’re in conflict, they will try to undermine each other. One will put the liquor in the top cabinet to make it harder to reach – the other will get it anyway. One will ask a friend to hold on to his credit card, the other will convince that same friend to give it back.

We can see the same self-adversarial dynamic in addictions to various things. For example, somebody asked (emphasis mine):

What can I do against my addiction to certain websites? I'm addicted to some sites, and I already tried to block them, but I always go back to unblock. I always waste a lot of time on them, and I'm annoyed by myself than I can[’t] stay away from them.

Do you see the dynamic? He’s like two people: person A blocks the website, until the urge to visit it gets too strong and person B unblocks it. Then person A gets annoyed at person B – who was presumably annoyed at person A for blocking the site in the first place. And the only way to get (temporary) relief from this conflict is to indulge and visit the site again – or so it seems.

This person’s frustration makes it easier to see that, again, knowledge inside a single mind does not act fundamentally differently from knowledge across minds. When you’re in conflict with somebody else, you may feel hopeless at times, like there’s no way to reach that person, and you wish they’d just listen to reason. But that situation is not fundamentally different when that other person is yourself! People sometimes think you should be able to just ‘will away’ those conflicting preferences inside you, but that isn’t always easier to do with yourself than it is with someone else.

Somebody responded to the tortured soul above. Again we see the same self-adversarial dynamic at play:

I have the same problem.

The only solution I have is to remove your accounts completely, or make it so that you can never login again.

A good way for this is to implement a 2-way verification on your account with an Authentication app, then you logout, remove your TOKENS in the Authentication app, and then clear the web browser. You can also reset the backup codes for the 2 way authentication before log out the final time and don't save them.

Now you are out for good.

Except you’re not. Remember, the addict is his own creative adversary. He’ll find ways to get what he wants. So the same respondent immediately contradicts himself (emphasis mine):

I did this, but I managed to get back in by talking to the owner of the site. Why did I do this? 😔

The key is to never give yourself the permission to never under any circumstances look at the site again. … If you look at the site again, I will guarantee you that you will find a way to get back in.

In other words, this person suggests that the ‘solution’ to this conflict between preferences is to entrench it even further by having one run roughshod over the other. That’s not a solution. On the contrary, I suspect it would just frustrate that other part of him, which would then want to visit the site even more, and find even more creative ways to visit it. If somebody else disregarded your preferences, wouldn’t you feel justified in disregarding theirs? Yes. Why should that be any different when that somebody else is yourself? It isn’t.

This respondent continues:

Find something else to do. Because you can not [sic] remove a habbit [sic], you [c]an only replace it by something else. This is the secret [to] habbit building. Maybe every time you feel the urge to look at the website, take a book from your bookshelf and start reading that instead.

Hope this helps.

Now, whether reading is an actual solution to this conflict depends on the person. Given this respondent’s previous statements, I suspect he’s merely suggesting another form of self-coercion: read whether you like it or not. Again, that will not work; it may well worsen the addiction. But if reading is something both parts of him prefer to their respective initial position, then the addiction should disappear quickly because there’s no reason for either part to continue holding its initial position.

The logic would be the same for the alcoholic from our thought experiment: if part A of his mind wants to spend money on alcohol, while part B wants to spend that money on movie tickets instead, but then they find they both prefer to spend the money on a new book, then they will be in harmony again.

In short, the cure to addiction is common-preference finding with yourself. Unfortunately, there’s no predetermined recipe that you could follow. What you can do, though, is best described by the quote from The Beginning of Infinity from #760:

[W]hat is necessary for progress is to exclude ideas that fail to survive criticism, and to prevent their entrenchment, and to promote the creation of new ideas.

By definition, once you’re addicted, it’s too late to prevent entrenchment. But that still leaves two possible actions: discarding ideas that fail to survive criticism and promoting the creation of new ideas. In essence, using Veritula.

The cure for addiction is to create new ideas until you find at least one that you are completely unconflicted about.


  1. Simple, not necessarily easy! Also, I don’t think addiction (of the mind) is a disease, so I use the term ‘cure’ loosely/figuratively.

#4624​·​Dennis HackethalOP, about 4 hours ago
  Dennis Hackethal posted idea #4535.

I have a new Services page where you can hire me for software engineering, philosophy consulting, and more: https://dennishackethal.com/services.html

  Dennis Hackethal posted idea #4529.

How to tell a serious epistemologist from a hobby epistemologist: https://x.com/dchackethal/status/2031465139401093501

  Dennis Hackethal posted idea #4524.

Ayn Rand on why middle-of-the-roaders can be worse than outright opponents:

[Page 1]
August 21, 1946

Mrs. Rose Wilder Lane
Route 4, Box 42
Danbury, Connecticut

[…]

Now to your second question: “Do those almost with us do more harm than 100% enemies?” I don’t think this can be answered

[Page 2]
Page 2 Mrs. Rose Wilder Lane August 21, 1946

with a flat “yes” or “no”, because the “almost” is such a wide term and can cover so many different attitudes. I think each particular case has to be judged on his own performance, but there is one general rule to observe: those who are with us, but merely do not go far enough, yet do not serve the opposite cause in any way, are the ones who do us some good and who are worth educating. Those who agree with us in some respects, yet preach contradictory ideas at the same time, are definitely more harmful than the 100% enemies. The standard of judgement here has to be the man’s attitude toward basic principles. If he shares our basic principles, but goes off on lesser details in the application of these principles, he is worth educating and having as an ally. If his “almost” consists of sharing some of the basic principles of collectivism, then we ought to run from him faster than from an out-and-out Communist.

As an example of the kind of “almost” I would tolerate, I’d name Ludwig von Mises. His book, “Omnipotent Government”, had some bad flaws, in that he attempted to divorce economics from morality, which is impossible; but with the exception of his last chapter, which simply didn’t make sense, his book was good, and did not betray our cause. The flaws in his argument merely weakened his own effectiveness, but did not help the other side.

As an example of our most pernicious enemy, I would name Hayek.[**] That one is real poison. Yes, I think he does more harm than Stuart Chase. I think Wendell Willkie did more to destroy the Republican Party than did Roosevelt. I think Willkie and Eric Johnston have done more for the cause of Communism than Earl Browder and The Daily Worker. Observe the Communist Party technique, which asks their most effective propagandists to be what is known as “tactical non-members”. That is, they must not be Communists, but pose as “middle-of-the-roaders” in the eyes of the public. The Communists know that such propagandists are much more deadly to the cause of Capitalism in that “middle-of-the-road” pretense.

Personally, I feel sick whenever I come up against a compromising conservative. But my attitude is this: if the man compromises because of ignorance, I consider him worth enlightening. If he compromises because of moral cowardice (which is the reason in most cases), I don’t want to talk to him, I don’t want him on my side, and I don’t think he is worth converting.

As to George Peck, I don’t know enough about him to be able to tell whether he is worth educating or not. I have just received a letter from him in answer to mine. It is a very nice letter, in that he tries to answer criticism honestly, but I am appalled by his mental confusion. He maintains, for instance, that Hitler is worse than Stalin. I don’t know by what possible standard one can establish degrees of evil as between dictators representing exactly the same

[Page 3]
Page 3 Mrs. Rose Wilder Lane August 21, 1946

principle. I am afraid that George Peck means well, but has not given our cause a serious study. Perhaps, he is worth educating. But stay away from Hayek, if you want my opinion; he is worse than hopeless.

Now, am I a good correspondent?

With best regards,

Sincerely,

Ayn Rand

p.s.
I had just finished this letter to you, when, strangely enough, I received an appalling answer to the question you asked me—a final proof that our “almost” friends are our worst enemies. It was the worst shock in all my experience with political reading. I received the Economic Council Letter of August 15th. (Incidentally, I subscribed to that Letter mainly in order to get your book reviews.) And I read that Merwin K. Hart, a defender of freedom and Americanism, is advocating a death penalty for a political offense.

I am actually too numb at the moment to know what to say. I don’t have to explain to you that once such a principle is accepted, it would mean the literal, physical end of Americans; nor to ask you to guess who would be the first people executed under such a law; nor to remind you that the crucial steps on the road to dictatorship, the laws giving government totalitarian powers, were initiated by Republicans—such as the draft bill, or the attempt to pass a national serfdom act for compulsory labor.

I know that you know all that. What I wonder is: is it in your spiritual power to discuss this with Hart? If you can, if you have arguments that would reach him—please do it. I confess I’m helpless in such an instance. It’s too monstrous.

[…]

**F. A. Hayek, who shared the 1947 Nobel Prize in Economics. For AR’s marginal comments on Hayek’s best-known work, The Road to Serfdom, see Mayhew ed., Ayn Rand’s Marginalia, pp. 145–60. 

In her August 24, 1946, response, Lane wrote, “That Council Letter gave me the same shock…. I can take it up with Hart and I shall.”

Source

  Dennis Hackethal revised idea #4510.

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.

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.

  Dennis Hackethal revised idea #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.

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.

  Dennis Hackethal posted idea #4474.

Can there be such a thing as too much fun?
Can there be such a thing as too much profit?

In both cases, I think ‘no’. And I wonder if the fear of ‘too much’ fun and ‘too much’ profit is fundamentally the same thing.

Like, when parents worry that their kids are having too much fun, and when socialists are suspicious of companies turning a profit… is that an expression of the same fear?

Maybe the role of profit in the economy is the same as that of fun in a single mind: it signals successful discovery of common preferences.

  Dennis Hackethal revised idea #4467.

Link directly to user-bio field for convenience


This was a big week for Veritula. Users can now:

  • ✍️ Post ideas to their own profile, and others’ profiles, outside of discussions. (Beta)
  • 🔄 Repost ideas.
  • 🙋‍♂️ Set a profile description under Settings. Tell others about yourself!
  • 💻 Embed discussions on third-party sites. Similar feature to Disqus and Giscus. Ideal for comments on blogs, say. See the embed code under Settings. (Early beta)
  • 🌉 Show images while preserving viewers’ privacy.1

  1. To render an image, use this markdown syntax: ![Optional image description](https://example.com/direct-link-to-image.png)

This was a big week for Veritula. Users can now:

  • ✍️ Post ideas to their own profile, and others’ profiles, outside of discussions. (Beta)
  • 🔄 Repost ideas.
  • 🙋‍♂️ Set a profile description under Settings. Tell others about yourself!
  • 💻 Embed discussions on third-party sites. Similar feature to Disqus and Giscus. Ideal for comments on blogs, say. See the embed code under Settings. (Early beta)
  • 🌉 Show images while preserving viewers’ privacy.1

  1. To render an image, use this markdown syntax: ![Optional image description](https://example.com/direct-link-to-image.png)

  Dennis Hackethal reposted idea #2844.

A Life Guided by Reason

In #2281, I explain how Veritula helps you make rational decisions – in other words, how to live rationally, ie, a life guided by reason. (I use the words ‘reason’ and ‘rationality’ synonymously. The same goes for ‘unreason’ and ‘irrationality’.)

A life guided by reason defies the dominant, Kantian philosophy of our age. Ayn Rand summarized that philosophy as, “Be rational, except when you don’t feel like it.”1 In other words, it says to mix reason and unreason; to stray from rationality arbitrarily; to be rational only sometimes. It claims that there is a necessary clash between reason and emotion. It is an attack on reason, an attempt to do the impossible – and it leads to dissatisfaction with yourself and conflict with others.

If you are rational only sometimes, if you stray from rationality arbitrarily, then you are irrational. There is no third option. This conclusion can be proven easily: if you tried to stray from rationality non-arbitrarily, ie, if you tried to come up with a considered argument for straying from rationality, you could only do so by following the steps in #2281. And those steps are the application of rationality again.

So it’s impossible to stray from rationality rationally. There is no gray area between reason and unreason. Rationality has an all-or-nothing character. This does not mean that reason has to snuff out all emotion. On the contrary: there is no necessary clash between rationality on the one hand and emotion on the other. Rationality means finding unanimous consent between emotion, explicit thought, inexplicit thought, and any other kind of idea.

If you follow the steps in #2281 consistently, then you are always rational. A life worth living is one guided exclusively by reason. Consistent application of rationality may be difficult at first, but with practice, it will get easier. Master it, and you will have a fighting chance of becoming what David Deutsch calls a beginning of infinity.


  1. Ayn Rand. Philosophy: Who Needs It. ‘From the Horse’s Mouth’ (p. 110). 1975. Kindle Edition. As quoted previously.

#2844​·​Dennis HackethalOP, 4 months ago
  Dennis Hackethal reposted idea #2281.

Rational Decision-Making

Expanding on #2112

If an idea, as written, has no pending criticisms, it’s rational to adopt it and irrational to reject it. What reason could you have to reject it? If it has no pending criticisms, then either 1) no reasons to reject it (ie, criticisms) have been suggested or 2) all suggested reasons have been addressed already.

If an idea, as written, does have pending criticisms, it’s irrational to adopt it and rational to reject it – by reference to those criticisms. What reason could you have to ignore the pending criticisms and adopt it anyway?

#2281​·​Dennis HackethalOP revised 5 months ago
  Dennis Hackethal reposted idea #554.

Veritula deserves to scale to the size of Wikipedia.

But it never will, unless its users innovate.

How can the global success of Wikipedia inspire Veritula?

#554​·​Tom Nassis, over 1 year ago
  Dennis Hackethal posted idea #4398.

This is the first idea posted straight to my profile, outside of discussions.