Category: Blog

  • Summon in the Tesla FSD

    This is part of a series that covers my experience with a Tesla Model Y.

    One of the features that came with my FSD subscription was Summon. This allows you to move the car from the mobile app without being in the car. I decided to test this a few times and see what happens. I ran these tests:

    • Coming out of the garage – failure
    • Backing out of a parking space at the gym – failure
    • Crossing the parking lot at the doctor – mostly OK
    • Summon to target in the gym parking lot – mixed
    • Summon to me in the gym parking lot – works

    I’ve described the experiences below.

    Garage

    When I first subscribed, I drove home and parked the car short of coming into the garage. I walked into the garage and selected the forward arrow. The car drove very slowly into the garage, with lots of minor adjustments left and right. Not sure I loved that.

    In the video of my testing, I tried to get the car to come out of the garage. It would wake up and start for an inch, and then stop. I think the right corner of the garage made the car nervous, and it didn’t quite believe it could back straight up. I didn’t test the come to me or come to target.

    In a Parking Lot

    I had tried this at a doctor’s office once, and stood in the middle of a parking lot, away from other cars. When I pressed come to target, the car backed up, turning out of a parking spot and then drove forward to me, though past me to a spot marked on the map. I’m not quite sure how a “target” is picked, but since I could have stopped the car near me, I wasn’t too worried.

    Later I went to the large, mostly empty parking lot at my gym and did some other testing. Two tests couldn’t get the car to back out of the parking space, and I’m not sure why. No other cars around, so it was strange.

    When I backed in, I could get the car to drive to me, though only with selecting “Come to Me”. The “Come to target” again picked a weird spot. Actually across a couple parking spots.

    Summary

    During a month of having FSD, I never really had a time when I wanted to summon the car. Of course, in Colorado in the summer, it rains rarely, and I’m not one to be worried about a little rain on the few days we have some. I also don’t quite know when I find it useful. Maybe if someone parks too close to let me get in or park.

    The feature worked OK, though not great. Certainly not enough, or not consistently enough, for me to want to pay for this.

    I made a video of my tests that you can check out.

  • Daily Coping 9 Sep 2022

    Today’s coping tip is to let go of self-criticism and speak to yourself kindly.

    This tip follows on nicely from yesterday’s tip, just the other side of that one. I wanted to criticize myself recently for not having a bit more content prepped before my vacation. I was gone for 8 days, and while I had content scheduled for the time away, and for a day after I returned, I didn’t have any beyond that, which puts me in a bit of a crunch.

    My career at SQL Server Central is running the site like a newspaper, which means things scheduled out a week or two in advance. Trying to pull content together a day or two before it’s needed is hard. It is also very stressful. I returned from vacation with 2 days of things, but not 4 or more, which meant that I needed to do some editing for articles and some writing for editorials.

    Some weeks editorials flow and I can write 3, 4 or more. Others I struggle to produce one. I returned from vacation with 3 days to write an editorial or two (hopefully more) and relieve the stress.

    I started to chastise myself for not having 1 or 2 more prepared for the next week and then stopped. That wasn’t helpful, and instead I decided to tell myself that I’ll come up with something interesting to say and just set aside some time to start writing.

    I started to add a daily coping tip to the SQL Server Central newsletter and to the Community Circle, which is helping me deal with the issues in the world. I’m adding my responses for each day here. All my coping tips are under this tag.

  • Daily Coping 8 Sep 2022

    Today’s tip is to notice the things you do well, however small.

    I think I have a lot of room for improvement, and it’s easy to self-criticize and find things that I ought to do better. As my wife would say, don’t should on yourself, and I try to follow this advice.

    I do quite a few things well, some of which aren’t big, but they are helpful to others. I work very hard to meet deadlines, which means I also work to not overcommit myself. I practice my presentations a number of times to ensure I can deliver them smoothly and audiences enjoy the talk while learning something. I try watch for places that I can help others, both inside Redgate and in the community, looking to provide information that can clarify how some bit of technology works, and including references where possible.

    I started to add a daily coping tip to the SQLServerCentral newsletter and to the Community Circle, which is helping me deal with the issues in the world. I’m adding my responses for each day here. All my coping tips are under this tag.

  • Replacing NULLs in a Left Join–#SQLNewBlogger

    I saw someone ask a question on how to replace NULL in a left join and decided to write a post. I realized this is one of those simple things that people new to SQL might not get.

    Another post for me that is simple and hopefully serves as an example for people trying to get blogging as #SQLNewBloggers. Here are some hints to get started.

    A Left Join Example

    Let’s create a table of customers and orders with a few values in each. This is common, where we have customers that we might add as prospects in some CRM type system. Then we link orders to customers.

    Use this code:

    DROP TABLE IF EXISTS dbo.Customer
    GO
    CREATE TABLE dbo.Customer
    ( CustomerID INT NOT NULL IDENTITY(1,1) CONSTRAINT CustomerPK PRIMARY KEY
    , CustomerName VARCHAR(20)
    )
    GO
    INSERT dbo.Customer (CustomerName)
    VALUES
       ('Joe'),
       ('Bob'),
       ('Sally'),
       ('Amy')
    GO
    DROP TABLE IF EXISTS dbo.OrderHeader
    GO
    CREATE TABLE dbo.OrderHeader
    ( OrderID INT NOT NULL IDENTITY(1,1) CONSTRAINT OrderHeaderPK PRIMARY KEY
    , CustomerID INT
    , OrderNote VARCHAR(100)
    )
    GO
    INSERT dbo.OrderHeader (CustomerID, OrderNote)
    VALUES
       (1, 'Initial Order'),
       (1, 'Re-order'),
       (3, 'Initial Order')
    GO

    Potentially, we have customers without orders. If we use an inner join, we only see customers with orders. Using the left join below, we see all customers with their corresponding orders.

    SELECT
       c.CustomerID
    , c.CustomerName
    , oh.OrderID
    , oh.OrderNote
    FROM
       dbo.Customer AS c
       LEFT JOIN dbo.OrderHeader AS oh
         ON oh.CustomerID = c.CustomerID;
    GO

    I see these results:

    2022-09-02 14_00_08-SQLQuery6.sql - ARISTOTLE.sandbox (ARISTOTLE_Steve (58))_ - Microsoft SQL Server

    This works, but really, I’d like to clean up the results to show something better.

    Looking for NULLs

    I can use a couple of functions to look for a NULL value in my results. Both ISNULL and COALESCE can help here. ISNULL is for a single expression and replaces NULL with value, while COALESCE works by returning the first non-NULL expression. I’ll use ISNULL here and in another post look at COALESCE.

    Here’s a better query that replaces one value with a NA and another with a blank.

    SELECT
       c.CustomerID
    , c.CustomerName
    , ISNULL(oh.OrderID, 0) AS OrderID
    , ISNULL(oh.OrderNote, 'No orders placed') AS OrderNote
    FROM
       dbo.Customer AS c
       LEFT JOIN dbo.OrderHeader AS oh
         ON oh.CustomerID = c.CustomerID;
    GO

    Here are the results. Note that I return a 0 for the OrderID. This is because the result set is a numeric, and I need these types to match.

    2022-09-02 14_04_37-SQLQuery6.sql - ARISTOTLE.sandbox (ARISTOTLE_Steve (58))_ - Microsoft SQL Server

    I could also return a string if I cast all OrderIDs to strings, as shown below.

    SELECT
       c.CustomerID
    , c.CustomerName
    , ISNULL(CAST(oh.OrderID AS VARCHAR(20)), 'N/A') AS OrderID
    , ISNULL(oh.OrderNote, 'No orders placed') AS OrderNote
    FROM
       dbo.Customer AS c
       LEFT JOIN dbo.OrderHeader AS oh
         ON oh.CustomerID = c.CustomerID;
    GO

    This produces these results.

    2022-09-02 14_05_29-SQLQuery6.sql - ARISTOTLE.sandbox (ARISTOTLE_Steve (58))_ - Microsoft SQL Server

    Both cases clean up the NULL values with something that makes more sense to a person looking at the data in a report.

    SQLNewBlogger

    This was a post inspired by a question I saw. This is how I’d solve the issue, and decided to share that knowledge more widely, both to help others and also provide an example of where I might have a hiring manager ask me about this from noticing my blog.

    This post took about 15 minutes to write. You could easily do this on your blog.