User:Hcurtis0010/GSoC2014Proposal

From BRL-CAD
< User:Hcurtis0010
Revision as of 06:38, 20 March 2014 by Hcurtis0010 (talk | contribs) (Henry Curtis's GSoC 2014 Proposal)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Personal Information

Name: Henry Curtis

E-mail Address: hcurtis0010@kctcs.edu

IRC Username: hcurtis


Background Information

This summer I hope to participate in GSoC for the first time. My background is a little unusual in that I worked in the advertising industry for 11 years before being downsized. Later, I was fortunate enough to be selected for a program called Code Louisville whose purpose is to increase the number of programmers in my area.

Code Louisville was a positive experience that led me to return to school full time in order to earn a programming degree. I am currently in my second year at Jefferson Community and Technical College, and my course work thus far has included C++, Java, HTML5, CSS, JavaScript, and PHP.


Project Title

Using a Reusable Library to Improve DXF Import


Project Summary

DXF, or Drawing Exchange Format, is graphic image format often used with CAD software like OpenSCAD. Currently, OpenSCAD imports DXF manually and cannot handle elements such as curves. To address this problem, I will convert BRL-CAD's DXF importer into an external library that can be used with OpenSCAD. Because only one OpenSCAD class contains code for the DXF import, modifications to the import will not negatively affect the other source code.


Detailed Project Description

Objective Enable the use of a convenient, reusable BRL-CAD library for DXF import to OpenSCAD


Project Scope and Approach Within this proposal, I consider improving import as critical and deem related tasks (such as improving export) as something that can also be done if time permits.

Also, I will use a wide variety of resources to help me achieve my goal. These include my own knowledge, mentor feedback, books, articles, and sites like forum.openscad.org.


Documentation A library's documentation is important because it helps determine the way in which that library will be utilized. Consequently, I will append Doxygen comments to the library files.


Additional Comments It bears mention that the use of a reusable external DXF import library is a good idea also because BRL-CAD's license is less restrictive than that of OpenSCAD. That increases the likelihood that the library will be disseminated widely, taking advantage of one of open-source software's major benefits.


Deliverables/Outcomes A basic, reusable, external DXF import library that supports items like splines and that will be incorporated into OpenSCAD

A stronger bond between the BRL-CAD and OpenSCAD communities--the result of a true win-win situation


Development Schedule April 21-May 19 (Community Bonding Period) At this time, I will learn about the way in which BRL-CAD conducts business. I will also make use of the valuable opportunities I will have to interact socially with my teammates.

Moreover, during this phase I will be examining the source code, reading the documentation, and conducting research. Next will come in-depth analysis, algorithm creation, and coding.

Throughout this period, I will discuss with the mentors and other developers how I can optimize the improvements I am incorporating and what the final plan for creating the new library will be. The result will be a well-considered course of action.


May 19-June 23 (Evaluation Period 1) Although there might be some additional research, analysis, and design during this phase, my principal focus will be writing code. I will check in often with my mentors and record my daily progress in a log.


June 23-July 27 (Evaluation Period 2) I will continue writing code, checking in with my mentors, and recording my progress.

More specifically, this phase will involve activities such as the implementation of the new library's structures, the selection of functions' details (such as return types and parameters), unit-level testing, and code-coverage assessment.

I will also incorporate error handling into my code and add documentation. Incidentally, the documentation will appear not only on the BRL-CAD wiki but also in pdf files.


July 28-August 3 (Wind-Down) This is when I will tie up any loose ends. This might include scrubbing code, improving the documentation, and performing additional tests. I also will produce demos for the new functionality and conduct performance analysis.


August 4-10 (Delivery) I will put the final touches on the project and deliver it.


Deadlines August 11: Recommended “pencils down” date August 18: Final “pencils down” date


Major Milestones By June 23: Finish a solid first draft of the new library

By July 27: Complete unit testing of the new library

By August 3: Incorporate the finished new library into OpenSCAD

By August 10: Deliver the final product to my mentoring organization


Time Availability

I will work on the project 40+ hours/week.

I will have no competing demands on my time during the Summer of Code period:

I will not have any other jobs, and I will not be in school.

I am single and have no children.

I will not be taking any trips during the Summer of Code period. (My plans are firm on that.)

Also, once GSoC ends, I will continue contributing to my project, to BRD-CAL, and to OpenSCAD.


Why BRL-CAD?

I appreciate how encouraging and helpful BRL-CAD’s mentors have been from the start. In addition, I like the very detailed and well-organized GSoC information that the organization has provided online. It is obvious that the mentors' level of sincerity and professionalism is very high, and that is a another reason I am interested in working with them.


Why Henry Curtis?

Although my programming skills are still developing, I can offer the team many strengths.

I am an experienced, mature worker who will have no problem putting in 40+ hours a week, following action plans, and meeting deadlines. I have had many years of full-time employment in which doing that was critical to my success.

As I wrote above, I will have no competing demands on my time during the Summer of Code.

I have no problem receiving and offering constructive criticism.

I am an excellent communicator both verbally and in writing.

I am organized and an outstanding planner.

I have extensive experience working in teams because of my many years in advertising (an industry in which teamwork is crucial). Also, I have worked in collaboration with others on many school projects. My team experiences have helped give me the right attitude to succeed in open-source projects.

I enjoy learning new things, and I possess a naturally analytical mind.

I am passionate about doing a good job, and I feel fortunate to have found an organization that might be open to giving an entry-level programmer like me a chance.

I like geometry, and the technology behind CAD fascinates me.

Because both BRL-CAD and I are in the United States, coordinating schedules with mentors (if needed) would be easy.