Updates on my astrology app...
Updates on my astrology app...
Hi all!
I just felt like making an update.
About a year ago, I was finishing up my final exam project for an online computer science course that I was taking. This project, my first "from the ground up" coding project, was an astrology application. (My questions related to astrological computations are still scattered around the forum.)
As it existed then, it was basically one giant, messy, 1000+ line script that popped up a little interface and produced a text file with planetary locations and aspects for a natal chart, or solar or lunar/demi-lunar return.
I was quite proud of it at the time.
However, my original goal was always something that I could give back to the sidereal community at large - something free that those without access to Solar Fire could trust, that would allow them to learn and join in with the rest of us. Also, something written cleanly I just didn't have the coding chops to produce that at the time. This would be a real web application - go to some www address and bam, there's a full-power astrology application waiting for you to calculate your solunars, progressions, etc with.
While I am still a newbie developer, I am an order of magnitude more prepared now than I was a year ago, and have been steadily working on a real release of this application.
The back end (the part you won't see) of it is in its alpha stage - an API that accepts an HTTP request, parses date/time/location info, does whatever calculations are requested, and replies back. It's a work in progress, but it functions as intended - and is 100 times cleaner and more efficient than what I wrote previously. This is not deployed anywhere yet - meaning the server literally runs on my machine when I fire up the main Python project file. Obviously, I will have this running on a remote server when the time comes. It's not as clean as I want yet, and I need to write a test suite and all of that, but it's about 70% done, all things considered.
The front end (the part you will see) is what I'm about to start tackling in the next month or so. This is actually considerably harder for me! I'm expecting the hardest part to be generating the actual chart graphics - I'm not aware of any JavaScript library that accomplishes that in a remotely aesthetically-pleasing fashion (and trust me, I've looked), so I plan to write one myself as a Node module (by which I mean I need to learn D3.js well enough to coerce it into drawing horoscopes and wrap that up into a library).
All together, I hope to have something that we can start testing natals, solunar returns, progressions, etc with by the end of the year.
For those of you who are into perusing code, here's the git repo where I'm storing everything.
https://github.com/lightningandthunder/astronova_api
There's some stuff in there that is old and will be removed eventually (calcs.py and astrosetup.py most of all). The most interesting files are in src/dll_tools. Virtually all of the calculations you could care about are in chartmanager.py.
None of this would be possible without all of your help, so thank you, and I hope to be able to contribute this as soon as I can manage it.
I just felt like making an update.
About a year ago, I was finishing up my final exam project for an online computer science course that I was taking. This project, my first "from the ground up" coding project, was an astrology application. (My questions related to astrological computations are still scattered around the forum.)
As it existed then, it was basically one giant, messy, 1000+ line script that popped up a little interface and produced a text file with planetary locations and aspects for a natal chart, or solar or lunar/demi-lunar return.
I was quite proud of it at the time.
However, my original goal was always something that I could give back to the sidereal community at large - something free that those without access to Solar Fire could trust, that would allow them to learn and join in with the rest of us. Also, something written cleanly I just didn't have the coding chops to produce that at the time. This would be a real web application - go to some www address and bam, there's a full-power astrology application waiting for you to calculate your solunars, progressions, etc with.
While I am still a newbie developer, I am an order of magnitude more prepared now than I was a year ago, and have been steadily working on a real release of this application.
The back end (the part you won't see) of it is in its alpha stage - an API that accepts an HTTP request, parses date/time/location info, does whatever calculations are requested, and replies back. It's a work in progress, but it functions as intended - and is 100 times cleaner and more efficient than what I wrote previously. This is not deployed anywhere yet - meaning the server literally runs on my machine when I fire up the main Python project file. Obviously, I will have this running on a remote server when the time comes. It's not as clean as I want yet, and I need to write a test suite and all of that, but it's about 70% done, all things considered.
The front end (the part you will see) is what I'm about to start tackling in the next month or so. This is actually considerably harder for me! I'm expecting the hardest part to be generating the actual chart graphics - I'm not aware of any JavaScript library that accomplishes that in a remotely aesthetically-pleasing fashion (and trust me, I've looked), so I plan to write one myself as a Node module (by which I mean I need to learn D3.js well enough to coerce it into drawing horoscopes and wrap that up into a library).
All together, I hope to have something that we can start testing natals, solunar returns, progressions, etc with by the end of the year.
For those of you who are into perusing code, here's the git repo where I'm storing everything.
https://github.com/lightningandthunder/astronova_api
There's some stuff in there that is old and will be removed eventually (calcs.py and astrosetup.py most of all). The most interesting files are in src/dll_tools. Virtually all of the calculations you could care about are in chartmanager.py.
None of this would be possible without all of your help, so thank you, and I hope to be able to contribute this as soon as I can manage it.
- Jupiter Sets at Dawn
- Irish Member
- Posts: 3522
- Joined: Sun May 07, 2017 7:03 pm
- Jim Eshelman
- Are You Sirius?
- Posts: 19078
- Joined: Sun May 07, 2017 12:40 pm
Re: Updates on my astrology app...
This is incredibly exciting. Unless you have other plans, we can probably provide a web environment where you can host it. When I see you in a couple of week (or here, sooner) let me know what requirements you need on the hosting environment This site and the other related domains I own e.g. solunars.net and .org, are on a UNIX=Apache platform and perhaps we can go from there.
Jim Eshelman
www.jeshelman.com
www.jeshelman.com
Re: Updates on my astrology app...
First of all - Jim, I think I responded to this when I saw you, but I'm not positive, so... thank you for the offer! That may just be what I end up needing.
I'm not solid on the deployment details yet; I feel like I don't completely know what I don't know yet (especially about domains and network I/O and all that). Once I'm ready to go into alpha, I'll reach out
Besides that, to the forum at large...
I've been furiously coding for the past month or so, and banged out about 70% of the functionality for the front end.
AstroNova is in pre-alpha, but is really starting to get close to alpha, which I'm defining as: Calculates single charts, solunar returns, and active transits (to natal, SSR, progressed, etc). Has chart visuals. UI doesn't look great, but it's not monochrome. Full of bugs and mysterious behavior.
What's done on the front end:
- Front/back end communication.
- Geographic and timezone lookup (with some bugs still to be squashed).
- Calculation of new single charts.
- Calculation of arbitrary numbers of solunar return charts, with everything precessed correctly (ecliptically, mundanely, and in RA).
- Lots of input validation.
- Separate modal control panels for single chart vs return chart calculation.
- Saving charts to Local Storage in-browser, to enable "saving your work" without having any remote database.
What remains to be done before putting this into (a not feature-complete) alpha:
- Aspect parsing. This isn't hard.
- Chart visuals. This is hard.
- Aspect grid.
- "All active transits" report (calculations are already done, but there's no wiring there yet).
- A decent "chart selection" pane a la Solar Fire.
- Minimal design work (i.e. the CSS) so it doesn't look like a white page with a pile of text boxes, which is what it is now
- Probably an unrefined version of "text dump of chart" for testing purposes.
I've already started the research and experimentation with chart visuals and will probably be fully focused on that in about a week. I'm hoping to have this thing in alpha in a few months, and then we can start testing it.
I have a few more features planned for before the beta and the initial release, but we'll get there when we get there
I'm not solid on the deployment details yet; I feel like I don't completely know what I don't know yet (especially about domains and network I/O and all that). Once I'm ready to go into alpha, I'll reach out
Besides that, to the forum at large...
I've been furiously coding for the past month or so, and banged out about 70% of the functionality for the front end.
AstroNova is in pre-alpha, but is really starting to get close to alpha, which I'm defining as: Calculates single charts, solunar returns, and active transits (to natal, SSR, progressed, etc). Has chart visuals. UI doesn't look great, but it's not monochrome. Full of bugs and mysterious behavior.
What's done on the front end:
- Front/back end communication.
- Geographic and timezone lookup (with some bugs still to be squashed).
- Calculation of new single charts.
- Calculation of arbitrary numbers of solunar return charts, with everything precessed correctly (ecliptically, mundanely, and in RA).
- Lots of input validation.
- Separate modal control panels for single chart vs return chart calculation.
- Saving charts to Local Storage in-browser, to enable "saving your work" without having any remote database.
What remains to be done before putting this into (a not feature-complete) alpha:
- Aspect parsing. This isn't hard.
- Chart visuals. This is hard.
- Aspect grid.
- "All active transits" report (calculations are already done, but there's no wiring there yet).
- A decent "chart selection" pane a la Solar Fire.
- Minimal design work (i.e. the CSS) so it doesn't look like a white page with a pile of text boxes, which is what it is now
- Probably an unrefined version of "text dump of chart" for testing purposes.
I've already started the research and experimentation with chart visuals and will probably be fully focused on that in about a week. I'm hoping to have this thing in alpha in a few months, and then we can start testing it.
I have a few more features planned for before the beta and the initial release, but we'll get there when we get there
- Jim Eshelman
- Are You Sirius?
- Posts: 19078
- Joined: Sun May 07, 2017 12:40 pm
Re: Updates on my astrology app...
Thanks for the update. This is gonna be awesome.
Jim Eshelman
www.jeshelman.com
www.jeshelman.com
Re: Updates on my astrology app...
Hey y'all,
I've been working feverishly on this and have made a ton of progress much faster than I was expecting.
There's a long way to go before it's "done," but we're approaching a stage where a public beta is realistic in the near future.
In that spirit, and because I'm excited, I wanted to share some pics.
Keep in mind this is still an alpha, meaning you're gonna see some weird stuff in these pics:
- I haven't dealt with graphical overlap yet. It's really complicated.
- I'm using crappy placeholder images for signs. (I was originally using emojis!)
- The whole thing in general looks like its from 1995 because there's basically no styling yet.
- The aspect grid looks wonky, and apparently the font I'm using doesn't recognize the unicode for the sextile and sesqisquare symbols, so they look pretty silly right now.
With all of that said... Here you go.
https://imgur.com/a/5gWpry7
I've been working feverishly on this and have made a ton of progress much faster than I was expecting.
There's a long way to go before it's "done," but we're approaching a stage where a public beta is realistic in the near future.
In that spirit, and because I'm excited, I wanted to share some pics.
Keep in mind this is still an alpha, meaning you're gonna see some weird stuff in these pics:
- I haven't dealt with graphical overlap yet. It's really complicated.
- I'm using crappy placeholder images for signs. (I was originally using emojis!)
- The whole thing in general looks like its from 1995 because there's basically no styling yet.
- The aspect grid looks wonky, and apparently the font I'm using doesn't recognize the unicode for the sextile and sesqisquare symbols, so they look pretty silly right now.
With all of that said... Here you go.
https://imgur.com/a/5gWpry7
- Jupiter Sets at Dawn
- Irish Member
- Posts: 3522
- Joined: Sun May 07, 2017 7:03 pm
Re: Updates on my astrology app...
Wow. That's really impressive, Mike.
- Jim Eshelman
- Are You Sirius?
- Posts: 19078
- Joined: Sun May 07, 2017 12:40 pm
Re: Updates on my astrology app...
Impressive indeed.
I have a scad of suggestions / requests but I'm assuming that this is, indeed, a "proof of concept" stage and won't nag you with them. (You did trigger some new ideas with a couple of those views.)
Later, when you signal the time is right...
I have a scad of suggestions / requests but I'm assuming that this is, indeed, a "proof of concept" stage and won't nag you with them. (You did trigger some new ideas with a couple of those views.)
Later, when you signal the time is right...
Jim Eshelman
www.jeshelman.com
www.jeshelman.com
Re: Updates on my astrology app...
Thanks for the encouragement, all.
Jim, while you’re right that this is still in a very feature-sparse state, I’m curious what you’re thinking. I have to refactor the overall data structure and flow inside the app, and if I can do that refactor with requested features already in mind, they’ll be easier to implement later on.
So, fire away!
Jim, while you’re right that this is still in a very feature-sparse state, I’m curious what you’re thinking. I have to refactor the overall data structure and flow inside the app, and if I can do that refactor with requested features already in mind, they’ll be easier to implement later on.
So, fire away!
- Jim Eshelman
- Are You Sirius?
- Posts: 19078
- Joined: Sun May 07, 2017 12:40 pm
Re: Updates on my astrology app...
I'll look again when I get a chance, but here are the two things that stuck in mind, both pertaining to the mundoscope wheel.
1. Don't do the mundoscope as a "zodiac analog." There is no sign importance and it mismatches Fagan's original presentation of the mundoscope. Have it look like this (which is your natal):
2. The second is simple in concept, but harder to explain if you don't have a picture in your head. It was inspired by your mundo-horo dual-wheel which, however, in that form (with the zodiac analog behaving as one) isn't very useful. However, if the mundo positions could be placed in an inner ring just inside the natal position - e.g., your Mars low in the 3rd house at 7°26' Scorpio and, just inside that, the "24°25'" that shows its mundane position, it would be pure gold. The mundane positions, of course, should be in the accurate place, e.g., if the planet's longitude is on one side of an angle but its actual position is on the opposite side, each should be correctly placed. - Consider my local chart for 34N03'46" 118W18'47" where Venus seems west of IC in the horoscope (0°15' in longitude west of IC) but its mundoscope position is 1°09' east of IC (28°51' in 3rd house) - Venus in celestial longitude should be displayed on one side and in PV long on the other. (And if you could get rid of the line between those two rings for this purpose, so much the better!)
When I was doing my charts by hand, I had a custom chart wheel which is still by "sexy ideal." The inside was a classic American Astrology single wheel - clean one-wheel much as we see in SF with the default ring for house cusps. In this one-wheel, I'd write the planets and their longitudes in the outermost half-to-two-thirds and add mundoscope positions in a finer-point pen in smaller text just inside of them. Then, outside of all that was a 90° dial on the outside, exactly fitted for an Ebertin mechanical dial to drop on top of it. I had everything in one view - horoscope, mundoscope, and 90° dial in a fairly clean, crisp design.
Looking back at your pictures now, I'll add...
3. Transits should always go on the outside, not the inside. Psychologically, we should keep the "inside-outside" effect in our wheel placement. Transits go outside all charts to which they pertain. Solunars put return chart in the outside (as transits), natal on the inside, cusps for the return.
4. Not clear why you have separate aspectarian lines for WP, Dsc, IC. Seems a space waste when they are simply oppositions to EP, Asc, MC.
1. Don't do the mundoscope as a "zodiac analog." There is no sign importance and it mismatches Fagan's original presentation of the mundoscope. Have it look like this (which is your natal):
2. The second is simple in concept, but harder to explain if you don't have a picture in your head. It was inspired by your mundo-horo dual-wheel which, however, in that form (with the zodiac analog behaving as one) isn't very useful. However, if the mundo positions could be placed in an inner ring just inside the natal position - e.g., your Mars low in the 3rd house at 7°26' Scorpio and, just inside that, the "24°25'" that shows its mundane position, it would be pure gold. The mundane positions, of course, should be in the accurate place, e.g., if the planet's longitude is on one side of an angle but its actual position is on the opposite side, each should be correctly placed. - Consider my local chart for 34N03'46" 118W18'47" where Venus seems west of IC in the horoscope (0°15' in longitude west of IC) but its mundoscope position is 1°09' east of IC (28°51' in 3rd house) - Venus in celestial longitude should be displayed on one side and in PV long on the other. (And if you could get rid of the line between those two rings for this purpose, so much the better!)
When I was doing my charts by hand, I had a custom chart wheel which is still by "sexy ideal." The inside was a classic American Astrology single wheel - clean one-wheel much as we see in SF with the default ring for house cusps. In this one-wheel, I'd write the planets and their longitudes in the outermost half-to-two-thirds and add mundoscope positions in a finer-point pen in smaller text just inside of them. Then, outside of all that was a 90° dial on the outside, exactly fitted for an Ebertin mechanical dial to drop on top of it. I had everything in one view - horoscope, mundoscope, and 90° dial in a fairly clean, crisp design.
Looking back at your pictures now, I'll add...
3. Transits should always go on the outside, not the inside. Psychologically, we should keep the "inside-outside" effect in our wheel placement. Transits go outside all charts to which they pertain. Solunars put return chart in the outside (as transits), natal on the inside, cusps for the return.
4. Not clear why you have separate aspectarian lines for WP, Dsc, IC. Seems a space waste when they are simply oppositions to EP, Asc, MC.
You do not have the required permissions to view the files attached to this post.
Jim Eshelman
www.jeshelman.com
www.jeshelman.com
Re: Updates on my astrology app...
I agree completely - I have that as a future feature.
I think I can picture this, and had some ideas like that as well. I do want to mention, though, that the dual mundoscope view is actually just 2 mundoscopes, for radix and transiting planets together - I just didn't remove the sign images. (They get automatically parsed from any values 0-359; I suspect Solar Fire does this exactly the same way, which is why their default prime vertical analogue view looks the way it does.)2. The second is simple in concept, but harder to explain if you don't have a picture in your head....
Does that change any of your feelings about the existing view?
(I do also like the composite view you describe.)
I am confused about the 90* dial - what is it for? I'm inexperienced with dial views.Then, outside of all that was a 90° dial on the outside, exactly fitted for an Ebertin mechanical dial to drop on top of it. I had everything in one view - horoscope, mundoscope, and 90° dial in a fairly clean, crisp design.
Fair point, and this is easy to fix. I just got used to transits on the inside ring for some reason and autopiloted it into NovaTransits should always go on the outside, not the inside.
More "alpha artifacts." Right now I just iterate through the full list of all points that have an associated longitude and they all get aspects calculated between each other. I plan to clean this up later (and filter out crap like soft aspects to angles, etc).4. Not clear why you have separate aspectarian lines for WP, Dsc, IC. Seems a space waste when they are simply oppositions to EP, Asc, MC.
Thanks for the feedback
- Jim Eshelman
- Are You Sirius?
- Posts: 19078
- Joined: Sun May 07, 2017 12:40 pm
Re: Updates on my astrology app...
Are they normalized to the same framework? That is, suppose you were comparing my chart to your chart as a mundoscope (putting my planets in an outer ring so we could see mundane contacts within the universe of Mike's chart and then flip to get the same in the universe of my chart) - is the outer ring calculated within the SVP, obliquity, latitude, etc. of the inner ring?Mike wrote: Mon Nov 25, 2019 8:56 am I do want to mention, though, that the dual mundoscope view is actually just 2 mundoscopes, for radix and transiting planets together - I just didn't remove the sign images. (They get automatically parsed from any values 0-359; I suspect Solar Fire does this exactly the same way, which is why their default prime vertical analogue view looks the way it does.)
Play with it with Solar Fire (they're built in). A 90° dial is amazing! You see all 90°-multiple aspects at a glance, spinning the pointer wheel lets you see midpoints instantly - for example, I put every mundane chart on a 90° dial as the fastest way not to miss squares to angles. On a natal chart, you see the primary clusters at a glance.I am confused about the 90* dial - what is it for? I'm inexperienced with dial views.
The idea is to get away from numbers (or, actually, to have an alternate and complement to numbers) and use equally the part of the brain that responds to patterns and shapes - yet with sufficient mechanical precision to not distort, to accurately represent the measurements. - Here's your chart on a dial, you can see the primary patterns and their relative intensities without calculation. Additionally, I've set the pointer at Ascendant to show how it displays midpoints. (Oops, the red line connecting your Uranus-Pluto at right angles to the pointer is on a different visual layer that doesn't show in the graphic for some reason. Solar Fire quirk.)
You're welcome. This is cool!Thanks for the feedback
PS - In case you haven't noticed in my various remarks, I've long used display details to activate all parts of the brain, thinking there should be as much information in the display elements - fonts, intensities, sizes, colors, shapes - as in the meticulous numerical data. (Not instead of, but along with - whole brain, not the anti-measurement trend of a lot of astrologers.) I leverage SF differently than drawing by hand - can't do everything I used to do, found new ways to do other things, e.g., I always marked aspects on the chart in two different colored pens - red and blue - but in SF the relative intensity/closeness of the aspect can be reflected by density of the line. Stuff like that. Dropping out intermediate house lines so that they don't prioritize thinking into housiness, and do emphasize angularity. Using the color and shape of things to draw attention where I want it drawn.
You do not have the required permissions to view the files attached to this post.
Jim Eshelman
www.jeshelman.com
www.jeshelman.com
Re: Updates on my astrology app...
Yep! That's the whole idea - the radix is precessed into the sidereal framework of the transiting chart. I use SVP, obliquity, latitude, and LST (from memory; I reverse-engineered the mundo spreadsheet) of the transiting chart to precess the natal chart. I'm basically just doing what the mundo-spreadsheet is doing, but graphically, so you get both together. No more going to a separate tool to figure out what radical planets are foreground in the transit chart!Jim Eshelman wrote: Mon Nov 25, 2019 9:19 am Are they normalized to the same framework? That is, suppose you were comparing my chart to your chart as a mundoscope (putting my planets in an outer ring so we could see mundane contacts within the universe of Mike's chart and then flip to get the same in the universe of my chart) - is the outer ring calculated within the SVP, obliquity, latitude, etc. of the inner ring?
The dial is awesome! I'll have to digest and internalize it, but I get what you mean in broad terms.
More later.