Author: way0utwest

  • A New Word: Falesia

    falesia– n.  the disquieting awareness that someone’s importance to you and your importance to them may not necessarily match – that your best friend might only think of you as a buddy, that someone you barely know might consider you a mentor, that someone you love unconditionally might have one or two conditions.

    Wow, falesia is a disconcerting idea in itself. Just reading that makes me a little uncomfortable. I’m sure many people have falesia early on in their relationships, whether dating or friendship, thinking that the person you think is very important doesn’t feel the same way about you.

    I tend to look at most people are equals and try to treat them that way. However, I also get uncomfortable at times when people praise me or thank me for the work I’ve done with SQL Server Central or SQL Saturday. In those cases, I’m sure that the importance we feel towards each other isn’t the same.

    I know I have some falesia and I am definitely uncomfortable in those cases.

    From the Dictionary of Obscure Sorrows

  • Changing the Paradigm of Work

    I saw an article on AI usage that is based on an upcoming book that suggests redesigning the world around new tech, not adding it to existing things. The first example is how electricity was introduced to existing factories, but it only provided some incremental gains until new factories were redesigned around electric motors. There’s also an example given about reworking hotels to remove the front desk since that feature isn’t needed. Instead, people could walk in, and an employee with a tablet could find them to check them in.

    I’m all for rethinking and redesigning processes. I do think we have a huge glut of software in many organizations that exists because processes have evolved across time, but not everything and we keep our old software. When we have a new need or want a new capability, we add new software (or add features), but we don’t necessarily throw out all the old software, processes, or habits. That wouldn’t be practical, often because when we implement something new, it might not meet all our needs. Or at least we don’t know it meets our needs at first.

    I don’t love the examples, especially as I see organizations where Teams/Slack are heavily in use (not just in tech companies), and these tools have changed how people work. Not everyone has moved, and there is a lot of document sharing and legacy systems, but that’s also because not everyone wants to or can change at the same pace. However, lots of people have changed how they create, share, collaborate, communicate, and more because of these tools.

    I also think the hotel example is silly (read the article to see more). I don’t need a desk, and often I check in and get my key without ever visiting a desk. However, I do like the desk because when I need something, I want to be able to find someone, not wander around looking for an employee or waiting for them to respond to some page. When there’s a desk I can see someone is there. I certainly don’t want a kiosk with an AI there to queue at to request a person help me.

    GenAI LLMs are going to change work for a lot of people, especially those in tech. I don’t know that we can redesign the way we work now, as the technology is still advancing, and I’m not sure how we will want to integrate agents with GenAI to do work. We have to experiment and find ways to use this tech before we build too much. We also have to see it mature.

    When we do, I bet many more people will start to use AI to generate code, change settings, deploy things, and more. I’m also sure that they will make many mistakes, at scale, and we’ll be using a GenAI agent to undo things, or perhaps we’ll have humans scrambling to fix systems. I wouldn’t be surprised to see the humans commonly fixing things as we might not trust the AI Agent (or our prompting) to fix our mistake.

    If you could redesign work, what would you want out of an AI? Assume that it is at least as competent as someone you work with. Is there a way that a GenAI system would make your work smoother?

    Steve Jones

    Listen to the podcast at Libsyn, Spotify, or iTunes.

    Note, podcasts are only available for a limited time online.

  • Using AI to Test a SQL Query

    Someone sent me this code.

    WITH p AS
     ( SELECT ID, ROW_NUMBER() OVER (ORDER BY ID ASC) AS RN
     FROM wp_posts
     WHERE post_parent = 94341; )
     UPDATE p SET menu_order = RN

    That’s not great code. In fact, it won’t run. I know that, but does an AI? Let’s see how Copilot does.

    This is part of a series of experiments with AI systems.

    The First Test

    I entered this prompt, but accidentally hit Enter. When I then pasted in the code and hit enter, I got this:

    2025-05_line0012

    That is just about what I would have sent the author to let them know this code doesn’t work. It’s good to see a GenAI LLM can recognize this.

    I then pasted in the entire prompt which was: “give me a table with the schema to match this code: WITH p AS ( SELECT ID, ROW_NUMBER() OVER (ORDER BY ID ASC) AS RN FROM wp_posts WHERE post_parent = 94341; ) UPDATE p SET menu_order = RN

    The Gen AI response was polite, with this answer:

    Certainly! Based on your SQL code, it looks like you need a table schema that matches the structure of wp_posts, particularly including ID, post_parent, and menu_order. Here’s a possible schema:

    I then had this code, with a copy button that I could copy/paste into SSMS.

    CREATE TABLE wp_posts (
         ID INT PRIMARY KEY,      -- Unique identifier for each post
         post_parent INT,         -- Parent post ID (for hierarchical structures)
         menu_order INT           -- Order value for arranging posts
    );

    That’s what I would have done to mock this up for testing. You might guess the next step: data.

    Here’s my prompt: create some test data for the table with Ids that increment but are not necessarily sequential and post_parent values that match the ID values

    That got my this response.

    2025-05_line0016

    That’s not bad, but it’s a limited set of data. Let’s ask for more.

    2025-05_line0031

    Below this the GenAI LLM gave me a summary that explains what it did.

    2025-05_line0032

    Next, I wanted a test. I used this prompt: write a tsqlt test to verify that the update statement works to reset the menu_order to sequential values for a particular post_parent

    I got a nice response and the code I’m showing below the image.

    2025-05_line0033

    Here is the code:

    -- Step 1: Create a test class
    EXEC tSQLt.NewTestClass 'TestMenuOrderUpdate';

    GO

     

    — Step 2: Define the test
    CREATE PROCEDURE TestMenuOrderUpdate.[test_UpdateMenuOrder_Sequential]
    AS
    BEGIN
    — Arrange: Fake the wp_posts table
    EXEC tSQLt.FakeTable ‘dbo.wp_posts’;

     

    INSERT INTO wp_posts (ID, post_parent, menu_order)
    VALUES
    (101, 94341, 5), (102, 94341, 3), (103, 94341, 8),
    (104, 94341, 1), (105, 94341, 7);

     

    — Act: Run the update logic
    WITH p AS (
    SELECT ID, ROW_NUMBER() OVER (ORDER BY ID ASC) AS RN
    FROM wp_posts
    WHERE post_parent = 94341
    )
    UPDATE wp_posts
    SET menu_order = p.RN
    FROM p
    WHERE wp_posts.ID = p.ID;

     

    — Assert: Check if menu_order is sequential
    EXEC tSQLt.AssertEqualsTable ‘ExpectedResults’, ‘wp_posts’;

     

    END;
    GO

     

    — Step 3: Create expected results table for assertion
    CREATE TABLE ExpectedResults (
    ID INT PRIMARY KEY,
    post_parent INT,
    menu_order INT
    );

     

    INSERT INTO ExpectedResults (ID, post_parent, menu_order)
    VALUES
    (101, 94341, 1), (102, 94341, 2), (103, 94341, 3),
    (104, 94341, 4), (105, 94341, 5);

     

    — Run the test
    EXEC tSQLt.Run ‘TestMenuOrderUpdate’;

    
    

    This is where I stopped. This code runs, though it’s brittle in that the Expected Results table is a real table and not a temp inside the test. I can easily edit that and likely quicker than the GenAI can. It’s copy/pasting some code for me from one spot to another. I also need to add a CREATE OR ALTER to the proc.

    Summary

    A quick use of an AI that easily saved me 5-10 minutes to mock of a scenario and show someone what they were doing wrong and also testing their code. I mock up things regularly to test them, and often do something like this to answer questions. This is a good place where AI can save some time, and might be worth using. I’m also glad to see it recognize and write some decent SQL code for me, especially the insert statement for test data.

  • Republish: More Linux than Windows

    It’s Memorial Day in the US and a holiday. With a busy schedule, I didn’t realize this was a holiday and started to schedule some things before my wife reminded me.

    So while I tackle some chores, you get a republish of More Linux than Windows.