Welcome to Ed2Ti Blog.

My journey on IT is here.

Power BI, Microsoft's business intelligence tool, empowers users to transform raw data into actionable insights through compelling visualizations. To harness the full potential of Power BI, it's crucial to adopt best practices in data modeling, report design, and overall usage. This article explores key recommendations to elevate your Power BI proficiency and enhance the impact of your data-driven decisions.

1) Data Modeling Best Practices:

Normalize Data: Organize your data model by breaking it into logical tables, promoting normalization. This enhances maintainability and reduces redundancy.

Relationships: Establish clear and appropriate relationships between tables. Utilize relationships to merge data from different tables effectively.

Data Types and Formatting: Ensure accurate data types and formatting for each column. Consistent formatting enhances the visual appeal and readability of your reports.

2) Report Design Best Practices:

Simple and Intuitive Layout: Keep your report layout clean and intuitive. Arrange visuals logically and use consistent color schemes and fonts for a professional look.

Use of Filters: Leverage filters judiciously to focus on relevant data. Utilize slicers for an interactive and user-friendly experience.

Performance Considerations: Optimize report performance by minimizing the use of unnecessary visuals and complex calculations. Aggregating data at the source or using summary tables can significantly boost performance.

3) Visual Best Practices:

Choose the Right Visuals: Select visuals that best represent the insights you want to convey. Bar charts, line charts, and scatter plots are commonly used, but consider specialized visuals when appropriate.

Consistent Naming Conventions: Maintain a consistent and meaningful naming convention for visuals, fields, and measures. This ensures clarity and simplifies collaboration with others.

Accessibility: Design your reports with accessibility in mind. Use alt text for visuals, and ensure that colors and contrasts are accessible to users with visual impairments.

4) Security Best Practices:

Row-Level Security (RLS): Implement Row-Level Security to control access to data based on user roles. This ensures that users see only the data relevant to their role.

Secure Data Connections: When connecting to external data sources, employ secure methods such as encrypted connections (HTTPS) and, if applicable, OAuth authentication.

5) Documentation:

Commenting and Descriptions: Document your data model, measures, and visuals using comments and descriptions. This aids in knowledge transfer and understanding, especially in collaborative environments.

Version Control: Establish version control for your Power BI files. This ensures that changes can be tracked and reverted if necessary.

Conclusion:

Mastering Power BI involves a combination of technical prowess and a keen eye for effective data communication. By incorporating these best practices into your Power BI workflow, you'll not only enhance the visual appeal of your reports but also optimize performance and foster a culture of data-driven decision-making within your organization. Stay curious, stay informed, and continuously refine your Power BI skills to unlock the full potential of this robust business intelligence tool.

The Microsoft Power Apps and Dynamics 365 are two distinct offerings from Microsoft, yet they have relationships and integrations between them.

Here's a basic explanation of the difference between the two:

Microsoft Power Apps:

  • Purpose: Power Apps is a no-code/low-code app development platform that allows users to create custom applications without requiring advanced programming skills.
  • Features: It enables the creation of applications for web and mobile devices, easily connecting to data sources such as SharePoint, Excel, and Microsoft 365, among others.
  • Flexibility: Widely used for building simple and customized applications to streamline business processes.

Dynamics 365:

  • Purpose: Dynamics 365 is a suite of enterprise applications from Microsoft designed to manage various business areas such as sales, marketing, customer service, finance, and operations.
  • Features: It offers specific applications for different aspects of business management. For example, Dynamics 365 Sales focuses on sales automation, while Dynamics 365 Customer Service deals with customer support.
  • Integration with Power Apps: Dynamics 365 allows for extension and customization using Power Apps, enabling users to create specific applications to meet their unique business requirements.

In summary, Power Apps is a platform for creating custom applications, while Dynamics 365 is a suite of Microsoft business applications. However, they can be used together, with Power Apps being employed to build custom applications that integrate with the Dynamics 365 environment to meet specific business needs

