Care Required:  
Ham Radio is
Radioactive!
Quack Quack Quack Logo

Shiawassee Amateur Radio Association [SARA]

"Whiskey 8 Quack Quack Quack"    ~    Established: January, 1958 an ARRL Affiliated Club since 1961
IARU: 2 Grid Square EN72wx   Latitude: 42.9819 N   Longitude: -84.1164 W   Alitude: 760 ft.

Meets at: James P. Capitan Center, Lower Level; 149 E. Corunna Ave.; Corunna, MI 48817 Monthly: 2nd Tuesday @ 7:00 PM

You're invited to a SARA club meeting!  7:00 PM the 2nd Tuesday of each month in Corunna, MI.

Contact us at:   SARA / W8QQQ <Email>


    Page Last Updated: 06-May-2021

Go to footer ↓

 

Quick Information:


2021 SARA Officers

President  Kevin Middleton, K8MID  
  Vice President  Don Warner, WB8GUS
SecretaryPhillip Bates, AC8FW
Treasurer  Dennis Phillips, KC8ETW  
TrusteeTom Carpenter, KI8AS
TrusteeChuck Dafoe, K8DZH
Trustee  Mike Middleton, KF5MYQ  

Click on Name above to send an email.

Go to:  Top of Page ↑       Go to footer ↓

 


Download SARA's Excel Files:

CONTACT US: SARA / W8QQQ <Email>

Go to:  Top of Page ↑       Go to footer ↓

 



Ham Call Lookups

  QRZ Home Page (Callsign Server) - Call Lookups

  HamCall - World-Wide Hamcall Server

Go to:  Top of Page ↑       Go to footer ↓

 


Amateur Radio Time

Go to:  Top of Page ↑       Go to footer ↓

 


Solar Weather

solar data

A current solar report is linked from the ARRL Home Page. Go to SARA Site Navigation at top and in first button area, select the ARRL home page link. There a 'Solar Current Conditions' link is provided to transfer to the report which holds the current and the short term predicted conditions.

Go to:  Top of Page ↑       Go to footer ↓

 



 Google Search
  Search only "W8QQQ Site"   Search "All the Web"

Results presented on a new page.
Quickly Find Something! Select your Search Range ~ either choice opens in a new Window.


Coax that connects things! topic divider

Shiawassee Amateur Radio Association [SARA]

Overview of this page's Python path

Here are the topics on this page:

  • Learn Python Syntax (a path to get started)
  • Installing Python
  • Installing an IDE for Python
  • Python Virtual Environment
  • Learn about Libraries
  • Learn about APIs
  • Study some Examples

The path to 'know' Python is not a short one. Depending on your efforts expect it will take three months to over a year to gain a good level of proficiency. Like a large number of 'learning processes', learning Python will not have a definable end point. The Python language will always improve and change, your acceptance of these changes must continue into the future. The best advice is to quickly gain a level of proficiency that satisfies your immediate needs and then maintain a slower rate of continous learning. A proven method is to use many examples. Learn how issues/problems can be handled, write several of your own programs. The best learning approach is to use a 'hands on approach', learning a program language is not a read and remember process, it requires a deeper understanding and actual practice using your underlying knowledge. Keep your expectations versus time at a low level and allow a reasonable time to gain knowledge, you will gain a deeper and deeper understanding and become quite accomplished at the process.

It is very similar to learning a second spoken language thus the term "learning a program language'. You can only learn by usage, start small and then expand you usage until you are fluent. Millions have done this and so can you.

Coax that connects things! topic divider

Learning Python Programming Language

A subgroup of Shiawassee Amateur Radio Association [SARA], wishing to improve some computer skills started to discuss (dialog) about how to add Python Coding (Programming) to our skill set. There are a great number of Python programming tutorials on You Tube along with many tools. If you are just starting out, the basic framework on how to complete the process is not easily found. This page is not the actual detailed process of learning the Python programming language, it is about how to setup a 'Python Environment' that insures an efficient learning process. Following advice here allows a quick method for you to get going. Your choices on the 'Python Environment' to be used and the application programming interfaces [APIs], library files, computer operating system choices, and on down to program structure and formating by the use of examples are included.

In today's computer and microcomputer world, chosen 'tools' will greatly impact the time required to attain a level programming code writing capability. We define the term as 'Program Writing Efficiency' {PWI]. Most people want to cover the entire process in an efficient manner and desire a high operating level of coding at the end. I did not find a defined framework to use with a quick internet search - it is probably out there, but my searching did not provide it. I decided to document a Pytthon tool selection process in a concise manner. Here is a method to assist your progress in getting up and running in Python so can spend time learning the coding process and not in learning how to put the tools to use.

So "What is Python?", lets try Wikipedia (love that site - send them a donation PLEASE!) for a starting point,
copy/paste this-->   https://en.wikipedia.org/wiki/Python_(programming_language)

for some actual Python code details.
Wikipedia "does not allow" automatic linking, so you will need some simple copy/paste skills {highlight the link and hit "Crtl-c" {copy}, move to the web browser link area in your browser and "Crtl-v" {paste}, then push "Enter" and off you go! - easy peasy. Comeback here to continue the Python system setup.

Go to:   Top of 'Content' ↑       Top of Page ↑       Go to footer ↓

 

There are many, many Python operating versions and operating system combinations. Your correct Python version choice is probably 'the latest stable released version'. Anything earlier then 3.6 is probably not a good choice. Much of the internet example' will not be at this level and specific code will probably not work in the latest Python versions. The syntax changes and improvements are established to assist you. They add security and correctness to the actual code being written. Earlier versons have 'MAJOR changes' that means the outputed Python code is usually NOT compatible with current tools. You can change earlier programs to work with the newer versions of Python. Choose the latest available stable Python version (not a 'Beta') and proceed. This means if you search the internet or written books for code examples... that they may not work with your newer Python versions ~ just 'be aware' of the various options and find a 'work around'. If you start with their example version and then update it to the latest Python code version (rewrite), you get a great method for you to actually learn Python! After a dozen or so example programs, you will be well along your learning path. The concept is that code running the same Python version will operate across different operating systems without change. A chnage in Python version usually is a small rewrite to keep everything usable.

So what are the Python syntax requirements? Let us send you to W3 Schools.com Python Introduction. This link will also supply you with a complete course in Python code along with updated suntax details. The site is one you should bookmark on your Web browser. Python has a very wide system level interface and supports multiple programming style usages. It can be used in multiple operating environments, server-client systems, Web applications, database usages (big data), perform complex mathematics and allow different computer procedural programming type directions (object oriented, functional method, procedural method, etc.). Another great tutorial is on our "Wiki" sites, the Non- Programmer's Tutorial for Python 3. If you already have programming experience, then use: The Python Tutorial {Ver. 3}. Hint: Wikibooks has many topics covered - you should check them out!

Python syntax uses whitespace, new lines, and intentations to control loop scope, functions and classes. The result is a very readable code approaching English with mathematical notation included. Writing in a simple text editor, you can produce code with ease. Python in "concise" and allows fewer lines of code to control the entire computer system compared to many other computer languages. For these reasons, Python is probably the most popular programming language in use today. Python is a very desirable tool for you to be able to use. The real issue soon becomes the efficient use in your code and connecting to libraries, APIs, lists and dictionaries of which there seems to be an infinte number for you to choose from. APIs currently have over a million choices out there.

Go to:   Top of 'Content' ↑       Top of Page ↑       Go to footer ↓

 

How to Learn Python

Take a moment or two and think about the best way for you to learn Python. A 'personal involment' approach will most likely keep you motivated as you start. Sitting and reading tons of doc files is not vert stimulatiing at a personal level. This is true for everyone! Decide a direction for your pace on the learning path. A nice introduction of this is at Dataquest's Learn Python the Right Way.

I suggest you look at all the lessons in Using Python Arduino - lessons at that 'Dataquest' site. Perhaps start your Pthyon learning with small microcomputers and grow from there, they should be smaller and concise programs and still put your skills to use.

Coax that connects things! topic divider

Integrated Development Environment [IDE]

The Python Programming Environment

Modern (2021+) programming tools are almost always used, allowing direct access to Python Code file(s), an execute program window and a file management structure window... threE windows within one software package (quick and efficient). There are many available choices for this IDE software. See: KD Nuggets site on how to choose the correct IDE for you, or perhaps two choices. The "integrated development environment" [IDE] selected will be a big choice. The current reccommended choice has two major candidates. PyCharm and Juypter Notebook. PyCharm has a 'free version' and a 'commercial version'. Some further link suggestions will be below.

PyCharm will install and run totally on your computer (no network required). Jupyter Notebook runs on the network, thus you must have a network connection to use the program. For that reason, I chose PyCharm as my IDE and it works well for my needs. It will let you write 'well formatted' Python code, provide 'type ahead' options, easily move between: editing window to execution window and the file mangement window. It forces you into proper coding practices, a good thing. You need to make the best choice for you!

Some links usefule for these IDEs:

Read the next section on 'Virtual Environment' before experimenting too far!

Go to:   Top of 'Content' ↑       Top of Page ↑       Go to footer ↓

 

Coax that connects things! topic divider

Python Virtual Environment

A Virtual Environment should be used whenever you work on any Python based project. It is generally good to have one new virtual environment for every Python based project you work on. So the dependencies of every project are isolated from the system and each other. Inside this environment you can install specific modules to use in your projects each with the dependencies it needs and keeping those independent from all your other projects. This is a very common practice to use for good Python development and keeps each 'project' from contaminating your other various Python projects. You'll be able to install Python modules specific to this project or app and use different dependencies for other different projects. Each 'environment' will separate the underlining dependencies and stop you from making a mess of things.

For more of the "why and how of virtual environment usage" see: GeeksforGeeks ~ Introduction of Python Virtual Environment. Note near the end about how to 'deactivate' an environment to move to a different project. Search the internet for other definitions and reasons on virtual POython environments. This technique will save you time and keep things organized as you progress. Organization here is the true benefit. Finding the correct procedure to get started is not somethig I found 'up front', but it is what you should do.

You can create a virtual environment in Windows with:

python3 -m venv /path/to/new/virtual/environment
        

where you change the path string into your project's path name. As alwaays, we suggest you read the online documents file for Python features on your topic. For 'venv' in library at doc.python.org. Lots of details and information on the setup. Note the changes for the Python version 3.9.

Go to:   Top of 'Content' ↑       Top of Page ↑       Go to footer ↓

 

Coax that connects things! topic divider

Python Libraries

A library in Python is a code block that executes a specific task(s). It includes a definition of 'input arguments' and what 'output arguments' or actions it will return. It is simply an agreed upon method to turn inputs into return values or actions {a small contract between code partitions}. It is a 'Python program file', usually with the standard ".py" file extension. Your program "imports" the library (making it avaiable), it then inserts the library's code into the 'calling place' inside your program. Allowing multiple calls eliminates the reentering the same code.

There are many supplied libraries available. Finding and choosing the correct ones seems to be an issue {especially with beginning programmers}. One method is to survey the 'most used' libraries and learn about what they provide in functionality. There are many You Tube Tutorials for various libraries (search for them). We can use KD Nuggets Popular Python Libraries - 2021 to explore the web and learn about using some of these libraries.

  1. Pandas ~ primarily for data analysis for explore, clean and analyse is a structured set. Machine learning also revolves around Pandas.
  2. NumPy ~ handles N-dimensional arrays and makes them more robust compared to Python lists.
  3. Scikit ~ used for machine learning and includes tools for predictive modelling and analysis.
  4. Gradio ~ build and deploy Web apps. Easy to to implement as anyone can use with a public link.
  5. TensorFlow ~ implementing neural networks and uses pipelining for efficient and scalable models.
  6. Keras ~ deep learning models for neural networks.
  7. SciPy ~ scientific functions and mathematical functions for statistical analysis.
  8. Statsmodels ~ hardcore statistics and models.
  9. Plotly ~ visually build displays for your data.
  10. Seaborn ~ creates different visulations allowing better understanding of your modules.
Some Other You Tubes of interest are:
TitleTime
Top 40 Libraries in 20 minutes[22:04]
Top 5 Pyrthon Libraries[15:23]
Five Amazing Python Libraries[17:19]

Expect that the list of libraries you choose will start small and grow as you run across them. Hint: Start a small note file and add a list of your libraries along with additional information can be found. Later is will assist you selecting between the ones you choose to use.

 

Go to:   Top of 'Content' ↑       Top of Page ↑       Go to footer ↓

 

Coax that connects things! topic divider

 

Using APIs in Python

An "Application Programming Interface [API]" is another layer added to the 'abstraction' stack. It goes deeper towards the hardware implementation layer of your programming language. Generally an API finds and returns data into you Python program. API commands {input} (from your Pyton code) with or without arguments being passed, establish a desired retrieval or system action. Actions involves system hardware in a more controlled direct response way. The use of APIs is a layer of understanding you will need to achieve. Example: If you want to control your Graphical User Interface [GUI],sound card, printer, memory storage internal and external, or your keyboard, then knowing how to use an API is required. You can issue a higher level command to print a file from your code going to the API. The API then takes care of the hardware control details in the system to get material from a place (file), format the command instructions into hardware specific commands and sends those to the specific printer you have chosen. It usually returns with the status of your request in some fashion. Think 'successful' or a specfic set of 'error code(s)'.
If you desire to get current information from the internet {data} and use that data in your program, you use APIs. You issue a command to the API and it goes and gets the data. Your program does not get into all the details, but abstracts those to be done with an API. APIs tend to support many computer languages (say 5-10 different ones). The requests to the APIs tend to look very similar, so if you can understand the request structure, you can usually change to the computer language of your choice.

A system concept is being used allowing you to think at multiple levels of abstraction at the same time. It forces you to think about 'How each line of code is actually implemented'. Leading to better and simpliar code. This process shifts the many details to a lower level of abstraction and allows an understanding and control at a higher system level. APIs lets you write code for an application that are not natively supported (within Python) at the level you are working on. That pushes details downward leading to better control of the actual ouputs on the system.

For example, in a GUI API it allows you to establish a "button control" or "data window" (with defined features, size, location, rounded corners, colors, font, etc.) with a line(s) of Python code that passes in arguments (to the API) for control argument choices (suppling default values for the items / values not being defined). THe API takes care to setup the desired commands being passed to your display. Your 'high level' code says make button and here are some characteristics, waits for a "return status", acts on 'success'/'error code' returned and then continues operation. The API handles all the small details to make and send information on to the display. Your Python code does not dig into each of the many details required for display control.

Look around on the web for a definition of What is an API? and What does an API Do? Here is a short You Tube on What is an API? [1:21]. Another Tutorial is: Python API Tutorial: Getting Started. This last one has some good example code for you to use and introduces "Java Script Notation [JSON] a common language used for API usage. This site starts by importing "request", a library for handling API information flow. {Remember to add that to your 'note file' on libraries}.

It does not take much time as you dive into computer stuff and you will require a use of 'GitHub'. It is central repository of computer information and code for computers. Generally after getting a topic, you will look for a "README.md" file for information on that topic (think instructions). You should take a little time and learn about GitHub.

A list of 'Free public' APIs can be found at: Public APIs ~ a good example of GitHub usage. {Told you it would happen.}

To learn about using APIs in Python, do a "google Search' for "How to use python api" and select a couple of tutorials. One I enjoyed was: How to use an API with Python. It has a nice amount on the Representational State Transfer [REST API] for doing HTTP requests for communication with various web services. A topic to investigate is "Authentication". The use of many APIs will require you to learn how to acquire an authentication key, check the status and sendng keys. Sites use these to insure they know who is accessing data and proves that you have proper identification/authorization to use the data. They can use the key to give you limited access (a rate limit). An example: Postman API (Open API) will give you information on the POSTMAN API.

As the collection of API information grew, there became a need for centralizaton of resources and cataloging the many features of APIs. Leading on to a commerical market for APIs (developers were willing to sell access to their APIs. One such centralized marketplace for APIs is Rapid API. You can read and learn about it in just a few minutes (or hours). If you actually develop and write an API, you can push it unto the marketplace. Search the internet (Google) for "Where can I get free API?" and you will find thousands of APIs from many (~25+ hubs) sources hosting millions of free APIs. Then there are ones you can purchase. There are many to choose each with advantages and disadvantages. Look around and you can find ones you may be interested in exploring, I am sure will spark a personal interest. You can try, HubSpot API Blog.

One of my favorites has become the NASA's Open Data Portal for free access to a large amount of information (about 10,000 projects). It is free but you do need to create an account to gain access. See NASA Open Data Portal guide for information on what it is about.

In Windows, probably the most {in}famous API is the 'Win32 API'. I have not found a good description for use with Python, but check out the concepts for C/C++ at: Microsoft Win32 API in an application. These calls are similar in Python. Watch the 'Related topics' at the bottom of that page pointing to Windows API reference and Windows API Index. WARNING! It can/does get a little complex, but just go slow and you will 'get it' after a short time.

The Windows abstraction continues with the addition of Universal Windows Platform [UWP] concepts (Windows 10). Much of the documentation is C/C++ based, but Python can involke C routines just fine. Capture the abstraction concepts and you learn fast what you need to know. I (we) are still learning in this area, so continue on along using your own level of caution. Basically you use abstraction to reuse and hide details from a higher level program by using lower level code. Then add several layers of abstraction, each hiding more of the details. Soon you reach the number of levels where the program does very complex and beautiful things without the higher level knowing any of the real details... that is the current state of computer programming (2021). So the computer programmer quickly lears to depend on the nested APIs doing most of te details and the higher level program supplies the logic for those complex and beautiful things a user expects.

Stay tuned ~ we are still working in here right now!

 

Go to:   Top of 'Content' ↑       Top of Page ↑       Go to footer ↓

 

Coax that connects things! topic divider


Go to:   Top of 'Content' ↑       Top of Page ↑