Learn how to read software
Reading Software: Finding the Right Program
Reading software has transformed instruction for struggling learners and students with disabilities. Not only do these applications have the ability to read text aloud, they can do so while highlighting individual words or entire sentences. Some applications have features to help students organize their thoughts, while others offer activities that help students learn new concepts.
Students enjoy these devices because they enable them to work independently, yet receive just-in-time support when necessary. Teachers enjoy these devices because they provide targeted reading support that best meets the needs of students. Parents enjoy them because they offer ideal solutions to the learning difficulties faced by their children.
Since different reading software applications contain different features, it is important that students are matched with software that best meets their specific needs. LD Online has identified five web-based resources that contain detailed information on reading software programs and address specific needs of students with special needs in reading. The following overview provides a synopsis of each resource to help streamline the selection process.
The Tech Matrix
The TechMatrix serves as a database of both published research and commercial products, reviewed for universal design and accessibility features that benefit students with learning challenges. The TechMatrix is organized around seven learning supports for the use of technology in instruction, including:
- Access to electronic references and resources
- Access to multiple formats of text, notation, and symbols
- Alternate access to the computer and peripheral devices (input and output)
- Means to create and engage in multimedia products and projects
- Means to organize and plan
- Opportunities to learn concepts
- Practice and reinforcing activities
Products are reviewed for the presence of features such as text-to-speech capabilities, word prediction, embedded resources (ex. e-dictionary, e-thesaurus, highlighting) customizable views, and differentiation. The matrix is updated regularly with new products, research reports, and additional features. In addition to reading, users can find reviewed products and research in writing, mathematics, and assistive technology access devices.
A simplified search process helps users easily create custom matrices of software products and research that meet individual needs. Parents, teachers, and administrators can find choices and reviews to inform their decision-making and improve student outcomes. Custom searches and product profile pages can be bookmarked or sent to colleagues and friends to share information.
Back to Top
National Center for Accessible Media
The National Center for Accessible Media (NCAM) website focuses on the technological aspects of e-books and digital talking books (DTB) software and hardware. Digital books are computer files stored on CD, in a directory, or on a memory card. They can also be read on stand alone players or on computers. Digital books make print accessible to readers with learning difficulties or vision impairments. The NCAM reading matrix serves as a resource for identifying capabilities for tools, such as:
- Cost
- Operating system requirements
- Supported text formats
- Supported multimedia formats
- Additional features such as ability to link to external media devices
The matrix is regularly updated with information as new versions are released or updates add capabilities to existing products. Direct links are provided to product websites.
Back to Top
Curriculum Software Search
The Curriculum Software Search is part of the Stages developmental framework which supports the language and learning of students with moderate to severe impairments. The database is organized around eight stages:
- Cause and effect
- Language readiness
- Emerging language
- Early concepts
- Advanced concepts
- Functional learning
- Talking word processors
- Writing tools, written expression, and syntax development
Users are able select a stage and search a list of software database choices. These choices include: access options (i.e., mouse, switch), graphics and content (child, teen/adult), platform (Mac, Windows, DOS), prompt options (auditory, visual, multisensory), activity type (press and hold or press and release), and feedback type (auditory, visual). The portal allows users to search for software that is compatible with the user's needs as indicated by the query fields.
Back to Top
Texas Assistive Technology Network
The Texas Assistive Technology Network provides another variation in web-based reading resources as part of its training to educators in the state. The reading module includes presenter and participant training materials (as a downloadable PowerPoint presentation). Accompanying the training materials is Technology for Struggling Students*, a PDF matrix of software products and strategies. The products and strategies are organized into six components that align with federal guidelines for research based reading instruction:
- Phonemic awareness
- Phonics
- Word identification
- Vocabulary
- Fluency
- Comprehension
The product and strategy reviews also list product name, manufacturer, website, product description, and a no tech/low tech category.
Back to Top
Recording for the Blind & Dyslexic (RFB&D)
The Recording for the Blind & Dyslexic (RFB&D) offers both resources for understanding content materials, as well as content materials to assist students with reading disabilities and difficulties. Sponsored by the (RFB&D), the Learning Through Listening website provides free lesson plans, activities, teaching strategies, and other resources to help K-12 educators teach critical listening skills and meet the needs of diverse learning. The site offers a link to the RFB&D's online ordering center which distributes desktop, portable and software playback equipment. It allows users to compare:
- Equipment features
- Costs
- Functionality on the site
RFB&D also offers AudioAccessSM, which enables students with learning and print disabilities to download audio textbooks and literature for school to a Windows® computer. The digital files can be synced to a compatible portable media player and students can take them wherever they go.
Although the resources identified in this Info Brief can help address an array of reading difficulties and disabilities, it is imperative for educators and parents to be pro-active in exploring all options for their struggling students. Guidance on doing so can be found in the LD OnLine Info Brief, Be an Empowered Consumer: Let Your Voice Be Heard.
Back to Top
Microsoft Immersive Reader: Free (included with Microsoft Word, OneNote, Outlook, and Edge browser on Mac or Windows, and with other Microsoft products such as Word for iPad and the free online versions of Microsoft Office) Available through the Office Chrome extension. |
With the TTS: Kids can listen to text read aloud in several Microsoft applications. Words are highlighted as they’re read aloud, making it easier for kids to follow along. With the screen masking: The line focus option hides all but a few lines of the screen while kids are reading, to reduce distraction. With the display control: Kids can control how documents are viewed. Spacing, fonts, and margins can all be customized. The color of the text and background can also be changed. With the picture dictionary: When kids click on a word, they can hear the word read aloud and see a picture of what it means. This is in addition to the standard dictionary and thesaurus tools already in Microsoft Word. With the grammar options: Immersive Reader can divide words into syllables, which can help with decoding. Words can also be colored and labeled according to parts of speech, like nouns, verbs, adjectives, and adverbs. With the OCR: Using the separate Microsoft Office Lens app for iOS and Android, kids can convert images of text into electronic text and upload it to OneNote or Word. | |
Bookshare Web Reader: Free (works with Chrome or Safari browsers; no installation needed) Anyone can use Bookshare Web Reader with Bookshare public domain books. Qualified students with Bookshare memberships can use it with copyrighted Bookshare books. | With the TTS: Kids can listen as Bookshare e-text is read aloud. Words are highlighted as they’re spoken, making it easier for kids to follow along. With the display control: Kids can control how text is displayed. Text size, font, line spacing, and margins can all be customized. The color of the text and background can also be changed. | |
NaturalReader: $99.50 for the personal version (Mac or Windows) There’s also a free basic version without text-to-audio, and a free Chrome extension with TTS and visual tracking for listening to webpages. | With the TTS: Kids can listen to webpages and various documents read aloud by computer voices. Selected text is copied to a separate floating window where it can be reformatted and saved. With the OCR: Kids can scan up to 30 documents for reading. (More expensive versions allow kids to scan more documents.) With the display control: Kids can control how text is displayed in the floating window. Text size, font, line spacing, and margins can all be customized. The color of the text and background can also be changed. The program also syncs with an app to use on mobile devices. | |
Voice Dream Reader: $19.99 (iOS, iPadOS) |
| With the TTS: Kids can listen to documents read aloud by computer voices. The words are highlighted as they are read aloud, making it easier for kids to follow along. Documents can be downloaded directly from Bookshare as well as from Google Drive and other sources. With the display control: Kids can control how text is displayed. Text size, font, line spacing, and margins can all be customized. The color of the text and background can also be changed. With the screen masking: Kids can choose to see one, three, or five lines of text at a time. With the dictionary: Kids can look up an unfamiliar word and use their device’s built-in TTS to hear it read aloud. With the highlighter and annotation: Kids can highlight text and add their own notes, then collect the highlights and notes. |
ClaroRead: $85–$225 (Mac, Windows, Chrome; price varies by version and features) A free extension for Chrome includes only TTS plus some writing supports. | With the TTS: Kids can listen to webpages and various documents read aloud by computer voices. The words are highlighted as they’re read aloud, making it easier for kids to follow along. With the OCR: Kids can scan and read unlimited image files. A screenshot reader lets kids scan and read image text on a screen (e.g., text in a picture or on a map). With the screen masking: The software can also mask or hide parts of the screen while kids are reading, to reduce distraction. With the talking dictionary: It can read aloud definitions for better comprehension. With the pronunciation dictionary: If the TTS is mispronouncing a word, you can type in the word phonetically. From then on the TTS will pronounce it correctly. In addition to these reading tools, the software has other features to help kids with writing. | |
Read&Write: $145/year (license provides access for one user from Windows PCs, Macs, Chrome, iPad, and Android tablets) Free version includes TTS and single-word translator. Read&Write is free for teachers who sign up with their school email address. |
| With the TTS: Kids can listen to webpages and various documents read aloud. The words are highlighted as they’re spoken, making it easier for kids to follow along. With the OCR: Mac and Windows versions let kids scan and read unlimited image files. A screenshot reader lets kids scan and read image text on a screen (e.g., text in a picture or on a map). With display control: The software can reformat webpage text to remove distractions. With the screen masking: The software can mask or hide parts of the screen while kids are reading, to reduce distraction. With the talking dictionaries and translator: The software can read aloud definitions for better comprehension. Kids can also translate an unfamiliar word to their first language and hear it read aloud. With the highlighters and annotation: Kids can highlight text and then collect the highlights into a separate document. They can also add recorded voice notes to documents. In addition to these reading tools, the software has other features to help kids with writing. |
Snap&Read: $60/year (Chrome and Edge browser extensions, iPad) | With the TTS: Kids can listen to webpages and various documents read aloud. The words are highlighted as they’re spoken, making it easier for kids to follow along. With the OCR: A screenshot reader lets kids scan and read image text on a screen (e.g., text in a picture or on a map). With display control: The software can reformat webpage text to remove distractions and overlay text with colors and reading guides to aid visual focus. With the talking dictionaries and translator: The software can read aloud definitions for better comprehension. Kids can also translate an unfamiliar word to their first language and hear it read aloud. With text simplification: The software can improve readability by replacing difficult words with simpler words or definitions. With the study tools panel: As kids highlight text, it is automatically added to an outline along the right margin of the webpage. Kids can create multiple outlines for different topics, add their own comments, and use their collected notes for writing or study. With the reading templates: The program’s reading templates are broken down by type of book or text. Kids can use these templates to take notes on key details and facts in what they’re reading. | |
Kurzweil 3000: $1,395 or $500/year subscription (Mac or Windows) It’s available at a big discount if your school is a Kurzweil customer. Students can also access their Kurzweil materials and most tools through various web browsers or the Kurzweil iPad app. |
| With the TTS: Kids can listen to webpages and various documents read aloud by computer voices. The words are highlighted as they’re read aloud, making it easier for kids to follow along. With the OCR: Kids can scan and read unlimited image files, or scan and read image files. A screenshot reader lets kids scan and read image text on a screen (e.g., text in a picture or on a map). With the talking dictionaries and translator: The software can read aloud definitions for better comprehension. Kids can also translate an unfamiliar word to their first language and hear it read aloud. With the highlighters and annotation: Kids can highlight text and add their own comments, then collect these notes into a separate document. They can also add recorded voice notes to documents. With the graphic organizers: Kids can visually organize their collected notes as a diagram to aid understanding. In addition to these reading tools, the software has other features to help kids with writing. |
One of the easiest ways to improve your programming skills is to read other people's code / Sudo Null IT News Unfortunately, this site is now down, so I'm posting the article here to save it for posterity. I was going to update it with the latest trends, but decided to leave it as it was written. Those parts that are outdated may seem a little funny, but oh well. Have fun…
The most obvious way to improve the quality of your programming is to write more programs. Everyone knows this. However, another way that I'm sure will improve your programming is just the opposite. I'll make this as clear as I can.
If you want to dramatically improve your programming skills, you need to… read code written by other programmers.
You may or may not believe it. Your right. But if you're willing to take the risk, I'm sure you'll be rewarded for your time.
In this article, I would like to help you choose what to read and give you practical advice on how to read it. If you are already reading other programs, then maybe you will find something here that will allow you to get more out of your efforts. If you do not read the codes of other developers, then you simply must do this.
What to read
This is an important decision, and one in which it is difficult to advise. I wouldn't like to just point you to some code that I think you should read, because what you really need to consider is what you are doing. However, I will give you some guidelines to help you choose your reading software.
Read programs related to you
A great place to start is any plugins or libraries you already use.
• A WordPress plugin you really like;
• Ruby gem that you find useful;
• The jQuery plugin you keep coming back to.
All of them are prime candidates for study. You already know their public interfaces, so the barrier to understanding their inner workings is below. In addition, you - as a user of this program - have the opportunity to add documentation, introduce a new feature, or generally contribute to this project in some way.
Read programs that impress you
I remember the first time I looked at 280 Slides, a presentation creation service, I thought, “Yeah! Cool!". I quickly found out that the program running this site is an open source Cappuccino project. This knowledge entered deep into my mind, and when I somehow stumbled upon another impressive application that worked on Cappuccino, I already knew that I could learn a lot from this project. What has made a strong impression on you lately? Is this program open source? If so, it's a great choice to read: the code is likely to impress you as much as the app itself.
Read programs written by people you respect
Programmers worthy of respect
respect. I could immediately name a few developers whose programs make me just “white envy”.
If you don't have such a developer yet, it's easy to find one. He/she is probably the author of some program in one of the previous two sections (programs related to you or programs that impressed you).
Read programs that you can actually understand quite deeply
If you're a risk taker, you might consider diving into a big project like Ruby on Rails, Drupal, or jQuery. But I would suggest that you do not use such projects yet, unless, of course, you are an experienced reader of programs.
Large projects have an enormous amount of interacting parts, and you end up spending a lot of time and effort mastering the general concepts to learn something specific. The intricacy of the subject matter is chilling, and large projects are more likely to lead to your reading frustration. The advantage of choosing a small project to read is that you can keep all the logic behind the program in your head. This allows you to work only with details in order to learn some lessons.
How to read
Now that the code to read has been chosen, what is the best way to read it? I have read many programs to date and can suggest several ways to maximize your efficiency.
Explore the big picture
The twitter gem directory structure
I'm assuming you at least know at a macro level what the code you're reading does. If not, I suggest reading the project website, tutorials, documentation, and anything else you can get your hands on besides the code.
Once the proper clarity is in place, your first step should be to consider the structure of the project. The amount of this work depends on the size of the chosen source code base, but even if it takes more than one file, it will only take slightly more time.
First of all, fix the file structure for yourself. This step is easier to do with an editor that looks like a folder hierarchy, such as TextMate. Here's a nice view of the Twitter Ruby gem as an example.
The purpose of this step is simply to familiarize yourself with the source. Understand what files include/call/load other files, where the bulk of the code is located, what namespaces are used (if any) and stuff like that. Once you get the general idea, you can dive into the details.
Document your results
Reading the code should not be some kind of passive activity. I recommend adding comments as you go, documenting your assumptions and your conclusions as you begin to understand the flow of the program. When you first start, your comments will probably look like this:
# I believe this function is called after "initialize" # What does this task do? # Pretty sure this variable loses its scope after line 17
As you understand the processes, you may want to remove the small hierarchical comments you've kept for yourself, and perhaps write more meaningful and authoritative comments that could be passed back to the project.
Use the tests, Luke
0039
Hopefully the project you have selected has a test suite. If not, you can skip this section altogether (or find a project that has one).
Tests are a great place to start reading someone else's code because they document what the program is supposed to do. Some tests are more informative than others, but no matter how well they are written, it is often much easier to find a programmer's intentions in tests than in implementation. When reading, try to get a successful result when running the entire test suite. This will ensure that your development environment is configured correctly and give you more confidence when making changes.
Change code, compile
Who said code reading should be passive? You will only really begin to understand the code after you break it all down and put it back together again. Do you remember the tests you passed? Make them fail, add something, or try to change the implementation so they fail. Try adding some little "feature" that you think is "cool", or set up logging throughout the project so that you can print the output at various stages of the program. Is it still reading? Absolutely, but this approach is more of an adventure of one's own than reading a detective novel. And this is exactly what you need!
Rinse and repeat
When you're done reading one codebase, take another and start the process again. The more codes you read, the better that reading goes and the more you get out of it in less time. I think you'll find that your efficiency builds up quite quickly and that it's actually a very enjoyable way to learn.
Where to start
The single most important source for reading code is GitHub for me. This site makes it so easy to find new projects and really great programmers that you're hurting yourself if you don't use it. I suggest starting on GitHub and reading through the code directly on the site until you find a project that you think you can learn from. Then clone it and read!
Do you use code reading as a learning tool? What projects would you recommend to colleagues? Have you read any good program lately?
6 rules a developer should remember
Every programmer sooner or later has to figure out someone else's code, but not everyone does it right. We translated an article by developer William Sean and learned how to read someone else's code in such a way as to understand it and learn something new from this practice.
You are reading an updated and improved version of our old article
Why developers do not like to understand other people's code
"I hate reading other people's code" - this phrase can often be heard from programmers. The reason for their hatred is that they do not write someone else's code. This does not mean that every developer suffers from megalomania, everything is much simpler: the reader will never experience the flow state that the programmer was in when he created his code. Therefore, passive reading is sometimes boring.
The reader may not realize that he sees the work of several developers on the screen. Maybe they were arguing while coding and it wasn't easy for them. It may have taken weeks for developers to come up with code that works around undocumented limitations. The reader is dealing with a finished product and does not even know what is behind the repeatedly verified lines of code.
Sooner or later, a developer has a moment when he has to read someone else's code. For example, when a programmer needs to change or update existing code, conduct a code review, or understand how the software interface works. To do this, you need to know how to read and understand someone else's code. This skill is also useful for those who just have to get comfortable in the code base. Let's figure out what to look for when reading someone else's code in order to understand it and, possibly, learn something.
How to read code
Learn how to “dig” in code
When you first encounter a serious codebase, you will feel not like a developer, but an archaeologist, private investigator, or researcher of religious books. You will have to "dig" in someone else's code to understand how it was created.
If you are working on a codebase where the developers have used version control, then you have access to the metadata. Check out the following Git commands to see how the code changed (they work for SVN as well):0005
git blame
With this command, you will get the name of the author of the code, the date of the last changes, and the commit hash (committed change in the code) for each line. So you can find the history of the code and understand exactly what code was contributed to the repository, how it was done and for what reason. If possible, get to know the authors of the code: they will try to answer your questions.
When reading the code, make sure you understand where it starts executing and what happens when it starts. See what files are included, what classes are used, what config options are set. Chances are you'll encounter them all the time throughout your codebase.
Some modules can stand out from the rest of the code and have a very general purpose. Run git blame
and see which parts of the main file have changed recently. This way you will know the problems that the team has been solving recently. Perhaps the developers tried for a long time to establish a library that did not work very well. Maybe it's just boilerplate code that needs to be updated regularly.
Try looking for examples of such prominent modules elsewhere in the code to see how and when they are used. This will help you understand the place and role of modules in the main application.
git log
and git grep
Use the git log
command to see the commit history for the entire repository. git grep
will help you find specific text in commits, such as someFunction: git log | grep someFunction -C 3
. The last flags will show you the found expressions with three lines of surrounding context.
Also git log
can show you the history of a single file. To see it, use the -p flag: git log -p index.js
. Pay attention to the names of the committers so you know who to direct questions to in the future.
See also: Bloom filter: why you need it and how it works
Switch between commits and study the history of the code
You can switch to any commit and run the project as if this commit was the last one. As a rule, this is done in order to identify a problem that is difficult to track. Also toggle commits to see code history.
If the project is hosted on GitHub or similar, you can learn a lot from pull requests and code reviews. Pay attention to tickets - task cards for tracking work on bugs, implementing features. Read the discussions in the tickets: there may be "pain points" that you may encounter in the future, so it's best to have an idea about them in advance.
Read Specs
Specs are new comments on the code. Read unit specs to find out the purpose of functions, modules, and the possible edge-cases they handle.
Also read integration specifications to understand how users will interact with your application and what processes it supports.
Think of comments as hints
If you stumble upon a strange function while studying the code and read a comment on it that confuses you even more, it may simply be outdated. Keep this in mind: if a comment on a feature hasn't been updated in a while, it's probably been gone for months and nobody but you noticed.
Pay attention to the writing style of the code
When reading someone else's code, look at whether the standards for its design are observed, whether there are naming, spaces, brackets. Pay attention to the general level of abstraction of the code. If it has many levels of abstraction, then you should use them in your code as well.
If you did a good job of "digging", you found a moment when one of the developers decided to abstract away part of the code. Remember how the code looked before this change and think about what happened to it after taking it to a new level of abstraction.
As you work on a project, look at what designs your team members are using. If they favor loops over map
, then you should use them too. If you don't like the style of the code in the project, discuss it with the team - it's better than mixing different styles in one file. Good code looks like it was written by one person.
Get rid of the "garbage" in the code
As you read the code, you may come across functions and entire files that developers never use, and comments that no one answered for several years. Don't spend a lot of time parsing all this - get rid of the "garbage". If this code is still needed, someone will mark it on the code review. By deleting what you don't need, you save time and energy for someone who reads this code after you.
Total
Don't be discouraged if you feel like you're completely confused by someone else's code.