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
toggle quoted messageShow quoted text
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 I am interested in programming for NVDA. However, I have very little programming experience. Any suggestions for where I should begin?
|
|
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
toggle quoted messageShow quoted text
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 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
toggle quoted messageShow quoted text
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.
toggle quoted messageShow quoted text
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!
toggle quoted messageShow quoted text
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
|
|
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
toggle quoted messageShow quoted text
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
|
|
All,
Thank you for your comments and recommendations. Greatly appreciated.
Stephanie
toggle quoted messageShow quoted text
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
|
|
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
|
|
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
toggle quoted messageShow quoted text
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
|
|
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
toggle quoted messageShow quoted text
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.orgStatus: 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
toggle quoted messageShow quoted text
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
|
|
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
|
|
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
|
|
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
toggle quoted messageShow quoted text
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.orgStatus: 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
|
|
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
toggle quoted messageShow quoted text
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 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
toggle quoted messageShow quoted text
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.
toggle quoted messageShow quoted text
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
toggle quoted messageShow quoted text
-----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
|
|