It is Canadian privacy law governs the collection, use, and disclosure of personal information by organizations in Canada?

The main objective is to protect individuals' privacy rights by establishing rules for how organizations must handle personal data, ensuring consent for data collection, and providing individuals with the right to access the personal information held by these organizations.

It also imposes obligations on organizations to safeguard personal data and report data breaches when they occur, contributing to the overall protection of privacy and data security in Canada.

Here are some practical examples of how PIPEDA is applied in various contexts in Canada:

Online Shopping: When you make a purchase online, the e-commerce website must obtain your consent to collect your personal information, such as your name, address, and payment details. They should also have secure data storage and protect your information from data breaches.

Healthcare: Healthcare providers and organizations must ensure the privacy of patient records. They need patient consent to share medical information with other professionals involved in their care, and they must have stringent data protection measures in place.

Employment: Employers should collect and use employee information for legitimate business purposes only, such as payroll and benefits administration. They need consent for any additional use of personal information, like monitoring employee email or internet use.

Market Research: Companies conducting market research or surveys must inform participants about the purpose of data collection and obtain their consent to use their personal information. The data collected should be anonymized to protect individual privacy.

Social Media: Social media platforms must have clear privacy policies and settings that allow users to control what personal information is shared, who can see it, and how it's used for targeted advertising.

Financial Institutions: Banks and financial institutions need your consent to use your personal information for purposes like offering new financial products or sharing your information with third parties for marketing. They must also safeguard your financial data to prevent fraud and identity theft.

Telecommunications: Telecommunication companies must protect your call records, internet usage, and text message data from unauthorized access and disclose their data-sharing practices.

Education: Schools and educational institutions must secure student and staff data and obtain consent for sharing educational records or other personal information with third parties.

A few years ago, I did a POS for a small company using Delphi, PHP, and MySql. It was a simple project to attend just one store and no max than 10 lanes (cashiers). In this old project, I developed the main software in Delphi (with a local paradox database) accessing a centralized database with a Mysql server. All the routines to manage the store I did in PHP, accessing the MySql Server.

The images used were stored in a Microsoft Samba driver and all new products (images) are updated on the lanes using this Samba file share. When we are talking about a small company, with good network access control, It works very well.

You may be curious if this software continues working until now. The answer is: No. After 2 years the company closed the doors and I did not continue this project. (I tried to find the code, but I don't have it anymore)

Today I'll refactor this old project into a new one, but now I'll use the Well-Architected. In this new project, we have:

  1. Point Of Sale - I'll do everything in Delphi 11 - Community Edition with sqlight3;
  2. StoreGateKeeper - I'll do It in GoLang with PostgreSQL;
  3. StoreManager - I'll do It in Laravel with PostgreSQL;

The StoreManager will be a centralized solution hosted in Cloud (Azure).

Details about this project and all codes you may get at my GiT: https://github.com/ed2ti/POS-Well-Architected

Here is the first diagram from this project.

enter image description here

A few days ago I was with a friend talking about technology, and he told me about Agile Methodology. He told me that all projects can be managed using agile methodology with Scrum. Of course, I stayed listening for a long time. In the end, I asked a simple question: What kind of project are you talking about?

We know that a project delivers a unique product or service that has a start and end date. [very good to start]

Why is so important to understand the kind of project we will manage to decide the best methodology? For some projects, like the building of a bridge, is important to map all the requirements before we start the project. In this case, normally we do not change the project during the execution. In this case, we need to define a budget before we start it. In this case, is better to use traditional methodology.

But, if we are talking about software projects, it may be a little bit different.

What we really have before we start the project:

  • The customer never has all the ideas in mind;
  • The ideas are not enough clear;
  • The environment may change.

We need to be capable of adjusting our direction quickly. In my opinion, the Agile team accepts the changes with more resignation.

The project manager needs to understand the project objectives and all the environments around the project to decide the best methodology.

This weekend I was thinking about a colleague with whom I tried to do a meeting and I desisted. When I saw his schedule he just had time between 13:00 and 13:30.

This hour, I imagined, he may be having lunch.

I don't want to judge anyone, but if I have the freedom to talk with him, I will give some advice: You don't need a full scheduler (all the time occupied) to show that you are working.

In my opinion, if you are every day and every time at meetings, you will never have time to produce.

I'm not saying the meetings are not important, of course, they are, we just need to join exactly to the share and decision meetings. Many meetings just need a simple "ok"

I encourage you to try new horizons. After some years working with IT, I have never been deep in "Software Test" knowledge. Now I'll share this new journey. We need to link all our background technologies to deliver the most performative and professional solutions.

a) Agile Test Foundation

I'll update this post with all my ISTQB certifications.

There are many benefits to organizations, including the ability to quantitatively measure progress and performance, maintain a strategic focus on critical objectives, make informed and data-driven decisions, proactively identify issues, foster accountability and motivation among teams, benchmark against industry standards, optimize resource allocation, drive continuous improvement, enhance communication and alignment, and ensure the financial health and risk management of the organization, making them invaluable tools for achieving strategic goals and maintaining competitiveness.

The benefits of Key Performance Indicators (KPIs) for businesses and organizations.

  1. Performance Measurement:

    KPIs provide a structured and quantitative way to measure performance. Instead of relying on vague or subjective assessments, organizations can use specific metrics to gauge how well they're doing. This clarity is especially valuable when evaluating complex aspects of business performance, such as customer satisfaction, employee engagement, or product quality.

  2. Strategic Alignment:

    KPIs are directly linked to an organization's strategic objectives and goals. This alignment ensures that everyone within the organization is focused on achieving the same priorities. It helps prevent "mission drift," where efforts become scattered and less effective.

  3. Data-Driven Decision-Making:

    KPIs are grounded in data and facts. This data-driven approach enables better decision-making across all levels of the organization. Leaders can analyze KPI trends, identify areas of improvement or concern, and make informed choices about resource allocation, process changes, and strategic shifts.

  4. Early Problem Detection:

    KPIs act as early warning systems. When certain metrics deviate from their targets, it signals potential issues that may need immediate attention. This proactive approach allows organizations to address problems before they escalate and impact overall performance.

  5. Accountability and Responsibility:

    KPIs assign clear accountability for specific results. Individuals, teams, or departments responsible for achieving particular KPIs are more likely to take ownership of their performance areas. This accountability fosters a culture of responsibility and can drive better outcomes.

  6. Motivation and Engagement:

    Well-defined KPIs can be motivational tools. When employees have clear goals and can see their progress toward those goals, it can boost morale and engagement. Achieving KPIs can provide a sense of accomplishment and purpose in their work.

  7. Benchmarking and Competition:

    KPIs allow organizations to benchmark their performance against industry standards, competitors, or their own historical data. This benchmarking process helps identify areas where they excel, enabling them to capitalize on strengths, and areas that need improvement, guiding strategies for growth.

  8. Optimized Resource Allocation:

    By monitoring KPIs, organizations can make data-driven decisions about where to allocate their resources. They can identify areas that are performing well and may deserve additional investment. Conversely, they can identify areas where resources can be optimized or redirected for better results.

  9. Continuous Improvement:

    KPIs are a central component of a continuous improvement culture. Regularly reviewing and analyzing KPI data allows organizations to identify opportunities for enhancement and implement changes to achieve better results over time.

  10. Communication and Alignment:

    KPIs provide a common language for communication within an organization. They ensure that everyone understands the strategic priorities and can align their efforts accordingly. This alignment fosters teamwork and synergy, as everyone works toward common goals.

In conclusion, Key Performance Indicators are invaluable tools that offer numerous benefits to organizations. They help measure, align, and improve performance, leading to better decision-making, enhanced productivity, and ultimately, greater success in achieving strategic objectives. The ability to monitor and manage performance through KPIs is a cornerstone of modern business management.

SWAPI - Star Wars API

- Posted in Uncategorized by

Hi everyone.

I hope you enjoy this post because It's part of my first job test, as a developer, in Canada. Well, in February I apply for a job at (Let's call Yoda) Yoda company. On the same day, a girl from Yoda company (Let's call Leia Princess) call me. (It was so fast). On Friday, with power chaos in Montreal, I did my first technical interview and they send me this challenger.

Contextualizing:

Target: Create an application to get a list of People, Planets, and StarShips and implement a search on People using SWAPI. Need to use a framework and show how to install and test the web application. All information needs to be posted on GitHub.

To be honest, I did more than one solution.

  • All with Vuejs (on my GitHub)
  • All with PHP core (on my GitHub) - Horible. (I'll change everything)
  • Frontend with React and backend with PHP (I did an API server) - Was interesting. (need to correct) (on my GitHub)
  • All with Laravel - This one (on my GitHub)

Let's talk a little bit about an item (d)

About SWAPI: It is strikethrough textstand for "Star Wars API". It is a free, open-source web service that provides access to data from the Star Wars universe, including information on characters, planets, films, species, vehicles, and more.

Laravel is a popular, free and open-source PHP web application framework that follows the MVC pattern. It provides a range of features to simplify web development, such as authentication, routing, caching, and database management. Its intuitive syntax and extensive documentation makes it easy to use, while its focus on developer productivity and code readability make it an excellent choice for building scalable and maintainable web applications.

About my project.

You may ask. Why do you just use 2 routes if you have at less 3 different views?

My routes are: Route::any('/search', [swapiController::class, 'search'])->name('search'); Route::get('/{resouce?}/{param?}', [swapiController::class, 'show'])->name('show');

The first one is any route. If I receive a POST, I'll process a search request. Otherwise, if I receive a GET I'll redirect to the index view.

The second one is a generalist route.

{resouce?} = people, starships, planets. {param?} = receive the page.

The controller, swapiController, has all the logic to make a distribution of actions. I'll try to simplify more, but now, Im finishing a project from my professor at Trebas.

I need to finish this post with a simple msg for him and for Alfredo Menezes. Thank you Iyard for help-me and support-me every time. Thank you, Alfredo, for introducing me to the Yoda Company.

** Thank you, Princess Leia. You were so patient **

GitHub: https://github.com/ed2ti/swapi-laravel

Professor: Iyad Koteich

PDF OCR with Python

- Posted in Programing - Python by

OCR (Optical Character Recognition) is a process of converting scanned images, PDFs, or other documents into editable text. In Python, there are several libraries available for OCR, including PyOCR, Tesseract OCR, and OCRopus. In this answer, we will use PyOCR and Pillow libraries to perform OCR on a PDF file.

First, we need to install the required libraries. You can install PyOCR and Pillow using pip:

pip install pyocr pillow

Next, we will write the code to perform OCR on the PDF file. Here is a sample code:

import io
import sys
import pyocr
import pyocr.builders
from PIL import Image
from pdf2image import convert_from_path

# Path of the PDF file
pdf_path = 'example.pdf'

# Convert PDF to PIL Image objects
pages = convert_from_path(pdf_path)

# OCR
tool = pyocr.get_available_tools()[0]
lang = tool.get_available_languages()[0]

for page in pages:
    txt = tool.image_to_string(
        Image.fromarray(page),
        lang=lang,
        builder=pyocr.builders.TextBuilder()
    )
    print(txt)

In this code, we first convert the PDF file to PIL Image objects using the pdf2image library. Then, we loop through each page of the PDF and perform OCR using the PyOCR library. Finally, we print the extracted text from each page.

Note that the OCR accuracy depends on the quality of the scanned image, the language of the text, and the font used in the document. Therefore, you may need to experiment with different OCR engines, languages, and settings to get the best results for your specific use case.