Topics

I am interested in programming for NVDA


Stephanie Watts
 

 Hello,
 
I am interested in programming for NVDA. However, I have very little programming experience. Any suggestions for where I should begin?
 
Thank you kindly.

Stephanie


 

Hi Stephanie,

Thanks for your interest in making NVDA better through coding.

I see that you have limited programming experience. Can you tell us which programming language you are familiar with? Or, for that matter, do you have any experience with Python? I ask these so I and other developers can tailor the answers to your needs.

Cheers,

Joseph

 

From: nvda@nvda.groups.io [mailto:nvda@nvda.groups.io] On Behalf Of swwatts3@...
Sent: Thursday, August 10, 2017 9:05 AM
To: nvda@nvda.groups.io
Subject: [nvda] I am interested in programming for NVDA

 

 Hello,

 

I am interested in programming for NVDA. However, I have very little programming experience. Any suggestions for where I should begin?

 

Thank you kindly.


Stephanie


Tony Ballou
 

Hi,


I'm not a programmer either, however, I can tell you that it is written in the Python programming language which I do have an interest in learning myself. So, we are in the same boat here. 


Tony


On 8/10/2017 12:04 PM, swwatts3@... wrote:
 Hello,
 
I am interested in programming for NVDA. However, I have very little programming experience. Any suggestions for where I should begin?
 
Thank you kindly.

Stephanie


Stephanie Watts
 

Hi Joseph and Tony,

I apologize for the misleading post earlier.  I have no experience with Python and very limited coding experience with HTML. 

By way of background, I have used NVDA intermitently over the past few years and have grown to like the program.  I am impressed by the NVDA community and those who continue to dedicate time and effort to making it a viable screen reader alternative for use in business and education settings.  Because I have always been interested in learning to code, I thought this would be a perfect way to combine my desire to learn with a worthwhile endeavor like NVDA.

Let me know if you would like to continue this discussion off-line.  Otherwise, I am happy to answer questions here.

Kind regards,
Stephanie


 

Hello,

I’d say we should discuss some basics here for the benefit of many on this forum who wants to contribute code to NVDA.

First things first: before people learn the intricacies of NVDA source code, some knowledge of Python is essential. If Stephanie came onboard last year, I could have told her to learn Python 2; however, times have changed, and I recommend people who are newbies to learn Python 3. For most tasks, Python 2 and 3 will work well, but there are some internal things that require you to become familiar with Python 2 for a little while before NV Access declares transition to Python 3.

Most of us (including I) started out with writing NVDA add-ons. Some of the add-ons out there, including Enhanced Touch Gestures, Clock, and many others were written by developers prior to their exposure to internals of NVDA source code. Learning to write NVDA add-ons helps some people in practicing Python skills and getting to use high-level functions offered by NVDA.

It is indeed possible to modify NVDA source code with zero to limited knowledge of Python. But when it comes to actually digging into code and providing contributions, this quickly becomes an overwhelming task because not only a new programming language must be learned, but also one needs to know how certain things in NVDA works behind the scenes (via source code). This is one of the reasons why I always advise scripters of other screen readers to take some time off and learn Python before working on seriously transforming their scripts to NVDA add-ons.

In terms of what you need to know before seriously working on NVDA code contributions:

  • Knowledge of Python is recommended.
  • You need to know what a variable is, how to call and define functions, and know the differences between a for loop and a while loop.
  • You need to learn how to think carefully before writing a conditional (if/elif/else) statement.
  • You should be well-versed in organizing your functions, variables, conditional statements, loops and what not into distinct modules.
  • You need to have a beginner’s grasp of what a class is, difference between class and object, and the big picture behind class inheritance.
  • You need to be able to explain when to use lists and dictionaries, differences between a list and a tuple, how to read data stored in dictionaries, and how to add or remove items from containers.

Things you won’t learn right away but will be fruitful later:

  • Research solutions on your own or work with others.
  • Learn to read API documentation for various modules.
  • Learn to debug your solution.
  • Design a small feature and its benefits and drawbacks completely from scratch, and optionally (but I highly recommend it), code it and present it to the world.
  • Design a large feature that requires collaboration with others, or if possible, learn to work with people on parts of a feature or test one.
  • Be able to explain a feature to users, either something you wrote or someone else has written.

The items listed above are some of the activities a typical large software engineering team (such as NVDA developers) go through, especially for an international community like ours. I personally place higher emphasis on design and explanations. In case of feature explanations, this is the reason why I always ask add-on writers to write up a short readme explaining how to use their add-ons.

One of the things I did, which not only benefited the community but also something I enjoyed doing (and wanted to do for a while), is writing add-on internals. Basically, I would sit down in my “lab” (in front of my computers at home), sip through add-on source codes and think about the overall design of the add-on, its purpose, and what authors would have felt when they wrote add-ons. These notes, along with handy references were collected into an article that varies in length from an essay (four or five pages) to a thesis that’s suitable for graduate schools sort of (more than 70 pages long) depending on my overall familiarity with the add-on and if certain features need deeper exploration and explanation. This opportunity also gave me a chance to study the NVDA screen reader source more deeply, which became the basis for an idea I have about organizing a six month long course on diving into NVDA source code (in the book form, it’ll span at least a hundred pages, possibly more); I say “six months” due to vast amount of knowledge the NVDA source code contains, as well as give background info and explain the rationale behind some design choices made, along with some breaks in between.

Cheers,

Joseph

 

From: nvda@nvda.groups.io [mailto:nvda@nvda.groups.io] On Behalf Of swwatts3@...
Sent: Thursday, August 10, 2017 4:47 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] I am interested in programming for NVDA

 

Hi Joseph and Tony,

I apologize for the misleading post earlier.  I have no experience with Python and very limited coding experience with HTML. 

By way of background, I have used NVDA intermitently over the past few years and have grown to like the program.  I am impressed by the NVDA community and those who continue to dedicate time and effort to making it a viable screen reader alternative for use in business and education settings.  Because I have always been interested in learning to code, I thought this would be a perfect way to combine my desire to learn with a worthwhile endeavor like NVDA.

Let me know if you would like to continue this discussion off-line.  Otherwise, I am happy to answer questions here.

Kind regards,
Stephanie


Damien Sykes-Lindley <damien@...>
 

Hi,
I might add to Joseph and say that working with NVDA and publishing it doesn’t just require a knowledge of programming in Python, but also about various software engineering concepts as well.
 
