Simple Eiffel - QUICK APIs

36 views
Skip to first unread message

Liberty Lover

unread,
Dec 16, 2025, 2:07:03 PM12/16/25
to Eiffel Users
Hey All,

Thank you to Ulrich for inspiring this push. He made me realize that the simple_* ecosystem is being populated by libs that are generally for folks who are subject matter experts. There are plenty of us who are not. For the rest of us, we need higher-level API access that does a lot of the generalized boilerplate coding under the hood. We just want to get a job done and move on. We're not interested in becoming subject matter experts. So, to this end and goal, I now introduce to you all: QUICK API fleet of classes.

See the announcement here.



● Complete QUICK API Reference

  Batch 1: Service Libraries (8)

  | Library           | QUICK Class             | Purpose             | Key Features                                                         |
  |-------------------|-------------------------|---------------------|----------------------------------------------------------------------|
  | simple_sql        | SIMPLE_SQL_QUICK        | Database operations | query(), execute(), scalar(), exists(), insert(), update(), delete() |
  | simple_http       | SIMPLE_HTTP_QUICK       | HTTP client         | get(), post(), put(), delete(), download(), json_get(), json_post()  |
  | simple_smtp       | SIMPLE_SMTP_QUICK       | Email sending       | send(), send_html(), send_with_attachment(), send_to_many()          |
  | simple_jwt        | SIMPLE_JWT_QUICK        | JWT tokens          | create_token(), verify(), decode(), is_valid(), is_expired()         |
  | simple_encryption | SIMPLE_ENCRYPTION_QUICK | Crypto operations   | encrypt(), decrypt(), hash(), verify_hash(), random_key()            |
  | simple_mq         | SIMPLE_MQ_QUICK         | Message queues      | publish(), subscribe(), consume(), ack(), queue_size()               |
  | simple_ai_client  | SIMPLE_AI_CLIENT_QUICK  | AI/LLM access       | ask(), chat(), complete(), embed(), streaming support                |
  | simple_web        | SIMPLE_WEB_QUICK        | Web framework       | get(), post(), json(), html(), redirect(), static()                  |

  Batch 2: Data Format Libraries (8)

  | Library           | QUICK Class             | Purpose               | Key Features                                                                         |
  |-------------------|-------------------------|-----------------------|--------------------------------------------------------------------------------------|
  | simple_json       | SIMPLE_JSON_QUICK       | JSON parsing/building | parse(), get_string(json, "$.path"), object.put().to_json, is_valid()                |
  | simple_cache      | SIMPLE_CACHE_QUICK      | In-memory caching     | get(), set(), remember(key, agent) ⭐, increment(), stats                            |
  | simple_validation | SIMPLE_VALIDATION_QUICK | Input validation      | email(), url(), required(), length_ok(), in_range(), one_of()                        |
  | simple_template   | SIMPLE_TEMPLATE_QUICK   | Mustache templates    | render(tpl, vars), file(), render_if(), render_list(), substitute()                  |
  | simple_csv        | SIMPLE_CSV_QUICK        | CSV read/write        | read(), write(), parse(), read_with_headers(), use_tabs, use_semicolons              |
  | simple_xml        | SIMPLE_XML_QUICK        | XML parsing/XPath     | xpath(), first(), attr(), text(), texts(), count(), exists()                         |
  | simple_yaml       | SIMPLE_YAML_QUICK       | YAML config files     | load(), get_string(cfg, "db.host"), get_integer(), string_from_file()                |
  | simple_regex      | SIMPLE_REGEX_QUICK      | Pattern matching      | matches(), find(), find_all(), replace_all(), is_email(), is_url(), extract_emails() |

  Other Libraries with QUICK APIs

  | Library       | QUICK Class         | Purpose              | Key Features                                |
  |---------------|---------------------|----------------------|---------------------------------------------|
  | simple_docker | SIMPLE_DOCKER_QUICK | Container management | run(), stop(), logs(), ps(), pull(), exec() |

  ---
  QUICK API Design Pattern

  Every QUICK class follows the same structure:

  class SIMPLE_*_QUICK

  create
      make

  feature {NONE} -- Initialization
      make
          do
              create underlying.make      -- Full API instance
              create logger.make ("*_quick")  -- Debug logging
          end

  feature -- One-liner Operations
      -- Returns BOOLEAN, STRING, or collections
      -- Sensible defaults, no configuration needed

  feature -- Status
      last_error: STRING
      has_error: BOOLEAN

  feature -- Advanced Access
      underlying: SIMPLE_*
          -- Access full API when needed

  feature {NONE} -- Implementation
      logger: SIMPLE_LOGGER

  invariant
      underlying_exists: underlying /= Void
      logger_exists: logger /= Void
  end

  ---
  Killer Features by Library

  | Library           | Standout Feature    | Example                                                      |
  |-------------------|---------------------|--------------------------------------------------------------|
  | simple_cache      | remember pattern    | cache.remember("key", agent compute) - auto cache-or-compute |
  | simple_yaml       | Dot-path config     | yaml.get_string(cfg, "database.host")                        |
  | simple_regex      | Built-in validators | rx.is_email(), rx.extract_urls()                             |
  | simple_json       | JSONPath + builder  | json.get_string(j, "$.users[0].name")                        |
  | simple_csv        | Format variants     | csv.use_tabs, csv.use_semicolons                             |
  | simple_validation | Error messages      | v.last_error after failed validation                         |

  ---
  Total: 17 QUICK APIs across the ecosystem



