HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
RiftValleySoftware
RVS_Spinner
Swift2019–2026
RiftValleySoftware / RVS_Spinner

RVS_Spinner

A Fancy "Popup Prize-Wheel Spinner" UIControl

3Distinct people
21Mentions
0Explicit recommenders
27GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A Fancy "Popup Prize-Wheel Spinner" UIControl

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 12:03:30 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year21 dated mentions

Observed mentions: 2019-06-02 19:06:44 UTC to 2026-10-24 02:30:44 UTC.

0123452019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC110
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC303
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC505
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC303
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC303
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC404

What Hacker News says

5 sources
I have had quite a bit of experience with this. I'm primarily a native Apple application developer, but have done some backend stuff, as well. I have designed numerous Web sites, but I am not a particularly skilled Web designer. I was, in the days of yore, an artist. I have also taken numerous design and usability courses, from the likes of NNG (Nielsen-Norman Group). I'm a passable graphic designer, but don't pretend to be anywhere near "pro" level. I know enough to be dangerous (and use many of the tools). I have designed a bunch of fancy widgets[0 - 4]. I actually use very few of them, because they are too intrusive. I am in the "refining UX" stage of an iOS app that I've been developing for the last year and a half, or so. I'm working with designers and testers, to clean up the information architecture, interaction, usability, aesthet
Read the rest
ic design, and accessibility. For me, the most valuable technique, has been rapid, high-quality prototyping. I have been abusing Apple's TestFlight[5] beta release system, and have been using it to make regular (usually, a couple a day) releases to the rest of the team, who are mostly non-tech people. I've made over 600 releases. The first release was made less than a month after first code submission. The way I use it, is that I run what I call "constant beta." The app is always at "ship" Quality, even if incomplete. This means that the code people get, is fully operational, for the currently developed feature set, and they aren't using some kind of "lash-up" kludgy throwaway code. They are working with the actual code that will ship. This has the advantage of constant vetting by Apple. They don't test TestFlight to the same level as the App Store, but they look for things like unsupported API usage, code signing issues, and obvious quality issues (like crashes). In at least one case, their testing found a crash that I missed. Once the first release for a version has been vetted (takes a day or so), subsequent build releases, within that version, are approved almost immediately, so I get quick turnaround. If the testers encounter crashes, I get a fairly useless report. If I use a Ouija board, I can often figure out the general part of the application affected. With this workflow, we can have a highly iterative process, with aesthetics, usability, and general UX, being tested, almost from the start. It also means that integration testing (the most important kind), starts almost immediately, and continues, throughout the development lifecycle. It also means that I throw away a lot of good code. Most of those widgets I referenced were once in the app, and we decided not to use them, so I broke them into open-source packages, for reuse in future projects (I tend to eat my own dog food. I have a lot of packages in the app). I'm pretty good at interpreting designs. I can accept Figma, Photoshop, Sketch, Illustrator, Napkin Sketch, or Hand-Wavy Verbal Description, and turn it into UX. I usually have something for the designers to try out, within minutes. Most of the actual app assets are generated (and stored in the app) as vector PDF, via Illustrator, and I will often redesign raster art, into vector. The designers and non-tech stakeholders seem to like it. WFM. YMMV. [0] https://github.com/RiftValleySoftware/RVS_Spinner [1] https://github.com/RiftValleySoftware/RVS_MaskButton [2] https://github.com/RiftValleySoftware/RVS_Checkbox [3] https://github.com/RiftValleySoftware/RVS_RetroLEDDisplay [4] https://github.com/RiftValleySoftware/RVS_AutofillTextField [5] https://developer.apple.com/testflight/
In Ask HN: How to get developers and UI designers to work well together
I've learned to design UX that "gets out of the way." I have written some pretty cool UI elements that I've ended up, not using. Here's an example; It's a cool "popup prize-wheel spinner" for iOS, and I have tried using it a few times, but we always decide that it's too intrusive: https://github.com/RiftValleySoftware/RVS_Spinner I generally end up taking "The Road Most Traveled By": https://littlegreenviper.com/miscellany/the-road-most-travel...
In The most satisfying checkbox
I have to be willing to throw away a lot of code, and use implementation techniques that afford flexibility. I've been working on a fairly large-scale iOS app, for the last couple of years. It's about 40 screens (Most of my apps are 2-5 screens). It also has a fairly substantial backend (that I also wrote). One of the reasons that it has taken that long, is because I have thrown away -literally- months' worth of work. I spend a lot of time on each screen, leaving placeholders, or disabled selectors, for unimplemented ones. Each screen is done as "ship" Quality. People aren't testing a prototype; they are testing the actual ship code. I call this "constant beta." The app is always at ship Quality. Localization, accessibility, and "white glove" testing are being done, right from the start. This means that integration testing (the most impor
Read the rest
tant type of testing, in my opinion) starts almost immediately. Since this is iOS, I can use Apple's TestFlight beta-testing system, to distribute the builds to the non-technical stakeholders. I generally do a couple of releases a day. I have done over 600 releases, so far. Bugs get found quickly. It's important to find bugs as close to the point they were created, as possible. Since this is integration testing, whole subsystems get tested; not just individual modules. Also, the testers are much closer to the actual target audience, than you would get with professional QA teams. I tend to prefer the use of test harnesses, as opposed to unit tests, for this reason[0]. A lot of times (it has happened numerous times, in this project) we "get what we want," and realize that it isn't actually what we want, or it's unusable/impossible. A lot of times, you can't get to that point, unless you have built the app pretty completely. The absolute worst thing that can happen, is that you get exactly what you asked for. That's one of the problems with using outsourced shops and loosely-coupled distributed development. These techniques require heavy-duty specification, and those specifications often end up as rock-hard cement. No one wants to change them; even when it becomes clear that the result will be less-than-satisfactory. I've been through that, a number of times. But the crap-quality MVP isn't (in my opinion) an acceptable solution, either. Every now and then, one gets a home run, but, more frequently, we end up with foul balls. The brand gets damaged, the engineers quit in disgust, the money gets used up, and it becomes difficult to pivot. One thing that I often do, is spin off code that I'm not gonna use, into subprojects, for reuse in other projects. Here are a couple of examples: https://github.com/RiftValleySoftware/RVS_Spinner https://github.com/RiftValleySoftware/RVS_CalendarInput I'm not using these in the project (they were written for the project, but we decided they weren't appropriate), but they are available for other projects. [0] https://littlegreenviper.com/various/testing-harness-vs-unit...
In Write documentation first, then build
Not completely. The way that it works for me, is that I start work on a project, and, while building, I notice that some code that I'm working on is: 1) Pretty complex, and fairly insular; and/or 2) Possibly useful, elsewhere. If that's the case, I will then stop work on the main project, and take some time to extract and "genericize" the subproject. I'll usually set it up as a standalone open-source project; complete with tests and documentation. As the commenter stated, I think that this results in some excellent code. I always clean the house before the guests arrive. This may happen before I have completed the coding in the main project, or may happen as the result of a review, after the fact. In some cases, I very clearly need to develop a subproject before starting on the main project, or before certain milestones within that projec
Read the rest
t (for example, SDKs or drivers). In that case, the timelines are completely separate. If you look at my GH repos, you'll see a whole bunch of these projects, including some rather strange ones, like an XML duration parser[0]. These are the types of projects that I extract. In some cases, I end up not using the extracted project in my main project (happens to some of my UI widgets). In that case, even though I am not using it, I still have an excellent project for the future. Here's an example[1]. I have ended up not using the spinner in my own work, as it was too obtrusive a widget, but it's nice to have it available for future projects. [0] https://github.com/RiftValleySoftware/RVS_ParseXMLDuration [1] https://github.com/RiftValleySoftware/RVS_Spinner
In Code colocation is king

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.