Software engineering is a wide spectrum of skills that include the essential steps of software design and development, but also cover wider aspects such as maintenance, testing and release.
Of course the simplest form of this is what many single small-time developers do: Have an idea, program it, test it on one machine, upload, write your web page, and it’s released. This is how I have worked for the past 14 years.
The change started last year, when I collaborated with someone on a game – my first introduction to source code management – versioning, bug tracking with tickets, wiki systems and all that good stuff. We used a system called Fossil, which is a self-hosting system which even has its own in-built server, wiki and ticket system.
Working with NVDA addons, I then had to learn the art of yet another versioning system, which was different from its host platform, I.E. Git and GitHub. While Git does the actual versioning, GitHub hosts the Git data and also provides the means for the bug tracker, ticket and release systems, while also providing a code moderation system and social media features.
 
NVDA itself also makes use of several other engineering components that provide automated building and testing, so if you want to be a major contributor I’m guessing those will also need to be learned. SCons, a Python code autobuilder, is definitely a plus.
 
It does sound amazingly complicated, and even I don’t understand the build/test process, which I believe is done through AppVeyor, but I have often thought my mind would positively explode with all the new things I had to learn just to slowly wriggle through the basics. It’s been a long haul, taking me over four years to be able to learn enough to write and publish my first addon.
Now that I’ve done that though, that’s only given me the determination to launch the ship I have built. I myself have had an in-depth look at the source code so that, hopefully, I too can contribute directly to the NVDA code.
Cheers.
Damien.
 

From: Joseph Lee
Sent: Friday, August 11, 2017 1:22 AM
Subject: Re: [nvda] I am interested in programming for NVDA
 

Hello,

I’d say we should discuss some basics here for the benefit of many on this forum who wants to contribute code to NVDA.

First things first: before people learn the intricacies of NVDA source code, some knowledge of Python is essential. If Stephanie came onboard last year, I could have told her to learn Python 2; however, times have changed, and I recommend people who are newbies to learn Python 3. For most tasks, Python 2 and 3 will work well, but there are some internal things that require you to become familiar with Python 2 for a little while before NV Access declares transition to Python 3.

Most of us (including I) started out with writing NVDA add-ons. Some of the add-ons out there, including Enhanced Touch Gestures, Clock, and many others were written by developers prior to their exposure to internals of NVDA source code. Learning to write NVDA add-ons helps some people in practicing Python skills and getting to use high-level functions offered by NVDA.

It is indeed possible to modify NVDA source code with zero to limited knowledge of Python. But when it comes to actually digging into code and providing contributions, this quickly becomes an overwhelming task because not only a new programming language must be learned, but also one needs to know how certain things in NVDA works behind the scenes (via source code). This is one of the reasons why I always advise scripters of other screen readers to take some time off and learn Python before working on seriously transforming their scripts to NVDA add-ons.

In terms of what you need to know before seriously working on NVDA code contributions:

  • Knowledge of Python is recommended.
  • You need to know what a variable is, how to call and define functions, and know the differences between a for loop and a while loop.
  • You need to learn how to think carefully before writing a conditional (if/elif/else) statement.
  • You should be well-versed in organizing your functions, variables, conditional statements, loops and what not into distinct modules.
  • You need to have a beginner’s grasp of what a class is, difference between class and object, and the big picture behind class inheritance.
  • You need to be able to explain when to use lists and dictionaries, differences between a list and a tuple, how to read data stored in dictionaries, and how to add or remove items from containers.

Things you won’t learn right away but will be fruitful later:

  • Research solutions on your own or work with others.
  • Learn to read API documentation for various modules.
  • Learn to debug your solution.
  • Design a small feature and its benefits and drawbacks completely from scratch, and optionally (but I highly recommend it), code it and present it to the world.
  • Design a large feature that requires collaboration with others, or if possible, learn to work with people on parts of a feature or test one.
  • Be able to explain a feature to users, either something you wrote or someone else has written.

The items listed above are some of the activities a typical large software engineering team (such as NVDA developers) go through, especially for an international community like ours. I personally place higher emphasis on design and explanations. In case of feature explanations, this is the reason why I always ask add-on writers to write up a short readme explaining how to use their add-ons.

One of the things I did, which not only benefited the community but also something I enjoyed doing (and wanted to do for a while), is writing add-on internals. Basically, I would sit down in my “lab” (in front of my computers at home), sip through add-on source codes and think about the overall design of the add-on, its purpose, and what authors would have felt when they wrote add-ons. These notes, along with handy references were collected into an article that varies in length from an essay (four or five pages) to a thesis that’s suitable for graduate schools sort of (more than 70 pages long) depending on my overall familiarity with the add-on and if certain features need deeper exploration and explanation. This opportunity also gave me a chance to study the NVDA screen reader source more deeply, which became the basis for an idea I have about organizing a six month long course on diving into NVDA source code (in the book form, it’ll span at least a hundred pages, possibly more); I say “six months” due to vast amount of knowledge the NVDA source code contains, as well as give background info and explain the rationale behind some design choices made, along with some breaks in between.

Cheers,

Joseph

 

From: nvda@nvda.groups.io [mailto:nvda@nvda.groups.io] On Behalf Of swwatts3@...
Sent: Thursday, August 10, 2017 4:47 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] I am interested in programming for NVDA

 

Hi Joseph and Tony,

I apologize for the misleading post earlier.  I have no experience with Python and very limited coding experience with HTML. 

By way of background, I have used NVDA intermitently over the past few years and have grown to like the program.  I am impressed by the NVDA community and those who continue to dedicate time and effort to making it a viable screen reader alternative for use in business and education settings.  Because I have always been interested in learning to code, I thought this would be a perfect way to combine my desire to learn with a worthwhile endeavor like NVDA.

Let me know if you would like to continue this discussion off-line.  Otherwise, I am happy to answer questions here.

Kind regards,
Stephanie


 

hi joseph and Damien.
thanks so much for your great explanation about programming for nvda.
i also wish to help improving nvda and contribute code to it.
i have no experience in programming except very very limited html
coding (just putting heading, link and title in the html file).
can i learn python easily and help you for great nvda screen reader?
is it easy for me to learn python according to my current position
which i mentioned?
thanks for your help and God bless you!

On 8/11/17, Damien Sykes-Lindley <damien@dcpendleton.plus.com> wrote:
Hi,
I might add to Joseph and say that working with NVDA and publishing it
doesn’t just require a knowledge of programming in Python, but also about
various software engineering concepts as well.