Cheers,

Larry

Liberty Lover

unread,
Dec 16, 2025, 2:24:55 PM12/16/25
to eiffel...@googlegroups.com
And there is an updated README.md for the entire Simple Eiffel site.




--
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/cc4d50cc-bd8d-444a-9fcf-483ddb888632n%40googlegroups.com.

Ulrich Windl

unread,
Dec 18, 2025, 1:05:28 PM12/18/25
to eiffel...@googlegroups.com
Is it intended that README.md redirects to https://dealsbe.com/?
It happens on my mobile.

Ulrich

16.12.2025 20:24:41 Liberty Lover <rix....@gmail.com>:

> And there is an updated README.md for the entire Simple Eiffel site.
>
> Simple Eiffel[https://github.com/simple-eiffel]
>
>
>
> On Tue, Dec 16, 2025 at 2:07 PM Liberty Lover <rix....@gmail.com> wrote:
>> Hey All,
>>
>> Thank you to Ulrich for inspiring this push. He made me realize that the simple_* ecosystem is being populated by libs that are generally for folks who are subject matter experts. There are plenty of us who are not. For the rest of us, we need higher-level API access that does a lot of the generalized boilerplate coding under the hood. We just want to get a job done and move on. We're not interested in becoming subject matter experts. So, to this end and goal, I now introduce to you all: QUICK API fleet of classes.
>>
>> See the announcement here[https://github.com/simple-eiffel/claude_eiffel_op_docs/blob/main/posts/quick_api_announcement.md].
>> To view this discussion visit https://groups.google.com/d/msgid/eiffel-users/cc4d50cc-bd8d-444a-9fcf-483ddb888632n%40googlegroups.com[https://groups.google.com/d/msgid/eiffel-users/cc4d50cc-bd8d-444a-9fcf-483ddb888632n%40googlegroups.com?utm_medium=email&utm_source=footer].
>
> --
> 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%2B3qnjf5SKSgHxMuv%3DF%3D3%2B7ojEFXKUq250VfEi-S_FKBF%3DFDOw%40mail.gmail.com[https://groups.google.com/d/msgid/eiffel-users/CA%2B3qnjf5SKSgHxMuv%3DF%3D3%2B7ojEFXKUq250VfEi-S_FKBF%3DFDOw%40mail.gmail.com?utm_medium=email&utm_source=footer].

Chris Tillman

unread,
Dec 19, 2025, 7:44:27 PM12/19/25
to eiffel...@googlegroups.com
Ouch. Maybe check your browser for malware extensions? It doesn't happen for me, but I'm a GitHub user, which may be a different case.



--
Chris Tillman
Developer

Liberty Lover

unread,
Dec 19, 2025, 8:19:03 PM12/19/25
to eiffel...@googlegroups.com
  Chris is spot on here. I just verified the GitHub organization page and README - everything loads correctly with no redirects.

  Ulrich, the redirect to "dealsbe.com" is textbook adware behavior. Your mobile device likely has a malicious browser extension or app that's intercepting URLs and rerouting them through ad networks. A few things to try:

  1. Test in incognito/private mode - if it works there, it's definitely a browser extension
  2. Try a different browser entirely
  3. Check your recently installed apps - some inject ads system-wide
  4. Clear browser cache and cookies

  If it happens across all browsers, you might have a network-level issue (compromised WiFi router or ISP-level ad injection - more common in some regions).

  The Simple Eiffel GitHub pages are clean - 71 repos, no shenanigans.

  Larry

Ulrich Windl

unread,
Dec 22, 2025, 3:49:10 AM12/22/25
to eiffel...@googlegroups.com
Hi!

Just for the curious ones in this list: Why did README.md refer to dealsbe.com in my E-Mail reader on Android?
The reader has an auto-linking feature using "well-known domains", and "md" is the top-level domain for Moldavia. This means some clever guy registered the domain "readme" in Moldavia, so http://README.md will refer to the website behind. Probably good for placing advertisements.

A description for my mail reader can be found at https://m66b.github.io/FairEmail/#faq90

--
Kind regards,
Ulrich Windl

20.12.2025 02:18:48 Liberty Lover <rix....@gmail.com>:

>   Chris is spot on here. I just verified the GitHub organization page and README - everything loads correctly with no redirects.
>
>   Ulrich, the redirect to "dealsbe.com[http://dealsbe.com]" is textbook adware behavior. Your mobile device likely has a malicious browser extension or app that's intercepting URLs and rerouting them through ad networks. A few things to try:
>>>>> To unsubscribe from this group and stop receiving emails from it, send an email to eiffel-users...@googlegroups.com[eiffel-users%2Bunsu...@googlegroups.com].
>>>>> To view this discussion visit https://groups.google.com/d/msgid/eiffel-users/cc4d50cc-bd8d-444a-9fcf-483ddb888632n%40googlegroups.com[https://groups.google.com/d/msgid/eiffel-users/cc4d50cc-bd8d-444a-9fcf-483ddb888632n%40googlegroups.com?utm_medium=email&utm_source=footer][https://groups.google.com/d/msgid/eiffel-users/cc4d50cc-bd8d-444a-9fcf-483ddb888632n%40googlegroups.com%5Bhttps://groups.google.com/d/msgid/eiffel-users/cc4d50cc-bd8d-444a-9fcf-483ddb888632n%40googlegroups.com?utm_medium=email&utm_source=footer]].
>>>>
>>>> --
>>>> 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[eiffel-users%2Bunsu...@googlegroups.com].
>>>> To view this discussion visit https://groups.google.com/d/msgid/eiffel-users/CA%2B3qnjf5SKSgHxMuv%3DF%3D3%2B7ojEFXKUq250VfEi-S_FKBF%3DFDOw%40mail.gmail.com[https://groups.google.com/d/msgid/eiffel-users/CA%2B3qnjf5SKSgHxMuv%3DF%3D3%2B7ojEFXKUq250VfEi-S_FKBF%3DFDOw%40mail.gmail.com?utm_medium=email&utm_source=footer][https://groups.google.com/d/msgid/eiffel-users/CA%2B3qnjf5SKSgHxMuv%3DF%3D3%2B7ojEFXKUq250VfEi-S_FKBF%3DFDOw%40mail.gmail.com%5Bhttps://groups.google.com/d/msgid/eiffel-users/CA%2B3qnjf5SKSgHxMuv%3DF%3D3%2B7ojEFXKUq250VfEi-S_FKBF%3DFDOw%40mail.gmail.com?utm_medium=email&utm_source=footer]].
>>>
>>> --
>>> 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[eiffel-users%2Bunsu...@googlegroups.com].
>>> To view this discussion visit https://groups.google.com/d/msgid/eiffel-users/bda53692-9d8f-4108-8f76-8ab62343275f%40gmail.com.
>>
>>
>> --
>> Chris Tillman
>> Developer
>>
>> --
>> 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/CAO299Ftb%3DSYjS4XfoEOUNUfe0XtzNZDu9pqY6c6H-W86rHtrUA%40mail.gmail.com[https://groups.google.com/d/msgid/eiffel-users/CAO299Ftb%3DSYjS4XfoEOUNUfe0XtzNZDu9pqY6c6H-W86rHtrUA%40mail.gmail.com?utm_medium=email&utm_source=footer].
>
> --
> 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%2B3qnje_Bc%3DR7d%2BJ%2BOqBURqwJM2fbNUv72%2BHeJ9fPw0AfrTiEQ%40mail.gmail.com[https://groups.google.com/d/msgid/eiffel-users/CA%2B3qnje_Bc%3DR7d%2BJ%2BOqBURqwJM2fbNUv72%2BHeJ9fPw0AfrTiEQ%40mail.gmail.com?utm_medium=email&utm_source=footer].
Reply all
Reply to author
Forward
0 new messages