Name: John Benjamin College/University?: University of Missouri - Columbia Course/Major?: Computer Science Degree Program (B.Sc., M, Sc., PhD, etc.) M.S. Email: jcb638@mail.missouri.edu Homepage: github.com/jchbenjamin Availability: How much time do you plan to spend on your GSoC? 30-40 hours per week What are your intended start and end dates? May 16 - August 19 What other factors affect your availability (exams, courses, moving, work, etc.)? I will be doing 3 credit hours of research Background Information I am a master's student in computer science. I've been hacking and programming computers since I was in Junior High. Please summarize your educational background (degrees earned, courses taken, etc.). I have a B.S. in economics from the University of Kansas. Between Spring 2012 and Spring 2013 I did post-baccalaureate study in Computer Science. I have the equivalent coursework for an undergraduate major in Computer Science. Please summarize your programming background (OSS projects, internships, jobs, etc.). I work for a lab associated with the government on campus where we perform remote sensing work across large sets of satellite data. The focus is on high-performance computing and database design. There is a large SVN repository of C++ code for which I am a regular contributor. Please tell us a little about your programming interests. Please tell us why you are interested in contributing to the Boost C++ Libraries. I am interested in Boost because I have been working with Boost for my work and for many classes. Boost has always been the most satisfying library. It is general purpose, always fast, and really attuned to the needs of the programmer. It is an amazing blend of practical use, solid theory, and good engineering. It would be a huge honor to be able to work with this project. What is your interest in the project you are proposing? I am interested in helping to implement a common monad framework for Boost. Have you done any previous work in this area before or on similar projects? I have worked with Haskell for a year with Prof. William Harrison at my school. Last summer I did research with Haskell and wrote a nifty little program that uses a state monad. What are your plans beyond this Summer of Code time frame for your proposed work?. I hope to continue contributing with this work and to help foster awareness and use of monads. I think that Haskell is on to something with some of its language features. Features like lambdas are already becoming part of the new way of structuring programs. I think monads are a powerful way to reason about and understand the properties of a program. But I don't think a full-blown functional language is practical or necessary for most problems. When typical programmers see that Monads can fit into a language used in industry and that builds on what they already know and expect of the behavior of a language they will be more open to thinking about higher level structural concepts from Category Theory. Please rate, from 0 to 5 (0 being no experience, 5 being expert), your knowledge of the following languages, technologies, or tools: C++ :: 4 C++ Standard Library :: 4 Boost C++ Libraries :: 3 Subversion :: 3 What software development environments are you most familiar with (Visual Studio, Eclipse, KDevelop, etc.)? Eclipse, gnu autotools What software documentation tool are you most familiar with (Doxygen, DocBook, Quickbook, etc.)? Doxygen Project Proposal The proposal is not too creative, just what is described in Boost.Functional / Monads Please provide a description of your proposed work. I will work to make sure the Monad implementation meets the actual description of a monad. One thing I think is important is to be able to have recursive monads that are efficient. The IO monad for example is particularly amenable to recursive structures that allow for easy sanitation of input and output. Proposed Milestones and Schedule Rough draft of milestones and schedules: May 19 - June 2 : review Monads and Category Theory. Understand the current state of Boost.Functional / Monad. Read through Pure and discuss how our implementation is different. June 2 - June 30 : Propose, discuss, and finalize working prototype which implements all the required existing instances of monads and meets syntactic conventions. Begin coding July 1 - July 21 : Implement finalized proposal and prepare for testing July 21- end of summer : test and document my work Please provide any feedback. If you need more information or a more specific proposal please let me know. John Benjamin?