Interests
My main interests are in applying computer science to solve accessibility issues. Other interests include: 3D rendering and Game Engine design. Outside of work, I am usually out taking photographs of nature or playing board games.
Statement
Computer science, to me, means working towards solutions to complex problems. Complex problems are present in all forms and have a substantial range of difficulty. Everyday tasks like managing a schedule or determining the optimal route can present challenges to us. In the domain of complex problems, the issues become more abstract and specialized. In my perspective, computer science involves finding solutions to important problems that can make a difference.
There exists within the domain of computer science a plethora of complex problems - arguably more than some fields. Some of the issues come from the reliance on technology that has existed for decades. Most modern operating systems are Unix-like, meaning they evolved from Unix over the years. An issue with designing an operating system using multiple different technologies, new and old, is tracing problems that may occur. Bryan Cantrill of Sun Microsystems formulated a solution to debugging these monolithic operating system kernels. The result was a system called DTrace[2], capable of changing the control flow of operation to an intermediate measurement tool. The main problem arose from decades of operating system design abstraction building upon past systems. The resulting system was the solution to the complex problem of debugging kernel issues.
System design can lead to complexity, while the best solution is simplicity. As described by Fred Brooks, there is a difference between "essential complexity" and "accidental complexity". Essential complexity is something the system has to accomplish, while accidental complexity is com- plexity as a result and non-necessity. Similar concepts are prevalent in the work of Michael Abrash, specifically in the Graphics Programming Black Book. The book showcases different solutions to a described problem, with each example solved in a distinct programming language. As the book progresses, the complexity of the solutions presented also increases. While the problems presented in the book became more intricate, it highlighted how simplifying the complexity led to superior outcomes. This concept is particularly relevant in computer graphics, where there are numerous tech- niques for rendering, but the simplistic approach typically yields better performance. Another
example of this approach can be seen in the work of John Carmack, a peer of Michael Abrash and well-known for his contributions to ID Software and the creation of the Quake game engine. When Carmack was developing Doom, he opted to simplify the task by having it render in two dimensions to create the illusion of a three-dimensional environment, rather than making it overly complicated for the available contemporary computer hardware. Rendering computer graphics in that way solved the complex issue of performance over visual acuity.
My perspective on computer science is that it is a field dedicated to finding solutions to complex problems. To quote the creator of the modern-day smartphone, Steve Jobs: ’Simplicity came not by ignoring complexity, but by conquering it.’ I selected this sentence as it demonstrates that simplicity is often the superior solution, even when other solutions are available. This is related to the teachings of Fred Brooks on complexity, and the tools re- quired to solve a problem. Complex issues are all around us, and it’s the job of a computer scientist to seek solutions. That is why I am a computer scientist.