Announcing The Wolfram Tech Conference Function Sprint

What’s the best way of distributing a set of closely related functions all of them drawing on a core of helper functions (and each other)?

I think that the only good answer to this is that the functions should go into a package. I would not use the function repository.

You can publish a package now, without waiting for a package repository. An official Wolfram package repository is not a prerequisite (although it would be useful for the community as it would facilitate the adoption of packages). People have been writing packages for Mathematica since the system was first released.

I am concerned about the future of packages (and the planned package repository) because I repeatedly see people express the opinion that “the function repository is sufficient”, when someone writes some useful code that “you should submit it to the function repository”, or simply not even realizing the huge difference between these concepts, and that the more valuable some work is the less likely it is that it is suitable for the function repository.

I do not see how Mathematica could compete with other systems without any well supported facilities to create packages, and I am puzzled about why this is not prioritized over things like the function repo which is just not an alternative.

4 Likes

There are about 6 public functions; since they are all highly related and rely on a shared core, breaking it up into separate WFR entries seemed undesirable.

As noted, not putting all of these functions together in a single package would be dreadful for maintainability purposes.

In addition to what Szabolcs said, you always have the option of putting up your package on GitHub, Bitbucket, or some other equivalent service; additionally, let me also mention posting your package on PackageData, or even create a Zenodo entry for it to let other potential users know about your package.

2 Likes

The remarks by @SzabolcsHorvat and @J.M. about package vs individual function construction are all valid of course. I will point out that there is an intermediate path that is, in some cases, also viable. One can use a “container” function and support different operations therein. (I believe this is a subset of what goes as Object Oriented Programming, but I predate OOP so I’m not really certain). One example of what I have in mind is the WFR entry “ExpressionBag” by Richard Hennigan.

https://resources.wolframcloud.com/FunctionRepository/resources/ExpressionBag

This really only applies in cases where it makes sense to have a single “function” supporting multiple operations. Implementation of specific data structures is one area where this use case might be common. If time permits I might post a related example to Community.

2 Likes

Winners will be announced at the conference and subsequently posted here on Wolfram Community.

The conference is over. Are the results of the Sprint published anywhere?

1 Like

The winners are now announced in the top head post. Congratulations to all winnders! And deepest thanks to all who has taken a part in this event!

2 Likes

Should be removed…

Anton,

This might be a bug you are reporting, but…how is it relevant to this particular thread? Assuming it is, please edit to make that connection clear.

Agreed, I assume the admins can remove this comment and my previous comment.

RiemannSurfacePlot3D looks like a cool idea for mainline inclusion. However, often you may want different embeddings for different patches of the surface, see for example:

which uses three different projections from R^4 to R^3. I dream of someday just inputting an algebraic equation, then the graph function returns a best-possible embedding to 3D, but perhaps this is asking too much. How about starting with “TorusPlot[EllipticCurve_]:= 1. Find critical points. 2. expand hyperbolae around them.” ?

Cheers --Brad

–Brad

I’m not sure if it was this comment or another comment where the issue with PackageData’s URL size limit was raised. In any case, I’m sorry about that! I’ve now fixed it.

Great, thanks!

Hi! I was one of the winners. A t-shirt would be really cool. My email is jessicashi605@gmail.com. Thank you for this opportunity!

Thanks for reaching out. Our events team will contact to get size and shipping details. Congratulations again. Also, I actually used some of your code to beat information from our knowledge base in one of my WFR examples.