Lamont SamuelsI’m a software engineer that loves to eat, hike, and code up hard problems
Projects
Resume
Below you can download both my resume and curriculum vitae. Along with my research and work experience, my CV includes additonal information about
my publications, awards, projects, and acheivements.
I received a Ph.D. in Computer Science at the University of Chicago. My research was focused in areas of programming languages/compilers, computer graphics, and Functional Reactive Programming. Prior to graduate school, I earned my B.S. degree in Computer Science from California Polytechnic State University.
Here are a few tidbits that I enjoy doing:
Hiking and running (not much hiking in Chicago) but running down the lakefront is amazing.
Listening to music and discovering new music (thanks Spotify) are hobbies I can't live without. I also like going to local shows. Chicago has so many amazing theather houses but I especailly enjoy the shows at Steppenwolf .
One of reasons I decided to get my PhD is that I love learning about new technologies in computer science. I think I'm lucky to be part of a profession that is continuously expanding, generating new ideas and changing the lives of everyone. Thus, I really enjoy buying new books to expand on my knowledge on my profession.
Currently I'm reading a book about writing better code: Clean Code(by Robert C. Martin).
Screaming at the tv while watching Tennis. I'm a huge tennis fanatic!
Interactive with people in social settings. I really do feel that learning from different viewpoints/perspectives allows you to become a better rounded person. :)
Diderot
Diderot is a parallel domain-specific language designed for biomedical image-analysis and visualization algorithms that provides a
high-level mathematical programming model. Diderot allows domain experts to implement familiar image analysis and visualization algorithms
directly.The mathematical style of Diderot also makes it a great candidate for educational settings where students may not have time to learn
more complex methods. Since Diderot is a domain-specific language, it achieves good performance on a range of parallel platforms, without
requiring knowledge about parallel programming. This removes the burden of forcing programmer to learn low-level details of various target
platforms but rather focus on implementing their algorithms.
Contributors :
Charisee Chiw,
Gordon Kindlmann,
John Reppy,
Lamont Samuels, and
Nicholas Seltzer.
Contributions
My contributions to the project were mainly in the compiler (written in Standard ML) and language design:
Implemented the entire GPU backend of our runtime system. This includes the implementing the runtime code and actual C & OpenCL code during the code generation phase of the compiler.
Designed and implemented a communication system with in the language and runtime to allow strands (i.e. lightweight autonmous threads) to communicate spatially or globally (i.e. sharing information with a large set of strands within the system).
The communication system exposed me to all parts of our compiler (i.e., from the parsing stage, ILs, to code generation) and runtime.
Program Images
More Info
The official Diderot Project website has additional information, paper & poster publications, and examples. You can also checkout our svn resopority listed below.
Tesel
Tesel is an embedded domain-specific language in Swift that is used to develop efficient and declarative computer graphics applications using the Functional Reactive Programming paradigm. With being embedded within the Swift, Tesel has the advantage of using the language features and tools (e.g., XCode, the Swift compiler, LLDB, etc.) of Swift augmented with FRP abstractions such as signals for constructing declarative dependency graphs. In particular, Tesel provides a new FRP abstraction (i.e., signal groups) for distinctly propagating discrete and continuous signal changes efficiently through the program. Signal groups allow for portions of the dependency graph to be independently executed in parallel for better performance. This work was solely developed by myself as part of my dissertation, which includes a detailed description of the language and its implementation, a formal operational semantics and the implementations for the Tesel compiler and runtime system. The dissertation also shows how Tesel can be used to write practical and efficient graphics applications.
Contributions
Tesel contributes to the areas of continuous-based FRP and low-level computer graphics. The features I provide in Tesel are listed as follows:
Devised and developed the language’s constructs and combinators as a macOS framework to allow for easy integration into Xcode for programmers
Constructed a runtime system written in Swift that includes a rendering system that uses the Metal API (∼4k lines of code)
Implemented a compiler written in Standard ML (∼4k lines of code) that builds a standalone application using xcode-build and the Tesel runtime and framework.
Provided parallelism mechanisms using Grand Central Dispatch (GCD) to allow programmers to execute portions of their code in parallel, which led to a 2x speedup in applications.
Formalized the evaluation model of Tesel by providing a formal operational semantics of the language.
Example Programs
The following are simple programs that can be easily implemented in Tesel.
A implementation of Chris Reynolds's Boids algorithm. The program is a simulation of
flocking behavior of birds flying or foraging together in a group.
This Tesel application computes the Mandelbrot set and displays it as a texture to the display.
A simple application of a rotating flat-shaded cube.
More Information
Currently the disseration is being approved by the disseration office of my university. Once everything is official, I will provide links to my dissertation and source code for Tesel.
LensIQ
LensIQ is an innovative mobile application for identifying and providing useful information for progressive lens engravings. Currently, we are in the process of patenting portions of our application; therfore, I cannot discuss
specific details.
Contributions
I am the lead developer on the mobile-side of the applicaiton and my contributions to the project is as follows:
Implemented the lens identification algorithm using the k-NN machine learning algorithm
Designed a custom-made user interface for the entire application in Adobe Photoshop
Incorporated the user-interface layout into separate Swift storyboards using Auto Layout and
custom Swift classes
Developed the majority of the application, which entails coding 39 model-view-controller (MVC)
classes (∼3.5k lines of code)
Mochi
Mochi is an intermediate language simulator that allows users to write and run code written in mil (mochi intermediate language) that I wrote.
During my compiler's course, I wanted a simulator that could run my IL code. This would have saved hours of tedious IL debugging. I also realized
that I really enjoyed computer languages and compiler construction; therefore, I decided to create an IL simulator for my senior project.
Implementing this simulator, I knew would give me more exposure to languages and compilers but also help students currently taking the course.
Ultimately, my main objective was to produce an application that allowed students to run and debug their IL code to ensure that it was performing
correctly to their compiler's implementation.
Features
Miloc represents an intermediate language that contains all the common intermediate
language instructions for compilers such as:
Arithmetic
Boolean
Comparison and Branching
Loads
Stores
Invocations
Allocation
I/O
Moves
Mochi also contains some additional interesting features such as:
A text editor that allows you to create, open, and save mil files
Search features that you allow you to quickly find lines and functions within a file
A debugger so you can step through your code and see the changing states of memory, registers, and local and global variables
Screenshots
Main window
Setting a breakpoint
Debugging interface
Download
Mochi is a java application and requires Java Virtual Machine version 1.5 (at least). The download is in the form of zip file that contains the following: