Find

Announcement
· Jul 30

Better ML Models with AutoML and random samples

Why Randomization is Key When Splitting Data for Machine Learning

Post:
Essentially, Machine Learning is about learning from data. Having "good" data leads to better models, and more importantly, the quality of the information being used plays a crucial role in improving prediction accuracy.

One critical step in the process is how we separate our data into training and validation sets. If this isn’t done properly, we risk introducing bias, overfitting, or unrealistic performance expectations for the model.

In this article, we’ll explore:

  • Best practices for randomization when splitting data into training and validation sets.
  • Common pitfalls to avoid (such as data leakage or imbalanced splits).
  • How to use a dedicated routine to ensure the process is repeatable and reliable.

The goal is to show how a robust data-splitting strategy can directly improve model performance and generalization.

What strategies do you currently use for data splitting? Do you prefer simple random splits, stratification, or more advanced approaches like time-based splits?

Discussion (0)1
Log in or sign up to continue
Article
· Jul 30 3m read

Toolqa - A espera acabou

É... Chegou a hora dos testes. Sabemos que em muitas vezes, ela até já passou. Bom, e agora? Consigo reforçar a qualidade do meu desenvolvimento?

A resposta é: SIM. Sim, você consegue. A ferramenta Toolqa busca exatamente isto. É um facilitador. Qual é o seu objetivo? Garantir que as APIS atendam aos requisitos de negócio pré-estabelecidos, e também mantenha-se rígida com as <sarcasm> futuras tentativas frustradas </sarcasm> de acabar com a sua aplicação, site, App ou qualquer outro que utilize-se de sua API.

Agora deve estar se perguntando, mas como é que isto acontece? Onde está a mágica?

A classe ToolQA.tool.BP.Tool foi projetada como um agente de teste inteligente e automatizado para classes de API no InterSystems IRIS, e seus maiores objetivos são:

  1. Gerar de forma automática (a partir da seleção de uma classe) novas classes de teste para qualquer classe de API;
  2. Avaliar os próprios métodos e parâmetros da classe de API usando metadados da classe IRIS;
  3. Gerar diversos valores de teste sintéticos para cada parâmetro do método com base em seu tipo (Integer, String, Float, Date...);
  4. Confrontar esses valores de teste em relação ao esquema do seu banco de dados antes de invocar o método da API, garantindo a conformidade com o tipo e os limites;
  5. Compilar e salvar a classe de teste gerada no ambiente IRIS;
  6. Fornecer um método Run() executável dentro da classe de teste gerada para executar os testes e reportar os resultados.

Certo, entendi, mas, e como eu faço isto? Basta seguir os passos abaixo:

Input

Você chama o método

DO ##class(ToolQA.tool.BP.Tool).GenerateTestForClass(“Your.API.ClassName”)
Com o nome da API que você deseja testar.

  1. Introspecção e Análise de Metadados A ferramenta utiliza IRIS’ %Dictionary.ClassDefinition :

Abra a definição de classe da API;

Enumere todos os métodos de classe públicos;

Extraia os nomes e tipos de parâmetros de cada método.

  1. Synthetic Test Data Generation For each method parameter:

O método CreateFakeValue gera um valor fictício compatível com o tipo do parâmetro (por exemplo, string, inteiro, float);

A ferramenta tenta encontrar um mapeamento entre parâmetros e classes/campos persistentes do banco de dados por meio do método ClassBank, examinando classes persistentes conhecidas em busca de campos correspondentes;

Se existir um mapeamento, o valor fictício gerado é validado em relação ao tipo e às restrições do campo do banco de dados (ValidateValueField), verificando a correção do tipo, os limites de comprimento e os limites numéricos.

  1. A geração da classe de teste é criada dinamicamente pelo agente como uma nova classe de teste com a convenção de nome:

ToolQA.QA.Tests.Test
A classe contai um método Run()  que:

Exibe a mensagem de início do teste;

Executa cada método da API com os parâmetros gerados, após a validação;

Captura e registra erros ou exceções durante chamadas de métodos;

Relata o sucesso ou a falha do teste.

  1. A compilação e execução da classe de teste gerada é salva no formato de arquivo *.cls e compilada automaticamente com o IRIS. Em seguida você executa os testes com:

DO ##class(ToolQA.QA.Tests.Test).Run()
Como as respostas e resultados são tratados: 
A classe de teste captura o status de retorno (%Status) de cada chamada de método da API;

