Dennis Hackethal’s avatar

Dennis Hackethal

@dennis-hackethal·Member since June 2024

Activity

  Dennis Hackethal submitted criticism #2697.

Feature idea: edit a discussion to hide ideas. That way, discussion owners can hide ideas they no longer deem relevant. (For example, completed tasks in discussions used as issue trackers, like this Meta thread.) There could be a button for users to reveal hidden ideas so nothing is lost of hidden dishonestly.

  Dennis Hackethal addressed criticism #2679.

cmd + f won’t work reliably.

#2679·Dennis HackethalOP, 6 days ago

This problem will surface rarely – users would have to hit cmd + f immediately upon opening the page. For most users, by the time they start typing, the page is already fully loaded. So this seems like a small price to pay in exchange for discussion pages that always render faster.

  Dennis Hackethal addressed criticism #2679.

cmd + f won’t work reliably.

#2679·Dennis HackethalOP, 6 days ago

Now that parts of the page are purposely and visually disabled (see #2694), users may not expect everything to be working 100% during a loading state.

  Dennis Hackethal addressed criticism #2671.

JS modules are always deferred and unusable until the page is fully loaded. As a result, comment buttons and gutters won’t work while ideas are still streaming onto the page.

#2671·Dennis HackethalOP, 6 days ago

I now purposely prevent interactions with buttons and gutters, and gray them out, until the page is fully loaded. So instead of broken hover effects and interactions, the user gets intentionally disabled elements, and this intentionality is communicated to them.

Once the page is fully loaded, buttons and gutters are enabled and visually restored.

Since the browser’s loading indicator remains visible until then, this behavior shouldn’t violate user expectation.

  Dennis Hackethal addressed criticism #2692.

I could override authenticate_user! in the DiscussionsController.

#2692·Dennis HackethalOP, 6 days ago

That means duplicate functionality; anytime I customize Devise in the future, I’ll have to remember to adjust this one method as well.

  Dennis Hackethal addressed criticism #2670.

Incompatible with Devise authentication: https://github.com/heartcombo/devise/issues/2332

#2670·Dennis HackethalOP, 6 days ago

I could override authenticate_user! in the DiscussionsController.

  Dennis Hackethal addressed criticism #2670.

Incompatible with Devise authentication: https://github.com/heartcombo/devise/issues/2332

#2670·Dennis HackethalOP, 6 days ago

I could extract discussions#show into a new, separate StreamController or something like it. That controller would not use Devise.

  Dennis Hackethal addressed criticism #2688.

The thread suggests a workaround: use authenticated do … blocks in routes.rb instead of before_action :authenticate_user! in controllers.

It’s probably a good idea to do this anyway to avoid divulging the existence of routes that unauthenticated users don’t need to know exist. (They will get a 404 instead of a 401.)

#2688·Dennis HackethalOP revised 6 days ago

Then again, I’d want to redirect users to the sign-in page (and then ideally back to where they were trying to go).

  Dennis Hackethal revised criticism #2686.

The thread suggests solution: use authenticated do … blocks in routes.rb instead of before_action :authenticate_user! in controllers.

It’s probably a good idea to do this anyway to avoid divulging the existence of routes that unauthenticated users don’t need to know exist. (They will get a 404 instead of a 401.)

The thread suggests a workaround: use authenticated do … blocks in routes.rb instead of before_action :authenticate_user! in controllers.

It’s probably a good idea to do this anyway to avoid divulging the existence of routes that unauthenticated users don’t need to know exist. (They will get a 404 instead of a 401.)

  Dennis Hackethal revised criticism #2673.

The thread contains a suggested solution: use authenticated do … blocks in routes.rb instead of before_action :authenticate_user! in controllers.

It’s probably a good idea to do this anyway to avoid divulging the existence of routes that unauthenticated users don’t need to know exist. (They will get a 404 instead of a 401.)

The thread suggests solution: use authenticated do … blocks in routes.rb instead of before_action :authenticate_user! in controllers.

It’s probably a good idea to do this anyway to avoid divulging the existence of routes that unauthenticated users don’t need to know exist. (They will get a 404 instead of a 401.)

  Dennis Hackethal criticized idea #2636.

On initial page load, I could just load the first ten or so top-level ideas and their immediate children, just to reduce wait times and populate the page. Then load the rest asynchronously.

#2636·Dennis HackethalOP, 9 days ago

Duplicate of #2677/#2683.

  Dennis Hackethal criticized idea #2677.

The top level ideas could be rendered as turbo frames of ideas#show.

#2677·Dennis HackethalOP, 6 days ago

While ideas load, cmd +f won’t work.

  Dennis Hackethal addressed criticism #2680.

I just tried this. Seemed promising at first but sometimes ideas load out of order. Looks horrible.

#2680·Dennis HackethalOP, 6 days ago

I could render the first ~10 top-level ideas immediately and only render the rest as turbo frames off screen. By the time the user scrolls down, they should all be loaded.

  Dennis Hackethal commented on criticism #2676.

For large discussions, wouldn’t that flood the server with requests?

#2676·Dennis HackethalOP, 6 days ago

Yes, it would be even worse than #2677 (see criticism #2681), where only top-level ideas were turbo frames.

  Dennis Hackethal criticized idea #2677.

The top level ideas could be rendered as turbo frames of ideas#show.

#2677·Dennis HackethalOP, 6 days ago

Too many requests when there are enough top-level ideas.

  Dennis Hackethal criticized idea #2677.

The top level ideas could be rendered as turbo frames of ideas#show.

#2677·Dennis HackethalOP, 6 days ago

I just tried this. Seemed promising at first but sometimes ideas load out of order. Looks horrible.

  Dennis Hackethal criticized idea #2659.

I could use ActionController::Live to stream top-level ideas to the page one by one. Instant page load.

#2659·Dennis HackethalOP revised 7 days ago

cmd + f won’t work reliably.

  Dennis Hackethal criticized idea #2635.

I could lazy load ideas: only load the parts of the page that would be visible on the current viewport. Then load more parts as the user scrolls.

#2635·Dennis HackethalOP, 9 days ago

That means cmd + f won’t always work.

  Dennis Hackethal commented on criticism #2630.

Discussions are getting slower to render as they grow. It’s a rendering issue (not a db issue).

#2630·Dennis HackethalOP revised 9 days ago

The top level ideas could be rendered as turbo frames of ideas#show.

  Dennis Hackethal criticized idea #2675.

I could have a separate route at /ideas/:id/isolated which renders only the idea without any parents or children. And then a discussion could render a bunch of deeply nested turbo frames loading that route.

#2675·Dennis HackethalOP, 6 days ago

For large discussions, wouldn’t that flood the server with requests?

  Dennis Hackethal commented on criticism #2630.

Discussions are getting slower to render as they grow. It’s a rendering issue (not a db issue).

#2630·Dennis HackethalOP revised 9 days ago

I could have a separate route at /ideas/:id/isolated which renders only the idea without any parents or children. And then a discussion could render a bunch of deeply nested turbo frames loading that route.

  Dennis Hackethal revised criticism #2672.

The thread contains a suggested solution: use authenticated do … blocks in routes.rb instead of before_action :authenticate_user! in controllers.

The thread contains a suggested solution: use authenticated do … blocks in routes.rb instead of before_action :authenticate_user! in controllers.

It’s probably a good idea to do this anyway to avoid divulging the existence of routes that unauthenticated users don’t need to know exist. (They will get a 404 instead of a 401.)

  Dennis Hackethal addressed criticism #2670.

Incompatible with Devise authentication: https://github.com/heartcombo/devise/issues/2332

#2670·Dennis HackethalOP, 6 days ago

The thread contains a suggested solution: use authenticated do … blocks in routes.rb instead of before_action :authenticate_user! in controllers.

  Dennis Hackethal criticized idea #2659.

I could use ActionController::Live to stream top-level ideas to the page one by one. Instant page load.

#2659·Dennis HackethalOP revised 7 days ago

JS modules are always deferred and unusable until the page is fully loaded. As a result, comment buttons and gutters won’t work while ideas are still streaming onto the page.

  Dennis Hackethal criticized idea #2659.

I could use ActionController::Live to stream top-level ideas to the page one by one. Instant page load.

#2659·Dennis HackethalOP revised 7 days ago

Incompatible with Devise authentication: https://github.com/heartcombo/devise/issues/2332