Webapp to easily compare switch force curves
-
- Location: UK
- Main keyboard: 5251
- Main mouse: Apple Trackpad
- Favorite switch: Beamspring
I'm a big consumer of the keyboard switch force curve graphs that HaaTa and ThereminGoat have made available to the community. Whenever I want to get an idea of what a switch is like, the first thing I do is look up its force curve and compare it to force curves of switches I'm familiar with. This often results in having lots of windows open with a graph each, and trying to eye the more minute differences between them when I really should have multiple curves in the same graph.
I have created a small webapp that does exactly this: http://www.switchesdb.com/
It allows you to search through switches measured by HaaTa and ThereminGoat, then view their force curves and optionally overlay multiple within a single graph.
You may wonder why I called it "switches database." There are already a dozen online databases for keyboard switches and I don't intend to manually curate and maintain facts/stats like these do. I wish to provide a greater focus on *data science* and collate measurements from multiple sources and use this data to extrapolate more information on the switches. HaaTa has already done this by calculating and including *total force* (work) in his graphs, and I think he had ambitions for more (ThereminGoat has recently announced similar aspirations). I share these ambitions and think there lies lots of potential in curve analysis, and using the results as a basis for discovering new switches and comparing existing ones.
Let's say you like a switch, but you wish it had less preload and more tactile drop-off. Imagine being able to look up these values for your switch, and then filter for your target values and quickly see which switches match, instead of spending hours upon hours searching the internet for subjective comments which later turn out to be incorrect.
Well that was a foray into what I hope to come. Right now the webapp is just a more efficient interface to the force curves already available. If you have suggestions for what kind of additional data we can extract from the measurements, and particularly if you have the maths (numpy is even better) to calculate it (reliably for measurements of nearly a thousand switches) - and likewise, any suggestions to improve the current functionality of the webapp - please let me know!
I have created a small webapp that does exactly this: http://www.switchesdb.com/
It allows you to search through switches measured by HaaTa and ThereminGoat, then view their force curves and optionally overlay multiple within a single graph.
You may wonder why I called it "switches database." There are already a dozen online databases for keyboard switches and I don't intend to manually curate and maintain facts/stats like these do. I wish to provide a greater focus on *data science* and collate measurements from multiple sources and use this data to extrapolate more information on the switches. HaaTa has already done this by calculating and including *total force* (work) in his graphs, and I think he had ambitions for more (ThereminGoat has recently announced similar aspirations). I share these ambitions and think there lies lots of potential in curve analysis, and using the results as a basis for discovering new switches and comparing existing ones.
Let's say you like a switch, but you wish it had less preload and more tactile drop-off. Imagine being able to look up these values for your switch, and then filter for your target values and quickly see which switches match, instead of spending hours upon hours searching the internet for subjective comments which later turn out to be incorrect.
Well that was a foray into what I hope to come. Right now the webapp is just a more efficient interface to the force curves already available. If you have suggestions for what kind of additional data we can extract from the measurements, and particularly if you have the maths (numpy is even better) to calculate it (reliably for measurements of nearly a thousand switches) - and likewise, any suggestions to improve the current functionality of the webapp - please let me know!
-
- Location: Stockholm, Sweden
- DT Pro Member: 0011
Thanks for doing this! I've previously found myself comparing force curves by scaling and superimposing screenshots.
-
- Location: UK
- Main keyboard: 5251
- Main mouse: Apple Trackpad
- Favorite switch: Beamspring
I'm glad I wasn't the only one.Findecanor wrote: ↑05 Jan 2023, 16:23Thanks for doing this! I've previously found myself comparing force curves by scaling and superimposing screenshots.
I'll create a responsive layout next time I work on it, so you won't have to zoom and drag around the page.
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
Beautiful.
You’ve made something very helpful. Especially when fighting holy wars between different switches!
Personally, I reckon there’s a lot, lot more to a switch than its force graph. Just look at Model M vs. Model F for one example: the charts don’t capture F’s slick, sharp, downright classy majesty at all. But these charts do make a perfectly valid starting point when searching for your next ideal keyboard. They’re a beginning to an end.
You’ve made something very helpful. Especially when fighting holy wars between different switches!
Personally, I reckon there’s a lot, lot more to a switch than its force graph. Just look at Model M vs. Model F for one example: the charts don’t capture F’s slick, sharp, downright classy majesty at all. But these charts do make a perfectly valid starting point when searching for your next ideal keyboard. They’re a beginning to an end.
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
Here's Model F vs. Model M, for instance:
Note the missing legend to tell which one's which on the chart. Consider this a feature request for the export button. Also permalinks to (arbitrary user created) charts.
Anyway, can you guess which switch is which on this chart? They look pretty similar besides the actuation point and the recovery of resistance after this until bottoming out at quite different depths. What I don't see—nor can you on such charts—is the smoothness of the travel and the satisfaction of the click. M and F are worlds apart on both counts.
Note the missing legend to tell which one's which on the chart. Consider this a feature request for the export button. Also permalinks to (arbitrary user created) charts.
Anyway, can you guess which switch is which on this chart? They look pretty similar besides the actuation point and the recovery of resistance after this until bottoming out at quite different depths. What I don't see—nor can you on such charts—is the smoothness of the travel and the satisfaction of the click. M and F are worlds apart on both counts.
Spoiler:
-
- Location: UK
- Main keyboard: 5251
- Main mouse: Apple Trackpad
- Favorite switch: Beamspring
Thanks for the feedback!
Regarding which is which, I've been looking at force curves long enough to be able to identify the famous switches by their force curve.
I've delegated the chart functionality to vega-lite, and disabled its legend as it would be redundant with the interactive HTML legend above it. Unfortunately this means its built-in export functionality also lacks the legend. It's definitely something I want to add once I can find an alternative approach. Permalinks is on the roadmap as well (I want to include the entire state of the app in the URL, so you can copy/bookmark it and the page will be identical when opened again).
Regarding which is which, I've been looking at force curves long enough to be able to identify the famous switches by their force curve.
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
Yes, that's how I'd like to see permalinks done, too: the original query, free to be tweaked, not just some numeric static.
The physics student in me wonders if anyone's plotted differentials and integrals of those charts? Maybe those correlate in some telling way with switch perceptions.
The physics student in me wonders if anyone's plotted differentials and integrals of those charts? Maybe those correlate in some telling way with switch perceptions.
- Scarpia
- Location: Sweden
- Main keyboard: F77 / Alps SKCM Brown TKL
- Main mouse: Logitech MX Anywhere 2
- Favorite switch: Capacitive BS, Alps SKCM Brown
- DT Pro Member: 0223
You’ve created something really cool - I have already used it on two separate occasions and I was on my iPhone 6s (small screen) both time and had to power through the non-responsive UX — something I don’t willingly endure unless I have to, so I can only conclude that you’re really onto something!
-
- Location: UK
- Main keyboard: 5251
- Main mouse: Apple Trackpad
- Favorite switch: Beamspring
Glad to hear, Scarpia!
I've given it some TLC since and it's now mobile-responsive, includes legends, and the URL contains the displayed switches (has the cool side-effect of being able to re-open a closed tab and use the back/forward buttons).
Let me know if you have any other suggestions for improvements. I still have a lot on the todo-list, as well as notes on how to calculate potentially interesting values from the data, which I'll get to once I've finished all the other stuff.
I've given it some TLC since and it's now mobile-responsive, includes legends, and the URL contains the displayed switches (has the cool side-effect of being able to re-open a closed tab and use the back/forward buttons).
Let me know if you have any other suggestions for improvements. I still have a lot on the todo-list, as well as notes on how to calculate potentially interesting values from the data, which I'll get to once I've finished all the other stuff.
- Scarpia
- Location: Sweden
- Main keyboard: F77 / Alps SKCM Brown TKL
- Main mouse: Logitech MX Anywhere 2
- Favorite switch: Capacitive BS, Alps SKCM Brown
- DT Pro Member: 0223
Much better, thanks! A few minor ideas remaining to polish up the mobile experience:
- Increase the size of all interactive elements to account for thumbs being far less precise than mouse cursors. (Links, search field, open/close sidebar, Remove curve buttons)
- if possible, place the chart legend below the chart, as the mobile screen width can’t accommodate both
-
- Location: UK
- Main keyboard: 5251
- Main mouse: Apple Trackpad
- Favorite switch: Beamspring
I'll see what I can do. As is probably obvious, UI design isn't my forte
ThereminGoat is measuring new switches almost every day, so hopefully there will come a day where most things have been measured! You could check out Zealios Purple, which is basically an Ergo Clear before Cherry started producing them.
ThereminGoat is measuring new switches almost every day, so hopefully there will come a day where most things have been measured! You could check out Zealios Purple, which is basically an Ergo Clear before Cherry started producing them.
- Scarpia
- Location: Sweden
- Main keyboard: F77 / Alps SKCM Brown TKL
- Main mouse: Logitech MX Anywhere 2
- Favorite switch: Capacitive BS, Alps SKCM Brown
- DT Pro Member: 0223
Is the site code on Github? I could take a stab at it myself if you’re open to pull requests. Of course this assumes I somehow find half an hour to do it between work, toddlers and keyboard sales
-
- Location: UK
- Main keyboard: 5251
- Main mouse: Apple Trackpad
- Favorite switch: Beamspring
Yes, it's hosted here (also linked with the Source button in the bottom-left corner of the webapp): https://github.com/heralden/switchesdb
It's definitely open to PRs. Feel free to change any part of the CSS - it's mostly functional now and not pretty, so any help from someone with a designer eye would be appreciated!
An update regarding Durock, Ergo Clears and Boba's: bluepylon's dataset (https://github.com/bluepylons/Open-Swit ... asurements) was recently brought to my attention, so I'll be adding these soon.
It's definitely open to PRs. Feel free to change any part of the CSS - it's mostly functional now and not pretty, so any help from someone with a designer eye would be appreciated!
An update regarding Durock, Ergo Clears and Boba's: bluepylon's dataset (https://github.com/bluepylons/Open-Swit ... asurements) was recently brought to my attention, so I'll be adding these soon.
-
- Location: UK
- Main keyboard: 5251
- Main mouse: Apple Trackpad
- Favorite switch: Beamspring
The update adding bluepylons data is live now, which brings the total switch count to a little over 1000!
I started automatically adjusting the curves (instead of using the source data directly), so there should be improvements overall, but probably some incorrectly adjusted ones as well.
Duplicate switches (measured by different sources) are also no longer merged, and the source of a measurement is made apparent everywhere in the UI. Comparing the different measurements of same switches is quite interesting - they're usually close to identical curves, but don't overlap completely. For some switches like Cherry MX Blue, it's quite different! I think this comes down to how the switch internals hop around when it's being depressed very slowly, and how the different measuring rigs pick this up.
I started automatically adjusting the curves (instead of using the source data directly), so there should be improvements overall, but probably some incorrectly adjusted ones as well.
Duplicate switches (measured by different sources) are also no longer merged, and the source of a measurement is made apparent everywhere in the UI. Comparing the different measurements of same switches is quite interesting - they're usually close to identical curves, but don't overlap completely. For some switches like Cherry MX Blue, it's quite different! I think this comes down to how the switch internals hop around when it's being depressed very slowly, and how the different measuring rigs pick this up.