My name is Marcos, and I’m a Software Engineer. My biggest area of interest right now is language design and implementation. I also volunteer at the Refugee Education and Training Center of Utah as an organizer and teacher for programming classes, and mentor students throughout the week. Github and resume.


From parsing to interpretation: let’s build a language

An understanding of program evaluation can be a truly enlightening thing for a programmer. By breaking down the process to its essence and implementing the parsing and interpretation steps for a Lisp, we will explore both the interesting and oddly simple algorithms employed in making a language.

Our Lisp will have familiar characteristics like variables, higher-order functions, conditionals, and lexical scope. [slides]

Selected projects and software

  • UtahRETC OSS, content for Java Programming/Oracle Certified Associate Java SE 8 Programmer course I teach at RETC.
  • IRL Random Number Generator, a web service that physically shakes a box with dice using a Raspberry Pi, then snaps a photo which is analyzed for a result and sent back to the user.
  • expresslane is an in memory work queue with channels. The name comes from the the express lane in your local grocery store and not the one in the freeway.
  • serv is a web server with many features such as easy HTTPS setup, subdomains, serve git repositories, create reverse proxies, and more.
  • bool is a domain-specific reactive language and environment for Boolean Algebra and Logic Gate Programming.
  • The consumr project is a crowd sourced platform to help us all learn a little bit more about the things we buy, sell, and consume every day.
  • dearme is the easiest way to journal ever. We send a few texts a day. You answer. We add your Instagram photos. You have a journal.
  • A Brainfuck interpreter and debugger. Runs your code while displaying information about the program and allows you to set break-points in your code as well.
  • A Brainloller interpreter and editor. Runs your brainloller program while displaying execution and memory information.
  • servies is a micro http framework in bash, yes, bash, that uses netcat to listen for and respond to HTTP requests.
  • acm (another configuration module) is a configuration reader. It retrieves values from command line arguments, environment variables, and local files.