
And no changes to midpoints were needed because they're already by orb.
The midpoint bugfixing is the last part of this beta that still needs to get fixed before we can call it a stable release and I can start working on 1. stable Linux and MacOS releases, and 2. the 0.7 stuff.Jim Eshelman wrote: Sun Feb 09, 2025 7:08 pm And no changes to midpoints were needed because they're already by orb.
That's an exciting juncture! As much as I want to get to 1.0, I'd also like to begin offering this to people who are on MacOS since there is really nothing for them to use right now to do anything like we want.Ember Nyx wrote: Sun Feb 09, 2025 8:07 pm The midpoint bugfixing is the last part of this beta that still needs to get fixed before we can call it a stable release and I can start working on 1. stable Linux and MacOS releases, and 2. the 0.7 stuff.
My concept is that it's only useful in the natal right now, and there should an Options setting to turn it on/off. Perhaps default it to On, though, so people start seeing it.The things on my radar for 0.7 are:
Add Novien table to bottom of chart page (i.e. the natal chart page, I'm assuming)
This might be one or the coolest additions. I'm at least interested to see whether the mind takes to this better than NOT having it. - As part of this, I think an important feature is to use it to capture transits to natal angles in return charts (either in the first list because it's foreground or in the Other Partile). - Oh, I just saw that you had that last one below.Allow users to display contacts with angles as aspects in the aspect list (i.e. optionally, additionally parse them as aspects within the normal rules that govern contacts to angles)
All good.Add support for 10° multiple aspects
Add partile transits to natal angles to Other Partile section
Include zips under source control (i.e. distribute downloads via Github rather than pass around direct download links)
Some of these I'm quite eager to see. (I'd do a lot more KLRs with it. Even though I have a kluge in Solar Fire, the precision isn't as good as I'd like.) I don't know how much people in general are interested in all this, but we ultimately should have it.Additionally, I'm hoping to get in some more infrastructure for the minor solunar return charts - Ennead variants, KLRs, NLRs, anlunar variants, etc. Lunisolars and solilunars would probably come later due to some technical (algorithmic) challenges. (I probably have semi-usable code lying around to calculate those, but I'm not confident in its behavior.)
Oh, yeah! I definitely hear that. I'm not sure what we'll find with stuff like mundane three-layered aspects in a Kinetic.It's fine if the kinks aren't worked out on those - but I find myself continually missing this functionality whenever I slog through calculating one of these charts and their aspects (especially mundane aspects) the hard way.
You're right, and I kind of forgot about that part.Jim Eshelman wrote: Mon Feb 10, 2025 8:51 am Since KLRs require calculating secondary progressions, will these be available ahead of the return variants? Having secondaries by themselves first would make QA go better, since getting the rate exactly right needs some work compared to any software in the past. -- Unfortunately, introducing secondaries introduces a few extra complications to get the variants correct.
Code: Select all
Number of days elapsed since birth = target datetime - birth datetime
Julian day for prog planets = number of days elapsed since birth * progression rate
(Then just plug in that julian day and calculate all the positions)
Yes, that's it in essence (and that's it exactly for the simplest case). The whole complication of the simplest case is in getting the exact progression rate constant.Ember Nyx wrote: Mon Feb 10, 2025 10:25 pm Here's my thought process on that - getting the julian day corresponding to the progressed planets is I think as simple as:
(Pseudocode)Is that correct?Code: Select all
Number of days elapsed since birth = target datetime - birth datetime Julian day for prog planets = number of days elapsed since birth * progression rate (Then just plug in that julian day and calculate all the positions)
One of these days we're going to have to confront the fact that we have too many perfect synonyms in use - multiple names for the same thing. When quotidians first came into use (and multiple variants of them unfolded) it seemed obvious to give them their own names. However, ultimately, the natal quotidian is exactly the same as the progressed natal chart. (Ditto with the solar quotidian and the progressed SSR.) So, in doing secondary progressions, we are exactly doing quotidians already.Also, I feel like it would be a good idea to eventually include quotidian charts on the same transit/prog menu page, since they'd work the same way: very similarly to solunars, but using an exact date and time rather than finding active/forward charts. Calculating quotidians requires a lot of similar infrastructure to calculating anlunars, KLRs, etc - we'd need to calculate a few charts along the way to get their points, and in doing so would need to know "what is the UTC julian day for the active SSR/quarti-SSR/whatever," etc.
I see what you're saying, and yeah, it's probably worth it to nail down the core 1.0 stuff as the immediate next priority. I do think we should talk about menu design/etc prior to 1.0 release. Time Matters doesn't really conform to modern UI/UX conventions and I'd like to rearrange things before championing it widely.Jim Eshelman wrote: Fri Feb 14, 2025 10:24 am That you've essentially finished the original plan for 1.0 doesn't mean we can't add more (and it certainly doesn't mean we shouldn't look ahead to anticipate infrastructure needs). I wanted to float the question, though, of whether it's a good idea to add these extra things at this stage. There seems to me great merit in having a full release 1.0 that we can start evangelizing, spreading the word online, getting more people involved in a product we're willing to say is completely finished (while subject to expansion).
Mike N's original plan of natals / ingresses / solar and lunar returns has been sharpened a great deal. Maybe a fresh QA look will find little things that need tweaking (oh, you said there's is something still to be done to get midpoints right - I forgot that). What do you think about making a beeline for a 1.0 release with the short list remaining?
Nitpick, I see things like transits/progs/etc as being 1.x releases rather than 2.0. I personally see a 2.0 release as something like 1. an entirely new, modernized Python framework instead of Tkinter (or moving to something like Electron, which is Javascript-based), or more likely, 2. a web application that would be inherently cross-platform and mobile-compatible out of the gate. I don't think there's a reasonable way to get full mobile and cross-platform desktop functionality without having it be a website (which explains why no existing program is either). That is a whole other can of worms (where do charts live? etc), but I see Time Matters (or an open-source successor, whatever the name) as eventually being a web app.That would mean Noviens now and the rest of your 0.7 list being a 2.0 target.
Agreed.Ember Nyx wrote: Thu Feb 27, 2025 12:30 am I may have finally fixed midpoint weirdness. I'm fairly confident that I'm adding the midpoints using the correct logic (only count RA contacts if both points are in orb to EP-a/WP-a even if that's not their closest angularity, etc), and I am apparently calculating them correctly, but I'm not totally sure I'm marking mundane vs non-mundane midpoints correctly.
I think in our original discussion, you talked about contacts to EP and Zenith (i.e. squares to Asc/Mc) as being mundane midpoints, same as PVL to angle or RA to EP-a, except that we count these in longitude. That would mean we should mark them with an M. But wouldn't a conjunction to Zenith (for example) also be an ecliptical square to Ascendant, which is a non-mundane midpoint? Couldn't any contact to Zenith or EP be rephrased as a different relationship to As/Mc?
We get could really picky here (I'm not sure we want to, but we could) depending on whether the user has defined 90° contacts to the half-sum as direct or indirect. If selected as direct (my own modelling), then 0/180/90 are all the same and they are all direct contacts to Z-N or EP-WP. OTOH, if the user says squares to the half-sum are indirect, then only the "squares to A or M" count as Z/N or EP/WP contacts for ingresses.I feel like conjunction/opposition to Asc/Mc would be considered "non-mundane" (and seemingly nonexistent in practice) midpoints, but squares and octiles would have to be considered mundane midpoints, as they would have some relationship with Z/Ep.
This is an example in ecliptical midpoint contacts and you limited it to ingresses. That's already suspicious to me in practice except I did say we have to have both for comparison. So...Ember Nyx wrote: Thu Feb 27, 2025 5:48 pm Regarding Z/EP contacts in ingresses:
1. Let's say the longitude for Ascendant is 15° Aries. One planet is 15°15' Aries, another is 14°30' Aries (so the midpoint is 15' away, I think ). Is this a conjunction to whatever that uses uses the 0/180° orb, or a "square to Zenith" that uses the 90° orb?
In a natal, if ecliptical aspects are turned on, any ecliptical conjunction of a midpoint to Asc or MC counts. If mundane aspects are turned on, any midpoint in PVL that hits any angle hits all the angles (hence listing it just as "Angle").2. Let's take that same example, and let's say those 2 planets aren't wacky TNOs and that they are actually angular in PVL. They are obviously not "foreground" on Zenith. Does this mean, in an ingress, their halfsum will never show up on the As line?
Since I wrote this, we've talked about a couple of other things that are needed.Jim Eshelman wrote: Fri Feb 14, 2025 10:24 am I looked back at the version 1.0 target list and - apologies for being surprised - saw that you've almost covered everything. All that's really left on the original plan is the Novien table and a couple of minor text matters (and then the Mac and Linux builds you already said come next).
That you've essentially finished the original plan for 1.0 doesn't mean we can't add more (and it certainly doesn't mean we shouldn't look ahead to anticipate infrastructure needs). I wanted to float the question, though, of whether it's a good idea to add these extra things at this stage. There seems to me great merit in having a full release 1.0 that we can start evangelizing, spreading the word online, getting more people involved in a product we're willing to say is completely finished (while subject to expansion).
Code: Select all
Class 1 Aspects Class 2 Aspects Class 3 Aspects
Mo sq Ju 2° 4' 92% M Mo sq Ur 3°44' 73% M Mo sq Me 7°15' 6%
Mo sq Sa 2°35' 87% Su co Ur 5°42' 65% M Mo tr Ve 6°37' 20%
Mo sq Ne 0° 8' 100% Me oc Ma 1°57' 56% Su op Ju 7°22' 43% M
Me co Sa 3°43' 85% M Me co Ne 6° 9' 60% M Su oc Pl 2°31' 28%
Me sx Pl 2°14' 90% Ve sx Ma 3° 5' 82% Ma oc Sa 2°43' 17%
Ju op Ur 1°35' 97% Ju op Ne 4°55' 74% Ju op Sa 7°27' 42% M
Sa co Ne 2°26' 94% M Ur co Ne 6°30' 55% Sa co Ur 9° 7' 16% M
Sa sx Pl 2°26' 89% Ne sx Pl 5° 9' 51%
Code: Select all
Moon-Sun sq 2°34'
Moon-Saturn sq 1°04'
Mercury-Saturn co 3°37'
Jupiter-Uranus op 1°10'
Saturn-Neptune co 2°41'
Code: Select all
Class 1 Aspects Class 2 Aspects Class 3 Aspects
Mo sq Su 2°34' xx% P Mo sq Ur 3°44' 73% M Mo sq Me 7°15' 6%
Mo sq Ju 2° 4' 92% M Su co Ur 5°42' 65% M Mo tr Ve 6°37' 20%
Mo sq Sa 1°04' xx% P Me oc Ma 1°57' 56% Su op Ju 7°22' 43% M
Mo sq Ne 0° 8' 100% Me co Ne 6° 9' 60% M Su oc Pl 2°31' 28%
Me co Sa 3°37' xx% P Ve sx Ma 3° 5' 82% Ma oc Sa 2°43' 17%
Me sx Pl 2°14' 90% Ju op Ne 4°55' 74% Ju op Sa 7°27' 42% M
Ju op Ur 1°10' xx% P Ur co Ne 6°30' 55% Sa co Ur 9° 7' 16% M
Sa co Ne 2°26' 94% M Ne sx Pl 5° 9' 51%
Sa sx Pl 2°26' 89%
Code: Select all
Class 1 Aspects Class 2 Aspects Class 3 Aspects
Mo sx Ma 1°31' 95% Mo tr Ve 4°29' 62% Mo tr Ju 6°13' 29%
Me co Sa 2°24' 94% Mo sq Pl 1°57' 56% p Mo oc Sa 2°33' 26%
Ve sx Ma 2°57' 83% Ma op Ju 4°41' 76% Mo tr Ur 5°56' 35%
Ve tr Ju 1°44' 94% Ma op Ur 4°25' 79% Su sq Ma 6°28' 24%
Ve tr Ur 1°27' 96% Su co Ne 8°14' 30% M
Ve sq Pl 0°13' 100%
Ma sq Ne 0° 7' 100% M
Ju co Ur 0°17' 100%
Ju sq Ne 2°16' 90%
Ur sq Ne 2° 0' 92%
Ne sx Pl 0°46' 99%
Code: Select all
Moon op Pluto 3°19' P
Mercury co Saturn 0°38' P
Venus sq Mars 2°56' P
Venus sq Jupiter 1°31' P
Venus co Saturn 2°57' P
Venus sq Uranus 1°18' P
Mars op Jupiter 0°37' P
Mars sq Saturn 0°53' P
Mars op Uranus 1°49' P
Jupiter co Uranus 0°12' P
Jupiter sq Neptune 1°40' P
Uranus sq Neptune 1°53' P
Code: Select all
Class 1 Aspects Class 2 Aspects Class 3 Aspects
Mo sx Ma 1°31' 95% Mo tr Ve 4°29' 62% Mo tr Ju 6°13' 29%
Mo op Pl 3°19' xx% P Mo oc Sa 2°33' 26%
Me co Sa 0°38' xx% P Mo tr Ur 5°56' 35%
Ve sq Ma 2°56' xx% P Su sq Ma 6°28' 24%
Ve sq Ju 1°31' xx% P Su co Ne 8°14' 30% M
Ve co Sa 2°57' xx% P
Ve sq Ur 1°18' xx% P
Ve sq Pl 0°13' 100%
Ma op Ju 0°37' xx% P
Ma op Ur 1°49' xx% P
Ma sq Ne 0° 7' 100% M
Ju co Ur 0°12' 100% P
Ju sq Ne 1°40' xx% P
Ur sq Ne 1°53' xx% P
Ne sx Pl 0°46' 99%
Code: Select all
Moon op Pluto 1°40' P
Sun sq Jupiter 0°17' P
Sun sq Uranus 0°49' P
Mercury sq Mars 0°18' P
Mercury co Saturn 0°38' P
Mars op Jupiter 1°34' P
Mars op Uranus 1°40' P
Jupiter sq Saturn 1°03' P
Jupiter co Uranus 0°13' P
Jupiter sq Neptune 0°02' P
Saturn sq Uranus 0°50' P
Uranus sq Neptune 0°15' P
Code: Select all
Class 1 Aspects Class 2 Aspects Class 3 Aspects
Mo sx Ma 1°31' 95% Mo tr Ve 4°29' 62% Mo tr Ju 6°13' 29%
Mo op Pl 1°40' xx% P Su sq Ma 4°47' 57% M Mo oc Sa 2°33' 26%
Su sq Ju 0°17' xx% P Mo tr Ur 5°56' 35%
Su sq Ur 0°49' xx% P Su co Ne 8°53' 20%
Me sq Ma 0°18' xx% P
Me co Sa 0°38' xx% P
Ve sx Ma 2°57' 83%
Ve tr Ju 1°44' 94%
Ve tr Ur 1°27' 96%
Ve sq Pl 0°13' 100%
Ma op Ju 1°34' xx% P
Ma op Ur 1°40' xx% P
Ma sq Ne 2°25' 89%
Ju sq Sa 1°03' xx% P
Ju co Ur 0°13' 100% P
Ju sq Ne 0°02' 100% P
Sa sq Ur 0°50' xx% P
Ur sq Ne 0°11' 100% M
Ne sx Pl 0°46' 99%
I see how this could make things a LOT easier. My brain immediately slid toward ways to simplify it - like decide which kinds of aspects are authorized (e.g., calculate no parans if no parans are allowed); OTOH always doing a thing the same way every time leaves fewer cracks for bugs. (Exceptions are harder to debug even if you document the hell out of the code.)Ember Nyx wrote: Sat Mar 01, 2025 6:10 pm (From a technical standpoint - I think I need to extract the code that handles midpoints, and just calculate all 45° aspects to all halfsums in longitude, PVL, and RA. Being purely numerical computation, this will be so fast as to not matter to any user. And then, in the main flow of the code, deal with "what's allowed to be displayed" based on angularity rules, etc. I think aspects in general should kind of work the same way, eventually. They already half do, but I should commit to this model.
Exactly. Many of the difficulties in rewiring things in Time Matters are due to the fact that, even in my refactor, several things still get calculated at the point that they're used and not done globally. I think this can be done better, and it would be closer to how we as humans think of them anyway. (They'll cost a few extra milliseconds.)Jim Eshelman wrote: Sat Mar 01, 2025 6:34 pmI see how this could make things a LOT easier. My brain immediately slid toward ways to simplify it - like decide which kinds of aspects are authorized (e.g., calculate no parans if no parans are allowed); OTOH always doing a thing the same way every time leaves fewer cracks for bugs. (Exceptions are harder to debug even if you document the hell out of the code.)Ember Nyx wrote: Sat Mar 01, 2025 6:10 pm (From a technical standpoint - I think I need to extract the code that handles midpoints, and just calculate all 45° aspects to all halfsums in longitude, PVL, and RA. Being purely numerical computation, this will be so fast as to not matter to any user. And then, in the main flow of the code, deal with "what's allowed to be displayed" based on angularity rules, etc. I think aspects in general should kind of work the same way, eventually. They already half do, but I should commit to this model.
That's pretty clever actually. I've run into several similar examples at various jobs of using array index to encode values, usually as prefixes or suffixes for some identifier, like majorID-minorID-encodedOptions-somethingElse. This is pretty commonly done with cloud-based resources, to cram extra information into the name of something without needing any extra space to store that info.On a totally unrelated and useless vein, I'm sure I never told you how I wrote my first aspect-finding code (in some variation of BASIC; probably CBASIC). Its weakness is that it had no orb flexibility and no partial degrees for orbs. - The gist is that I created a 180-character string with an ASCII character defining an aspect in each spot. (I'd have to look back at the ASCII table to reinvent how I did it, but they were all printable, so > 33.) Absolute value of the difference between two longitudes, truncate, use the number to know which 0-to-179 character to pull from the string, and that told me what the aspect was.
Code: Select all
Long Lat Speed RA Dec Azi Alt ML PVL Ang
Mo 15Le59' 2" 3N53 +12 20' 163 14' 11N20 320 35' -29 5' 203 15' 138 47' 22% b
Su 14Ta 1'27" 0N 0 +57'32" 66 30' 21N41 55 39' - 5 3' 182 51' 6 7' 92% A
Me 27Ar30'46"S 3S35 - 1'49" 50 17' 14N44 71 24' + 1 5' 179 39' 358 52' 100% A
Ve 19Ar28' 4" 1S31 + 1 13' 41 42' 14N30 77 2' + 7 12' 178 23' 352 37' 86% A
Ma 3Le51' 0" 1N25 +29'21" 150 45' 13N28 334 30' -32 13' 209 38' 124 20' 96%
Ju 17Pi58' 6" 1S11 +10'59" 11 40' 3N44 105 29' +22 48' 6 24' 336 26' 10% b
Sa 28Cp52'23" 1S 3 + 0'24" 325 48' 14S49 160 24' +32 24' 30 52' 297 52' 50%
Ur 7Le 7' 9" 0N46 + 1' 7" 153 39' 11N42 330 37' -32 52' 209 22' 127 13' 85%
Ne 19Li25'23" 1N50 - 1'27" 221 45' 14S12 257 15' - 6 57' 358 27' 172 52' 87% D
Pl 15Le19'57" 13N36 + 0'16" 166 33' 20N32 322 30' -19 30' 195 42' 149 48' 0% b
Ha 7Le26'13" 15N35 + 0'16" 159 46' 25N22 330 42' -18 2' 195 51' 146 23' 81% b
Er 16Pi42'44" 22S 7 + 0'24" 18 53' 16S 0 115 1' + 3 57' 1 41' 355 38' 95% A
Code: Select all
Long Lat Speed RA Dec Azi Alt ML PVL Ang
Mo 0Ta 1' 0" 5S14 +12 36' 52 55' 13N42 71 54' + 3 11' 179 1' 356 39' 97% A
Su 8Cn13' 2" 0S 0 +57'20" 124 26' 19N41 6 5' -18 40' 198 34' 72 35' 37%
Me 16Cn57'39" 1N47 + 1 58' 133 53' 19N13 356 40' -19 17' 199 15' 99 25' 83% I
Ve 19Le37'11" 1S45 +36'25" 164 11' 4N51 321 48' -26 48' 201 39' 140 45' 99% b
Ma 18Ar15'29" 1S48 +39'24" 40 20' 13N47 81 28' +10 53' 178 22' 349 0' 100%
Ju 11Cn32' 7" 0N29 +13'16" 127 58' 19N22 2 35' -19 9' 199 8' 82 37' 86% I
Sa 28Ta 0'44" 1S20 + 6'35" 81 20' 21N52 44 51' - 4 58' 183 31' 7 1' 90% A
Ur 13Ta50'34" 0S 7 + 2'22" 66 2' 21N30 57 12' + 2 8' 178 51' 357 28' 98% A
Ne 5Vi51'40" 1N21 + 1'22" 180 22' 1N18 304 11' -22 36' 193 10' 153 17' 3% b
Pl 12Cn45' 4" 5N 6 + 1'44" 130 29' 23N32 0 4' -15 1' 195 1' 89 46' 100% I
Ha 20Cn57'39" 7N15 + 1'18" 139 41' 23N17 351 20' -14 50' 194 40' 119 38' 50%
Er 11Pi55'46" 25S50 - 0'15" 16 4' 21S17 121 55' - 2 28' 358 42' 2 55' 98% A