Hi Aaron ~ I think this is a good strategy. Let's continue developing and communicating. I would welcome any feedback and creative discussions. Feel free to connect me with anyone you think would be interested in the concepts behind Explorer.
As you suggested, I will start on the following: - setup a SymPy dev environment - I have not contributed yet, so first step is to get setup. There is so much to learn from getting a closer look at the architecture, as well. And I want to follow the same standards you are, particularly for documentation. - make some videos on how I am using SymPy in Explorer - I think this will be a good way to start a conversation about the concepts and functionality in Explorer. I will share these here on the forum if that is OK. - make a proposal on GitHub Issues - making the videos first will help to gather my thoughts and provide background for the discussion. I really have no qualifications for any of this. I just want to build some tools to answer some questions I have. And perhaps we can find some patterns that can reveal a larger truth. This has been a solitary effort for some time, so I am grateful to make this connection and for being taken seriously. SymPy has been an epiphany for me. Thank you for the work you are doing. ~ φ On Tuesday, August 30, 2022 at 1:52:10 PM UTC-7 asme...@gmail.com wrote: > On Tue, Aug 30, 2022 at 8:16 AM phi ARCHITECT <illu...@gmail.com> wrote: > >> Hi Aaron ~ >> >> Thanks for your quick reply and encouragement. I definitely understand we >> may be running into a time crunch. And I understand that you want to drive >> the development of Sympy. >> >> Perhaps we could come up with a small, straightforward project that gets >> the ball rolling on making Sympy the foundation for a Geogebra style app >> for building geometric models. >> >> My next step for GEOMETOR Explorer is to consolidate the construction >> logic into a Model class, which could easily become a part of >> sympy.geometry. The Model can extend from List - so it is just a container >> of elements. But it would also handle: >> >> - deduplicating elements >> determine if an new element is already in the list. >> - finding intersections >> test new elements against previous elements for new points. >> - maintaining ancestral relationships >> points contain references to all parent structures. >> structures contain references to all the points on them. >> the ancestral trail of an element is its proof. >> - applying classes to elements >> like css, associate a list of class names to an element. >> classes could be used in rendering and analysis. >> classes could also be used to exclude a structure from testing >> intersections. >> - querying subsets >> provide filtered lists for specific element types or classes >> >> In the work I have done so far, I have come to think of elements in 3 >> categories: >> >> - points >> the data of the model. >> all points are derived except the given starting points. >> points are the food for structs. >> - structs >> the relationships of the model (lines and circles so far). >> structs are not a thing in the field, just a projection of a >> relationship of two points. >> intersecting structs create points. >> - graphics >> the highlights of the model (segments, polygons, wedges). >> like structs, but are used for highlighting a relationship of 2 or >> more points >> and extracting details (length, area, etc). >> graphics are not tested for intersections by default. >> >> I am heading towards subclassing the sympy.geometry elements (Point, Line >> and Circle) to create attributes for classes and ancestral info that would >> be managed by the Model. But I can also see a path for maintaining this >> info outside of the elements in the Model. >> > > My view is that it's cleaner to keep track of this sort of data separate > from the symbolic objects, rather than subclassing them (this applies to > any sort of SymPy expression, not just geometry objects). The immutable > design of SymPy objects makes this pretty straightforward. Just store the > metadata in a dictionary. > > >> >> One of the key considerations I have had from the beginning is to keep >> the Model separate from the rendering and analysis processes. While I am >> using Matplotlib today for rendering, I see the opportunity to do really >> cool things with Blender and FreeCad as well. And for analysis, I have >> implemented golden section identification so far, but I can see modules for >> cross ratios, harmonic ranges, etc. >> >> Regardless of the decision on the grant, I am committed to developing >> these concepts. And now that I have opened the door, I hope to share my >> progress with the community here and hopefully gain insight and knowledge >> to make the project successful. And I believe that independent work on the >> Model class could be integrated with Sympy at a later time, once the ideas >> have matured. The whole concept is pretty straightforward. >> > > So I guess the question then is whether sympy.geometry should have some > code that is tied to geometric constructions. It sounds like it could be > useful, but I'd also like to hear feedback from some of the users of > sympy.geometry on your proposal (I personally don't use it very much). > > I think we should skip this round. As I said, I prefer to fund people for > this grant who are already experienced SymPy developers. So far you haven't > contributed any code to SymPy (correct me if I am wrong). Furthermore, I > feel like your proposal requires a lot more feedback and thought than can > reasonably be done in a few days. I would suggest opening an issue in the > SymPy issue tracker to discuss any thoughts for extensions to > sympy.geometry, so we can discuss there whether the design makes sense and > whether the suggested improvements would be in scope. > > However, the NumFOCUS small development grants are done regularly (see > https://numfocus.org/programs/small-development-grants), so please keep > an eye out for future calls. > > Aaron Meurer > > >> >> Thanks again for your attention. >> >> ~ φ (phi) >> >> On Monday, August 29, 2022 at 12:57:40 PM UTC-7 asme...@gmail.com wrote: >> >>> Hi. >>> >>> Thanks for sharing. This looks like a great use of SymPy and other tools >>> in the Python ecosystem. I'd love to see more geogebra-like tools that make >>> use of SymPy and sympy.geometry to get exact algebraic expressions >>> surrounding geometric constructions. >>> >>> On Mon, Aug 29, 2022 at 8:47 AM phi ARCHITECT <illu...@gmail.com> wrote: >>> >>>> Hi Aaron and the Sympy team ~ >>>> >>>> I hope I am not too late to propose the *GEOMETOR Explorer* project >>>> for a NumFOCUS development grant. >>> >>> >>> The deadline is this Friday, so it's possibly too late. Can you go into >>> detail on what you'd like to propose to do? I'd prefer for these small >>> development grants to go towards making improvements to SymPy itself, >>> rather than to projects that make use of SymPy. But perhaps there are some >>> improvements that you've seen that could be made to sympy.geometry while >>> working on this. >>> >>> Also, generally speaking, I'd like to use the small development grants >>> to fund people who have already contributed to SymPy before, so that there >>> is a clear track record that they are able to complete the work. >>> >>> Aaron Meurer >>> >>> >>>> >>>> >>>> *GEOMETOR Explorer* is a Python library for modelling, analyzing and >>>> rendering complex geometric constructions using symbolic algebra. Of >>>> course, Sympy is at the heart of it. >>>> >>>> But first, an introduction. My friends call me *phi*, as in φ, the >>>> Greek letter, for reasons that will be obvious. I am not a mathematician, >>>> but I have had a career as an architect beginning with buildings and later >>>> in developing software and enterprise systems. But my true love has always >>>> been drafting - making beautiful drawings. >>>> >>>> A few years ago, I decided to indulge my interest in the golden ratio, >>>> particularly making geometric constructions that demonstrate golden >>>> sections. I started with hand drawings, reteaching myself geometry and >>>> algebra. I noticed that constructing one golden section often led to other >>>> sections in the field. It seemed to be everywhere. But the challenge of >>>> demonstrating that was daunting. I first turned to Geogebra, which greatly >>>> expanded my knowledge allowing me to create large geometric constructions >>>> and confirm the golden sections, but it required a lot of manual >>>> intervention and the results were numeric values. I felt if we were to >>>> really discover patterns, we would need to build the model symbolically. >>>> >>>> I set out to develop an scriptable system to generate the >>>> constructions, find all intersection points, and then find all the golden >>>> sections. After a false start with a browser-based solution, last January >>>> I >>>> found Sympy and Matplotlib. I had never worked with Python before so it >>>> was >>>> a big step, but the capabilities I have been able to pull together in less >>>> than a year are amazing to me. >>>> >>>> The most recent video on my YouTube channel demonstrates a series of >>>> constructions generated with GEOMETOR Explorer resulting in an incredible >>>> numbers of golden sections uncovered. >>>> 22.187 • finding golden sections with the new GEOMETOR Explorer >>>> <https://youtu.be/IOKgXb6Kce0> >>>> >>>> GEOMETOR on Github <https://github.com/geometor> >>>> I have established a Github organization (https://github.com/geometor) >>>> to be the center of all of the development and interaction around the >>>> projects, including hosting websites and documentation. >>>> >>>> Shifting GEOMETOR Explorer to Python has led me to shift all my content >>>> development and publishing tools to Python, as well. This will allow me to >>>> standardize on ReST for everything. So, the websites are in a state of >>>> flux >>>> but I have most the infrastructure in place. >>>> >>>> There is a lot to further develop. At the core are the GEOMETOR >>>> Explorer <https://github.com/geometor/geometor-explorer> libraries. >>>> The current version in the main branch is very "scripty" - grown >>>> organically as I was learning. In the develop branch, I have started >>>> refactoring the library into a simpler and more functional interface and >>>> adding documentation. I also want to add more analysis capabilities to >>>> identify harmonic ranges / symmetries. And ultimately, publish a reliable >>>> version for anyone to use on PyPI. >>>> >>>> Context for further development: >>>> >>>> - Deep Field project >>>> how many elements can we add to a geometric model? >>>> how many more golden sections in the field? >>>> generating large models is compute intensive - >>>> will it push Sympy to limits? >>>> - Euclid project >>>> create a functional hierarchy of all the constructions of Euclid's >>>> Elements >>>> development on parsing the heath edition >>>> - Phyllotaxis project >>>> study golden ratio and fibonacci patterns in plant formation >>>> 3d modeling >>>> - Polynumbers project >>>> based on the lectures of Norman Wildberger >>>> introduces polynomials into the Explorer capabilities >>>> crazy cool renderings >>>> - Pappus project >>>> demonstrate Pappus Theorem with analysis >>>> leading to Hexagrammum Mysticum. >>>> - Heptadecagon project >>>> create a symbolic construction of a regular 17-sided figure >>>> >>>> I hope this is enough to start a conversation. I have been wanting to >>>> step into the Sympy community for some time. Consider it done. >>>> >>>> I have two YouTube channels if you want to see more: >>>> >>>> - phi ARCHITECT >>>> <https://www.youtube.com/channel/UCYzRQS16EBmsbKuyKMFHSFQ> channel >>>> where I talk about what I am working on >>>> - GEOMETOR >>>> <https://www.youtube.com/channel/UCHw7yqZJDQ0A6WkAlxGKLeg> channel >>>> generated content from the research. The most recent videos were >>>> generated, orchestrated, accompanied and assembled with Python. >>>> >>>> Let's see if any of this is a good fit for a grant! >>>> >>>> ~ φ >>>> On Friday, August 5, 2022 at 1:10:13 PM UTC-7 asme...@gmail.com wrote: >>>> >>>>> NumFOCUS has opened 2022 round 3 of their small development grants. >>>>> >>>>> NumFOCUS small development grants allow funding NumFOCUS projects, >>>>> such as SymPy for work. Each project may submit at most one grant >>>>> proposal. >>>>> >>>>> If anyone is interested in applying for this grant to do some work on >>>>> SymPy, please reach out to me. In the past, we have used these grants to >>>>> pay people to do maintenance work and to pay people to develop some >>>>> features. >>>>> >>>>> I have included the details below. If you are interested in applying, >>>>> please reach out to me about it by August 26 so that we will have time to >>>>> create and submit a proposal to NumFOCUS. >>>>> >>>>> Timeline: >>>>> >>>>> - >>>>> >>>>> Deadline for Proposal Submission: Sep 02, 2022 >>>>> - >>>>> >>>>> Projects will be Notified: Oct 14, 2022 (or sooner) >>>>> >>>>> >>>>> Available Funding: >>>>> >>>>> - >>>>> >>>>> Approx. $90,000 available to be awarded >>>>> - >>>>> >>>>> Up to $10,000 per proposal >>>>> >>>>> >>>>> Eligibility: >>>>> >>>>> - >>>>> >>>>> Any NumFOCUS Fiscally Sponsored or Affiliated project may submit >>>>> *one* proposal on behalf of the project *per grant cycle*. >>>>> - >>>>> >>>>> If you wish to solicit proposal ideas from your project >>>>> community, the project leaders must organize their own review >>>>> process to >>>>> select the proposal that the leadership will put forward to >>>>> NumFOCUS. >>>>> - >>>>> >>>>> Funding can be used for: code development, documentation work; >>>>> website updates; workshops and sprints; educational, sustainability, >>>>> and >>>>> diversity initiatives, travel to meetings & events, or other types of >>>>> projects. >>>>> - >>>>> >>>>> Proposed work must be achievable within the 12 months following >>>>> the award. >>>>> - >>>>> >>>>> The call is open to applicants from any nationality and can be >>>>> performed at any university, institute, or business worldwide (US >>>>> export >>>>> laws permitting). >>>>> >>>>> >>>>> Funding Distribution: >>>>> >>>>> - >>>>> >>>>> For fiscally sponsored projects only, NumFOCUS can deposit the >>>>> grant funding directly into the project’s account. The project >>>>> would then submit invoices through the usual channels (i.e. Open >>>>> Collective) to pay the grant expenses. >>>>> - >>>>> >>>>> NumFOCUS can set up an independent contractor agreement with an >>>>> individual or company for work that exceeds $600 USD. >>>>> - >>>>> >>>>> NumFOCUS can award the money as a grant or subcontract to a >>>>> student or postdoc at a university (depending on the university's >>>>> rules). >>>>> - >>>>> >>>>> NumFOCUS can directly pay for expenses associated with the grant >>>>> (e.g. booking flights on behalf of project leaders to attend a >>>>> workshop, >>>>> per diems for travel days) >>>>> >>>>> >>>>> You can see past successful proposals here: >>>>> https://numfocus.org/programs/small-development-grants. >>>>> >>>>> Aaron Meurer >>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "sympy" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to sympy+un...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/sympy/79e109f0-3588-4817-b644-056950297b13n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/sympy/79e109f0-3588-4817-b644-056950297b13n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "sympy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sympy+un...@googlegroups.com. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/55c84be3-20e5-496c-9c43-d1b55a69aa55n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/sympy/55c84be3-20e5-496c-9c43-d1b55a69aa55n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/80cc2e85-167c-4e03-93cd-cc5163ede996n%40googlegroups.com.