Erros (códigos de insucesso) são exibidos no console com os detalhes:

Exceções geradas por métodos de API são capturadas e registradas com seu rastreamento de pilha;

Como o agente gera entradas sintéticas, ele não valida o conteúdo da resposta além do sucesso da execução — mas você pode estender a classe de teste para adicionar asserções em objetos de saída ou estruturas de dados retornadas, conforme necessário.

Para mais informações sobre a ferramenta e como proceder, acesse o link:

https://openexchange.intersystems.com/package/toolqa

Esta ferramenta foi desenvolvida em conjunto com @Andre Ribera Dienes Friedrich. Obrigado pela sua consideração... E o céu é o limite.

Discussion (0)1
Log in or sign up to continue
Article
· Jul 30 3m read

Toolqa - The wait is over

Well... It's time for testing. We know that often, it's already over. So, what now? Can I improve the quality of my development?

The answer is: YES. Yes, you can. The Toolqa tool aims to do just that. It's a facilitator. What's its goal?

To ensure that APIs meet pre-established business requirements, while also protecting against <sarcasm>  future failed attempts </sarcasm>  to destroy your application, website, app, or anything else that uses your API.

Now you might be wondering, how does this happen? Where's the magic?

The ToolQA.tool.BP.Tool class was designed as an intelligent and automated testing agent for API classes in InterSystems IRIS, and its main objectives are:

  1. Automatically generate (from the selection of a class) new test classes for any API class;
  2. Evaluate the API class's own methods and parameters using IRIS class metadata;
  3. Generate several synthetic test values for each method parameter based on its type (Integer, String, Float, Date, etc.);
  4. Compare these test values against your database schema before invoking the API method, ensuring type and limit compliance;
  5. Compile and save the generated test class in the IRIS environment;
  6. Provide an executable Run() method within the generated test class to run the tests and report the results.

Okay, I get it, but how do I do this? Just follow the steps below:

Input

You call the method:

DO ##class(ToolQA.tool.BP.Tool).GenerateTestForClass(“Your.API.ClassName”)
with the fully qualified name of the API class you want to test.

  1. Introspection and Metadata Analysis The tool uses IRIS’ %Dictionary.ClassDefinition to:

Open the API class definition;

Enumerate all public class methods;

Extract each method’s parameter names and types.

  1. Synthetic Test Data Generation For each method parameter:

The method CreateFakeValue generates a dummy value compatible with the parameter’s type (e.g., string, integer, double);

The tool attempts to find a mapping between parameters and persistent database classes/fields through the ClassBank method, scanning known persistent classes for matching fields;

If a mapping exists, the generated dummy value is validated against the database field’s type and constraints (ValidateValueField), checking type correctness, length limits, and numeric bounds.

  1. Test Class Generation The agent dynamically creates a new test class with the naming convention:

ToolQA.QA.Tests.Test
The class contains a Run() class method that:

Prints the test start message;

Executes each API method with generated parameters, after validation;

Catches and logs errors or exceptions during method calls;

Reports test success or failure.

  1. Compilation and Execution The generated test class is saved as a .cls file and compiled automatically within IRIS. You then execute tests by running:

DO ##class(ToolQA.QA.Tests.Test).Run()
How Responses and Results Are Handled
The test class captures the return status (%Status) of each API method call;

Errors (non-success status codes) are printed to the console with details;

Exceptions thrown by API methods are caught and logged with their stack trace;

Since the agent generates synthetic inputs, it does not currently validate response content beyond execution success — but you can extend the test class to add assertions on output objects or returned data structures as needed.

For more information about the tool and how to proceed, you can access the link:

https://openexchange.intersystems.com/package/toolqa

This tool was built together with @André Dienes Friedrich. Thank you for your consideration... And the sky is the limit.

 

Discussion (0)2
Log in or sign up to continue
Announcement
· Jul 30

[Video] Can AI fix bugs? The setup

Hey Community!

We're happy to share the next video in the "Code to Care" series on our InterSystems Developers YouTube:

⏯  Can AI fix bugs? The setup

In this video, you will explore the setup for an experiment on whether generative AI can automatically fix software bugs, which is a complex problem that remains unsolved. The speaker highlights the significant cost and time software companies spend on bug fixing (up to one-third of development resources) and the potential productivity gains if AI could assist with this task. With large language models already excelling in standardized tests, the industry sees automated bug fixing as one of the next big challenges.

🗣 Presenter: @Don Woodlock, Head of Global Healthcare Solutions, InterSystems