Software engineering is a wide spectrum of skills that include the essential
steps of software design and development, but also cover wider aspects such
as maintenance, testing and release.
Of course the simplest form of this is what many single small-time
developers do: Have an idea, program it, test it on one machine, upload,
write your web page, and it’s released. This is how I have worked for the
past 14 years.
The change started last year, when I collaborated with someone on a game –
my first introduction to source code management – versioning, bug tracking
with tickets, wiki systems and all that good stuff. We used a system called
Fossil, which is a self-hosting system which even has its own in-built
server, wiki and ticket system.
Working with NVDA addons, I then had to learn the art of yet another
versioning system, which was different from its host platform, I.E. Git and
GitHub. While Git does the actual versioning, GitHub hosts the Git data and
also provides the means for the bug tracker, ticket and release systems,
while also providing a code moderation system and social media features.

NVDA itself also makes use of several other engineering components that
provide automated building and testing, so if you want to be a major
contributor I’m guessing those will also need to be learned. SCons, a Python
code autobuilder, is definitely a plus.

It does sound amazingly complicated, and even I don’t understand the
build/test process, which I believe is done through AppVeyor, but I have
often thought my mind would positively explode with all the new things I had
to learn just to slowly wriggle through the basics. It’s been a long haul,
taking me over four years to be able to learn enough to write and publish my
first addon.
Now that I’ve done that though, that’s only given me the determination to
launch the ship I have built. I myself have had an in-depth look at the
source code so that, hopefully, I too can contribute directly to the NVDA
code.
Cheers.
Damien.


From: Joseph Lee
Sent: Friday, August 11, 2017 1:22 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] I am interested in programming for NVDA

Hello,

I’d say we should discuss some basics here for the benefit of many on this
forum who wants to contribute code to NVDA.

First things first: before people learn the intricacies of NVDA source code,
some knowledge of Python is essential. If Stephanie came onboard last year,
I could have told her to learn Python 2; however, times have changed, and I
recommend people who are newbies to learn Python 3. For most tasks, Python 2
and 3 will work well, but there are some internal things that require you to
become familiar with Python 2 for a little while before NV Access declares
transition to Python 3.

Most of us (including I) started out with writing NVDA add-ons. Some of the
add-ons out there, including Enhanced Touch Gestures, Clock, and many others
were written by developers prior to their exposure to internals of NVDA
source code. Learning to write NVDA add-ons helps some people in practicing
Python skills and getting to use high-level functions offered by NVDA.

It is indeed possible to modify NVDA source code with zero to limited
knowledge of Python. But when it comes to actually digging into code and
providing contributions, this quickly becomes an overwhelming task because
not only a new programming language must be learned, but also one needs to
know how certain things in NVDA works behind the scenes (via source code).
This is one of the reasons why I always advise scripters of other screen
readers to take some time off and learn Python before working on seriously
transforming their scripts to NVDA add-ons.

In terms of what you need to know before seriously working on NVDA code
contributions:

a.. Knowledge of Python is recommended.
b.. You need to know what a variable is, how to call and define functions,
and know the differences between a for loop and a while loop.
c.. You need to learn how to think carefully before writing a conditional
(if/elif/else) statement.
d.. You should be well-versed in organizing your functions, variables,
conditional statements, loops and what not into distinct modules.
e.. You need to have a beginner’s grasp of what a class is, difference
between class and object, and the big picture behind class inheritance.
f.. You need to be able to explain when to use lists and dictionaries,
differences between a list and a tuple, how to read data stored in
dictionaries, and how to add or remove items from containers.
Things you won’t learn right away but will be fruitful later:

a.. Research solutions on your own or work with others.
b.. Learn to read API documentation for various modules.
c.. Learn to debug your solution.
d.. Design a small feature and its benefits and drawbacks completely from
scratch, and optionally (but I highly recommend it), code it and present it
to the world.
e.. Design a large feature that requires collaboration with others, or if
possible, learn to work with people on parts of a feature or test one.
f.. Be able to explain a feature to users, either something you wrote or
someone else has written.
The items listed above are some of the activities a typical large software
engineering team (such as NVDA developers) go through, especially for an
international community like ours. I personally place higher emphasis on
design and explanations. In case of feature explanations, this is the reason
why I always ask add-on writers to write up a short readme explaining how to
use their add-ons.

One of the things I did, which not only benefited the community but also
something I enjoyed doing (and wanted to do for a while), is writing add-on
internals. Basically, I would sit down in my “lab” (in front of my computers
at home), sip through add-on source codes and think about the overall design
of the add-on, its purpose, and what authors would have felt when they wrote
add-ons. These notes, along with handy references were collected into an
article that varies in length from an essay (four or five pages) to a thesis
that’s suitable for graduate schools sort of (more than 70 pages long)
depending on my overall familiarity with the add-on and if certain features
need deeper exploration and explanation. This opportunity also gave me a
chance to study the NVDA screen reader source more deeply, which became the
basis for an idea I have about organizing a six month long course on diving
into NVDA source code (in the book form, it’ll span at least a hundred
pages, possibly more); I say “six months” due to vast amount of knowledge
the NVDA source code contains, as well as give background info and explain
the rationale behind some design choices made, along with some breaks in
between.

Cheers,

Joseph



From: nvda@nvda.groups.io [mailto:nvda@nvda.groups.io] On Behalf Of
swwatts3@gmail.com
Sent: Thursday, August 10, 2017 4:47 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] I am interested in programming for NVDA



Hi Joseph and Tony,

I apologize for the misleading post earlier. I have no experience with
Python and very limited coding experience with HTML.

By way of background, I have used NVDA intermitently over the past few years
and have grown to like the program. I am impressed by the NVDA community
and those who continue to dedicate time and effort to making it a viable
screen reader alternative for use in business and education settings.
Because I have always been interested in learning to code, I thought this
would be a perfect way to combine my desire to learn with a worthwhile
endeavor like NVDA.

Let me know if you would like to continue this discussion off-line.
Otherwise, I am happy to answer questions here.

Kind regards,
Stephanie


--
we have not sent you but as a mercy to the creation.
holy quran, chapter 21, verse 107.
in the very authentic narration is:
imam hosein is the beacon of light and the ark of salvation.
best website for studying islamic book in different languages
al-islam.org


Marshall handheld Flax
 

I would have to say that quite honestly: no, it is not at all easy to start from scratch and learn enough programming to begin to contribute to NVDA in any significant way. 

Programming, even simple systems, is actually hard in the sense that a program that operates correctly 99% of the time can be wrong thousands of times a second.  A program that is correct 99.9999% of the time is still likely a failure, when it does thousands or millions of decisions a second.

