Friday, May 02, 2025

How to Use OBS Virtual Camera to Set a Recorded Webcam Video as a Meeting Background

If you participate in numerous video meetings and use OBS Studio for managing your video setup, you can record your webcam and use it as a looping background to appear present in future meetings, even if you step away. This guide explains how to achieve this using the OBS Virtual Camera feature, perfect for platforms like Zoom, Microsoft Teams, or Google Meet. Follow these steps to set it up, formatted for easy posting on Blogger.

Step 1: Record Your Webcam in OBS

Start by capturing a clean webcam video using OBS Studio.

  • Download and install OBS Studio if you haven't already.
  • Open OBS and create a new scene (e.g., "Webcam Only") by clicking the "+" in the Scenes panel.
  • Add a source by clicking "+" in the Sources panel, select Video Capture Device, and choose your webcam. Adjust settings like resolution (e.g., 1080p) and frame rate (e.g., 30fps).
  • Ensure no other sources (e.g., screen capture) are included to keep the video focused on your webcam.
  • Go to Settings > Output, set the Recording Format to MP4, and choose a save location.
  • Click Start Recording, record 1-2 minutes of footage, then click Stop Recording.

Step 2: Prepare the Video for Looping

To make the video loop seamlessly, edit it to remove abrupt transitions.

  • Use free video editing software like DaVinci Resolve or Shotcut.
  • Import your recording, trim unnecessary parts, and ensure the start and end points blend smoothly for looping.
  • Export the video as an MP4 file with high quality (e.g., 1080p, 30fps).

Step 3: Set Up OBS Virtual Camera

Use the OBS Virtual Camera to feed the looping video into your meeting app as a webcam source.

  • In OBS Studio, create a new scene (e.g., "Meeting Background").
  • Add a Media Source by clicking "+" in the Sources panel, select your edited video file, and check the Loop option in the source settings.
  • Ensure OBS Virtual Camera is installed (included in OBS 26.0+). Go to Tools > Start Virtual Camera or click the "Start Virtual Camera" button in the Controls panel.
  • Open your video conferencing app (e.g., Zoom, Teams, or Meet) and select OBS Virtual Camera as your webcam input in the app’s video settings.

Step 4: Test and Optimize

Ensure the setup looks natural and performs well.

  • Test the OBS Virtual Camera feed in a short meeting to confirm the video loops smoothly and appears realistic.
  • Record your webcam in a well-lit environment with a neutral background to enhance realism.
  • Avoid sudden movements in the recording to minimize noticeable looping.
  • Verify your computer can handle running OBS Studio and the meeting app simultaneously to prevent lag.

Important Notes

The OBS Virtual Camera works with most video conferencing platforms, including those that don’t natively support video backgrounds, like Google Meet. Be ethical—inform participants if your presence is simulated, as pretending to be active when absent can be misleading. For detailed OBS setup guides, visit the OBS Wiki.

With this setup, you can use your pre-recorded webcam video as a convincing background in video meetings, managed entirely through OBS Studio’s Virtual Camera feature. Happy meeting!

Tuesday, February 25, 2025

 Regarding Ship's Knee


There are two important documents online that inform this discussion.

The Plat Map


The first is the plat map from 1959 available here

Here is a zoom I made of the important part of this map showing lot 16 (where I live) and the surrounding lots. I encourage you to follow the link above too, to get the original document.





ARCGIS Map


The other is the Charles County argis map

https://experience.arcgis.com/experience/320f3c8649f74bc89a84df8d5c41d175/page/Map-Page/

You'll have to scroll/zoom the map yourself.  We are in the northern "peak" of Charles County on the map.

Here is a zoomed image I made of the map


 


Explanation


When we (the Fishmans) bought our property, it was the first time we ever bought a property that required that we travel over easements to get to a public road.  ALL the "roads" in the Moyaone in Charles County, even Old Landing and Steamboat are privately owned.  You can see this on the arcgis tax map.  To get to my house you have to travel over an easement on Lot 0 (Goetzmer), Lot 15.  Once you get to the bottom of the hill you are land owned by the Moyaone which has an easement.  You travel that to Ship's Knee and then go up the easement on lot 13 until Ship's Knee becomes our driveway.

Because of the potential for problems there, before buying we paid our title insurance company do an extra search to make sure both that all the required easements for us to reach a public road were in place, and to ensure there were no easements on our property.

We specifically valued our property highly because of the privacy.  Had we discovered in our research that the road on our property was on an easement, we would not have bought that land.

Anyone who bought a property in our area and did any research would have discovered 2 things.  There is a road, but no easement on lot 16, and an easement, but no road on lots 18 and 19.  There is no legal record of there ever having been an easement on lot 16, regardless of anecdotal stories of how people travelled the road. Exhaustive research by several legal teams has proven there was never an easement granted nor sufficient reason to grant an easement.  Lots 17, 18 and 19 are NOT landlocked because there is a SPECIFIC easements for them to travel on to reach public roads.  Pursuant to NPS oversight, deed restrictions and county and state requirements, someone could build/develop lots 17, 18 and 19, including putting in roads.

