User talk:Duggabe
Tech writing presentation
Preparation
- GNU Radio Main Page
https://wiki.gnuradio.org/index.php/Main_Page
- A Newbie's Guide to the GNU Radio Universe
https://www.youtube.com/watch?v=uxAW-WzuNy0
Background
- Amateur radio operator since 1953
- Electrical Engineering degree 1961
- Computer programmer since 1962
- Retired 2003
- Started working on GNU Radio 2019
What is GNU Radio
GNU Radio is a free and open-source software development toolkit that provides Digital Signal Processing blocks to implement Software Defined Radios. It is an entirely volunteer organization with contributors from all over the world.
Why did I get involved?
I discovered GNU Radio when reading an amateur radio manual. I thought it was a fascinating concept to use software instead of hardware to create a radio. After all, I am a career computer programmer and a life-long amateur radio operator, so combining the two was an appealing idea. After reading the "discuss-gnuradio" mailing list for a while, I noticed a recurring topic of "GNU Radio documentation is terrible". Trying to use it, I had to agree, and decided to do something about it.
Learn by Doing
- When I got involved, the switch to using a Wiki was new. Many of the blocks were just skeletons with no real content. For example, https://wiki.gnuradio.org/index.php?title=Cvsd_encoder is yet to be documented after more than four years. There are more that 480 blocks, so it's a very daunting task to do them all.
- I had to learn to use MediaWiki.
- I had to learn what a block did before I could write about it!
- After the first year of working on them, I had done over 150 blocks and written or updated about 10 tutorials.
Help others to Learn
I have found that the best way to learn about a technical subject is to study a turorial about it. However, there were very few tutorials, and the ones which existed were out of date because of newer software releases of GNU Radio. About the same time I got started with GNU Radio, there was a significant update to the software which added many blocks and deprecated many others, so most of the tutorials only worked with the older software.
Another way I have found to learn about a subject is to teach it to someone else. When you explain a topic to another person, you clarify the details in your own mind (or find out that you need to learn more about it yourself!). So study partners or small groups can be very valuable to enhance your own learning.
Adopting a Style
It was rather surprising to me that there was no formal guidance for the style of the Block Docs or for tutorials. As I started working on the Block Docs, I derived a skeleton format which covered all of the items I found in various blocks. That gave a consistent layout from one block to the next. I also got some guidance from my mentor at GNU Radio based on unwritten expectations of how a block should be documented. It's interesting to note that in a volunteer organization such as GNU Radio, tradition and unwritten rules are as common as formal guidelines.
For the Tutorials, there was much more latitude to create and use my own style. My basic approach was to write for a beginner with only the Prerequisites as a background. Other than that, I used an "Assume nothing" approach.
Some examples
One of my more popular tutorials is https://wiki.gnuradio.org/index.php?title=Simulation_example:_FSK Along with that, I wrote the Block Doc for the https://wiki.gnuradio.org/index.php?title=VCO which is the key block in generating the FSK signal.
In doing my work on the documentation, I wanted to make sure that what I wrote actually worked. So for each of my blocks and example flowgraphs, I created and tested them before I published them. For several of them, I created a complete working system using SDR hardware to operate with an amateur radio station. For example, https://github.com/duggabe/gr-RTTY-basics implements an amateur radioteletype station.