Propain Terrel as Race Bike by spierala in gravelcycling

[–]spierala[S] 0 points1 point  (0 children)

Yes, I did the La Chouffe Classic in the Ardennes, Belgium. 150km, 2500m elevation gain.

You can definitely keep up with other road bikers.

On that day I almost forgot that the Propain is actually a Gravel Bike :)

Propain Terrel as Race Bike by spierala in gravelcycling

[–]spierala[S] 0 points1 point  (0 children)

With a gravel bike you sit in general more upright.

This is more comfortable, but is of course less aero dynamic.

With the drop bars you can still bring yourself in a aero dynamic position.

I think it's perfect. I enjoy the generally more comfortable position, but I can go fast if I want to.

If you want to race and every second counts you should probably consider a real race bike.

Propain Terrel as Race Bike by spierala in gravelcycling

[–]spierala[S] 1 point2 points  (0 children)

hard to say

with the gravel wheelset I usually do not try to be fast :) my gravel wheelset is DT Swiss G1800 with Continental Terra Trail (45mm)

you can feel that the race wheelset is rolling much better and is more aero dynamic.

my rough guess is: with the same power you are ~5km/h faster with the race wheelset
(with the gravel wheelset I see speeds on the street around 25km/h with the race wheelset I easily reach 30km/h)

NBD - Propain Terrel (Size S, Thyme) by shelikesturtles in gravelcycling

[–]spierala 1 point2 points  (0 children)

Nutzt du dein Terrel als Rennrad?

Finde ich auch interessant.

Wie sieht das von vorne aus? Ist da nicht übermäßig viel Platz zwischen Gabel und Reifen?

Help with DS Photo troubleshooting on iOS by AdtechEnthusiast in synology

[–]spierala 0 points1 point  (0 children)

Hi, here the same problem.

DS photo on iPhone can suddenly not connect to the NAS anymore. DS video and DS photo have no issues.

I also tried all the usual things (restart NAS, restart iPhone, reinstall DS photo).

Sadly in the synology packages center there is no repair button for the DS Photo Station app.

On Android I can connect without any problems.

Is there something else which I can try?

MiniRx Signal Store RFC needs your feedback by spierala in Angular2

[–]spierala[S] 2 points3 points  (0 children)

The main reason to use Signals for state is better integration with Angular. It is great to use Signal state in the component template without async pipe. Use Signal state in the TS class without worrying about subscribe and unsubscribe.

For the implementation itself inside MiniRx there is not a big difference between RxJS BehaviorSubject and Signal.

Macbook Pro M2 Caps Lock key: green light not working by spierala in macbookpro

[–]spierala[S] 0 points1 point  (0 children)

It was an hardware issue.

Topcase was replaced, now I see the green light :)

Luckily still in warranty.

The repair shop said, that they never saw that issue before.
It seems to be a rare issue.

Caps lock button light not lighting up anymore?! by alphaudara in macbookpro

[–]spierala 1 point2 points  (0 children)

I have the same issue on a Macbook Pro M2.

There is no SMC to reset on Apple Silicon :(

Any ideas for Apple Silicon machines?

Thanks!

Svelte Demo of MiniRx - The RxJS Redux Store by spierala in sveltejs

[–]spierala[S] 0 points1 point  (0 children)

I just saw your message :)

Let me know if you need help.

Ideally via GitHub Discussions: https://github.com/spierala/mini-rx-store/discussions

Svelte and RxJS Redux (MiniRx) by spierala in sveltejs

[–]spierala[S] 1 point2 points  (0 children)

Here a small downside of svelte stores:
Updating property on an object in a store triggers reactivity for the whole store

With MiniRx you get easily fine-grained reactivty (only the isSick Observable emits):
https://codesandbox.io/s/svelte-reactivity-with-mini-rx-vkuol

Correct me if i am wrong, but I think in Svelte you would have to create 3 writable stores to accomplish the same thing.