There is no amount of legal research that would have revealed to a property buyer that anyone other than the owners of lot 16 could travel on Ship's Knee past the second bend. There are only 2 documents that matter, and I have linked to them above and they are crystal clear.

I'm happy to discuss this in person with anyone, though I'd request we meet individually rather than the way things went last time with a bunch of angry people yelling at me.  Feel free to email me at

fxshdzn@gmzxl.com  But replace each x with an i and each z with an a

Put "neighbor" in the subject, and I'll get right back to you!

Dan!

Thursday, February 13, 2025

 In software engineering, accumulating code behind a release wall is akin to gathering water behind a dam.

Just as a dam must be built higher and stronger to contain an increasing volume of water, the more code we delay releasing, the more resources we must allocate to prevent a catastrophic flood—major bugs or system failures—while also managing the inevitable trickles—minor issues and defects. Frequent, smaller releases act like controlled spillways, effectively managing the flow of updates and reducing the risk of overwhelming both the system and the team.

The ideal of ci/cd may not be achievable for all teams, but smaller and faster is always better.

Wednesday, May 15, 2024

Preventing accidental large deletes.

Instructions for Developers on Using the safe_delete Stored Procedure

To enhance safety and auditability of delete operations within our databases, we have implemented a controlled deletion process using a stored procedure named safe_delete. This procedure relies on a temporary table (temp_delete_table) that lists complete records intended for deletion, not just their IDs. This approach helps prevent accidental deletions and provides a traceable audit log of delete actions.

Why We Are Doing This

  • Controlled Deletions: Centralizing delete operations through a stored procedure reduces the risk of erroneous or unauthorized deletions.
  • Auditability: Using a temporary table to store complete records before deletion allows for an in-depth review and verification process, enhancing our ability to confirm and audit delete operations accurately.
  • Security: Restricting direct delete permissions and channeling deletions through a specific procedure aligns with the principle of least privilege, reducing potential unauthorized data manipulations.

How We Are Doing This

The safe_delete stored procedure is designed to manage deletions securely and transparently:

CREATE PROCEDURE safe_delete(IN table_name VARCHAR(255))
BEGIN
    SET @s = CONCAT('DELETE FROM ', table_name, ' WHERE id IN (SELECT id FROM temp_delete_table)');
    PREPARE stmt FROM @s;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    -- Note: The temporary table `temp_delete_table` is not dropped here to allow for auditing.
END
    

Explanation of the Stored Procedure: The procedure constructs a SQL command as a string that deletes records from the specified table where their IDs match those listed in temp_delete_table. This dynamic SQL is prepared and executed within the procedure, ensuring that deletions are based strictly on verified IDs from the temporary table. By not dropping temp_delete_table immediately, we maintain an audit trail that allows developers and auditors to review which records were affected post-operation.

How to Use the safe_delete Functionality

  1. Prepare the Temporary Table: Start by creating and populating the temp_delete_table with the IDs of the records you intend to delete.
    CREATE TEMPORARY TABLE IF NOT EXISTS temp_delete_table AS SELECT * FROM [target_table] WHERE [condition];
    Example condition could be status = 'inactive' or any other logical condition that fits the criteria for deletion.
  2. Verify the Contents of the Temporary Table: Before proceeding with the deletion, verify the contents of temp_delete_table to ensure it contains exactly the records you intend to delete.
    SELECT * FROM temp_delete_table;
    Thoroughly review the results. This step is critical to avoid the accidental deletion of unintended records.
  3. Execute the safe_delete Procedure: Once you confirm the temporary table contains the correct data, execute the stored procedure to perform the deletion.
    CALL safe_delete('target_table_name');
    Replace 'target_table_name' with the actual name of the table from which records are to be deleted.

Importance of Not Immediately Deleting the Temporary Table

Keeping the temporary table after the delete operation allows for immediate and subsequent reviews. This is crucial if issues arise or if detailed audits are needed. Temporary tables exist only during the database session. They are automatically dropped when the session ends, typically removing the need for manual cleanup. Maintaining the temporary table post-operation ensures that detailed data is available for auditing and validating the deletion process.

Best Practices and Reminders

  • Session Management: Remember that losing the database session will drop the temporary table. Plan your deletions and reviews accordingly.
  • Security Practices: Always use the safe_delete process for deletions to ensure compliance with our data handling and security policies.
  • Documentation: Always document the reasoning and specifics of the deletion operation, maintaining clear records for operational and audit purposes.

Thursday, February 29, 2024

Parking at the Baltimore Greyhound

There is no overnight parking at the Baltimore Greyhound station, but 200 yards away is the Horseshoe casino, which has $5 a day parking, and free for Caesars Reward Clubs members.  The free parking is fine, but the Rewards parking is monitored.  


You can get a rewards card for free in the casino, or at any other Caesars casino.  Mine is from Vegas.

Monday, October 30, 2023

It's always ok to negotiate.

