Recent

Author Topic: Sharing utilities  (Read 3004 times)

lucabertoncini

  • New Member
  • *
  • Posts: 12
Sharing utilities
« on: July 13, 2025, 10:08:33 pm »
Hello! I’m happy to share a collection of my personal software libraries and utilities for Free Pascal. This repository is a work in progress: I plan to keep expanding it by adding more units over time. While it's still growing, you're welcome to explore and use any of the available utilities in your own projects. I hope some of these tools prove useful to others in the Free Pascal community!

Feel free to reach out with feedback, suggestions, or improvements.

https://github.com/LucaBertoncini/LBToolkit

ASBzone

  • Hero Member
  • *****
  • Posts: 733
  • Automation leads to relaxation...
    • Free Console Utilities for Windows (and a few for Linux) from BrainWaveCC
Re: Sharing utilities
« Reply #1 on: July 14, 2025, 06:56:13 am »
Thanks!!   This looks like something I can use right now... :P
-ASB: https://www.BrainWaveCC.com/

Lazarus v4.3.0.0 (bcf314a670) / FreePascal v3.2.3-46-g77716a79dc (aka fixes)
(Windows 64-bit install w/Win32 and Linux on ARM and x64 cross-compilers via FpcUpDeluxe)

My Systems: Windows 10/11 Pro x64 (Current)

lucabertoncini

  • New Member
  • *
  • Posts: 12
Re: Sharing utilities
« Reply #2 on: July 14, 2025, 09:01:00 am »
I'm really glad to read that! The most important library for me is LBLogger. It started as a simple logger for daemons, but with a small trick I turned it into an alarm system.

The main logger can host multiple "sub-loggers", and each sub-logger can perform a specialized action. This allows me to write the software using the logger from the beginning, and then evaluate whether certain messages need to be treated in a particular way.

For example, on a Raspberry Pi, a sub-logger controls a GPIO pin connected to a red LED, which is triggered when an error or critical message is detected. I added this feature after the project was complete, without changing a single line of the original code, just by creating a new class derived from TLBBaseLogger.

In other cases, I’ve used this technique to automatically send emails when an unhandled error is caught.

lucabertoncini

  • New Member
  • *
  • Posts: 12
Re: Sharing utilities
« Reply #3 on: July 19, 2025, 12:43:02 am »
Hi everyone! Just wanted to share a small project I’ve been working on, now added to my Pascal repository: LBmicroWebServer — a lightweight web server that’s easy to embed into any application.
The idea behind it was pretty simple: sometimes we just need a quick way to expose our application's state or functionality over HTTP without setting up an external service or pulling in a heavy framework. Something that can be dropped into any program and just works.
LBmicroWebServer depends only on the Synapse networking library and was built to be lean, secure, and modular. You can use it to serve files, respond to API requests, stream data, or control embedded systems remotely. With built-in WebSocket support, it’s also a good fit for real-time dashboards, audio/video streaming, or industrial automation tools.
It’s not intended as a general-purpose server like the big frameworks out there, but that’s the point — it’s compact and focused, and it integrates directly into your own code.
The project already includes a full suite of unit tests and is structured for easy extension. If anyone is curious or would like to try it out, I’d be happy to share more details.
And if someone’s interested in helping me adapt it from a thread-per-connection architecture to a more event-driven model, I’d be very glad to collaborate!

lucabertoncini

  • New Member
  • *
  • Posts: 12
Re: Sharing utilities
« Reply #4 on: August 02, 2025, 09:10:22 am »
Hello everyone,
while LBToolkit's existing components, such as LBLogger, LBmicroWebServer and LBWebPyBridge, have focused on backend functionality, I've introduced a new addition that brings LBToolkit into the realm of user interfaces: LBVirtualKeyboard.

This virtual keyboard was born out of real-world needs and stays true to LBToolkit’s philosophy: **modularity, flexibility, and adaptability**. I've used it successfully in various touchscreen scenarios, including embedded devices and industrial control panels.

### 🧩 Key Features

- **Advanced customization** 
  The entire keyboard layout — number of keys, pages, and their arrangement — is defined via XML. This allows you to tailor the keyboard to show only the characters needed for a specific context.

- **Input flexibility & appearance** 
  Each key can be rendered using custom bitmaps or styled dynamically. The keyboard adapts to any screen size and input method.

- **Portable architecture** 
  Thanks to a low-level abstraction layer for input handling, the core component is OS-agnostic. Native support is already available for **Windows** and **Linux/X11**, with potential for further platform extensions.


### 🎨 Theme System (Experimental)

A first version of a **theme system** is also included. It allows you to define the visual style of the keyboard — colors, fonts, borders, shadows, and even animations — using JSON files. This opens the door to future enhancements like PNG-based rendering, plugin-based styles, and visual editors.

lucabertoncini

  • New Member
  • *
  • Posts: 12
Re: Sharing utilities
« Reply #5 on: August 20, 2025, 11:36:02 am »
🔧 Hi everyone! I recently published two posts about LBToolkit, an open-source library I'm developing to support reusable and non-invasive backend components.

🔹 The first post introduces the vision behind LBToolkit and the challenges it aims to solve: 
👉 https://www.linkedin.com/feed/update/urn:li:activity:7363853891647471617/

🔹 The second post explores LBWebPrism, a dynamic gateway between scripting languages like Python and Node.js, enabling hybrid web applications with minimal configuration: 
👉 https://www.linkedin.com/feed/update/urn:li:activity:7363859819734220802/

If you're working with hybrid architectures, microservices, or backend flexibility, I think you'll find it interesting. 
I'd love to hear your thoughts or suggestions!

 

TinyPortal © 2005-2018