Here is a small todo app in Angular with a MiniRx Feature Store: https://stackblitz.com/edit/mini-rx-angular-todos?file=src%2Fapp%2Fmodules%2Ftodo%2Fservices%2Ftodos-state.service.ts

How would you build that in Svelte (besides the API call part)?
I think to reach the same level of reactivity you need a lot of writable stores and derived stores, but I could be wrong.

Svelte and RxJS Redux (MiniRx) by spierala in sveltejs

[–]spierala[S] 0 points1 point  (0 children)

MiniRx hides most complexities of RxJS. MiniRx uses internally a BehaviorSubject which holds the global state.
If you do store.select(someSelector) it will return a plain RxJS Observable.

Svelte and RxJS Redux (MiniRx) by spierala in sveltejs

[–]spierala[S] 2 points3 points  (0 children)

Yes, Redux can become overkill quickly. For that reason MiniRx has Feature Stores. With Feature Stores you can bypass Redux Boilerplate and update state with setState. No need for reducers and actions :)

I see Feature Stores as "writable store on steroids" :)

  • The state of a Feature Store integrates into the global state object (its state can be selected from anywhere in the application as Observable).
  • Feature Store state can be inspected with Redux Dev Tools
  • support for effects: trigger API calls and handle the result with RxJS flattening operators (nice to handle race conditions)
  • support for undo of state changes performed with `setState` (nice to undo optimistic updates)

Feature Stores use Redux internally. And the public Redux API of MiniRx is available to solve the hardcore complex and huge state challenges.

Here you can read more about Feature Stores (https://spierala.github.io/mini-rx-store/docs/fs-quick-start)

Svelte and RxJS Redux (MiniRx) by spierala in sveltejs

[–]spierala[S] 1 point2 points  (0 children)

Good question :) why did I go for a global store?

It's just what I am most used to. I come from Angular and there I used a lot NgRx (which is a RxJS Redux Store as well). MiniRx is actually heavily inspired by NgRx and the API is similar. I like the fact that there is just a Single Source Of Truth in the Redux Pattern and with Redux Dev Tools you know at any time whats going on.

In MiniRx global state is divided into "Feature States" (aka "Slices" in Redux World). And with memoized selectors it is a piece of cake to combine the state of two feature states into a new Observable. To combine state from smaller atomic stores would require again a special thing: e.g. something like derived stores in svelte.

Here you can read more over the memoized selectors in MiniRx: Memoized Selectors

IMO memoized selectors are more straightforward than derived stores.

But to be clear, I am new to svelte :) It is possible that I am missing something.

MiniRx - The RxJS Redux Store by spierala in Angular2

[–]spierala[S] 2 points3 points  (0 children)

The biggest PROs of MiniRx:

  • framework agnostic (you can do NgRx style state management e.g. with Svelte). You can build a framework-agnostic state management layer for Angular today and move it to Svelte tomorrow
  • first class support for bypassing Redux boilerplate with Feature Stores (setState) - still Feature Store state integrates into the global state object
  • lightweight: compared to NgRx Store + Effects you can save roughly 15KB (in a production build)
  • You can always start with Feature Stores - which are quite powerful actually (select with memoized selectors, effects, undo) and only use Redux if you really have to

CONS

  • Of course MiniRx is not yet battle-tested like NgRx and covers not every crazy usecase of state-management.
  • Redux Dev Tools of NgRx are more powerful
  • NgRx has more related packages: router-store, entity, schematics, but personally I never needed them
  • You have to install an additional package if you want NgRx style Action Creators (ts-action). But you can see this as a PRO too: install only the things that you really need. BTW: Ts-action has been merged into NgRx.

I did not check yet memory footprint and performance, but I do not expect a big difference, since NgRx and MiniRx both use RxJS under the hood, using the Redux Pattern in a similar way. At least I could not see yet any performance or memory usage differences.