Enjoy watching, and subscribe for more videos! 👍

Discussion (0)1
Log in or sign up to continue
Article
· Jul 30 4m read

Simplify Your Billing Process with an Invoice Generator

In today’s fast-paced business world, staying on top of billing is vital. Whether you're a freelancer, small business owner, or service provider, invoicing is a core part of maintaining cash flow. This is where an invoice generator comes into play. It replaces manual billing with an automated, efficient, and accurate alternative, saving time and reducing human error.

With just a few clicks, users can input their details, add services or products, and produce a professional invoice. The entire process is streamlined, polished, and paperless. Let’s explore how this tool transforms financial workflows.

What Is an Invoice Generator?

An invoice generator is a digital tool designed to create invoices quickly and accurately. Instead of drafting bills in word processors or spreadsheets, users can simply fill in client data, payment terms, and itemized charges. The tool then formats everything into a presentable invoice, often ready for printing, downloading, or emailing.

Most invoice generators also store past invoices, helping with recordkeeping and reducing administrative burden. They cater to all kinds of industries—from creative agencies to online shops.

Why Businesses Need an Invoice Generator

Time is money. And spending hours formatting invoices manually is not an efficient use of time. An invoice generator cuts that effort drastically. Imagine sending a complete, branded invoice in under five minutes. That’s not just convenient, it’s strategic.

These tools also ensure billing accuracy. They minimize missed entries, miscalculations, and typos. Consistency in invoices improves your brand image and makes it easier for clients to understand charges.

Key Features to Look For

Not all invoice tools are the same. The best invoice generator platforms provide templates, automation, and personalization. Look for these essential features:

  • Custom branding (logos, colors, layout)
  • Automatic tax calculations
  • Multi-currency and multilingual support
  • Recurring invoice capabilities
  • Data storage and invoice history

Platforms like Invoice Generation Tool make invoicing flexible and accessible, even for users without technical expertise.

Benefits for Freelancers and Small Businesses

Freelancers and small businesses often operate with limited time and resources. An invoice generator helps them present a professional front without hiring an accountant. It lets them focus on what they do best while keeping the billing process seamless.

Additionally, invoicing tools support better client relationships. Clear and timely invoices reduce confusion and late payments, fostering trust and transparency.

Going Paperless and Saving Time

We’re in the era of digital transformation. Traditional paper invoices are not only time-consuming but also environmentally unfriendly. An invoice generator supports the paperless movement by offering instant digital records.

With cloud-based solutions, invoices can be accessed anytime, from anywhere. That’s especially useful for remote workers or businesses on the go.

Common Use Cases Across Industries

From retail to real estate, nearly every sector benefits from an invoice generator. Here are a few examples:

  • Consultants use them to bill per session or hourly work.
  • eCommerce stores generate receipts for online sales.
  • Tradespeople prepare invoices on-site after completing a job.
  • Event planners send customized bills for various packages.

This level of versatility makes invoice generators an essential part of modern operations.

Enhancing Your Brand Identity

A professional invoice isn't just a payment request, it's part of your brand presentation. Most invoice generators allow for custom design so you can showcase your logo, colors, and business message. Every invoice becomes an opportunity to reinforce your identity.

Tools like Invoice Generation Tool offer templates that combine style with function, helping your brand stand out in every client interaction.

Automation and Recurring Invoices

For businesses with recurring billing cycles, automation is a game-changer. With an invoice generator, you can schedule invoices weekly, monthly, or at any interval. This removes repetitive tasks and guarantees timely delivery.

Automated reminders also prompt clients to pay on time. It's a quiet but effective nudge that improves your cash flow without awkward follow-ups.

Security and Backup of Financial Data

Keeping financial data safe is crucial. Good invoice generators come with data encryption, secure access, and regular backups. This means your invoices are protected from unauthorized access and data loss.

Using a reliable invoice generator also reduces the risk of document misplacement, especially when compared to paper-based systems or local-only storage.

Final Thoughts on Invoice Efficiency

Invoicing doesn’t need to be a pain point. With an invoice generator, the entire process becomes faster, simpler, and smarter. It frees up time, improves accuracy, and supports your professionalism, all without the need for advanced software skills.

For anyone looking to upgrade their billing system, adopting a tool like Invoice Generation Tool can make a measurable difference. Whether you’re just starting out or managing a growing business, smart invoicing is a step forward in productivity and professionalism.

Discussion (0)1
Log in or sign up to continue