RVS_BlueThoth
nanostores
RVS_BlueThoth | nanostores | |
---|---|---|
2 | 17 | |
13 | 4,772 | |
- | 2.6% | |
3.6 | 8.4 | |
3 months ago | 5 days ago | |
Swift | TypeScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
RVS_BlueThoth
-
How to Write a Great Readme
I generally have a “What Problem Does This Solve?” section in my READMEs.
https://github.com/LittleGreenViper/LGV_TZ_Lookup#what-probl...
https://github.com/LittleGreenViper/LGV_MeetingServer#what-p...
https://github.com/RiftValleySoftware/RVS_Spinner#what-probl...
https://github.com/RiftValleySoftware/RVS_BlueThoth#what-pro...
https://github.com/RiftValleySoftware/RVS_PersistentPrefs#wh...
etc.
-
You don’t need to work on hard problems
> I had one developer take 6 months to build a (relatively simple) top nav for a web app. This shouldn't have taken more than 1-2 weeks, even with a careful eye for detail.
Oh, you mean "bikeshedding."
Here's an example of the difference between basic quality, and High Quality:
If you look at most of the repos for SPM modules in my portfolio[0], you'll see that the vast majority have test harnesses. I prefer using test harnesses[1].
These test harnesses tend to be pretty damn robust apps. Many are "ready for app store" robust. A lot of folks would just publish them, "as is." I've been writing apps for a very long time. I'm fairly good at this.
I can write a fairly good test harness, with full app capabilities, in less than a day. If I take the time to localize it, maybe add a day or so.
Here's an example of some test harnesses[2]. Note that there are four of them. These represent the four different target environments for Apple (iOS/iPadOS, WatchOS, TVOS, and MacOS). I'll probably need to fork iOS and iPadOS, in the future, but we're not there, yet. A single codebase is still good for both.
They test a Bluetooth framework[3].
It probably took me around a week or so, to write each one. They are pretty damn good. I think they are all "App Store ready."
I decided to actually go ahead, and create a set of apps, based on these[4], [5], [6].
I spent well over a month, on each, after merging over the test harness codebases, to make them ready for the App Store. Lots of UX testing, removing code that only applied to testing, and adding "friendlier" user interface.
I'm working on an app that I started about a year ago. Actually, I started it over ten years ago, if you include the two servers that I wrote, upon which it depends.
One of the reasons that it has taken so long, is that I have truncated months of work, and tossed them in the garbage, because they were not the proper way to go. I have an "evolutionary design" process[7], that means this can happen. I plan for it. I've probably shitcanned three months' of work.
Another thing that I do, is have an "always beta" approach to Quality. I maintain the product at "incomplete, but ship Quality" status for as much of the project as possible. In fact, I've been sharing it with the team, using TestFlight, since Oct 3, 2020 at 7:47 AM (I got that from the TestFlight metadata).
That means that the app has been stable and robust enough for user testing, and approval for basic App Store release (TestFlight External Testing is a more relaxed standard, but try pushing out a crasher, and see how far that goes).
I add localization support, accessibility, Dark Mode support, leak testing, etc., at every turn. It's very useful, because I can solicit immediate feedback from non-tech team members. It also means that the "basics" for App Store release are constantly being tested and validated.
Even more useful, if we want to ask for money, it's dam easy. We just loop the person we're begging from, into the TestFlight External Tester pool, and they can run the app without a Marketing chaperone, or sacrifices to the demo gods. We can also get valuable feedback from them.
It's really, really nice, and it has been, for many months.
I feel like we are now at a "starting point." Even though it has been a fully-functioning, release-ready app for the last couple of months, it need the "MVP treatment," where the testing pool is expanded, and we start applying it to "in the wild" scenarios.
Lots of companies use their customers as guinea pigs for the first several releases; usually by shoving baling-wire-and-duct-tape junk down their throats (and making them pay for it), before hitting their stride. It's a deliberate strategy. Some months ago, I read a post, here by a founder, declaring that "if you don't get physically sick at the quality of the code in your MVP, then you are spending too much time on the code quality."
Basically, deliberately write garbage, and force it on your users.
One of the reasons that I took on this project, was the founder is a friend of mine. He is running it as an NPO (501c3), and putting his own money into it. He doesn't really have much of it, to begin with. Also, more alarmingly, he didn't actually have a particularly good idea of what, exactly, he wanted the app to be. That's a recipe for disaster.
He asked me to help him vet some development shops he was approaching, to realize his vision.
It was eye-opening. He got a number of ridiculous quotes. I know what is necessary for this type of project (not small). For example, when one said that they'll deliver a full multi-server, multi-client app for MVP in three months (firm), upon getting a vague, hand-wavy requirements spec, it was hard for me to keep a straight face.
After a few of these, I just got disgusted, and said "Screw this. I'll do it." I've been developing it for free, as a native iOS/iPadOS app.
He has to pinch himself.
[0] https://stackoverflow.com/story/chrismarshall
[1] https://littlegreenviper.com/miscellany/testing-harness-vs-u...
[2] https://github.com/RiftValleySoftware/RVS_BlueThoth/tree/mas...
[3] https://github.com/RiftValleySoftware/RVS_BlueThoth
[4] https://apps.apple.com/us/app/blue-van-clef-for-mobile/id151... (iOS -Includes Watch app)
[5] https://apps.apple.com/us/app/blue-van-clef/id1529005127 (Mac)
[6] https://apps.apple.com/us/app/blue-van-clef-for-tv/id1529181... (TV)
[7] https://littlegreenviper.com/miscellany/evolutionary-design-...
nanostores
-
Astro.js as an alternative to Next.js: pushing the limits
In its docs, Astro recommends nanostores, but I’ve used effector in the past. And LOVED IT. So I’ve used it for this project as well.
-
React roadmap ( with explanations and resources, all in one place)
Nanostores explanation
-
How to Write a Great Readme
vidstack is very light on technical details but starts with a concise intro and a screenshot, as well as relevant links: https://github.com/vidstack/player
payload is well-structured in general: https://github.com/payloadcms/payload
nanostores starts out with an intro and telling code examples, followed by lots of technical details: https://github.com/nanostores/nanostores
-
Is redux and thunks still used or are there other alternatives for it now?
Nanostores and Reatom are also great, fast atomic libs
-
Is it possible to build a “framework agnostic” library like tanstack table?
Astro handles multi-framework components (React, Vue, etc) and they recommend using the nanostores library for shared state.
-
how to share state between components with distant shared parent?
Checkout Nanostore it's what Astro.build recommends for sharing state across different ui libraries.
-
Building a multi-framework dashboard with Astro
All of these are valid ways of fixing the state management issue, but it's clear that we need to find a common solution that works for all the UI libraries. This is where nanostores comes into play! The description they provide on their GitHub page is simply perfect:
- A tiny state manager for React/Vue/Svelte with many atomic tree-shakable stores
-
Explanation on how Redux or React Context could help and picking the best option
Jotai and Valtio are both also really good. Recently looked at Nanostore as well and has some similarity to Jotai and Recoil.
-
My next project will use this Ui lib...
Just to chime in on framework agnostic stores, Astro.build recommends using Nano Stores to handle reactivity, as the base library is very small and they have adapters for most relevant frameworks. I definitely agree that avoiding framework lock-in is the smart thing to do.
What are some alternatives?
bluesnooze - Sleeping Mac = Bluetooth off
jotai - 👻 Primitive and flexible state management for React
SwiftUI-Kit - A SwiftUI system components and interactions demo app
effector-react - Business logic with ease ☄️
SwiftLinkPreview - It makes a preview from an URL, grabbing all the information such as title, relevant texts and images.
nanoid - A tiny (124 bytes), secure, URL-friendly, unique string ID generator for JavaScript
revenut-web - SaaS metrics in a nutshell
zustand - 🐻 Bear necessities for state management in React
SwifterSwift - A handy collection of more than 500 native Swift extensions to boost your productivity.
nextjs-course-code - Source code for my NextJS course (https://acad.link/nextjs)
MQDisplay - Testable and composable UI based on MQDo and SwiftUI. The project was made by Miquido: https://www.miquido.com/
create-figma-plugin - :battery: The comprehensive toolkit for developing plugins and widgets for Figma and FigJam