When I was a kid we went to Congregation B'nai Israel in Galveston, Texas. You wouldn't think it, but Galveston has an old congregation by Texas standards and a beautiful Temple built by one of the great leaders in Texas Jewish history, Rabbi Henry Cohen.

Every year we would do the first Passover seder at the Temple with a hundred other people. It was wonderful to share this OLD tradition and hear from elders in the temple about their Passovers in the past.

But of course kids look forward to one thing more than anything else during Passover.

I remember Rabbi Stahl in 1974 standing in the center of the room, surrounded by the children, their eyes wide with anticipation. "Children, the afikomen you are about to search for is not just a piece of matzah. It represents a significant part of our Passover tradition. The seder, this special meal that tells our story of freedom, cannot continue without the return of the afikomen. It's a symbol of redemption and hope, reminding us of our journey from slavery to freedom. And just as our ancestors awaited their liberation, we too await the return of the afikomen to complete our seder. So, search with enthusiasm, joy, and understanding of its importance. May the one who finds it be blessed with the wisdom of our tradition and the joy of uniting us all once again in our celebration.

"The afikomen is hidden either in the music room, the library or my office.  Please be very careful as you look to leave the room exactly as you found it.  Whoever brings back the afikomen, will in addition to our thanks, be given ONE DOLLAR.  Now GO!!"

All the kids raced out in every direction. I was six at the time and my brother was four, and though my mother told me to look out for him, he was too slow and I left him behind.  I raced through the music room and make a quick look, but found nothing,  I went to the library but there were too many people there and too many books.  In the rabbis office there was nothing.  I ran back to the music room just in time to see my brother, who was too slow to keep up, look UNDER the piano bench, where the afikomen was taped.  He pulled it out, and I may have tried to persuade him to give it to me to take back, but he was cunning, even then.

We walked back into the giant dining hall where all the adults were still seated and chatting and I yelled "JEREMY FOUND THE AFIKOMEN!!!" 

People started clapping and the Rabbi said "Bring it on up Jeremy, and claim your one dollar prize! We can't restart the seder until you do!"

As my brother approached the center table, the grizzled hand of one of the temple elders, Sly Ehrlich, reached out and grabbed him - the boney fingers and numerical tattoo on his outstretched arm is a memory burned into my mind.  He pulled my brother in and said "They can't restart the Seder without it?  Kid!  You're Jewish!  Don't take the first offer!  I've got another dollar right here for you to return the afikomen.  Will anyone else match it?" 

In the end Jeremy got $12, of which my mother made him put $2 in the Tzedakah box, and everyone learned a valuable lesson about not taking the first offer.

Wednesday, September 27, 2023

Star Wars Theory: An Unintentional Force Bond - Did Padmé Truly Love Anakin?

Throughout the Star Wars saga, the Force manifests in various mysterious ways. It guides, it connects, and sometimes, it influences. One of the most controversial and debated relationships in the series is that of Anakin Skywalker and Padmé Amidala. Their love story seemed rushed and, to many fans, somewhat inauthentic. Was it truly love or was there an unseen Force at play?

Unintended Influence and Late Training

Anakin Skywalker was discovered by Qui-Gon Jinn at a much older age than most Jedi initiates. As a result, Anakin began his training with a raw, uncontrolled connection to the Force. Unlike his peers, who were trained from infancy to hone and control their abilities, Anakin had unknowingly relied on the Force in various aspects of his life, sometimes not for the better.

It is entirely plausible that his strong and uncontrolled emotions towards Padmé inadvertently created a Force bond. This bond may have made her feel a deeper connection to him than she otherwise would have. While it's clear that Padmé cared for Anakin, the true depth and nature of her love could have been unconsciously swayed by Anakin's latent and unintentional Force manipulations.

Awkward Intimacy

Many fans have commented on the seemingly awkward romantic scenes between Anakin and Padmé. What if this awkwardness wasn't just a filmmaking choice, but rather a portrayal of a relationship influenced by a force (no pun intended) neither party fully understood? Their interactions might have felt 'off' because, at some level, they were. Anakin's untrained power could have been unintentionally nudging Padmé's feelings, making them more intense than they would have been organically.

The Crushing Realization

In "Revenge of the Sith," as Anakin's visions of Padmé's death become more vivid, his desperation to save her grows. What if this desperation was not only fueled by his love for her, but by the dawning realization that he had unintentionally used the Force on the woman he loved?

When Palpatine seduces Anakin with the promise of the power to prevent death, it isn't just the allure of saving Padmé's life that tempts him. It's the hope for redemption — a chance to make right the wrong he had unknowingly committed by influencing her feelings. When faced with this internal conflict, Anakin's transformation into Darth Vader becomes not just about power or fear of loss, but also about self-loathing.

In this light, Darth Vader's journey is even more tragic. The dark path he chose was not only driven by external factors and manipulations, but by the internal agony of realizing he might have unknowingly robbed the love of his life of her agency. By becoming Vader, he embraces the monster he believes he has become, further isolating himself from any chance of redemption or genuine love.

While this is just a theory, it adds a layer of depth and tragedy to Anakin's character and makes his descent into darkness even more profound.