Can I ask how you find the fastest links between countries and the servers for them? (Background: during my vacation last month I was playing an MMO from the APAC region but with servers in Germany, and it was crazy high latency. It made the experience quite bad. I wanted to rent my own servers and build a faster link for myself.)
While I can't answer your question as asked (and am not OP), I can at least point out that that when I ping my Contabo VPS I see
- 308ms from my landline ADSL2+ (not on the NBN yet, hopefully soon),
- 350ms over 0-bar 4G (house in blind spot, yay),
- 300ms from EC2 running in ap-southeast-2, and
- 312ms from Oracle Cloud in ap-sydney-1 (okay the x86-64 one was 309, the ampere one was 314-317)
which sorta highlights the sore-thumb reality of transatlantic cables: I'm 16,267km/10,108mi away, and there's very very little I can do about it.
The only thing I do really wonder about is if Starlink does p2p backhaul between the satellites, or if they're just floating mirrors... but after just clarifying that radio waves can't go faster than light I'm now unsure whether that would actually make a difference. Hm.
I'm also motivated by small wins. However, at some point you have to face the realization that you need to power through some drudge work to get to those wins. I don't know if there's an easy workaround.
What I found worked best for me was:
1. Being passionate about the goal. This in isolation is not enough, but when you're already working on something, it helps for coping with the inevitable roadblocks and the frustration that follows.
2. Launch asap. Then iterate. Iteration is more fun than launching because the former provides quick wins while the latter requires expending enormous energy upfront before you see a win. The approach that worked for me is to pick the minimal features I need for the end product and build towards that with (metaphorical) blinders on w.r.t. all other features. Really think about the bare minimum features you need, and then slog through till you hit it. It's basically the path of least resistance to get to your MVP. Once I hit that, iteration is more fun.
3. Consistency beats extreme bursts of productivity. Try to improve things a little at a time. This isn't always possible, but still attempting to tackle things in digestible chunks helps me with procrastination. Whenever I do bursts of work, I get the results but also burn out on that particular project. I can't look at it for a while afterwards. It's like squatting five reps of 150kg at the gym and recovering for the rest of the week vs. lifting five reps of 75kg for three days in the week. The difference in total weight moved at the end of the week is huge.
4. Energy management. The above point is one example of energy management over time management. Attempting to micro-manage my time to gain efficiency never seems to work for me in the long run. Instead, thinking about it as managing my overall energy tends to be more fruitful. Eat healthy, daily exercise however little it might be, good sleep, and some social interaction all help. All those will improve overall energy and psychological outlook. Beyond that, work during your peak energy hours and temporarily remove distractions that will waste them.
5. Get feedback. Show it to your target community and gather feedback. This is the best form of external motivation you can get. (Of course this may also be very hard to get depending on the community you're targeting.)
Amazing how Stripe consistently executes fantastic solutions for all the very real and difficult pain points of building commercial products on the web. Fantastic work!
A fifth might even sound off key if you're very used to equal temperament (it's about 2 cents below an equal temperament). You know it by there being no or less "wobbling" between the tones.
For listening tips, look for vocalist groups where there's "One Voice Per Part" (OVPP). Voces8, Vox Luminis, etc. When there's only one voice, you don't get the inherent wobbling happening when two instruments/voices play in unison.
Not all genres are possible to have just (jazz chord colors would sound rubbish).
You basically can look up just intonation versus equal temperament for the basics. https://pages.mtu.edu/~suits/scales.html gives the mathematical answer but doesn't get into the history.
A clause that says "assuming twelve-tone equal temperament" would be sufficient here, but you can really go down the rabbit hole if you start digging into scales (see microtonal), and your page is meant to be more basic.
Very nice! I like your way much better than the one in my writeup :-) I'll refactor things over the weekend to use this approach if that's OK with you.
That would be very cool! Maybe just give me a mention if that is cool, you can use the code verbatim (or changed) if you want. My name is Édrihan Lévesque. My book on music theory which isn't out is called Way Of Change.. which is what I refer to these algorithms by.
You might just realise how this approach goes back into keys.. like Ab, C#, F.. it's almost exactly the same, but you have to account for the accidentals being on the right side of the string as opposed the the left, as it is in Jazz.
And ya! - I actually originally wrote almost exactly what you wrote.. but I kept adding enharmonics of things.. like ['3','##2','b4','bbb5'] # and so on..
So I got to a point where it's like.. yeah this should just understand it. I'll give you another hint for the keys.. Use the scale degree to get your root note name. Get rid of the accidentals (do it after). Once you know that Major in dist == [0,2,4,5,7,9,11] you can use the list that contains all 12 notes in one spelling to find it. That's why I'm getting rid of accidentals. That way if you're looking for C# but you wrote as I did with all flat-spellings, it throws away the "#", finds the 'C', counts from there, and finally adds the sharp back if necessary. Just kinda paying attention to adding a flat to a note with a sharp.. they cancel out etc. Usually that's why it makes sense to keep the degree part separate from the accidentals part in some way. At the end you reconcile a difference between distance and degree-distance. Really easy to do double sharps or flats that way cause you know that all valid note names will work.. don't have to worry about giving it a particular format.
Not only can you use any names notes may have, but you can specify an odd rule.. like for example the difference between looking at the scale in "Western" vs. "Indian". Let's say a scale like Mela Vanaspati/Raga Bhanumati/Zaptian (number 1129 on my site). If it's Zaptian, then let's say we're Western. I'd say it's spelled like the first line following this. If it's a Raga or Mela and we're looking at it that way then even in Jazz we can correctly see it how it's originally stated as the second spelling.
1 b2 2 4 5 6 b7
1 b2 bb3 4 5 6 b7
For me in this case the Indian numbers make sense as you are just counting up integers.. albeit with the "ugly" double flat. And yes it's ugly unless you were using a system that doesn't express it as uglily. Here I'm just comparing the first three notes in a few ways. Let's say for a bb3 a system that would express that less ugly than some would be in the key of C#.. as in [1 b2 bb3] == [C# D Eb] == [Db Ebb Fbb]. Of course all these can be described as [S R1 G1]. This is how it's notated in Indian.. but equivilent to Jazz in that there is a part that talks of which nth note of the change and a part that talks about how far from where it usually is. Obviously C# is better for this change than Db. Even if you use the Western Jazz to derive it it's not good unless in C#. Of course the Western jazz statement to me is more ugly because it doesn't count up in degrees sensibly from 1 through 7. The ugliness of the jazz numbers is equal to the ugliness of putting it in the key of C, like I said before. On other changes Jazz wins because Indian won't let you use #4 or b5.
I'm glad you'll use my codes too. Eventually once you have it working you can do a scale in the key of like... let's say Abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.. which is actually also known as C or even B#.. ok stay sharp out there in code land. ;) Music theory is an obsession of mine and fun with codes. There are always many options. There's more than one correct answer. And there are ones that make less sense than others.
And P.S. to anyone just dropping in.. we're lazy so we type b instead of ♭, and # instead of ♯. The former is pronounced flat, is equal to the number -1 and is pronounced double-flat if there are two. The latter is pronounced sharp, is equal to +1 and same rule applies about not pronouncing something like "sharp sharp" in music ever. This way I can pronounce C septuple-sharp, which I made up. That particular strange way to describe a note is equivalent to G because music is weird like that. Also if something has six sharps then you could just as easily say it has six flats. So B♭♭♭♭♭♭ is the same note as B♯♯♯♯♯♯. And yes those are the very sexy-sounding sextuple type words ;)