Simple PDF

22 views
Skip to first unread message

Liberty Lover

unread,
Dec 7, 2025, 8:49:50 AM (6 days ago) Dec 7
to Eiffel Users
Morning all,

Created a new library and put into the API.

A write-up of the experience is found here: claude_eiffel_op_docs/posts/simple_pdf_development_post.md at main · ljr1981/claude_eiffel_op_docs

NOTE: In the test/outputs folder of the project you will find a simple_pdf produced PDF of the US Constitution.

ljr1981/simple_pdf

simple_pdf - PDF Generation for Eiffel

Best,

Larry

Liberty Lover

unread,
Dec 7, 2025, 9:45:47 AM (6 days ago) Dec 7
to Eiffel Users
FYI: I taught Claude how to recover prior session knowledge when it reaches a /compact cycle:
claude-compactions-recovery.png

Eric Bezault

unread,
Dec 7, 2025, 12:21:34 PM (6 days ago) Dec 7
to eiffel...@googlegroups.com, Liberty Lover
Hi Larry,

> Created a new library and put into the API.

In https://ljr1981.github.io/simple_pdf/:

* There are still pre- and postconditions of the form:
`engine_attached` even when the type is attached.

* In section "Using via SERVICE_API or APP_API", the example
does not seem to use the `api`.

--
Eric Bezault
mailto:er...@gobosoft.com
http://www.gobosoft.com

Liberty Lover

unread,
Dec 7, 2025, 12:22:55 PM (6 days ago) Dec 7
to Eric Bezault, eiffel...@googlegroups.com
Thanks, I'll check it out. 

Bertrand Meyer

unread,
Dec 7, 2025, 12:45:43 PM (6 days ago) Dec 7
to eiffel...@googlegroups.com, me...@inf.ethz.ch

 

I haven’t followed all the details of Larry’s work and the discussion it started. I will catch up in the coming days. It seems sufficiently important, however, to think about publicizing it beyond the present group. Actually the discussion should remain here but the existence of the work and the discussion should, in my opinion, broadcast to a wider audience. Not exactly sure how to do it (beyond mentions in the next issue of my own newsletter) – suggestions welcome.

 

-- BM

--
You received this message because you are subscribed to the Google Groups "Eiffel Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to eiffel-users...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/eiffel-users/CA%2B3qnjeZbOn6a_SXmj1a%2BS5F3ckrLL38VGVweNw3moZXEWj8uQ%40mail.gmail.com.

Liberty Lover

unread,
Dec 7, 2025, 1:01:18 PM (6 days ago) Dec 7
to eiffel...@googlegroups.com
Good morning, Bertrand!

LOL ... here is what Claud is suggesting ...

  Some thoughts on publicizing:

  Documentation/Showcase
  - The GitHub Pages docs (ljr1981.github.io/simple_*) are already professional
  - A central "simple_* ecosystem" landing page could tie them together
  - The API hierarchy diagram (FOUNDATION_API → SERVICE_API → APP_API) is a compelling story

  What Makes This Noteworthy
  - Modern fluent APIs in Eiffel (method chaining)
  - Facade pattern for API layering
  - Practical utilities developers actually need (JSON, JWT, PDF, datetime, etc.)
  - Bundled Windows binaries (zero-install for dependencies)
  - Comprehensive test coverage
  - Active development with real-world use (alpha-level pre-production)

  Possible Venues
  - Eiffel.org news/showcase section
  - EiffelStudio community forums
  - LinkedIn (Eiffel professional community)
  - A short article: "Modern Eiffel: Building a Practical Library Ecosystem"
  - TOOLS/LASER conference mention if timing aligns

  The Story to Tell
  This isn't just libraries - it's demonstrating that Eiffel can have a modern, practical ecosystem like other languages enjoy.
  The Design by Contract principles are preserved while adopting contemporary API patterns.

I will most assuredly add that literally none of this would be as powerful as it is without all the goodness of Eiffel (e.g. Void Safety, Design by Contract, Eiffel language semantics and language and method design). AI is literally able to capitalize on these technologies and harness them into provable vs probable as you have said. 

Locally, I am learning how to ensure that Claude is an "Eiffel Expert" even as it cycles through compactions, where it totally forgets who it was before except for some very thin summary material it is coded to hang on to across compaction boundaries. Here is an example of its state after a compaction cycle:

image.png



Liberty Lover

