Monday, August 4, 2025

Generative Pages and AI Model Apps

Soooo, Reza just published out this:  https://www.youtube.com/watch?v=CVjh8uaNCNI

If you haven't watched it, go ahead and then come back.  It's an overview of the upcoming "Generative Pages" feature that will use AI to build out actual pages within a Model app for you.  It literally builds out all the React code to create the web pages to alter the interactions within Model Apps for PowerApps.

That last sentence might start some of you already scratching your head, but this is a much deeper question of the future of this platform than just: do I now need to learn React?  No.  You don't.  At least not yet unless you're bored.

If you are a developer and are thinking about how powerful/efficient these tools will make you, then it is important to understand that this specific tech is intended to replace the need for you, not to make you more powerful. YMMV

Adoption of this path leads to a near-term impact most likely resulting in reduced employee salaries and paths for advancement for anyone currently utilizing the platform for non-Model applications, increased spend/opportunities for contractors and consultants using this approach.

NOTE: I will update this article probably several times as I learn more about this since this is all in pre-release right now. But I doubt my general perception of this will change.  

Tuesday, June 24, 2025

Losing a Co-Worker

Several years ago I had a very enthusiastic person join our organization.  He clearly had incredible intelligence, drive, and an almost manic need to learn/apply technology.  The more I was willing to share, the more he would consume my time.  While this can always be a problem when done to excess, he also was very aware and very thankful of me allowing him to consume my time/knowledge when I had availability.

He passed away just over a year ago in his 30's.  Cancer.  Brutal, sudden, and without notice.  I only became aware of it because I had emailed and texted him a few times over several months and finally his mother answered a text and informed me.

EJ posted a comment here on my blog two years ago. I had this comment in my moderation folder for years and finally just let it through.  It of course has his personal email and such (which is why I didn't share it originally), but something about that message sitting in my inbox for all these years kept nagging at me and I finally published it.

Tuesday, June 10, 2025

Concurrent Power Automate Queries: Optimizing for slow data sources

For large datasets and sometimes querying APIs or Power Automate queries to retrieve information concurrently, it is helpful to use the Concurrent() function to retrieve multiple items at the same time.  However, Concurrent() cannot exist within a ForAll() and when processing groups of items it may be required to chunk them up to avoid overloading a datasource (can you really query 1000 rows simultaneously from Excel or your APIs without breaking something?)  

This post walks through how to process chunks of data simultaneously while also giving a nod to the limitations of certain back-office platforms.

In my own scenario, this process is querying either an API (if it is working) or an Excel export from the same ERP.  As we have ~45,000 records in one of those Excel files and roughly ~200,000 in another, these queries can take up to 30 seconds to retrieve a value from one of those files per user.  So splitting up these tasks to take place concurrently is essential.

Thursday, April 17, 2025

Detecting End-User Changes to Fields Before Saving/Abandoning Changes

There are of course many ways to approach how to detect if somebody changed a value in a field and set a flag to know if something needs to be "saved".  However, it can get complex if you are doing this for many MANY fields or also for a gallery of items where changes could be made to many of them at once.

This is an example of several ways to approach the problem so you can have some standardized code to make updates back to your datasource much easier and more efficient (and not throw errors).