Programming is hard because you have to develop intuition about how to keep complex things as simple as possible.

Programming is hard because every large program -- especially ones developed by multiple peoples -- resembles a large city with many different neighborhoods, thoroughfares, plazas, and dead ends -- and you need to learn them all before you can with any modesty propose new construction.

Programming is hard because you need to learn how to think clearly, and how to have insight into what your program might do wrong -- and so how to test and verify your program.

Programming is hard because you need to learn the idioms and taboos of each language you use to code.

Programming is hard because complexity grows exponentially.  

Programming is hard because if you don't know what "exponentially" means, you might end up with a program that's technically correct, but useless in practice.

Programming is hard because you need to learn to work in groups, and to not take shortcuts when honest work is required.

This is not to say that small changes -- can't be make without understanding.  But if you wish to actually add to NVDA, you should plan on spending much time reading (by which I mean studying) the existing code to see how it is structured and what design principles it relies upon.

So check the source code out of the repository and start reading.  Teach yourself python 3.  Read the technical documentation.  Pick your favorite NVDA command and investigate how it is implemented.  And if you're not willing to do the above, then that's your answer.

Marshall



On Fri, Aug 11, 2017 at 12:09 AM, nasrin khaksar <nasrinkhaksar3@...> wrote:
hi joseph and Damien.
thanks so much for your great explanation about programming for nvda.
i also wish to help improving nvda and contribute code to it.
i have no experience in programming except very very limited html
coding (just putting heading, link and title in the html file).
can i learn python easily and help you for great nvda screen reader?
is it easy for me to learn python according to my current position
which i mentioned?
thanks for your help and God bless you!

On 8/11/17, Damien Sykes-Lindley <damien@...> wrote:
> Hi,
> I might add to Joseph and say that working with NVDA and publishing it
> doesn’t just require a knowledge of programming in Python, but also about
> various software engineering concepts as well.
>
> Software engineering is a wide spectrum of skills that include the essential
> steps of software design and development, but also cover wider aspects such
> as maintenance, testing and release.
> Of course the simplest form of this is what many single small-time
> developers do: Have an idea, program it, test it on one machine, upload,
> write your web page, and it’s released. This is how I have worked for the
> past 14 years.
> The change started last year, when I collaborated with someone on a game –
> my first introduction to source code management – versioning, bug tracking
> with tickets, wiki systems and all that good stuff. We used a system called
> Fossil, which is a self-hosting system which even has its own in-built
> server, wiki and ticket system.
> Working with NVDA addons, I then had to learn the art of yet another
> versioning system, which was different from its host platform, I.E. Git and
> GitHub. While Git does the actual versioning, GitHub hosts the Git data and
> also provides the means for the bug tracker, ticket and release systems,
> while also providing a code moderation system and social media features.
>
> NVDA itself also makes use of several other engineering components that
> provide automated building and testing, so if you want to be a major
> contributor I’m guessing those will also need to be learned. SCons, a Python
> code autobuilder, is definitely a plus.
>
> It does sound amazingly complicated, and even I don’t understand the
> build/test process, which I believe is done through AppVeyor, but I have
> often thought my mind would positively explode with all the new things I had
> to learn just to slowly wriggle through the basics. It’s been a long haul,
> taking me over four years to be able to learn enough to write and publish my
> first addon.
> Now that I’ve done that though, that’s only given me the determination to
> launch the ship I have built. I myself have had an in-depth look at the
> source code so that, hopefully, I too can contribute directly to the NVDA
> code.
> Cheers.
> Damien.
>
>
> From: Joseph Lee
> Sent: Friday, August 11, 2017 1:22 AM
> To: nvda@nvda.groups.io
> Subject: Re: [nvda] I am interested in programming for NVDA
>
> Hello,
>
> I’d say we should discuss some basics here for the benefit of many on this
> forum who wants to contribute code to NVDA.
>
> First things first: before people learn the intricacies of NVDA source code,
> some knowledge of Python is essential. If Stephanie came onboard last year,
> I could have told her to learn Python 2; however, times have changed, and I
> recommend people who are newbies to learn Python 3. For most tasks, Python 2
> and 3 will work well, but there are some internal things that require you to
> become familiar with Python 2 for a little while before NV Access declares
> transition to Python 3.
>
> Most of us (including I) started out with writing NVDA add-ons. Some of the
> add-ons out there, including Enhanced Touch Gestures, Clock, and many others
> were written by developers prior to their exposure to internals of NVDA
> source code. Learning to write NVDA add-ons helps some people in practicing
> Python skills and getting to use high-level functions offered by NVDA.
>
> It is indeed possible to modify NVDA source code with zero to limited
> knowledge of Python. But when it comes to actually digging into code and
> providing contributions, this quickly becomes an overwhelming task because
> not only a new programming language must be learned, but also one needs to
> know how certain things in NVDA works behind the scenes (via source code).
> This is one of the reasons why I always advise scripters of other screen
> readers to take some time off and learn Python before working on seriously
> transforming their scripts to NVDA add-ons.
>
> In terms of what you need to know before seriously working on NVDA code
> contributions:
>
>   a.. Knowledge of Python is recommended.
>   b.. You need to know what a variable is, how to call and define functions,
> and know the differences between a for loop and a while loop.
>   c.. You need to learn how to think carefully before writing a conditional
> (if/elif/else) statement.
>   d.. You should be well-versed in organizing your functions, variables,
> conditional statements, loops and what not into distinct modules.
>   e.. You need to have a beginner’s grasp of what a class is, difference
> between class and object, and the big picture behind class inheritance.
>   f.. You need to be able to explain when to use lists and dictionaries,
> differences between a list and a tuple, how to read data stored in
> dictionaries, and how to add or remove items from containers.
> Things you won’t learn right away but will be fruitful later:
>
>   a.. Research solutions on your own or work with others.
>   b.. Learn to read API documentation for various modules.
>   c.. Learn to debug your solution.
>   d.. Design a small feature and its benefits and drawbacks completely from
> scratch, and optionally (but I highly recommend it), code it and present it
> to the world.
>   e.. Design a large feature that requires collaboration with others, or if
> possible, learn to work with people on parts of a feature or test one.
>   f.. Be able to explain a feature to users, either something you wrote or
> someone else has written.
> The items listed above are some of the activities a typical large software
> engineering team (such as NVDA developers) go through, especially for an
> international community like ours. I personally place higher emphasis on
> design and explanations. In case of feature explanations, this is the reason
> why I always ask add-on writers to write up a short readme explaining how to
> use their add-ons.
>
> One of the things I did, which not only benefited the community but also
> something I enjoyed doing (and wanted to do for a while), is writing add-on
> internals. Basically, I would sit down in my “lab” (in front of my computers
> at home), sip through add-on source codes and think about the overall design
> of the add-on, its purpose, and what authors would have felt when they wrote
> add-ons. These notes, along with handy references were collected into an
> article that varies in length from an essay (four or five pages) to a thesis
> that’s suitable for graduate schools sort of (more than 70 pages long)
> depending on my overall familiarity with the add-on and if certain features
> need deeper exploration and explanation. This opportunity also gave me a
> chance to study the NVDA screen reader source more deeply, which became the
> basis for an idea I have about organizing a six month long course on diving
> into NVDA source code (in the book form, it’ll span at least a hundred
> pages, possibly more); I say “six months” due to vast amount of knowledge
> the NVDA source code contains, as well as give background info and explain
> the rationale behind some design choices made, along with some breaks in
> between.
>
> Cheers,
>
> Joseph
>
>
>
> From: nvda@nvda.groups.io [mailto:nvda@nvda.groups.io] On Behalf Of
> swwatts3@...
> Sent: Thursday, August 10, 2017 4:47 PM
> To: nvda@nvda.groups.io
> Subject: Re: [nvda] I am interested in programming for NVDA
>
>
>
> Hi Joseph and Tony,
>
> I apologize for the misleading post earlier.  I have no experience with
> Python and very limited coding experience with HTML.
>
> By way of background, I have used NVDA intermitently over the past few years
> and have grown to like the program.  I am impressed by the NVDA community
> and those who continue to dedicate time and effort to making it a viable
> screen reader alternative for use in business and education settings.
> Because I have always been interested in learning to code, I thought this
> would be a perfect way to combine my desire to learn with a worthwhile
> endeavor like NVDA.
>
> Let me know if you would like to continue this discussion off-line.
> Otherwise, I am happy to answer questions here.
>
> Kind regards,
> Stephanie
>
>
>