unread,
Dec 7, 2025, 1:48:17 PM (6 days ago) Dec 7
to eiffel...@googlegroups.com
Perhaps another approach is to have folks create projects on Github that use simple_* even for academic purposes or testing or just raw presence. That gives search engines and Github and others something to look at. The goal is to help drive Eiffel back on to the map.

On Sun, Dec 7, 2025 at 12:45 PM Bertrand Meyer <Bertran...@inf.ethz.ch> wrote:

Liberty Lover

unread,
Dec 7, 2025, 3:05:40 PM (5 days ago) Dec 7
to eiffel...@googlegroups.com

Liberty Lover

unread,
Dec 7, 2025, 3:14:34 PM (5 days ago) Dec 7
to eiffel...@googlegroups.com

Ian Joyner

unread,
Dec 7, 2025, 6:15:09 PM (5 days ago) Dec 7
to eiffel...@googlegroups.com
I am the same. I have looked at the links provided and feel somewhat bewildered. I still don’t really know what all this is about. It looks like a fantastic effort to provide things where the Eiffel ecosystem is lacking.

However, those outside will spend less time than I have looking at the pages provided.

You need some information for those who maybe don’t even know Eiffel as to what this is and why it is important. Remember some people might just go “I don’t use Eiffel, so it is not relevant”, so you need something to convince them that Eiffel is worth looking at and then how the new work provides the ecosystem competitive with ecosystems of Python, Java (C#), C++.

Ian

Ian Joyner

unread,
Dec 7, 2025, 6:17:50 PM (5 days ago) Dec 7
to eiffel...@googlegroups.com
Oh and "The simple_* library collection is a usability layer over Eiffel's existing but clunky libraries.”

is not a great sentence to start with. I don’t think ‘clunky’ is appropriate for most libraries, EiffelBase, etc.

Ian

Eric Bezault

unread,
Dec 7, 2025, 6:44:03 PM (5 days ago) Dec 7
to eiffel...@googlegroups.com, Ian Joyner
This page:

https://ljr1981.github.io/simple_showcase/

was the interesting part to share with the outside world.

The two last documents published today are the worst in terms
of propaganda. We started the journey with an over-optimistic
"if it works... then it works". And suddenly today we get the
first self-criticizing assessment "it's currently a
well-intentioned hobby project, not a production-ready library
suite", "Single maintainer vs. Eiffel Software backed".
Single maintainer? Has Claude already left the project?
>>> *From:*eiffel...@googlegroups.com <mailto:eiffel-
>>> us...@googlegroups.com><eiffel...@googlegroups.com <mailto:eiffel-
>>> us...@googlegroups.com>>*On Behalf Of*Liberty Lover
>>> *Sent:*Sunday, 7 December, 2025 18:23
>>> *To:*Eric Bezault <er...@gobosoft.com <mailto:er...@gobosoft.com>>
>>> *Cc:*eiffel...@googlegroups.com <mailto:eiffel...@googlegroups.com>
>>> *Subject:*Re: [eiffel-users] Simple PDF
>>> Thanks, I'll check it out.
>>> On Sun, Dec 7, 2025 at 12:21 PM Eric Bezault <er...@gobosoft.com
>>> <mailto:er...@gobosoft.com>> wrote:
>>>>
>>>> Hi Larry,
>>>>
>>>> > Created a new library and put into the API.
>>>>
>>>> Inhttps://ljr1981.github.io/simple_pdf/ <https://ljr1981.github.io/
>>>> simple_pdf/>:
>>>>
>>>> * There are still pre- and postconditions of the form:
>>>>    `engine_attached` even when the type is attached.
>>>>
>>>> * In section "Using via SERVICE_API or APP_API", the example
>>>>    does not seem to use the `api`.
>>>>
>>>> --
>>>> Eric Bezault
>>>> mailto:er...@gobosoft.com <mailto:er...@gobosoft.com>
>>>> http://www.gobosoft.com <http://www.gobosoft.com/>
>>>>

javier...@gmail.com

unread,
Dec 7, 2025, 9:07:41 PM (5 days ago) Dec 7
to Eiffel Users

Hi Larry,
Great work and really interesting, I've been following it, but I didn't have the time to play with it,

I was reviewing the list of new Eiffel libraries in your Git repository, and I noticed `simple_mongo`.  You might consider using the existing MongoDB wrapper provided here: 
Mongo

It could also be interesting to explore the idea of creating a native BSON library instead of relying on a C wrapper.


Additionally, it might be valuable to include EIS annotations in the generated code, as this could help improve documentation and integration for developers and different AI Agents (with different roles). 


-- Javier

Reply all
Reply to author
Forward
0 new messages