From 218b2c5b01e12d29fde7809703ff483222b3a0c2 Mon Sep 17 00:00:00 2001 From: Tait Hoyem Date: Sun, 19 Sep 2021 18:43:35 -0600 Subject: [PATCH] Add accessibility post --- ...oper-content-mathml-from-katex-or-latex.md | 206 ++++++++++ .../index.html | 76 ++++ .../index.html | 335 ++++++++++++++++ _site/assets/img/access1/stack.png | Bin 0 -> 15215 bytes _site/blog/index.html | 31 ++ _site/emacspeak-tutorials/index.html | 2 +- _site/feed.xml | 357 ++++++++++++++---- _site/sitemap.xml | 22 +- 8 files changed, 948 insertions(+), 81 deletions(-) create mode 100644 _posts/2021-09-18-how-to-generate-proper-content-mathml-from-katex-or-latex.md create mode 100644 _site/2021/09/02/suspiciousfileoperation-detected-path-traversal-attempt/index.html create mode 100644 _site/2021/09/18/how-to-generate-proper-content-mathml-from-katex-or-latex/index.html create mode 100644 _site/assets/img/access1/stack.png diff --git a/_posts/2021-09-18-how-to-generate-proper-content-mathml-from-katex-or-latex.md b/_posts/2021-09-18-how-to-generate-proper-content-mathml-from-katex-or-latex.md new file mode 100644 index 0000000..2522d31 --- /dev/null +++ b/_posts/2021-09-18-how-to-generate-proper-content-mathml-from-katex-or-latex.md @@ -0,0 +1,206 @@ +--- +title: "How To Produce Semantically Correct MathML From XaTeX/LaTeX (and other accessibility ideas)" +layout: post +math: true +--- + +During a recent run-in with the Simon Fraser Fraser University accessibility department, +I learned that they're writers are so well-trained as to write "image" where a simple diagram is shown, +and "print out picture of output" where a piece of code lies. +I figure the geniuses over there could use some help creating files for the visually impaired. +Here's a quick guide! + +## Diagrams + +Most unexplained diagrams I saw were ones which mirrored classic computer-science imagery; +these diagrams, for the most part, were not complex nor exotic; +they are straight-forward to explain in writing, +or easy to turn into a table. +I'll show two examples here, +one will show a visual aide in relation to stacks and queues, +and the other will show a memory representation of a stack. +Both of these were explained as "image" to the student. + +## Stacks + +Diagram 1: + +
+ image...lol! Just kidding, will explain it below w/ table +
Simple diagram explaining the push/pop process. Source: Stackoverflow
+
+ +Ok, so here we have a diagram showing the pushing and popping process of a stack. +Now, "image" is hardly sufficient to explain this, so let's try it with text. +I won't finish it because it gets unwieldy very fast: + +> A diagram showing a stack. It starts with the operation "Push A", and now the stack contains the variable "A"; now the stack pushes "B", which displays now "B" on top of "A"... + +This is no solution. +It is hard to explain this correctly and accurately without being extremely verbose and frankly, confusing---this defeats the whole purpose of describing the image. +The good news, is that computer science diagrams especially tend to lean towards being tabular data. +Now to be clear, something does not need to look like a table to be tabular data; +this image happens to look almost like a table if you squinted hard enough, +but many data not written down in a table, are still "tabular data". +I will show an example of that next! +For now though, here is the same idea, same data without words: + +Operator|Stack Values +---|--- +Push A|[A] +Push B|{B, A] +Push C|[C, B, A] +Push D|[D, C, B, A] +Pop D|[C, B, A] + +Now this diagram does imply you can pop other items, like "Pop A", which is just not true. +But that's the fault of the diagram, not the representation of it. + +Here is the raw text equivalent (in Markdown): + +
+Operator|Stack Values
+---|---
+Push A|[A]
+Push B|{B, A]
+Push C|[C, B, A]
+Push D|[D, C, B, A]
+Pop (D)|[C, B, A]
+
+ +## Stacks in Memory + +So I couldn't find a good non-copyright image of a stack in memory, but I'll write it down here in plain text, and you should get the idea. +Now again, remember this is still labeled "image" to the student, +they do not have access to a text version of this. + +
+( ) ( ( ( ) ) ) ( ) ( ( ) ( ( )
+1 0 1 2 3 2 1 0 1 0 1 2 1 2 3 2
+
+ +Now, someone who looks at this can probably see that the number goes up for a left parenthesis, and down for a right parenthesis. +"Image", however, does not handle the detail. +The issue here is a transcriber is likely to want to transcribe this as *text*. +But it's really not. +This is again, tabular data, which is best represented in a table. + +Table of this: + +Character|Counter +---|--- +(|1 +)|0 +(|1 +(|2 +(|3 +)|2 +)|1 +)|0 +(|1 +)|0 +(|1 +(|2 +)|1 +(|2 +(|3 +)|2 + +Raw text in markdown: + +
+Character|Counter
+---|---
+(|1
+)|0
+(|1
+(|2
+(|3
+)|2
+)|1
+)|0
+(|1
+)|0
+(|1
+(|2
+)|1
+(|2
+(|3
+)|2
+
+ +Insanely simple! +Look for clues of tabular data. +Things which have a one to one correspondence of any kind can usually be represented as a table, even if it's only "aligned" on the slide or note. + +## Math Expressions & MathML + +Here is a more complex example: +using math within a presentation. + +Let's take for example the mathematical expression $$16 = 2^{4}$$. This is a very simple math expression that completely breaks in some cases. +When converting some math expressions to text, it will convert that expression as $$16 = 24$$, erasing the superscript to denote the exponent. + +This gets even worse with large mathematical expressions like this: + +{% katex display %} +\text{B2U}(X) = \sum_{i=0}^{w-1} x_{i} \times 2^{i} +{% endkatex %} + +Here is what I get by extracting the text from the PDF: + +
+B2U(X ) =
+
+w-1
+
+Σ xi •2
+i=0
+
+i
+
+ +And this is generous, as the sigma sign, bullet point, equal sign and minus sign were for some reason not UTF-8 encoded so it displayed as a chat sign emoji, down arrow, video camera and book sign respectively. +Not sure about you, but I certainly can't get the equation out of that mess. + +These can be written in LaTeX, then converted to MathML (an accessible math format) using [KaTeX](https://katex.org). +Here's an example of what to write to product the function above: + +
+\text{B2U}(X) = \sum_{i=0}^{w-1} x_{i} \times 2^{i}
+
+ +For someone who is doing transcription as a *job* for visually impaired students, +I would go so far as to say to learn this is a necessity. + +1. It's not difficult. You can learn the vast majority of LaTeX math syntax in an afternoon. +2. It's easier for *everyone* to read. Especially with KaTeX. KaTeX is able to convert the formula to both MathML for screenreader users and HTML markup for people who just want to see those fancy math expressions. + +Likely, the teacher is already using some LaTeX derivative to create the math in the first place, +they might as well use a program like KaTeX, MathJax or likewise to convert it to MathML. + +## Code & Output + +How did it even happen that entire programs and outputs were just ignored with the label "picture of output" is beyond me. +Everything should be transcribed. +Whoever transcribed that document should be fired. + +## Conclusion + +To teachers: + +Presenting information in plain text, or at least having alternates forms of images, diagrams and math formulas makes education better for everyone, not just blind students. +It makes it better for people running on cheaper devices which may not handle running heavy software like Microsoft PowerPoint; +it makes it better for people who use operating systems other than MacOS and Windows (this is especially important in the technology sector, where Linux/BSD users make up a sizeable minority of users); +and finally, it makes it easier to search through the content of all notes at once using simple text-manipulation tools. + +To accessibility departments: + +Running a `pdftotext` program, or simply transcribing handwritten notes is not enough to properly describe slides and notes---handwritten or not. +Every diagram, math equation, annotation, piece of code or output---every single thing must be transcribed to plain text, or some alternate format like MathML. + +I find it sad that a student (with their own full-time job) can product better work than someone who has this job exclusively at a major university. +Perhaps I am mistaken and the university has volunteers do this work. +In that case I guess you can't ask for too much, but somehow I feel like this is probably not the case. + +Big sad. diff --git a/_site/2021/09/02/suspiciousfileoperation-detected-path-traversal-attempt/index.html b/_site/2021/09/02/suspiciousfileoperation-detected-path-traversal-attempt/index.html new file mode 100644 index 0000000..daf2e4a --- /dev/null +++ b/_site/2021/09/02/suspiciousfileoperation-detected-path-traversal-attempt/index.html @@ -0,0 +1,76 @@ + + + + + Django: SuspiciousFileOperation: Detected path traversal attempt | tait.tech + + + + + + + + +
+
+

tait.tech

+ + + +
+
+
+
+

Django: SuspiciousFileOperation: Detected path traversal attempt

+ +
+
+ +

When trying to add a locally stored file to a Django model recently, I had this issue. +Believe it or not, this is a good thing!

+ +

Django is build to take the security aspects of a system and sort of hide them behind a few onion layers of API calls and security middleware. +This is good for your average developer. +It stops them from making stupid mistakes like not using CSRF in secure forms, the allowing of insecure passwords, dangerous passing of user values into a document, et cetera. +That said, sometimes when you are doing something, and even if it seems relatively safe, Django will flag something you do as suspicious, halting development and wasting time.

+ +

So that said, here’s why the issue happened, why this is a good thing, and how to get around it.

+ +

Why Django is a lifesaver!

+ +

Django, in an effort to help keep your application secure, does not want to access files with an absolute path. +This is to stop what is known as a directory traversal attack. +So when you try to access something by using your environment variables, i.e. os.environ["PWD"], +you may find that Django will give you errors if you try to pass this path into one of their Django, in an effort to help keep your application secure, does not want to access files with an absolute path.

+ +
# django's files are just wrappers around python's
+from django.core.files import File
+
+df = File(open(os.environ["PWD"] + "path1/file.pdf"))
+
+ +

This will give you a nasty error:

+ +
+ +
+
+ +
+ + diff --git a/_site/2021/09/18/how-to-generate-proper-content-mathml-from-katex-or-latex/index.html b/_site/2021/09/18/how-to-generate-proper-content-mathml-from-katex-or-latex/index.html new file mode 100644 index 0000000..860251c --- /dev/null +++ b/_site/2021/09/18/how-to-generate-proper-content-mathml-from-katex-or-latex/index.html @@ -0,0 +1,335 @@ + + + + + How To Produce Semantically Correct MathML From XaTeX/LaTeX (and other accessibility ideas) | tait.tech + + + + + + + + +
+
+

tait.tech

+ + + +
+
+
+
+

How To Produce Semantically Correct MathML From XaTeX/LaTeX (and other accessibility ideas)

+ +
+
+ +

During a recent run-in with the Simon Fraser Fraser University accessibility department, +I learned that they’re writers are so well-trained as to write “image” where a simple diagram is shown, +and “print out picture of output” where a piece of code lies. +I figure the geniuses over there could use some help creating files for the visually impaired. +Here’s a quick guide!

+ +

Diagrams

+ +

Most unexplained diagrams I saw were ones which mirrored classic computer-science imagery; +these diagrams, for the most part, were not complex nor exotic; +they are straight-forward to explain in writing, +or easy to turn into a table. +I’ll show two examples here, +one will show a visual aide in relation to stacks and queues, +and the other will show a memory representation of a stack. +Both of these were explained as “image” to the student.

+ +

Stacks

+ +

Diagram 1:

+ +
+ image...lol! Just kidding, will explain it below w/ table +
Simple diagram explaining the push/pop process. Source: Stackoverflow
+
+ +

Ok, so here we have a diagram showing the pushing and popping process of a stack. +Now, “image” is hardly sufficient to explain this, so let’s try it with text. +I won’t finish it because it gets unwieldy very fast:

+ +
+

A diagram showing a stack. It starts with the operation “Push A”, and now the stack contains the variable “A”; now the stack pushes “B”, which displays now “B” on top of “A”…

+
+ +

This is no solution. +It is hard to explain this correctly and accurately without being extremely verbose and frankly, confusing—this defeats the whole purpose of describing the image. +The good news, is that computer science diagrams especially tend to lean towards being tabular data. +Now to be clear, something does not need to look like a table to be tabular data; +this image happens to look almost like a table if you squinted hard enough, +but many data not written down in a table, are still “tabular data”. +I will show an example of that next! +For now though, here is the same idea, same data without words:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OperatorStack Values
Push A[A]
Push B{B, A]
Push C[C, B, A]
Push D[D, C, B, A]
Pop D[C, B, A]
+ +

Now this diagram does imply you can pop other items, like “Pop A”, which is just not true. +But that’s the fault of the diagram, not the representation of it.

+ +

Here is the raw text equivalent (in Markdown):

+ +
+Operator|Stack Values
+---|---
+Push A|[A]
+Push B|{B, A]
+Push C|[C, B, A]
+Push D|[D, C, B, A]
+Pop (D)|[C, B, A]
+
+ +

Stacks in Memory

+ +

So I couldn’t find a good non-copyright image of a stack in memory, but I’ll write it down here in plain text, and you should get the idea. +Now again, remember this is still labeled “image” to the student, +they do not have access to a text version of this.

+ +
+( ) ( ( ( ) ) ) ( ) ( ( ) ( ( )
+1 0 1 2 3 2 1 0 1 0 1 2 1 2 3 2
+
+ +

Now, someone who looks at this can probably see that the number goes up for a left parenthesis, and down for a right parenthesis. +“Image”, however, does not handle the detail. +The issue here is a transcriber is likely to want to transcribe this as text. +But it’s really not. +This is again, tabular data, which is best represented in a table.

+ +

Table of this:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacterCounter
(1
)0
(1
(2
(3
)2
)1
)0
(1
)0
(1
(2
)1
(2
(3
)2
+ +

Raw text in markdown:

+ +
+Character|Counter
+---|---
+(|1
+)|0
+(|1
+(|2
+(|3
+)|2
+)|1
+)|0
+(|1
+)|0
+(|1
+(|2
+)|1
+(|2
+(|3
+)|2
+
+ +

Insanely simple! +Look for clues of tabular data. +Things which have a one to one correspondence of any kind can usually be represented as a table, even if it’s only “aligned” on the slide or note.

+ +

Math Expressions & MathML

+ +

Here is a more complex example: +using math within a presentation.

+ +

Let’s take for example the mathematical expression 16=2416 = 2^{4}. This is a very simple math expression that completely breaks in some cases. +When converting some math expressions to text, it will convert that expression as 16=2416 = 24, erasing the superscript to denote the exponent.

+ +

This gets even worse with large mathematical expressions like this:

+ +

B2U(X)=i=0w1xi×2i +\text{B2U}(X) = \sum_{i=0}^{w-1} x_{i} \times 2^{i} +

+ +

Here is what I get by extracting the text from the PDF:

+ +
+B2U(X ) =
+
+w-1
+
+Σ xi •2
+i=0
+
+i
+
+ +

And this is generous, as the sigma sign, bullet point, equal sign and minus sign were for some reason not UTF-8 encoded so it displayed as a chat sign emoji, down arrow, video camera and book sign respectively. +Not sure about you, but I certainly can’t get the equation out of that mess.

+ +

These can be written in LaTeX, then converted to MathML (an accessible math format) using KaTeX. +Here’s an example of what to write to product the function above:

+ +
+\text{B2U}(X) = \sum_{i=0}^{w-1} x_{i} \times 2^{i}
+
+ +

For someone who is doing transcription as a job for visually impaired students, +I would go so far as to say to learn this is a necessity.

+ +
    +
  1. It’s not difficult. You can learn the vast majority of LaTeX math syntax in an afternoon.
  2. +
  3. It’s easier for everyone to read. Especially with KaTeX. KaTeX is able to convert the formula to both MathML for screenreader users and HTML markup for people who just want to see those fancy math expressions.
  4. +
+ +

Likely, the teacher is already using some LaTeX derivative to create the math in the first place, +they might as well use a program like KaTeX, MathJax or likewise to convert it to MathML.

+ +

Code & Output

+ +

How did it even happen that entire programs and outputs were just ignored with the label “picture of output” is beyond me. +Everything should be transcribed. +Whoever transcribed that document should be fired.

+ +

Conclusion

+ +

To teachers:

+ +

Presenting information in plain text, or at least having alternates forms of images, diagrams and math formulas makes education better for everyone, not just blind students. +It makes it better for people running on cheaper devices which may not handle running heavy software like Microsoft PowerPoint; +it makes it better for people who use operating systems other than MacOS and Windows (this is especially important in the technology sector, where Linux/BSD users make up a sizeable minority of users); +and finally, it makes it easier to search through the content of all notes at once using simple text-manipulation tools.

+ +

To accessibility departments:

+ +

Running a pdftotext program, or simply transcribing handwritten notes is not enough to properly describe slides and notes—handwritten or not. +Every diagram, math equation, annotation, piece of code or output—every single thing must be transcribed to plain text, or some alternate format like MathML.

+ +

I find it sad that a student (with their own full-time job) can product better work than someone who has this job exclusively at a major university. +Perhaps I am mistaken and the university has volunteers do this work. +In that case I guess you can’t ask for too much, but somehow I feel like this is probably not the case.

+ +

Big sad.

+ +
+ +
+
+ +
+ + diff --git a/_site/assets/img/access1/stack.png b/_site/assets/img/access1/stack.png new file mode 100644 index 0000000000000000000000000000000000000000..3fec3f634e31d447250a784659e5a6b97a2fe6cf GIT binary patch literal 15215 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

Blog

+
+
+

+ How To Produce Semantically Correct MathML From XaTeX/LaTeX (and other accessibility ideas) +

+ +
+

During a recent run-in with the Simon Fraser Fraser University accessibility department, +I learned that they’re writers are so well-trained as to write “image” where a simple diagram is shown, +and “print out picture of output” where a piece of code lies. +I figure the geniuses over there could use some help creating files for the visually impaired. +Here’s a quick guide!

+
+
+ + +

diff --git a/_site/emacspeak-tutorials/index.html b/_site/emacspeak-tutorials/index.html index 2e0cbcd..38ff10d 100644 --- a/_site/emacspeak-tutorials/index.html +++ b/_site/emacspeak-tutorials/index.html @@ -40,7 +40,7 @@ The lack of sorting is intentional. See Luke Smith’s video on why to ramble and not be sequential.

diff --git a/_site/feed.xml b/_site/feed.xml index 35f348f..37c4f8a 100644 --- a/_site/feed.xml +++ b/_site/feed.xml @@ -1,4 +1,286 @@ -Jekyll2021-09-02T16:12:38-06:00/feed.xmlIdea For A VPN Service2021-08-31T00:00:00-06:002021-08-31T00:00:00-06:00/2021/08/31/vpns-api<p>Recently I’ve been thinking about starting a VPN service. +Jekyll2021-09-19T18:43:11-06:00/feed.xmlHow To Produce Semantically Correct MathML From XaTeX/LaTeX (and other accessibility ideas)2021-09-18T00:00:00-06:002021-09-18T00:00:00-06:00/2021/09/18/how-to-generate-proper-content-mathml-from-katex-or-latex<p>During a recent run-in with the Simon Fraser Fraser University accessibility department, +I learned that they’re writers are so well-trained as to write “image” where a simple diagram is shown, +and “print out picture of output” where a piece of code lies. +I figure the geniuses over there could use some help creating files for the visually impaired. +Here’s a quick guide!</p> + +<h2 id="diagrams">Diagrams</h2> + +<p>Most unexplained diagrams I saw were ones which mirrored classic computer-science imagery; +these diagrams, for the most part, were not complex nor exotic; +they are straight-forward to explain in writing, +or easy to turn into a table. +I’ll show two examples here, +one will show a visual aide in relation to stacks and queues, +and the other will show a memory representation of a stack. +Both of these were explained as “image” to the student.</p> + +<h2 id="stacks">Stacks</h2> + +<p>Diagram 1:</p> + +<figure> + <img src="/assets/img/access1/stack.png" alt="image...lol! Just kidding, will explain it below w/ table" /> + <figcaption>Simple diagram explaining the push/pop process. Source: <a href="https://stackoverflow.com/questions/32151392/stacks-queues-and-linked-lists">Stackoverflow</a></figcaption> +</figure> + +<p>Ok, so here we have a diagram showing the pushing and popping process of a stack. +Now, “image” is hardly sufficient to explain this, so let’s try it with text. +I won’t finish it because it gets unwieldy very fast:</p> + +<blockquote> + <p>A diagram showing a stack. It starts with the operation “Push A”, and now the stack contains the variable “A”; now the stack pushes “B”, which displays now “B” on top of “A”…</p> +</blockquote> + +<p>This is no solution. +It is hard to explain this correctly and accurately without being extremely verbose and frankly, confusing—this defeats the whole purpose of describing the image. +The good news, is that computer science diagrams especially tend to lean towards being tabular data. +Now to be clear, something does not need to look like a table to be tabular data; +this image happens to look almost like a table if you squinted hard enough, +but many data not written down in a table, are still “tabular data”. +I will show an example of that next! +For now though, here is the same idea, same data without words:</p> + +<table> + <thead> + <tr> + <th>Operator</th> + <th>Stack Values</th> + </tr> + </thead> + <tbody> + <tr> + <td>Push A</td> + <td>[A]</td> + </tr> + <tr> + <td>Push B</td> + <td>{B, A]</td> + </tr> + <tr> + <td>Push C</td> + <td>[C, B, A]</td> + </tr> + <tr> + <td>Push D</td> + <td>[D, C, B, A]</td> + </tr> + <tr> + <td>Pop D</td> + <td>[C, B, A]</td> + </tr> + </tbody> +</table> + +<p>Now this diagram does imply you can pop other items, like “Pop A”, which is just not true. +But that’s the fault of the diagram, not the representation of it.</p> + +<p>Here is the raw text equivalent (in Markdown):</p> + +<pre> +Operator|Stack Values +---|--- +Push A|[A] +Push B|{B, A] +Push C|[C, B, A] +Push D|[D, C, B, A] +Pop (D)|[C, B, A] +</pre> + +<h2 id="stacks-in-memory">Stacks in Memory</h2> + +<p>So I couldn’t find a good non-copyright image of a stack in memory, but I’ll write it down here in plain text, and you should get the idea. +Now again, remember this is still labeled “image” to the student, +they do not have access to a text version of this.</p> + +<pre> +( ) ( ( ( ) ) ) ( ) ( ( ) ( ( ) +1 0 1 2 3 2 1 0 1 0 1 2 1 2 3 2 +</pre> + +<p>Now, someone who looks at this can probably see that the number goes up for a left parenthesis, and down for a right parenthesis. +“Image”, however, does not handle the detail. +The issue here is a transcriber is likely to want to transcribe this as <em>text</em>. +But it’s really not. +This is again, tabular data, which is best represented in a table.</p> + +<p>Table of this:</p> + +<table> + <thead> + <tr> + <th>Character</th> + <th>Counter</th> + </tr> + </thead> + <tbody> + <tr> + <td>(</td> + <td>1</td> + </tr> + <tr> + <td>)</td> + <td>0</td> + </tr> + <tr> + <td>(</td> + <td>1</td> + </tr> + <tr> + <td>(</td> + <td>2</td> + </tr> + <tr> + <td>(</td> + <td>3</td> + </tr> + <tr> + <td>)</td> + <td>2</td> + </tr> + <tr> + <td>)</td> + <td>1</td> + </tr> + <tr> + <td>)</td> + <td>0</td> + </tr> + <tr> + <td>(</td> + <td>1</td> + </tr> + <tr> + <td>)</td> + <td>0</td> + </tr> + <tr> + <td>(</td> + <td>1</td> + </tr> + <tr> + <td>(</td> + <td>2</td> + </tr> + <tr> + <td>)</td> + <td>1</td> + </tr> + <tr> + <td>(</td> + <td>2</td> + </tr> + <tr> + <td>(</td> + <td>3</td> + </tr> + <tr> + <td>)</td> + <td>2</td> + </tr> + </tbody> +</table> + +<p>Raw text in markdown:</p> + +<pre> +Character|Counter +---|--- +(|1 +)|0 +(|1 +(|2 +(|3 +)|2 +)|1 +)|0 +(|1 +)|0 +(|1 +(|2 +)|1 +(|2 +(|3 +)|2 +</pre> + +<p>Insanely simple! +Look for clues of tabular data. +Things which have a one to one correspondence of any kind can usually be represented as a table, even if it’s only “aligned” on the slide or note.</p> + +<h2 id="math-expressions--mathml">Math Expressions &amp; MathML</h2> + +<p>Here is a more complex example: +using math within a presentation.</p> + +<p>Let’s take for example the mathematical expression <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>16</mn><mo>=</mo><msup><mn>2</mn><mn>4</mn></msup></mrow><annotation encoding="application/x-tex">16 = 2^{4}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">16</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8141079999999999em;vertical-align:0em;"></span><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">4</span></span></span></span></span></span></span></span></span></span></span></span>. This is a very simple math expression that completely breaks in some cases. +When converting some math expressions to text, it will convert that expression as <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>16</mn><mo>=</mo><mn>24</mn></mrow><annotation encoding="application/x-tex">16 = 24</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">16</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">24</span></span></span></span>, erasing the superscript to denote the exponent.</p> + +<p>This gets even worse with large mathematical expressions like this:</p> + +<p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext>B2U</mtext><mo stretchy="false">(</mo><mi>X</mi><mo stretchy="false">)</mo><mo>=</mo><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>w</mi><mo>−</mo><mn>1</mn></mrow></munderover><msub><mi>x</mi><mi>i</mi></msub><mo>×</mo><msup><mn>2</mn><mi>i</mi></msup></mrow><annotation encoding="application/x-tex"> +\text{B2U}(X) = \sum_{i=0}^{w-1} x_{i} \times 2^{i} +</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord text"><span class="mord">B2U</span></span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.07847em;">X</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0787820000000004em;vertical-align:-1.277669em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.872331em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.300005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.02691em;">w</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.277669em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.8746639999999999em;vertical-align:0em;"></span><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8746639999999999em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span></span></span></p> + +<p>Here is what I get by extracting the text from the PDF:</p> + +<pre> +B2U(X ) = + +w-1 + +Σ xi •2 +i=0 + +i +</pre> + +<p>And this is generous, as the sigma sign, bullet point, equal sign and minus sign were for some reason not UTF-8 encoded so it displayed as a chat sign emoji, down arrow, video camera and book sign respectively. +Not sure about you, but I certainly can’t get the equation out of that mess.</p> + +<p>These can be written in LaTeX, then converted to MathML (an accessible math format) using <a href="https://katex.org">KaTeX</a>. +Here’s an example of what to write to product the function above:</p> + +<pre> +\text{B2U}(X) = \sum_{i=0}^{w-1} x_{i} \times 2^{i} +</pre> + +<p>For someone who is doing transcription as a <em>job</em> for visually impaired students, +I would go so far as to say to learn this is a necessity.</p> + +<ol> + <li>It’s not difficult. You can learn the vast majority of LaTeX math syntax in an afternoon.</li> + <li>It’s easier for <em>everyone</em> to read. Especially with KaTeX. KaTeX is able to convert the formula to both MathML for screenreader users and HTML markup for people who just want to see those fancy math expressions.</li> +</ol> + +<p>Likely, the teacher is already using some LaTeX derivative to create the math in the first place, +they might as well use a program like KaTeX, MathJax or likewise to convert it to MathML.</p> + +<h2 id="code--output">Code &amp; Output</h2> + +<p>How did it even happen that entire programs and outputs were just ignored with the label “picture of output” is beyond me. +Everything should be transcribed. +Whoever transcribed that document should be fired.</p> + +<h2 id="conclusion">Conclusion</h2> + +<p>To teachers:</p> + +<p>Presenting information in plain text, or at least having alternates forms of images, diagrams and math formulas makes education better for everyone, not just blind students. +It makes it better for people running on cheaper devices which may not handle running heavy software like Microsoft PowerPoint; +it makes it better for people who use operating systems other than MacOS and Windows (this is especially important in the technology sector, where Linux/BSD users make up a sizeable minority of users); +and finally, it makes it easier to search through the content of all notes at once using simple text-manipulation tools.</p> + +<p>To accessibility departments:</p> + +<p>Running a <code class="language-plaintext highlighter-rouge">pdftotext</code> program, or simply transcribing handwritten notes is not enough to properly describe slides and notes—handwritten or not. +Every diagram, math equation, annotation, piece of code or output—every single thing must be transcribed to plain text, or some alternate format like MathML.</p> + +<p>I find it sad that a student (with their own full-time job) can product better work than someone who has this job exclusively at a major university. +Perhaps I am mistaken and the university has volunteers do this work. +In that case I guess you can’t ask for too much, but somehow I feel like this is probably not the case.</p> + +<p>Big sad.</p>During a recent run-in with the Simon Fraser Fraser University accessibility department, I learned that they’re writers are so well-trained as to write “image” where a simple diagram is shown, and “print out picture of output” where a piece of code lies. I figure the geniuses over there could use some help creating files for the visually impaired. Here’s a quick guide!Idea For A VPN Service2021-08-31T00:00:00-06:002021-08-31T00:00:00-06:00/2021/08/31/vpns-api<p>Recently I’ve been thinking about starting a VPN service. This service has some interesting requirements that I have never seen a VPN service do before, so I’d like to put down my thoughts as to what might be sensible for a centralized yet encrypted* VPN service.</p> <p>I would license all the code and scripts under the AGPLv3. @@ -938,75 +1220,4 @@ I found this out form my motherboard documentation, which I read only after a we <p>I like having all this space. I plan on using it up pretty fast, so I’m already looking at how to expand. Hopefully that gives a decent overview of how I set up my drives.</p> -<p>Happy hacking!</p>Back in part one of my NAS project I discussed how I wanted to set up my hardware. Today, I set up the NAS (almost).Curiosity2020-10-26T00:00:00-06:002020-10-26T00:00:00-06:00/2020/10/26/curiosity<p>Curiosity is fundamental to a deep understanding of any subject. -Masters, Ph.Ds, and other fancy name suffixes will never help you -if you don’t have the spirit of curiosity burning inside of you.</p> - -<p>I was speaking to someone from a journalism major at my school when the subject of hacking arose. -I expected her to know nothing about it, being a journalism student and all, but surprisingly she had something to say about it:</p> - -<blockquote> - <p>“The best hackers are the ones who are curious.”</p> -</blockquote> - -<p>That struck a cord with me. -It seems to me she has nailed down the difference between the students who care about grades, -and those who want to learn. -These are not necessarily mutually exclusive, but in my experience they often are due to the way education is structured.</p> - -<h2 id="my-anecdote">My Anecdote</h2> - -<p>In my second semester at SAIT Polytechnic, I took a class entitled <em>Emerging Trends In Technology</em>. -This class was probably the best class I have ever taken. -We had to combine two things:</p> - -<ul> - <li><strong>Hard skills</strong>: learning a new hard skill like Angular, Django, or GPG encryption.</li> - <li><strong>Soft skills</strong>: public speaking and presentation of our ideas.</li> -</ul> - -<p>Soft skills are not usually my area, but I can do public speaking. -I grew up quite religious, so public speaking was drilled into me young. -I liked to go off script and talk about interesting things I found along the way to the actual point. -My creativity was not usually encouraged. -That said, going off script is useful when teaching and presenting ideas; -it gives a natural air to your breath and an unquestionable confidence in your speech.</p> - -<p>This is how we learn: in relationships. -Try explaining ancient Japanese history to a computer science major, or UNIX sockets to an English major and you’ll see what I mean. -If there is nothing for us to connect the knowledge to, it dissipates.</p> - -<p>So why did I do so well in this class?</p> - -<p>Our task for the semester was as follows:</p> - -<ol> - <li>Learn a new subject (any <em>emerging trend in technology</em>) which you find fascinating.</li> - <li>Give a one minute introduction by week three.</li> - <li>Give a 10 minute non-technical overview by week 8.</li> - <li>Give a 20 minute technical explaination and demo by week 13.</li> -</ol> - -<p>This is the only course I have ever taken which lets students’ imagination run wild. -Their presentation, their rules. -They treated the students like adults who know what they are doing. -What happened? Everyone stopped coming because “Oh no! Presentations!”?</p> - -<p>No, exactly the opposite. -There was never more than one student missing. -Every single presentation was at least moderately interesting, -and most students were excited to come to that class. -You could see it in their faces, the way they carried themselves. -Every student picked something unique to their tastes, leaving every student more educated than before.</p> - -<p>This class, unlike many others, encouraged the curiosity of the students. -It rewarded those who had unique interests and an ability to sell others on their ideas.</p> - -<p>The curiosity and the grades were one.</p> - -<h2 id="conclusion">Conclusion</h2> - -<p>Although it’s nice to have a course where these goals align here and there, anyone who has been to collage or university can tell you that is far from the norm.</p> - -<p>On the other hand, I never would have started this site if it wasn’t for that class alone. -So I thank you, Kitty Wong, for getting me started running my own “research blog” (?)</p>Curiosity is fundamental to a deep understanding of any subject. Masters, Ph.Ds, and other fancy name suffixes will never help you if you don’t have the spirit of curiosity burning inside of you. \ No newline at end of file +<p>Happy hacking!</p>Back in part one of my NAS project I discussed how I wanted to set up my hardware. Today, I set up the NAS (almost). \ No newline at end of file diff --git a/_site/sitemap.xml b/_site/sitemap.xml index efba32e..e9a25a2 100644 --- a/_site/sitemap.xml +++ b/_site/sitemap.xml @@ -2,31 +2,31 @@ /emacspeak-tutorials/arrays/ -2021-09-02T16:12:38-06:00 +2021-09-19T18:43:11-06:00 /emacspeak-tutorials/functions/ -2021-09-02T16:12:38-06:00 +2021-09-19T18:43:11-06:00 /emacspeak-tutorials/loops/ -2021-09-02T16:12:38-06:00 +2021-09-19T18:43:11-06:00 /emacspeak-tutorials/pointers/ -2021-09-02T16:12:38-06:00 +2021-09-19T18:43:11-06:00 /emacspeak-tutorials/printing/ -2021-09-02T16:12:38-06:00 +2021-09-19T18:43:11-06:00 /emacspeak-tutorials/structs/ -2021-09-02T16:12:38-06:00 +2021-09-19T18:43:11-06:00 /emacspeak-tutorials/user-input/ -2021-09-02T16:12:38-06:00 +2021-09-19T18:43:11-06:00 /2020/01/22/padding-and-margin/ @@ -149,6 +149,14 @@ 2021-08-31T00:00:00-06:00 +/2021/09/02/suspiciousfileoperation-detected-path-traversal-attempt/ +2021-09-02T00:00:00-06:00 + + +/2021/09/18/how-to-generate-proper-content-mathml-from-katex-or-latex/ +2021-09-18T00:00:00-06:00 + + /blog/