--
we have not sent you but as a mercy to the creation.
holy quran, chapter 21, verse 107.
in the very authentic narration is:
imam hosein is the beacon of light and the ark of salvation.
best website for studying islamic book in different languages
al-islam.org





Stephanie Watts
 

All,

Thank you for your comments and recommendations. Greatly appreciated.

Stephanie

On Aug 10, 2017, at 9:32 PM, Marshall handheld Flax <m.droid.flax@...> wrote:

I would have to say that quite honestly: no, it is not at all easy to start from scratch and learn enough programming to begin to contribute to NVDA in any significant way. 

Programming, even simple systems, is actually hard in the sense that a program that operates correctly 99% of the time can be wrong thousands of times a second.  A program that is correct 99.9999% of the time is still likely a failure, when it does thousands or millions of decisions a second.

Programming is hard because you have to develop intuition about how to keep complex things as simple as possible.

Programming is hard because every large program -- especially ones developed by multiple peoples -- resembles a large city with many different neighborhoods, thoroughfares, plazas, and dead ends -- and you need to learn them all before you can with any modesty propose new construction.

Programming is hard because you need to learn how to think clearly, and how to have insight into what your program might do wrong -- and so how to test and verify your program.

Programming is hard because you need to learn the idioms and taboos of each language you use to code.

Programming is hard because complexity grows exponentially.  

Programming is hard because if you don't know what "exponentially" means, you might end up with a program that's technically correct, but useless in practice.

Programming is hard because you need to learn to work in groups, and to not take shortcuts when honest work is required.

This is not to say that small changes -- can't be make without understanding.  But if you wish to actually add to NVDA, you should plan on spending much time reading (by which I mean studying) the existing code to see how it is structured and what design principles it relies upon.

So check the source code out of the repository and start reading.  Teach yourself python 3.  Read the technical documentation.  Pick your favorite NVDA command and investigate how it is implemented.  And if you're not willing to do the above, then that's your answer.

Marshall



On Fri, Aug 11, 2017 at 12:09 AM, nasrin khaksar <nasrinkhaksar3@...> wrote:
hi joseph and Damien.
thanks so much for your great explanation about programming for nvda.
i also wish to help improving nvda and contribute code to it.
i have no experience in programming except very very limited html
coding (just putting heading, link and title in the html file).
can i learn python easily and help you for great nvda screen reader?
is it easy for me to learn python according to my current position
which i mentioned?
thanks for your help and God bless you!

On 8/11/17, Damien Sykes-Lindley <damien@...> wrote:
> Hi,
> I might add to Joseph and say that working with NVDA and publishing it
> doesn’t just require a knowledge of programming in Python, but also about
> various software engineering concepts as well.
>
> Software engineering is a wide spectrum of skills that include the essential
> steps of software design and development, but also cover wider aspects such
> as maintenance, testing and release.
> Of course the simplest form of this is what many single small-time
> developers do: Have an idea, program it, test it on one machine, upload,
> write your web page, and it’s released. This is how I have worked for the
> past 14 years.
> The change started last year, when I collaborated with someone on a game –
> my first introduction to source code management – versioning, bug tracking
> with tickets, wiki systems and all that good stuff. We used a system called
> Fossil, which is a self-hosting system which even has its own in-built
> server, wiki and ticket system.
> Working with NVDA addons, I then had to learn the art of yet another
> versioning system, which was different from its host platform, I.E. Git and
> GitHub. While Git does the actual versioning, GitHub hosts the Git data and
> also provides the means for the bug tracker, ticket and release systems,
> while also providing a code moderation system and social media features.
>
> NVDA itself also makes use of several other engineering components that
> provide automated building and testing, so if you want to be a major
> contributor I’m guessing those will also need to be learned. SCons, a Python
> code autobuilder, is definitely a plus.
>
> It does sound amazingly complicated, and even I don’t understand the
> build/test process, which I believe is done through AppVeyor, but I have
> often thought my mind would positively explode with all the new things I had
> to learn just to slowly wriggle through the basics. It’s been a long haul,
> taking me over four years to be able to learn enough to write and publish my
> first addon.
> Now that I’ve done that though, that’s only given me the determination to
> launch the ship I have built. I myself have had an in-depth look at the
> source code so that, hopefully, I too can contribute directly to the NVDA
> code.
> Cheers.
> Damien.
>
>
> From: Joseph Lee
> Sent: Friday, August 11, 2017 1:22 AM
> To: nvda@nvda.groups.io
> Subject: Re: [nvda] I am interested in programming for NVDA
>
> Hello,
>
> I’d say we should discuss some basics here for the benefit of many on this
> forum who wants to contribute code to NVDA.
>
> First things first: before people learn the intricacies of NVDA source code,
> some knowledge of Python is essential. If Stephanie came onboard last year,
> I could have told her to learn Python 2; however, times have changed, and I
> recommend people who are newbies to learn Python 3. For most tasks, Python 2
> and 3 will work well, but there are some internal things that require you to
> become familiar with Python 2 for a little while before NV Access declares
> transition to Python 3.
>
> Most of us (including I) started out with writing NVDA add-ons. Some of the
> add-ons out there, including Enhanced Touch Gestures, Clock, and many others
> were written by developers prior to their exposure to internals of NVDA
> source code. Learning to write NVDA add-ons helps some people in practicing
> Python skills and getting to use high-level functions offered by NVDA.
>
> It is indeed possible to modify NVDA source code with zero to limited
> knowledge of Python. But when it comes to actually digging into code and
> providing contributions, this quickly becomes an overwhelming task because
> not only a new programming language must be learned, but also one needs to
> know how certain things in NVDA works behind the scenes (via source code).
> This is one of the reasons why I always advise scripters of other screen
> readers to take some time off and learn Python before working on seriously
> transforming their scripts to NVDA add-ons.
>
> In terms of what you need to know before seriously working on NVDA code
> contributions:
>
>   a.. Knowledge of Python is recommended.
>   b.. You need to know what a variable is, how to call and define functions,
> and know the differences between a for loop and a while loop.
>   c.. You need to learn how to think carefully before writing a conditional
> (if/elif/else) statement.
>   d.. You should be well-versed in organizing your functions, variables,
> conditional statements, loops and what not into distinct modules.
>   e.. You need to have a beginner’s grasp of what a class is, difference
> between class and object, and the big picture behind class inheritance.
>   f.. You need to be able to explain when to use lists and dictionaries,
> differences between a list and a tuple, how to read data stored in
> dictionaries, and how to add or remove items from containers.
> Things you won’t learn right away but will be fruitful later:
>
>   a.. Research solutions on your own or work with others.
>   b.. Learn to read API documentation for various modules.
>   c.. Learn to debug your solution.
>   d.. Design a small feature and its benefits and drawbacks completely from
> scratch, and optionally (but I highly recommend it), code it and present it
> to the world.
>   e.. Design a large feature that requires collaboration with others, or if
> possible, learn to work with people on parts of a feature or test one.
>   f.. Be able to explain a feature to users, either something you wrote or
> someone else has written.
> The items listed above are some of the activities a typical large software
> engineering team (such as NVDA developers) go through, especially for an
> international community like ours. I personally place higher emphasis on
> design and explanations. In case of feature explanations, this is the reason
> why I always ask add-on writers to write up a short readme explaining how to
> use their add-ons.
>
> One of the things I did, which not only benefited the community but also
> something I enjoyed doing (and wanted to do for a while), is writing add-on
> internals. Basically, I would sit down in my “lab” (in front of my computers
> at home), sip through add-on source codes and think about the overall design
> of the add-on, its purpose, and what authors would have felt when they wrote
> add-ons. These notes, along with handy references were collected into an
> article that varies in length from an essay (four or five pages) to a thesis
> that’s suitable for graduate schools sort of (more than 70 pages long)
> depending on my overall familiarity with the add-on and if certain features
> need deeper exploration and explanation. This opportunity also gave me a
> chance to study the NVDA screen reader source more deeply, which became the
> basis for an idea I have about organizing a six month long course on diving
> into NVDA source code (in the book form, it’ll span at least a hundred
> pages, possibly more); I say “six months” due to vast amount of knowledge
> the NVDA source code contains, as well as give background info and explain
> the rationale behind some design choices made, along with some breaks in
> between.
>
> Cheers,
>
> Joseph
>
>
>
> From: nvda@nvda.groups.io [mailto:nvda@nvda.groups.io] On Behalf Of
> swwatts3@...
> Sent: Thursday, August 10, 2017 4:47 PM
> To: nvda@nvda.groups.io
> Subject: Re: [nvda] I am interested in programming for NVDA
>
>
>
> Hi Joseph and Tony,
>
> I apologize for the misleading post earlier.  I have no experience with
> Python and very limited coding experience with HTML.
>
> By way of background, I have used NVDA intermitently over the past few years
> and have grown to like the program.  I am impressed by the NVDA community
> and those who continue to dedicate time and effort to making it a viable
> screen reader alternative for use in business and education settings.
> Because I have always been interested in learning to code, I thought this
> would be a perfect way to combine my desire to learn with a worthwhile
> endeavor like NVDA.
>
> Let me know if you would like to continue this discussion off-line.
> Otherwise, I am happy to answer questions here.
>
> Kind regards,
> Stephanie
>
>
>


--
we have not sent you but as a mercy to the creation.
holy quran, chapter 21, verse 107.
in the very authentic narration is:
imam hosein is the beacon of light and the ark of salvation.
best website for studying islamic book in different languages
al-islam.org





J.G
 

Hi,

When I started to learn coding, I was researching, which material should I study. I found some useful sources for absolutely beginners. Here is one: https://learnpythonthehardway.org/

when we are going to learn to code basics, then we will be able to participate in NVDA coding.

Hope, this helps.

Regards, Jožef


Sally Kiebdaj
 

Hello all,

Stephanie, thank you for posting your interest. Somewhat like you and Tony, I would like to learn how to code and think NVDA may be a good excuse.

Would those of us novices like to work together and would any of the experts feel like being our guides?

I am proposing a sort of subgroup or informal self driven course to keep us motivated and emotionally supported.

Any takers?

Thanks again, Stephanie, for getting us out of the woodwork,

Cheers,
Sally


On Aug 13, 2017 8:17 AM, "J.G" <jozko.gregorc@...> wrote:
Hi,

When I started to learn coding, I was researching, which material should I study. I found some useful sources for absolutely beginners. Here is one: https://learnpythonthehardway.org/

when we are going to learn to code basics, then we will be able to participate in NVDA coding.

Hope, this helps.

Regards, Jožef


John J. Boyer
 

I am willing to at as a guide. Your first step might be to find a Python tutorial that does not assume any programming
experience. If you are on Bookshare try searching for Python. You can write simple Python programs very easily.

John

On Sun, Aug 13, 2017 at 10:18:53AM -0400, Sally Kiebdaj wrote:
Hello all,

Stephanie, thank you for posting your interest. Somewhat like you and Tony,
I would like to learn how to code and think NVDA may be a good excuse.

Would those of us novices like to work together and would any of the
experts feel like being our guides?

I am proposing a sort of subgroup or informal self driven course to keep us
motivated and emotionally supported.

Any takers?

Thanks again, Stephanie, for getting us out of the woodwork,

Cheers,
Sally

On Aug 13, 2017 8:17 AM, "J.G" <jozko.gregorc@gmail.com> wrote:

Hi,

When I started to learn coding, I was researching, which material should I
study. I found some useful sources for absolutely beginners. Here is one:
https://learnpythonthehardway.org/

when we are going to learn to code basics, then we will be able to
participate in NVDA coding.

Hope, this helps.

Regards, Jožef

--
John J. Boyer
Email: john.boyer@abilitiessoft.org
website: http://www.abilitiessoft.org
Status: Company dissolved but website and email addresses live.
Location: Madison, Wisconsin, USA
Mission: developing assistive technology software and providing STEM services
that are available at no cost


 

Hi,

I will bring this up during our Add-ons Festival (September 2017). A tentative outline of a hypothetical course on NVDA Core development is something I’d like to send to the community for feedback soon.

Cheers,

Joseph

 

From: nvda@nvda.groups.io [mailto:nvda@nvda.groups.io] On Behalf Of Sally Kiebdaj
Sent: Sunday, August 13, 2017 7:19 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] I am interested in programming for NVDA

 

Hello all,

Stephanie, thank you for posting your interest. Somewhat like you and Tony, I would like to learn how to code and think NVDA may be a good excuse.

Would those of us novices like to work together and would any of the experts feel like being our guides?

I am proposing a sort of subgroup or informal self driven course to keep us motivated and emotionally supported.

Any takers?

Thanks again, Stephanie, for getting us out of the woodwork,

Cheers,
Sally

 

On Aug 13, 2017 8:17 AM, "J.G" <jozko.gregorc@...> wrote:

Hi,

When I started to learn coding, I was researching, which material should I study. I found some useful sources for absolutely beginners. Here is one: https://learnpythonthehardway.org/

when we are going to learn to code basics, then we will be able to participate in NVDA coding.

Hope, this helps.

Regards, Jožef


J.G
 

Hi,

as I have written, beginners to programing should take a tutorials/manuals, which are simple and explain python in plain language so it can be understandable for all of us. I suggest you: https://learnpythonthehardway.org/
there are books, which can help you self-teaching coding. these are divided in cca 50 section - exercises. through them you can begin to know how to programing.

warning: if you really want to code, you will have to train yourself a lot.

hope this helps and that in this post I was clearer than in my previous message.

regards, Jožef


J.G
 

Hi,

as I have written, beginners to programing should take a tutorials/manuals, which are simple and explain python in plain language so it can be understandable for all of us. I suggest you: https://learnpythonthehardway.org/
there are books, which can help you self-teaching coding. these are divided in cca 50 section - exercises. through them you can begin to know how to programing.

warning: if you really want to code, you will have to train yourself a lot.

hope this helps and that in this post I was clearer than in my previous message.

regards, Jožef


John J. Boyer
 

You don't have to learn python the hard way. What you need is a tutorial that assumes no probramming experience and no
familiarity with programming concepts. Manuals aren't it. They are for programmers learning a new language. What is
needed is a turorial written by someone who has experience teaching programming from the ground up.

John

On Sun, Aug 13, 2017 at 12:11:01PM -0700, J.G wrote:
Hi,

as I have written, beginners to programing should take a tutorials/manuals, which are simple and explain python in plain language so it can be understandable for all of us. I suggest you: https://learnpythonthehardway.org/ ( https://learnpythonthehardway.org/ )
there are books, which can help you self-teaching coding. these are divided in cca 50 section - exercises. through them you can begin to know how to programing.

warning: if you really want to code, you will have to train yourself a lot.

hope this helps and that in this post I was clearer than in my previous message.

regards, Jožef
--
John J. Boyer
Email: john.boyer@abilitiessoft.org
website: http://www.abilitiessoft.org
Status: Company dissolved but website and email addresses live.
Location: Madison, Wisconsin, USA
Mission: developing assistive technology software and providing STEM services
that are available at no cost


Sally Kiebdaj
 

Hello all,


Thank you for the copious advice!


In the past, I tried MIT OpenCourseware and MITx 6.00 which are both versions of their introduction to computer science course taught in Python. I always ended up in the situation where following the directions keystroke for keystroke generated a syntax error and I had no one to ask for help. This is what I want to avoid by having friends plugging away at it with me and experts on hand for when we bog down.


If others are interested in finding a book/course and slogging through it together, please reply to me privately and I am happy to facilitate communication and coordination off list.


I would also be happy to work through any future NVDA specific programming tutorials.


So, drop me a line if you would like to plod through this in a group with me.


Hope to hear from some of you on this thread.


Regards,

Sally

On 8/13/2017 4:21 PM, John J. Boyer wrote:
You don't have to learn python the hard way. What you need is a tutorial that assumes no probramming experience and no
familiarity with programming concepts. Manuals aren't it. They are for programmers learning a new language. What is
needed is a turorial written by someone who has experience teaching programming from the ground up.

John

On Sun, Aug 13, 2017 at 12:11:01PM -0700, J.G wrote:
Hi,

as I have written, beginners to programing should take a tutorials/manuals, which are simple and explain python in plain language so it can be understandable for all of us. I suggest you: https://learnpythonthehardway.org/ ( https://learnpythonthehardway.org/ )
there are books, which can help you self-teaching coding. these are divided in cca 50 section - exercises. through them you can begin to know how to programing.

warning: if you really want to code, you will have to train yourself a lot.

hope this helps and that in this post I was clearer than in my previous message.

regards, Jožef


James AUSTIN
 

Hi Sally

I would be interested in the course you propose, but cannot figure out how to get Thunderbird to show me your E-mail address. So apologies for sending this to the list.

James

On 16/08/2017 20:52, Sally Kiebdaj wrote:
Hello all,


Thank you for the copious advice!


In the past, I tried MIT OpenCourseware and MITx 6.00 which are both versions of their introduction to computer science course taught in Python. I always ended up in the situation where following the directions keystroke for keystroke generated a syntax error and I had no one to ask for help. This is what I want to avoid by having friends plugging away at it with me and experts on hand for when we bog down.


If others are interested in finding a book/course and slogging through it together, please reply to me privately and I am happy to facilitate communication and coordination off list.


I would also be happy to work through any future NVDA specific programming tutorials.


So, drop me a line if you would like to plod through this in a group with me.


Hope to hear from some of you on this thread.


Regards,

Sally


On 8/13/2017 4:21 PM, John J. Boyer wrote:
You don't have to learn python the hard way. What you need is a tutorial that assumes no probramming experience and no
familiarity with programming concepts. Manuals aren't it. They are for programmers learning a new language. What is
needed is a turorial written by someone who has experience teaching programming from the ground up.

John

On Sun, Aug 13, 2017 at 12:11:01PM -0700, J.G wrote:
Hi,

as I have written, beginners to programing should take a tutorials/manuals, which are simple and explain python in plain language so it can be understandable for all of us. I suggest you: https://learnpythonthehardway.org/ ( https://learnpythonthehardway.org/ )
there are books, which can help you self-teaching coding. these are divided in cca 50 section - exercises. through them you can begin to know how to programing.

warning: if you really want to code, you will have to train yourself a lot.

hope this helps and that in this post I was clearer than in my previous message.

regards, Jožef


Travis Siegel <tsiegel@...>
 

You probably ran up against the whole python is white space sensitive thing. That's one reason I'm not a big fan of python. I've not officially taught a class before, but I have worked as a computer instructor before, and I did teach my son programming when he was home schooled several years ago (it was just for one year, because we were having serious problems with his teacher, and the school refused to do anything about it), so I do have some experience, but not much. If nobody else wants the task, I'll join the group, and help folks work through whatever material is settled on for the training. It should be an interesting exercise if nothing else. Johnm has already volunteered to help out, though I'm not sure if his volunteering was to run it entirely, or just participate as a knowledgeable assistant/helper, so the first order of business is to decide on what material will be used for the sessions, and from there, sorting out who is doing what would be next. If anyone has mailing list capabilities, it may be worthwhile to set up a list to prevent mile long cc headers for the duration.

On 8/16/2017 3:52 PM, Sally Kiebdaj wrote:
Hello all,


Thank you for the copious advice!


In the past, I tried MIT OpenCourseware and MITx 6.00 which are both versions of their introduction to computer science course taught in Python. I always ended up in the situation where following the directions keystroke for keystroke generated a syntax error and I had no one to ask for help. This is what I want to avoid by having friends plugging away at it with me and experts on hand for when we bog down.


If others are interested in finding a book/course and slogging through it together, please reply to me privately and I am happy to facilitate communication and coordination off list.


I would also be happy to work through any future NVDA specific programming tutorials.


So, drop me a line if you would like to plod through this in a group with me.


Hope to hear from some of you on this thread.


Regards,

Sally


On 8/13/2017 4:21 PM, John J. Boyer wrote:
You don't have to learn python the hard way. What you need is a tutorial that assumes no probramming experience and no
familiarity with programming concepts. Manuals aren't it. They are for programmers learning a new language. What is
needed is a turorial written by someone who has experience teaching programming from the ground up.

John

On Sun, Aug 13, 2017 at 12:11:01PM -0700, J.G wrote:
Hi,

as I have written, beginners to programing should take a tutorials/manuals, which are simple and explain python in plain language so it can be understandable for all of us. I suggest you: https://learnpythonthehardway.org/ ( https://learnpythonthehardway.org/ )
there are books, which can help you self-teaching coding. these are divided in cca 50 section - exercises. through them you can begin to know how to programing.

warning: if you really want to code, you will have to train yourself a lot.

hope this helps and that in this post I was clearer than in my previous message.

regards, Jožef



 

Hi,
To Travis: I think you spelled my name wrong...
To Gene and Nimer: can we get a subgroup going for this? I'll take charge of such a subgroup.
As for the course content, I'll post an outline on a separate thread.
Cheers,
Joseph

-----Original Message-----
From: nvda@nvda.groups.io [mailto:nvda@nvda.groups.io] On Behalf Of Travis Siegel
Sent: Wednesday, August 16, 2017 1:53 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] I am interested in programming for NVDA

You probably ran up against the whole python is white space sensitive thing. That's one reason I'm not a big fan of python. I've not officially taught a class before, but I have worked as a computer instructor before, and I did teach my son programming when he was home schooled several years ago (it was just for one year, because we were having serious problems with his teacher, and the school refused to do anything about it), so I do have some experience, but not much. If nobody else wants the task, I'll join the group, and help folks work through whatever material is settled on for the training. It should be an interesting exercise if nothing else. Johnm has already volunteered to help out, though I'm not sure if his volunteering was to run it entirely, or just participate as a knowledgeable assistant/helper, so the first order of business is to decide on what material will be used for the sessions, and from there, sorting out who is doing what would be next. If anyone has mailing list capabilities, it may be worthwhile to set up a list to prevent mile long cc headers for the duration.


On 8/16/2017 3:52 PM, Sally Kiebdaj wrote:
Hello all,


Thank you for the copious advice!


In the past, I tried MIT OpenCourseware and MITx 6.00 which are both
versions of their introduction to computer science course taught in
Python. I always ended up in the situation where following the
directions keystroke for keystroke generated a syntax error and I had
no one to ask for help. This is what I want to avoid by having friends
plugging away at it with me and experts on hand for when we bog down.


If others are interested in finding a book/course and slogging through
it together, please reply to me privately and I am happy to facilitate
communication and coordination off list.


I would also be happy to work through any future NVDA specific
programming tutorials.


So, drop me a line if you would like to plod through this in a group
with me.


Hope to hear from some of you on this thread.


Regards,

Sally


On 8/13/2017 4:21 PM, John J. Boyer wrote:
You don't have to learn python the hard way. What you need is a
tutorial that assumes no probramming experience and no familiarity
with programming concepts. Manuals aren't it. They are for
programmers learning a new language. What is needed is a turorial
written by someone who has experience teaching programming from the
ground up.

John

On Sun, Aug 13, 2017 at 12:11:01PM -0700, J.G wrote:
Hi,

as I have written, beginners to programing should take a
tutorials/manuals, which are simple and explain python in plain
language so it can be understandable for all of us. I suggest you:
https://learnpythonthehardway.org/ (
https://learnpythonthehardway.org/ ) there are books, which can help
you self-teaching coding. these are divided in cca 50 section -
exercises. through them you can begin to know how to programing.

warning: if you really want to code, you will have to train yourself
a lot.

hope this helps and that in this post I was clearer than in my
previous message.

regards, Jožef