Skip to content

A correction of the README and the origin story of JpGraph (from the actual creator) #155

@johan162

Description

@johan162

The original creator of JpGraph was not Asial. It was me Johan Persson johan162@gmail.com, hence the name JpGraph (the initials of my name).

Asial was my redistributor and support company in Japan. For some reason several Japanes companies wanted to use it but demanded support in Japanese which I was unable to give until Asial and myself agreed on a setup. (Asial will be happy to confirm this).
Rasmus L. will also be able to confirm this as he originally (must have been back in 1998 (ca)) encouraged me to complete the library as PHP back then did not have any graphic library. If he remembers ...

I originally wrote this just after PHP3 was published with some very rudimentary Object faciltities which improved in PHP4 and 5.

When I, for various reasons, could no longer maintain the library ca 2010 then I gave it to Asial for maintenance and future development. Part of the reason was that the demands for support and new features was much more than I could handle in my spare time. I also got a bit desillusioned as some people in companies using the library for free demanded that I would give unpaid support for a package that I provided free of charge. It was then I also was forced into a dual-license to be able to afford the time needed for the one-on-one support.

For several years we also had a support board setup by a member of the community (cannot remember the URL) and I answered (if memory serves) over 4000 community questions when I realized I had to stop as it was consuming all my life with very little or none gratitude.

Unfortunately Asial they did not progress as much as I hoped and took my latest code base and only did minor tweaks to make it work with PHP newer versions and those came along.

I have long since left the PHP world and will no longer engage in the library other than that I plan to add the whole library (inlcuding all the extra "pro" stuff as an archive on GitHub with some comments on some of the algorithms I came up during the year of development that I beleive to be novel. Unfortunately my original notebook with all the details have been lost but I still remembers the main ideas.

A couple if things in the library comes to mind worth pointing out:

  1. The autoscaling algorithm is still (my opinion) better than most commercial packages. Specially the way it tries to find "nice" values and also not end the scale "abruptly" but uses a "grace" factor. It is not a "pretty" algorithm but it is effective!
  2. The positioning of labels for Pie graphs (which might seem trivial) is a heck of a lot better than what, for example, Excel manages and I spent serious time getting this corect (especially handling exploding pies turned out to be non-trivial)
  3. The fill and unfilled algorithm for the contour plot has not been published in the way I have done it to the best of my knowledge. The algorithm for the filled and uinfilled are also quite different.
  4. The state-maching I implemented for the PDF417 bar codes makes the table-driven approach I used in the code (in my humble opinion) one of the best PDF417 barcode implementations I have seen.
  5. Smaller things that people wont notice but I had fun implementing was
    • The 3D perspective grid was fun to discover how to get it mathematically correct. Pure geometry.
    • The LED digits . Not sure how much that has ever been used but it was fun!
    • The "hand-drawn" (by me!) anti-spam digits I scanned. There were actually a researchn paper on how to crack spam checks with my digits they used a learning algorithm that was able to crack it.
    • The compass/wind plot was actually a paid-for extension that a research group in the US wanted but allowed me to keep in the library
    • When I implemented the QR codes I actually found a "bug" in the official QR code specification (which mask that is applied in the end to get a more even mix of black/white dots) and wrote it up as a paper. The QR code specification shows the wrong optimal mask.
    • Realizing that anti-alias could be done by oversizing the image and then just downscale it to the wanted size. Never got around to implement (or figuring out) line based anti-aliasing
  6. Realizing how hard it was for people to conceptually see a PHP script as an image and deal with the "headers already sent" error. If I had a penny for every "bug" report I had about this I would be a rich man.
  7. The final things I was proud of was the API documentation system that scanned all the code and built a database of all public methods. I then did a basic UI to allow me to add documentation for each API in the DB and generate the API documentation. Both the JpGraph library and the API documentation system (DDDA) was presented by me in the International PHP conference 2003

See: "JpGraph and DDDA", PHP Im Einzats 2.0, Das Buch zur International PHP Conference, 2003, pp 77-86, Johan Persson

Good Luck with Keeping my old stuff alive!
Johan

P.S I will try to find time in the next 4-6 months to publish my last pro-release as a historic document (it was originally in a SVN repo) under my GitHub account (johan162)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions