Python Essentials: The Perfect Place to Start

Here are the basic steps to write a Python program:

1. Install Python: First, you need to install Python on your computer. You can download Python from the official website (python.org) and follow the instructions to install it.

2. Choose a development environment: There are several development environments available for Python, such as PyCharm, VS Code, and IDLE. Choose one that fits your needs and preferences.

3. Write the code: Use a text editor or the development environment’s editor to write your Python code. Start with a simple “Hello, World!” program to make sure everything is set up correctly.

4. Save the file: Save the file with a .py extension, such as “my_program.py”.

5. Run the program: You can run the program by opening a terminal or command prompt, navigating to the directory where the program is saved, and typing “python my_program.py” (replace “my_program.py” with the name of your file).

6. Debug if necessary: If there are errors in your code, use the debugger or print statements to find and fix them.

7. Test and refine: Once your program is running correctly, test it with different input values and refine it as necessary.

This is just a basic overview of coding in Python. There are many resources available online to learn more about Python programming and best practices.

Python programming is a high-level, interpreted programming language that is widely used for a variety of tasks, including web development, data analysis, and scientific computing. Here are some Python programming best practices:

1. Use clear variable names: Use descriptive names for variables that help you and others understand the purpose and use of the variable.

2. Follow PEP 8 style guide: PEP 8 is a widely accepted style guide for Python code that defines recommended coding styles and practices. It includes rules for formatting code, naming variables, and structuring programs.

3. Write modular code: Break code into small, reusable functions and modules that can be easily tested and maintained.

4. Use comments: Add comments to explain what the code does and how it works. Use comments to annotate your code and make it easier to understand and maintain.

5. Test your code: Write test cases for your code to ensure it meets its requirements and performs as expected. Use testing frameworks such as unittest, pytest or others.

6. Use exception handling: Use try and except blocks to handle errors and exceptions in your program. This will make your program more robust and prevent it from crashing.

7. Optimize performance: Optimize performance by using appropriate data structures and algorithms, minimizing I/O operations, and avoiding unnecessary computations.

By following these best practices, you can write clean and maintainable Python code that is easier to understand, test, and modify. Also, it’ll help to write code that complies with software engineering rules and could be easier to maintain and scale.

Here are some of the software engineering rules for Python:

1. Follow PEP 8: PEP 8 is a widely accepted style guide for Python code that defines recommended coding styles and practices. Following these rules leads to better readability and maintainability of the code.

2. Write modular code: Breaking code into modules and small, reusable functions makes it easier to test, debug, and maintain.

3. Use comments: Adding comments to explain what the code does and how it works helps you and others understand the code.

4. Use version control: Use version control such as Git to track changes to your code and collaborate with others.

5. Write tests: Write automated tests for your code to ensure it meets its requirements and performs as expected. Testing frameworks like unittest or pytest can be used.

6. Use exception handling: Use try and except blocks to handle errors and exceptions, both for the user input and for the inside of the code itself.

7. Optimize performance: Optimize performance by using appropriate data structures, algorithms, and libraries, as well as proper use of memory and avoiding redundant or computationally-intensive operations.

8. Use docstrings: Use docstrings in your functions and modules to describe what they do, how to use them, and what they return.

9. Use type hints: Use type hints helps to indicate what type of data will be input/output of functions, making bugs more explicit.

Following these guidelines will lead to well-structured, maintainable code that can be easily understood by others, and will help you write Python programs that could scale and remain consistent over time.

Tips:  From the PEP 8 style guide for Python code:

1. Use 4 spaces for indentation, not tabs.

2. Limit your lines to a maximum of 79 characters.

3. Use clear, descriptive, and all-lowercase names for modules, functions, and variables. Use underscores to separate words.

4. Use ALL_CAPS names for constants.

5. Use a space after a comma, but not before it.

6. Use a space before and after operators, such as +, -, and =.

7. Do not use spaces around the parentheses in a function call.

8. Use a space after the hash symbol for comments.

9. Use docstrings to provide documentation for modules, functions, classes, and methods.

10. Use blank lines to separate logical sections of your code.

11. Import modules at the beginning of your code, unless they are only used in a specific function.

12. Avoid using wildcard imports, such as “from module import *”.

13. Use absolute imports, rather than relative ones, to avoid naming conflicts.

14. Avoid too many levels of nesting in your code.

15. Use the “is” operator to compare with None.

16. Use parentheses for complex expressions, even if not always required.

17. Use assert statements for debugging and testing purposes.

18. Use generator expressions instead of list comprehensions when working with large amounts of data.

19. Avoid unnecessary whitespace.

20. Be consistent with your code style across your project.

Following these guidelines helps make your code more readable and maintainable, which is essential for effective software development projects.

1. Module import: Python allows you to break your code into separate files called modules, which can be imported into your main code. By importing a module, you get access to all of its functions and attributes.

2. Nesting in the code: Nesting in Python refers to the practice of writing code that is indented and contained within a parent structure, such as a function, loop, or conditional statement. This allows you to control the flow of your program and execute code under certain conditions.

3. Assert statements: Assert statements are used to check the correctness of a condition, and will raise an error and stop the program if the condition is False. Assert statements are commonly used in testing to verify that a program behaves as expected.

4. Generator expressions: Generator expressions are a concise way to create iterators in Python. They are similar to list comprehensions, but instead of creating a list, they create a generator object that can be used to iterate over items one at a time. This can be useful when working with large data sets, as it avoids the overhead of creating and storing a full list in memory.

5. Absolute imports: Absolute imports refer to the practice of importing a module using its full path from the root of your project. Using absolute imports helps to reduce naming conflicts and makes it easier to locate modules within your project.

By understanding these concepts and incorporating them into your Python code, you can write more efficient, readable, and maintainable programs.

1. How to create a python module: to create a Python module, you need to create a Python file with a .py extension, and write the code you want to include in the module in this file. You can include functions, classes, and variables in your module. Once you’ve written the code, save the file with a name that you want to use for your module, and make sure it’s saved in a directory that Python can find. You can then import the module in another Python script using an import statement followed by the name of the module.

2. Function, loop, or conditional statement: In Python, a function is a block of code that performs a specific task and can be called by other parts of the program. A loop is used to execute a block of code repeatedly, either for a specific number of times or until a condition is met. A conditional statement is used to execute different sections of code depending on whether a condition is true or false.

3. List comprehensions: List comprehensions are a concise way to create a new list by applying a function or operation to each element of an existing list. They are typically written inside square brackets and consist of an expression followed by a for loop that iterates over the existing list.

4. How to import a module in Python: To use a Python module in your code, you need to import it using the “import” keyword followed by the name of the module. If the module is in the same directory as your script, you can just use the name of the module. If the module is located in another directory, you will need to include the full path to the module. You can also use the “from” keyword to import specific functions or variables from a module without having to reference the module name every time you use them. For example, to import the “math” module and use the pi constant, you would write:

“`python

import math

print(math.pi)

“`

PEP 8 is the official Python style guide that outlines the recommended coding conventions for Python code. It covers several topics, including:

1. Code layout: This includes guidelines for indentation, spacing, and line length to ensure that code is readable and well-organized.

2. Naming conventions: This covers naming conventions for variables, functions, modules, and classes. It emphasizes using descriptive names that are easy to read and understand.

3. Programming recommendations: This includes recommendations for writing Python code that is simple, clear, and concise. This section covers things like avoiding unnecessary complexity, using comprehensions and generators when appropriate, and writing idiomatic Python code.

4. Documentation: PEP 8 recommends using appropriate docstrings to document code, as well as providing comments that explain complex or difficult-to-understand code.

5. Imports: The guide provides guidelines on how to organize import statements and how to avoid circular imports.

6. Whitespace: The guide provides guidelines for using whitespace effectively and consistently throughout your code.

Overall, PEP 8 aims to make Python code more readable, consistent, and maintainable. It is an important resource for Python developers who want to write high-quality code that is easy to understand and maintain.

I hope this helps you get started. If you have any specific additions, comments, or questions, please feel free to add them, or contact me. I hope this gave you a start into the world of python coding….

Knowledge is Power: Broadcast, Streaming, Social, & Meeting Platforms

Broadcast platforms refer to electronic communication systems that transmit audio, video, and other multimedia content to a wide audience.

Popular broadcast platforms include traditional media outlets like TV and radio networks, as well as newer digital platforms like podcast apps, social media networks, and streaming services.

Google has its own broadcast platforms, such as YouTube, Google Play Music, and Google Podcasts.

Other popular broadcast platforms include Spotify, Apple Podcasts, Netflix, Hulu, Amazon Prime Video, and Twitch.

Additionally, there are many specialized broadcast platforms catering to specific niches, such as sports, education, news, and religion. Some examples of these platforms are ESPN, TED Talks, CNN, and the Vatican News.

Broadcast Platforms

100 broadcast platforms:

1. Twitch

2. YouTube Live

3. Facebook Live

4. Twitter/Periscope

5. Instagram Live

6. LinkedIn Live

7. Microsoft Teams

8. Zoom

9. Google Meet

10. Hopin

11. Vimeo Live

12. Dacast

13. Livestream

14. StreamYard

15. Crowdcast

16. Brightcove

17. Wowza Streaming Cloud

18. IBM Cloud Video

19. JW Player

20. DaCast

21. Panopto

22. BlueJeans

23. GoToWebinar

24. WebEx

25. ON24

26. Livewire

27. Wirecast

28. Broadcaster Pro

29. OBS Studio

30. vMix

31. Streamlabs OBS

32. Restream

33. Be.Live

34. Freedocast Pro

35. Kaltura

36. Adobe Connect

37. Ustream

38. Switcher Studio

39. Simply Live

40. Cinegy Air PRO

41. Teradek VidiU GO

42. Magewell Ultra Stream

43. Open Broadcaster Software (OBS)

44. XSplit Broadcaster

45. Wirecast

46. Lightstream

47. Ecamm Live

48. VMix HD

49. OBS Ninja

50. Livestream Studio

51. Streamanager

52. Intercall

53. Livestream365

54. Muvi

55. Veeting Rooms

56. VCubeLive

57. Vidyard

58. Panopto

59. BrightTALK

60. DVEO

61. HuddleCamHD

62. iMeet

63. Kollective

64. KnowledgeVision

65. ReadyTalk

66. Sonic Foundry Mediasite

67. Spark Hire

68. Spontania

69. Strawberry Web

70. TrueConf

71. Brainshark

72. GoBrunch

73. Livestorm

74. MeetHook

75. MyOwnConference

76. Sococo

77. TokBird

78. Whereby

79. Yondo

80. Zoomino

81. Azar

82. Camfrog

83. Chatrandom

84. Holla

85. Live.me

86. LivU

87. Monkey

88. ScreenMeet

89. Shagle

90. Skyleti

91. UpLive

92. Wemeet

93. YouNow

94. Zego

95. Zinfog

96. Channelize.io

97. Diligent Boards

98. EngageBay

99. Front

100. Microsoft Stream

Note: This list is not exhaustive, and there may be other broadcast platforms available in the market. Additionally, some of these platforms are designed for very specific use-cases, such as for live streaming social media apps or video conferencing, where others are more general purpose.

Free free to add more platforms, ask question, leave a comment, and like!

From Zero to Kubernetes Hero: How to Get Started with Container Orchestration Today

Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications.

Kubernetes allows developers to define how their application should be orchestrated and managed in a declarative way using YAML files. It can manage a large number of containers across multiple hosts, making it easier to deploy and scale applications.

Kubernetes provides features like load balancing, automated rollouts and rollbacks, self-healing capabilities, and application scaling. It also ensures high availability by providing features such as container health monitoring, automatic failover, and replication.

Overall, Kubernetes helps simplify the process of deploying and managing containerized applications and makes it easier to scale them to meet changing demands. It has become a popular tool for managing distributed systems and is widely used in cloud-native application development.

Recently, three new miniaturized Kubernetes (K8s) distributions have been launched to manage compact containers:

1. K3s: Lightweight Kubernetes by Rancher Labs, weighing only 40MB, providing a feasible option for resource-constrained environments.

2. MicroK8s: Ubuntu’s K8s distribution designed for IoT, Edge, and DevOps. It offers a small footprint, rapid install, and a simple operator experience.

3. K0s: A modern, production-grade Kubernetes distribution developed by Mirantis, built to work across many hardware and software environments, including ARM and x86 platforms. It claims to be the best fit for developers needing ‘all-in-a-single-binary’ Kubernetes distribution. 

These miniaturized distributions have been created to cater to businesses that face challenges while dealing with complex infrastructure systems. They are compact, efficient, and easy to install, offering the benefits of K8s while overcoming its challenges.

MicroK8s is a version of Kubernetes specifically designed for IoT, Edge, and DevOps use cases. It provides a lightweight container orchestration solution ideal for resource-constrained environments by allowing users to run Kubernetes locally, on a laptop or Edge device.

IoT stands for “Internet of Things,” which refers to the interconnectivity and communication between various physical devices that are embedded with sensors, software, and other technologies. The data generated by connected devices is collected, analyzed, and used to automate processes and improve decision-making.

Edge computing is a distributed computing model that brings computation and data storage closer to the location where it is needed, which could be on sensors, gateways, or even local servers. This technology helps to reduce network latency and improve performance by processing data closer to the source.

DevOps is a set of practices that combines software development and IT operations to automate and streamline the software delivery process. It helps teams to collaborate more effectively, deliver software more frequently, and with a higher degree of reliability.

Together, IoT, Edge, and DevOps complement one another, as IoT and Edge computing generate large amounts of data that need to be processed in real-time, while DevOps provides the tools and processes needed to handle the software development, testing, deployment, and management required for these complex systems.

MicroK8s is now available as a Snap package (Snaps also a higher level of security by isolating the application from the rest of the system. This makes it easier to maintain and update Kubernetes and ensures a consistent user experience across multiple platforms).

Snap packages can be installed with a single command on supported platforms like Ubuntu, Debian, Fedora, and ArchLinux. To install MicroK8s on Ubuntu, use the following command:

sudo snap install microk8s –classic –channel=1.21/stable

After installation, you can check the status of MicroK8s with the following command:

sudo microk8s status –wait-ready

You can then begin to run Kubernetes commands as with any other Kubernetes distribution. MicroK8s can be managed through a web console or command-line interface and can deploy a wide variety of applications including web servers, databases, and microservices. MicroK8s also includes support for popular add-ons such as Istio, Knative, and Prometheus for advanced monitoring and management capabilities. 

MicroK8s is a simple, fast, and lightweight Kubernetes distribution designed specifically to run on IoT, Edge, and DevOps environments, with easy installation through a single command for quick set up and use.

MicroK8s is a lightweight, easy-to-install version of Kubernetes that’s specifically designed to run on resource-constrained environments such as IoT and Edge devices. As a Snap package, MicroK8s is a self-contained, modular application that includes all the necessary components for running Kubernetes, including the Kubernetes control plane, the kubelet, and other essential Kubernetes features.

A Snap package is a self-contained application package that includes all the dependencies and runtime libraries needed to run the application on any Linux distribution that supports the Snap package system. This means that MicroK8s does not require any external dependencies or system changes to be installed, making it a quick and easy way to get Kubernetes up and running on any supported Linux platform.

Snap packages are also easy to manage and upgrade, as updates to the package and individual software components can be performed automatically with the built-in Snap package management system. This allows users to stay up-to-date with the latest versions of the software without the need for is a lightweight, easy-to-install version of Kubernetes that’s specifically designed to run on resource-constrained environments such as IoT and Edge devices. As a Snap package, MicroK8s is a self-contained, modular application that includes all the necessary components for running Kubernetes, including the Kubernetes control plane, the kubelet, and other essential Kubernetes features.

Feel free to leave a comment or update.

Check out why PTP is significant for financial trading, control systems and telecommunications

There are several PTP (Precision Time Protocol) protocols, also known as IEEE 1588. The most commonly used are:

  1. PTPv1: The original version of the Precision Time Protocol specified in IEEE 1588-2002.
  2. PTPv2: The updated version of PTP that is widely used today, specified in IEEE 1588-2008. It introduced several new features and improvements over the original version.
  3. PTPv2.1: An extension to PTPv2 that provides more reliable and secure time synchronization, specified in IEEE 1588-2019.
  4. PTPv3: A revision of PTP that is currently under development by the IEEE. It aims to further improve the protocol’s accuracy, reliability, and security.

The main differences between these protocols lie in their features and capabilities, such as the accuracy and precision of the time synchronization they provide, the types of hardware they can support, and the security mechanisms they include.

PTP can be used to distribute precise time from a GPS (Global Positioning System) satellite receiver that has a PTP-enabled network interface. This allows for accurate time synchronization across distributed systems.

GPS satellites provide accurate time information through atomic clocks that are synchronized to GPS time, which is based on International Atomic Time (TAI). The GPS receiver on the ground uses this information to determine its location, velocity, and precise timing information.

PTP-compatible GPS receivers can output PTP timestamps by converting the GPS time information into PTP format through a specialized PTP adapter or GPS receiver module that has been designed to support this function. The GPS receiver provides the PTP grandmaster clock with its original GPS time and this clock can then synchronize other PTP-compatible devices on a network.

Since GPS signals travel at the speed of light, the propagation delay between the satellites and the GPS receiver can be accurately measured and accounted for by the GPS receiver. This allows PTP-compatible GPS receivers to provide accurate timestamps that can be used for time synchronization across a network.

PTP can be used in conjunction with GPS receivers to provide accurate time synchronization, enabling organizations such as telecommunications providers and financial traders to synchronize their operations and services across distributed systems.

The Leader clock is a clock that is responsible for generating and distributing time to follower and boundary clocks in the network, while a Follower clock is a clock that is synchronized to the Leader clock.

The Leader clock sends periodic synchronization messages called Sync messages to the Follower clocks in the network, which allows the Follower clocks to establish their own clocks and set their own internal time to match that of the Leader clock. The Follower clocks periodically send messages to the Leader to estimate network delay and adjust their own clocks’ rate accordingly.

The goal of PTP is to achieve sub-microsecond accuracy in network clock synchronization, which is critical for time-sensitive applications such as financial trading, industrial control systems, and telecommunications. Leader and Follower clocks are an essential part of PTP implementation, enabling precise time synchronization across multiple edge devices in a network.

The hardware supported by each version of PTP can vary depending on the implementation, but in general:

  1. PTPv1: This version of PTP supports Ethernet networks and devices with hardware timestamps, which were implemented in some network interface cards (NICs) and switches.
  2. PTPv2: This version of PTP is widely used and supports Ethernet networks and devices with hardware timestamps, which are now more commonly available in NICs and switches. It also extends support to Wi-Fi networks and wireless devices.
  3. PTPv2.1: This version of PTP builds on PTPv2 and adds new features to improve security, resiliency, and scalability. It supports the same hardware as PTPv2.
  4. PTPv3: This version of PTP is still under development, but it aims to extend the protocol’s support to new hardware, such as low-power devices and embedded systems. It also aims to add support for more advanced timing functions, including time-sensitive networking (TSN) and coexistence with existing synchronization protocols.

I hope this helps you under PTP on a basic level. Reach out if you have any questions.

You can leave comments too!

RFID Basics: How it Works and How it’s Used in Everyday Life.

There are many different types of RFID tags, but here are some of the most common categories:

1. Passive RFID tags: These tags do not have their own power source and rely on the energy transmitted by the RFID reader to function.

2. Active RFID tags: These tags have their own power source and can transmit signals over longer ranges than passive tags.

3. Semi-passive RFID tags: These tags have a battery that powers onboard sensors, but they still rely on the energy transmitted by the RFID reader to communicate.

4. Low-frequency (LF) RFID tags: These tags operate at a frequency range of 30 kHz to 300 kHz, are low cost, have a short reading range, and are commonly used for access control and animal identification.

5. High-frequency (HF) RFID tags: These tags operate at a frequency range of 3 MHz to 30 MHz, can be read from a distance of up to 1 meter, and are commonly used for payment systems and smart cards.

6. Ultra-high-frequency (UHF) RFID tags: These tags operate at a frequency range of 300 MHz to 3 GHz, can be read from a distance of hundreds of feet, and are commonly used for inventory management and supply chain management.

7. Near-field communication (NFC) tags: These are a type of HF RFID tag that can be read by smartphones and other mobile devices and are commonly used for contactless payments and authentication. 

There are many other types of RFID tags as well, including passive and active tags that operate at super high-frequency (SHF) and extremely high-frequency (EHF) and specialized tags for specific applications.

There are different methods to encode an RFID tag depending on the type of tag and the reader used, but generally, you will need an RFID reader and encoding software to write data to the tag.

Here are the general steps to encode an RFID tag:

1. Choose the type of RFID tag and the data format you want to encode on the tag.

2. Connect the RFID reader to your computer and ensure it is properly configured.

3. Install and open an encoding software that supports your type of tag and reader.

4. Place the RFID tag onto the reader and ensure it is detected.

5. Enter the data you want to encode into the software.

6. Click the “Write” or “Encode” button to write the data to the tag.

7. Verify that the data has been successfully encoded on the tag by reading it with the RFID reader.

Note that some tags may have specific requirements or limitations for encoding, so it’s always best to refer to the tag and reader specifications or the manufacturer’s guidelines.

The type of encoder used to encode data onto an RFID tag depends on the specific tag and the requirements of the application. Here are some examples of encoders and the types of RFID tags they are commonly used with:

1. Low-frequency (LF) RFID tags are typically encoded using LF RFID encoders, which can write data to the tag at a frequency range of 125 kHz to 134 kHz.

2. High-frequency (HF) RFID tags are commonly encoded using HF RFID encoders, which can write data to the tag at a frequency range of 13.56 MHz.

3. Ultra-high-frequency (UHF) RFID tags are often encoded using UHF RFID encoders, which can write data to the tag at a frequency range of 860 MHz to 960 MHz.

4. Near-field communication (NFC) tags are typically encoded using NFC encoders or specialized mobile devices with NFC capabilities.

These are just general examples, and specific encoders may be able to encode different types of tags depending on their capabilities. It’s always best to refer to the tag and encoder specifications or the manufacturer’s guidelines for the best encoder to use with a specific tag.

The specific software used for encoding RFID tags varies depending on the type of tag, the application, and the encoding equipment being used. Here are some examples of software commonly used for encoding RFID tags:

1. For low-frequency (LF) RFID tags, software such as “RFID Encoder” or “ZebraDesigner” can be used with compatible encoding equipment.

2. For high-frequency (HF) RFID tags, software such as “TagXplorer” or “AWID ProxEncoder” can be used with compatible encoding equipment.

3. For ultra-high-frequency (UHF) RFID tags, software such as “Impinj Speedway Connect” or “Alien Technologies ALR-H450” can be used with compatible encoding equipment.

4. For Near Field Communication (NFC) tags, software such as “NFC TagWriter” or “NFC Tools” can be used with compatible encoding equipment or with smartphones and other mobile devices that have NFC capabilities.

It’s important to note that the specific software used for encoding RFID tags will depend on the equipment being used and the requirements of the application. It’s always best to refer to the equipment and software specifications or the manufacturer’s guidelines for the best software to use with a specific tag and equipment.

Any Questions? Please feel free to ask!

Giving Yourself Credit

If you’re like me, you beat yourself up for every mid-step, mistake you make, big or small. I played softball yesterday and made a ton of good plays, ran for first to be safe like a jet, scored at home plate twice by out running the throw, but also was thrown out once at second base, bobbled a ground ball and didn’t get the runner. I remember the mistakes more than the good stuff.

The same goes for my golf game. I hit the ball straight most of the time, but a lot of the time I don’t hit it very far, or get “air” on it. The ball rolls down the fairway pretty far at least and is competitive. But, if I’m swinging over water I choke. If I swing out of a bunker or high grass, I chip like a champ. My tee shot is terrible, my short game is awesome. I love chipping and putting. I practice driving on the range into the water, and I hit equally good and bad shots. Putting and chipping, I’d say I do what I want to do and am successful 90% of the time.

On the driving range

What do I remember most? The misses. It’s time to change that. Especially after all my lofty (pun intended) plans in January. They weren’t resolutions, they were plans.

I also wanted to write everyday. I’ve written some, so I’ve attained that. But, I haven’t written everyday and posted it like I planned to.

I wanted to improve my running time, I hurt my ankle and had to take downtime, so now I started over again last week – slowly.

The Swimming – ankle support

I swim, I’m trying to improve my lap time, but my ankle kept torquing there too, I had to get a swim ankle brace, but I’ve been able to swim regularly again now, and my lap time has improved, and I now do over a mile 5-6 days a week. Days that I feel tired, I have a slower lap time, I beat myself up for going so slow all the way home, but try to shake it off while making dinner.

At work, I can do every right. Cross all I need off my list, and I feel accomplished. Then I realize I forget to get an essential ingredient(s) for dinner at the store. What do you think I think of? Not the accomplishments, but then I pivot on the dinner, and make something else, most of the time it turns out better than I thought it would.

Improvising works!

So, my point it, it’s time to reset. Reset your thinking if you’re like me. Remember the good, the great, the lucky break even. Yes, I’d rather be great or even good than lucky, but I’ll take the luck, any day.

We all need some encouragement sometimes, so hopefully this has helped someone recalibrate their mindset to remember the good or great things you’ve done and accomplished up to now. And, if you’ve taken mid-steps or not even started your plans for 2023, reset now.

There are 24 hours in a day. You can restart your 24 hours at any time, whether it’s 10am, 2pm, or Midnight. It’s YOUR 24 hours. Let go of any regret of not even starting what you set out to do – YET. You can start your 24 hours now, or anytime you choose.

Love Yourself First, the rest Will come. Act and think like “it’s on its way”, and it will come. You need to think that it’s coming first, then it will. Be patient, be persistent, be courageous, be humble, be grateful.

Love yourself like you’re the last YOU on earth, because you are.

Your Big Break

It’s not a puzzle to be solved

You’ve worked and worked. Shown up, gone above and beyond at work, with friends and family too. You’ve volunteered for the food bank, and local toy drive, helped neighbors with packages, and driven them to appointments they forgot about, and they didn’t want to take a car service.

You’ve gone to holiday gatherings for over a month for work and with friends. You’ve networked with your business contacts, sent notes, emails, well wishes done everything possible to bring good will to others.

Work is great, your friends and family are great, you’ve taken care of your significant other. Now what ?

It’s YOU time, that’s what!

Don’t forget about Yourself. I learned 12 years ago (on my yoga mat) that taking time for yourself is Not selfish, it’s actually one of many self-less things you can do for yourself and others. Ummm hmhmmm – it’s true.

Say what now?

Take one hour for yourself Today in anyway you’d like. A walk, meditate, if you want movement involved – work out (today I worked out, then did yoga, later I’ll play a little golf), listen to music, take a bath, swim, read, write, play an instrument, play /practice a sport, but do it. Yes Today!

You should set aside time everyday for yourself. It doesn’t always need to be an hour, just set aside some “boundary time” (time you will not be disturbed). No kids, no family, no friends, no texting, no social media – just where you’re doing You, unplugged to reset. No bills, no cooking, no cleaning, no kids (even for 5 minutes), breathe…..

This brings you back to you, the best version of you gets to emerge from this practice because not only your wants are met, an intrinsic Need of Re-connecting with yourself occurs.

You don’t know what to pick? It doesn’t HAVE to be any one thing. Pick one thing a day to try. Try something new. I chose yoga, it was the single greatest thing I did, because I didn’t even know at that moment how much I needed it yet. I just wanted to get out of the house, be with people – and try a class at my new gym. This year, learning golf and its process has me in the same zone. It’s amazing.

After the new year I’m taking a 4 day completely unplugged break. No phone, no email, no phone calls (except for emergencies only). I haven’t had a break since COVID began. Working and living at home has crossed some serious time boundaries, every day seemed to run into the next until I set some boundaries.

Exception: In an emergency, “me” time can be interrupted – but the house better be on fire! Ok, maybe not literally on fire, but I think I’ve made my point.

And, if I haven’t made my point. My point is take a break before you do!

Everyone needs even a quick reset, make it a 5 minute a day practice to start (and build from there), I guarantee others will see a positive change in you before you do. You’ll be healthier and much happier.

You’re worth it, believe it, own it, be it. You have permission to just think of yourself for at least 5 minutes a day – for the rest of your life. Then, you can return to your job, following up on tasks, the carpool, doing the dishes, grocery shopping, cleaning up after your pets and loved ones.

This is not a New Year’s resolution. Leave all your worries and things to do outside a virtual or physical door. When I step onto my yoga mat or write, nothing else exists at that moment in time. I can compartmentalize with such focus that nothing else exists, it’s almost like being in a trance. There are hours I’ve easily written through, and stepped onto my yoga mat hundreds of times, hearing just the voice of the instructor, going through the entire class, moving through each Asana, and found myself at the end not even realizing that someone else was in the room with me. It’s transcendent. It’s transformative.

It’s what I didn’t even know that I needed. Permission. Permission to think of just that for that moment in time.

You have permission to break from the task filled universe and be selfish for yourself, then you can be of service and more of yourself with the world.

Do it, you have Permission.

It’s About Progress Not Perfection

It’s not about being perfect; it’s about making progress. Every day, we are presented with opportunities to move forward and improve our lives. Sometimes, we take those opportunities and sometimes we don’t. But as long as we keep moving forward, even if it’s just a little bit each day, we are making progress.

As we evolve we hopefully become more self aware. We know what we want, and possibly more importantly we know want we don’t want for ourselves. We can still make “bad” decisions, but I have to believe that each decision one makes is based on a belief system or defense mechanism we each have built for ourselves. A belief platform that tells us over and over again of “how it’s supposed to be”. But is it right? Is there a ”right” way? Only one, or just the one you’ve come to believe in?

Take the holidays. Chanukah, the Festival of Lights. When you were a child it was one thing, as an adult is it another ? Does it mean as much? How have your beliefs changed in what it was or is? Have they changed? The same can be asked about Christmas as well. Goto church, pray, get gifts, gather and eat with family.

How do you deal with the holidays, family, family “friends”, new “friends”? Are you excited, stressed out, evasive, apathetic?

If you’re going to be uncomfortable being with family, you have permission to not go (or host).

In tech, we build software applications and systems, test them, then give them to others to test and “break”. We WANT them to find flaws so they can be fixed before a bigger problem is found. It’s an iterative process. Yes, sometimes frustrating, but usually satisfying especially if it’s an easy fix. No one expects it to be perfect.

Now imagine crafting your life that way. There is no right, there is no wrong, there just is. The good, the bad, the frustration, the elation all will pass, nothing is permanent. A moment from now you won’t be exactly the same person you were a moment ago, so quite possibly the NOW person doesn’t want or need what the person they were a moment ago needed.

My whole life changed again during COVID. One day I was living alone in a condo in northern NJ working 2 jobs commuting to NYC 6 days a week, and on March 9th, 2020 I shut down my section of MLB Advanced Media, a brand new multi-million dollar office, and have barely traveled to NYC again, even for fun. If you told me that – on that day at that moment, it didn’t seem like that something so extreme would even be possible. But it was.

The next day the entire team pivoted to be home based, and we got to work, and we made it work. In no small part of that equation we’re my bosses, who were and are stellar in every sense of the word. Was it seamless and perfect? Not even close. The whole team was clamoring for more work hours, but we all made due with what was given. It worked somehow.

In my off hours, which were now many, I began long walks outside, worked out more, went to the grocery store as little as possible, but when I did I wore my mask, came home took off my shoes at the door, washed the food, all the clothes I was wearing, and took a full shower. It was exhausting, but I didn’t get COVID.

I helped neighbors, and met with friends outside 6 feet apart, took care of my pets, and just kept moving forward. Was it perfect? Again, not by a long shot. I applied to any job I thought I could do remotely for months, I was about to lose my condo when I sold it and moved in with my boyfriend. I then also started a fully remote mainstream job for the first time in years. I was a fish out of water, but I learned about the people, the culture, the job, the technology, and the competition. It was all new like I was a beginner again, because in a certain way, I was. Tech in broadcasting was rapidly changing, evolve or die, I choose to live, and so I did.

Is it perfect now? Nope. It’s progress not perfection. I’m in a New home, with a great guy, great friends and family, a great job, still working out everyday. It got better and still gets better everyday. It’s been a long road but setting expectations and accepting where you’re at in that exact moment leads to a certain peace in life that perfection can’t deliver.

#keepmovingforward

Continue reading “It’s About Progress Not Perfection”

The Broadcast Engineer Unicorn

#Offering Help: #Mentoring, #Writing, & #Engineering Services

I’ve been fortunate throughout my 33 year career to have found many mentors. I now happily find myself still working, but also mentoring the next generations of broadcast employees. Not only to have had such a diverse career So Far – it’s certainly far from over, but a female engineer in the world of broadcasting I have been termed a Unicorn. Who me? Yup!

Indeed, for many many years I have found myself to be the only female in the room. The only adult in the room, but that’s another story. I’d be promoted into a full room of men and me. If there was another women, she was an assistant or secretary, so I’d do my best to be inclusive and share insight. Paying back the kindness that was so graciously bestowed upon me along the way.

Although, I have to say, I was underestimated along the way as well. I didn’t spout or boast my knowledge, pat myself on the back for a job well done, I just kept my mouth shut and did my job, and did everything I could think of to “move the needle forward” for women in broadcasting.

Unfortunately, back then the loudest person in the room was thought to be “right” or the most knowledgeable, I certainly wasn’t loud, so I took the brunt of a lot of wrongs. Should I have spoken up? Looking back, absolutely yes, I just didn’t have those tools in my toolkit – YET.

Finally one day, I started a new job in the control room. I had not only one woman boss, I had two! I felt lucky. I was in certain respects, in other respects – uh, not so much.

I won’t distinguish which was which, but one superior was never satisfied. If I took care of every single aspect of my job, went beyond what was expected, took initiative to do more, it still wasn’t enough. More was thrown at me (sometimes literally) and I would scramble to “figure it out”. I could ask the other superior clarifying questions, but mostly I was on my own, they were both busy, and that’s why I was there right? Sometimes yes, sometimes no.

Finally about 3 months in, the superior who was never satisfied went on a 2 week vacation. I was elated, and for good reason. The other “boss”, would check in with me, and on my 2nd day with just her in-charge, she physically came into the control room. I showed her all I did, what I was watching for, what I still needed to finish, and of course asked if I could help her with anything. A simple “Nope, I’ll be in my office, if you need anything, call. You’re smart, I trust you, and I know you won’t wait until you get into trouble to call me”. Then she left. Wow! What a feeling of empowerment.

To this day I do not know that that boss knows what she gave me. Autonomy for one thing, but also confidence. She gave me an example of how I wanted to be when I was in a position like that, respectful, inclusive, giving, everything I needed summed up in a short sentence. Not only did I learn what I wanted to be like, I learned something even more important, what I didn’t want to be like. I didn’t want to create/rule by fear every time I walked into a room, I didn’t want to make anyone feel less than, no matter who they were, I didn’t want to make anyone feel like they were only as good as their last mistake. And so, I’ve taken that goal and hopefully not only successfully achieved it, but surpassed it.

I knew what I wanted, so then I sought out through positive leaders/achievers in and outside of the company. Learned from their vast historical knowledge and applied it to new ways of developing standards. All the men and women of my past have made me who I am today.

Have I made mistakes? Absolutely. Really big ones? That’s an even bigger Absolutely. Have I learned and grown from them? Absolutely. Do I regret some? Absolutely. I don’t regret learning from my mistakes, I regret how I handled my failures sometimes. We all fail sometimes, or a lot of the time, but it’s how we get back up, how we recover that matters. It’s not how you start, it’s how you finish.

I cannot change the past though, I can only move forward with integrity and perseverance in the future. I can pass on my knowledge to usher in the new generations. And, I do.

In 2019 I took a seasonal broadcast streaming engineer position at MLB Advanced Media. I was fortunate to work with a newly assembled group of engineers. All men and me (a Re-occurring theme throughout my career). Not only was I the only woman, I was also the oldest person in the room by far. The youngest wasn’t even born when I graduated college, he wasn’t even of drinking age yet. But he was/is brilliant. The takeaway is to remain open, accepting, giving, and teachable. And, check your ego at the door.

It was a new system that we all rolled out in only 3 months, so we All were learning something literally brand new together. It was extraordinary. I had as much to learn, and unlearn as they did, but we did it all together. To this day it was hands down one of the best teams I was ever a part of. We all worked together in this small closet of a room, and we successfully streamed out 32 minor league team’s games for the season, ending in an all time high of adding in some major league games too. We all helped each other through processes and SOPs, it was amazing.

The season ended, some found other full time jobs, the rest of us stayed on part-time to work on Major League ballpark infrastructure upgrades in the off-season. Another great experience. But we did it together. I’ve gone back as a part-time employee season after season with great anticipation and openness to learning all the new tech forward innovation each year. I am truly grateful to have found MLB, and many others along my Broadcasting journey. I was asked once, “What will you do when or if they hire another girl/ woman for this office?”, my response was simple, “I’d throw a parade first, then make sure you all treated her with the same respect you’ve shown me (which was a lot, and it never waivered), or you’ll have to answer to me!” That was said with a somewhat joking lilt, but it was true then, and true now. That was verbatim comment recollection. Very smart, accomplished women were hired, and the respect was given, I was proud of this group of fine men and now women.

It’s not over yet – not by a long shot!

If you’d like to chat please feel free to contact me. I can learn just as much from you as you can hopefully from me.