1- /** 
2-  * Development portfolio page component 
3-  * Modernized version of the original Dev component 
4-  */ 
51export  function  DevPage ( )  { 
62  return  ( 
73    < div  className = "dev"  id = "primary-content" > 
84      < h1 > Software Engineering</ h1 > 
95      < p > 
106        I'm a software engineer who builds interfaces. I'm most familiar with
11-         anything under the Javascript umbrella, whether thats  in browser,
7+         anything under the Javascript umbrella, whether that's  in browser,
128        desktop native through Electron or mobile native through React Native.
139        My most recent work revolves around building React Native applications
1410        with Typescript and a Redux logic core. I've also written a lot of C#
@@ -20,7 +16,7 @@ export function DevPage() {
2016        Micromelon Robotics builds a platform for teaching programming, robotics
2117        and mathematics in schools. I joined Micromelon Robotics on the software
2218        team and have contributed significantly to the development of all
23-         production products. This includes; 
19+         production products. This includes: 
2420      </ p > 
2521      < ul  className = "key-contributions" > 
2622        < li > 
@@ -32,7 +28,7 @@ export function DevPage() {
3228          learning the fundamentals of computational thinking,
3329        </ li > 
3430        < li > 
35-           Micromelon Toolbox (React Native), a utility app desgined  for school
31+           Micromelon Toolbox (React Native), a utility app designed  for school
3632          staff to update and manage a class set of Micromelon Rovers
3733        </ li > 
3834        < li > 
@@ -44,18 +40,18 @@ export function DevPage() {
4440
4541      < h2 > Some  Challenges < / h 2 > 
4642      < p > 
47-         I'll highlight a couple key challenge  faced in the last few years when 
48-         developing with React Native.
43+         I'll highlight a couple of  key challenges  faced in the last few years
44+         when  developing with React Native.
4945      </ p > 
5046
5147      < h3 > Async  Capable  WebView  IPC < / h 3 > 
5248      < p > 
5349        The first version of the Code Editor we built was with Electron. However
5450        a growing number of schools were adopting device policies which had
55-         students using Chromebooks or iPads exclusively making it necessary we 
56-         have an editor which would run on these platforms. We decided to build a 
57-         mobile compatible Code Editor on React Native. I was one of the key 
58-         developers involved in this process.
51+         students using Chromebooks or iPads exclusively making it necessary that 
52+         we  have an editor which would run on these platforms. We decided to
53+         build a  mobile compatible Code Editor on React Native. I was one of the
54+         key  developers involved in this process.
5955      </ p > 
6056      < p > 
6157        Largely  the  models  of  Electron  and  React  Native  are  similar  and  a  port 
@@ -85,26 +81,26 @@ export function DevPage() {
8581      < / p > 
8682      < p > 
8783        Once this logic is fulfilled and the original Webview needs a response,
88-         our JS thread post office resolves it's  promise and sends a sync IPC
84+         our JS thread post office resolves its  promise and sends a sync IPC
8985        message to the original Webview. The Promise Post Office in the original
90-         webview can cross reference the IPC message with it's  unfulfilled
86+         webview can cross reference the IPC message with its  unfulfilled
9187        promise, and finally fulfil it with the data it just received.
9288      </ p > 
9389      < p > 
9490        The  complexity  comes  with  the  nature  of  the  Code  Editor  having  multiple 
9591        webviews  to  handle  each  of  the  coding  environments  and  every  thread  of 
96-         python  code  generating  it 's  own Webview as well as the bluetooth
92+         Python  code  generating  its  own  Webview  as  well  as  the  bluetooth 
9793        peripherals  we  connect  to . 
9894      < / p > 
9995      < p > 
100-         By far, the most challenging aspect to this was dealing with python 
96+         By far, the most challenging aspect to this was dealing with Python 
10197        execution in the webview itself. By default, React Native has a single
10298        JS thread. Hypothetically, a user executing a forever while loop that
10399        requires IPC messages means the entire JS thread is consumed receiving
104-         messages. This issue required it's  own solution by  with message queues
105-         and  breathing room delays, I won't get into that here. If you want to
106-         hear  more about that and how I hate the way Android bundles Webview
107-         execution  into a single thread, please email me.
100+         messages. This issue required its  own solution with message queues and 
101+         breathing room delays, I won't get into that here. If you want to hear 
102+         more about that and how I hate the way Android bundles Webview execution 
103+         into a single thread, please email me.
108104      </ p > 
109105      < h3 > Accessibility  In  Micromelon  Junior < / h 3 > 
110106      < p > 
@@ -116,11 +112,11 @@ export function DevPage() {
116112        level accessibility feature built into all iOS devices. The majority of
117113        our app's interface was already accessibility conscious because of React
118114        Native's built-in accessibility features however a few key buttons were
119-         not working with Switch Controls. It  was responsible fix this.
115+         not working with Switch Controls. I  was responsible to  fix this.
120116      </ p > 
121117      < p > 
122118        To  achieve  this ,  I  first  had  to  understand  how  Switch  Control  works  by 
123-         configuring  it 's  use on my iPad. I'd  encourage  anyone  to  attempt  a 
119+         configuring  its  use  on  my  iPad .  I 'd encourage anyone to attempt a
124120        similar  exercise ,  it 's revealing seeing just how difficult it can be to
125121        interact  with  an  interface  which  unimpaired  users  deem  to  be  simple . 
126122        After  identifying  the  problems  with  Switch  Control  usage ,  I  refactored 
@@ -135,11 +131,11 @@ export function DevPage() {
135131        Other components we had with swipe interactions were remarkably
136132        difficult for Switch Control to interface with. To alleviate this, I
137133        made sure any of these complex components properly implemented props
138-         like accessibilityActions to outline it's  purpose for Switch Control to
134+         like accessibilityActions to outline its  purpose for Switch Control to
139135        read and present directly to the user.
140136      </ p > 
141137      < p > 
142-         I 'm glad to say I was able to make Junior 100% accessibility  conscious. 
138+         I 'm glad to say I was able to make Junior 100% accessibility- conscious. 
143139        I ' m  slightly  disheartened  I  didn 't think to check this before the app
144140        was  released .  It 's unfortunate that it wasn' t  a  front  of  mind  priority 
145141        and  equally  unfortunate  to  see  how  limited  some  of  the  React  Native 
0 commit comments