Difference between revisions of "User:Bhinesley"

From BRL-CAD
(Log: clarified dates an item was worked on)
(GSoC 2012 Project)
 
(33 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
== Who I am ==
 
== Who I am ==
My name is Brandon Hinesley. I am a 26 year old, unemployed, full-time student finishing up my sophomore year of a Bachelor of Science in Computer Science. I live in California. My preferred coding environment is in any *nix operating system, while using vi and screen.
+
My name is Brandon Hinesley. I'm a 27 year old, unemployed, full-time student in my junior year of a Bachelor of Science in Computer Science. I live in Bakersfield, CA. My preferred coding environment is in any *nix operating system, while using Vim and screen/tmux.
  
 
== Contact ==
 
== Contact ==
 
*IRC nick: bhinesley
 
*IRC nick: bhinesley
*email: [mailto:bhinesley@gmail.com bhinesley@gmail.com]
+
*email: [mailto:bhinesley+brlcad@gmail.com bhinesley@gmail.com]
  
 
== Experience ==
 
== Experience ==
I have 5 years of experience designing [https://picasaweb.google.com/lh/photo/_dWpWLr1esGb16X7_4DlNHMyrgI048JfNwPx7Dl9cn0?feat=directlink commercial plumbing systems in 3d], using AutoCAD. My experience is minimal with C/C++, Java, and Python, but I have coded dozens of VBA programs for several companies I have worked for. I was a Linux systems administrator for a small business network, as well, for about 3 years.
+
I participated in [[#GSoC 2011 Project|GSoC 2011 with BRL-CAD]], under Cliff, my official mentor. I have 5 years of experience designing [https://picasaweb.google.com/lh/photo/_dWpWLr1esGb16X7_4DlNHMyrgI048JfNwPx7Dl9cn0?feat=directlink commercial plumbing systems in 3d], using AutoCAD. I've also [https://picasaweb.google.com/lh/photo/uy-_CFMyTMVmso32iUyjV9MTjNZETYmyPJy0liipFm0?feat=directlink fooled around] a [https://picasaweb.google.com/lh/photo/HAuEHnoczzi-NEM0Gs5fM9MTjNZETYmyPJy0liipFm0?feat=directlink bit] in [https://picasaweb.google.com/lh/photo/RtLNLlTFSzjZHFWkb3lbZtMTjNZETYmyPJy0liipFm0?feat=directlink Blender]. I have experience in C/C++, and Tcl/Tk/Itcl/Itk. For 3 years I was a system administrator for a Linux/Windows based small business network.
  
 
== GSoC 2011 Project ==
 
== GSoC 2011 Project ==
I'm [http://www.google-melange.com/gsoc/project/google/gsoc2011/bhinesley/10001 migrating MGED commands to Archer], and cleaning up existing commands.
+
See the [[User:Bhinesley/gsoc2011|log and timeline]] or the [http://www.google-melange.com/gsoc/project/google/gsoc2011/bhinesley/1000 official GSoC project summary] for details. I migrated MGED commands to Archer/libged, and cleaned up existing commands. Later in the program, my focus shifted towards adding new capabilities to the libged oed commands, rather than simply migrating them.  
  
=== Log ===
+
== GSoC 2012 Project ==
*06/24/11
+
See my [[User:Bhinesley/gsoc2012|GSoC 2012 proposal drafts]].
**Plan
 
***The next step for the translate command is to perform the actual translations.
 
*06/22/11, 06/23/11
 
**Created a ged_is_path function to determine if db_full_path structs contain valid paths (this will be used by the translate command, at least)
 
*06/21/11
 
*06/17/11, 06/20/11
 
**Got behind on this log. I took the day off on Saturday, Sunday, and Tuesday.
 
**I've become more familiar with how the .g database is used internally, and also cleared up some misunderstandings of how the MGED oed operations work.
 
**Implemented fairly robust argument handling for translate command.
 
**Plan
 
***Continue working on 'translate'. The first target is a working command with defaults only.
 
*06/16/11
 
**Started setting up the translate command (temporarily translate2 for mged)
 
*06/15/11
 
**Reading code and messing around with MGED/Archer to get a handle on how oed works
 
**Replaced 'erase_all' command with 'erase -r'
 
*06/14/11
 
**Reading code; I couldn't really get anything accomplished today, so perhaps we'll call this my day off.
 
**Plan
 
***Start work on migrating next set of commands
 
*06/13/11
 
**Tried to fix a bug in Archer's ls command, where any arguments are echoed, regardless of whether they are objects. Identifying the problem was the easy part... it would be complex to fix it properly.
 
**Tracked down a commit that revealed a bug, which prevented ray-tracing.
 
*06/12/11
 
**Fixed a bug in Archer/MGED man command handling
 
**Fixed a bug in ManBrowser
 
**Fully documented and cleaned up ManBrowser
 
*06/11/11
 
*06/10/11
 
**Did a manual inspection of all 58 lsort calls, and ensured that any lsearch's that immediately followed them used the -sorted switch to force binary rather than linear searching.
 
**Plan
 
***Patch bugs, clean up Archer commands, etc.
 
***Continue reading code to figure out how a libged registry might work.
 
*06/09/11
 
**Spent about 1/2 the day trying to build with cmake (I've been using automake up until now). Ended doing a fresh checkout and building outside the source directory, as recommended by ``Eric.
 
**Committed all of the patches that I had submitted before I was given commit access.
 
**Reading code to gain an understanding of how a libged registry might be constructed.
 
*06/08/11
 
**Made ManBrowser fully operational as a replacement for existing faculties.
 
**Added -disabledPages and -enabledPages options to ManBrowser, to allow for fine-tuning of available pages.
 
**Modified Archer/MGED to use ManBrowser, and removed obsoleted faculties.
 
*06/07/11
 
**Changed ManBrowser to inherit from iwidgits::dialog. It now creates the window properly, activates, loads the table of contents and Introduction.html. Selection binding of the ToC is not working yet. Still some cleanup to do.r
 
**Plan: I'd really like to have ManBrowser done within a day or two, so that I still have about a week before my first milestone. We'll see.
 
*06/06/11
 
**Tried to figure out how to reliably center the Manual Page Browser without manually determining the center, etc. Could not get it working correctly if my life depended on it.
 
**Read a chapter on Itcl, and made some changes to ManBrowser because of it.
 
**I received commit access today, so I cleaned things up so that I could start committing regularly. I submitted my working changes to the man command, and my nonworking progress on the ManBrowser mega-widget.
 
*06/05/11
 
*06/04/11
 
**Reading documentation today.
 
*06/03/11
 
**Since the man command was made functional yesterday, today I started work on moving it into it's own file/class in tclscripts/man_browser.tcl. The class is now partially functional, and Archer.tcl has been mostly modified to work with it. I'm having problems with some Itcl/Itk stuff, so it's back to the books tomorrow.
 
*06/02/11
 
**I was still having problems today, but I knew that I really just need to read some more, so that's what I did. A couple hours later I figured out what I was doing wrong and made some progress.
 
**The man command only accepts commands that in fact have man pages as an argument, launches the man page browser,<s> but I'm not sure how to load the page for a particular command yet.</s> and loads the man page from the args. It appears to be fully working, plus improvements. There is still some refactoring/cleanup to do, though.
 
**Note: It would be nice if the man page browser TOC would jump to commands based on keyboard input, or if it had a filter. I've proposed it in #brlcad; I'll look into this once <s>I have a better handle on things</s> I'm done migrating it.
 
*06/01/11
 
**Reading documentation. Resuming migration of man command tomorrow.
 
*05/31/11
 
**Started logging progress to this wiki.
 
**Submitted patch [https://sourceforge.net/tracker/?func=detail&aid=3309910&group_id=105292&atid=640804 3309910]. This modifies Archer's opendb command, so that when no arguments are passed it behaves similarly to MGED. There is a small bug that I'm not sure how to fix yet.
 
**Taking (probably) the rest of the day to read Tcl/Tk and Itcl documentation.
 
*05/30/11
 
**Mostly done adding the man command to Archer; running into a wall with my Tcl/Tk and Itcl knowledge.
 
*05/29/11
 
**Submitted patch [https://sourceforge.net/tracker/?func=detail&aid=3309107&group_id=105292&atid=640804 3309107]. The Archer closedb command is an explicit part of my project.
 
**Submitted patch [https://sourceforge.net/tracker/?func=detail&aid=3309109&group_id=105292&atid=640804 3309109]. Changed MGED's new file input box to a dialog.
 
  
=== General plan ===
+
== Misc ==
My development timeline is rear-loaded. My plan is to migrate the 2 commands in each of the first two milestones quickly. I can then focus on cleaning up Archer  commands in order to become proficient with the relevant code. The remaining commands will be more challenging, so this will help later on.
 
  
=== Development timeline (from proposal) ===
+
=== Edit command, TODO ===
*June 14th
+
# Getting help for the edit subcommands is confusing. ex: 'help translate' doesn't work, since translate is really just a subcommand of edit. The current workaround is to use 'edit help translate' or 'translate help'.
**Milestone 1
+
# It is not possible to use the batch operator '.' as a particular coordinate, i.e. 'translate -k -y . -a cube.s sph1.s sph2.s sph3.s' will not work. It would increase orthogonality if this were supported, although it's not strictly necessary. A workaround for the aforementioned example is 'translate -k . -a -y cube.s sph1.s sph2.s sph3.s'. It would take some doing to get this working, but it could be viewed as an opportunity to refactor some poor design decisions along the way.
***A minimum of 2 commands will have been migrated to Archer by this date.
+
# All testing has been done by hand. There are so many possible combinations of options/args, surely some have been overlooked.
*July 5th
+
# Cleanup logic per TODO/FIXME's in edit.c. Minor impact.
**Milestone 2
+
# The basic commands rotate and scale are not yet implemented
***A minimum of 4 commands will have been migrated to Archer by this date.
+
# Other subcommands could be written, for example:
*July 5th to 11th
+
#* '''swap''' - switch one object out with another
**Prepare for mid-term evaluation: cleanup, review, handle of unanticipated issues
+
#* '''align''' - line several objects up with points on one or two axes (besides an intuitive name, it's not clear if this would be any better than using translate to perform this task, for ex: 'translate -k . -a -y cube.s sph1.s sph2.s sph3.s' moves sph[1-3].s to the same y-coordinate as cube.s, without changing x/z positions.)
*July11th – July 15th
+
#* other ideas?
**Mid-term evaluations due
 
*August 2nd
 
**Milestone 3
 
***A minimum of 7 commands will have been migrated to Archer by this date.
 
*August 16th
 
**Suggested 'pencils down' date
 
**Milestone 4
 
***A minimum of 10 commands will have been migrated to Archer by this date.
 
*August 16th - 22nd
 
**Prepare for firm 'pencils down' date: cleanup, review, handle unanticipated issues
 
*August 22nd
 
**Firm 'pencils down' date
 

Latest revision as of 01:43, 28 March 2012

Who I am[edit]

My name is Brandon Hinesley. I'm a 27 year old, unemployed, full-time student in my junior year of a Bachelor of Science in Computer Science. I live in Bakersfield, CA. My preferred coding environment is in any *nix operating system, while using Vim and screen/tmux.

Contact[edit]

Experience[edit]

I participated in GSoC 2011 with BRL-CAD, under Cliff, my official mentor. I have 5 years of experience designing commercial plumbing systems in 3d, using AutoCAD. I've also fooled around a bit in Blender. I have experience in C/C++, and Tcl/Tk/Itcl/Itk. For 3 years I was a system administrator for a Linux/Windows based small business network.

GSoC 2011 Project[edit]

See the log and timeline or the official GSoC project summary for details. I migrated MGED commands to Archer/libged, and cleaned up existing commands. Later in the program, my focus shifted towards adding new capabilities to the libged oed commands, rather than simply migrating them.

GSoC 2012 Project[edit]

See my GSoC 2012 proposal drafts.

Misc[edit]

Edit command, TODO[edit]

  1. Getting help for the edit subcommands is confusing. ex: 'help translate' doesn't work, since translate is really just a subcommand of edit. The current workaround is to use 'edit help translate' or 'translate help'.
  2. It is not possible to use the batch operator '.' as a particular coordinate, i.e. 'translate -k -y . -a cube.s sph1.s sph2.s sph3.s' will not work. It would increase orthogonality if this were supported, although it's not strictly necessary. A workaround for the aforementioned example is 'translate -k . -a -y cube.s sph1.s sph2.s sph3.s'. It would take some doing to get this working, but it could be viewed as an opportunity to refactor some poor design decisions along the way.
  3. All testing has been done by hand. There are so many possible combinations of options/args, surely some have been overlooked.
  4. Cleanup logic per TODO/FIXME's in edit.c. Minor impact.
  5. The basic commands rotate and scale are not yet implemented
  6. Other subcommands could be written, for example:
    • swap - switch one object out with another
    • align - line several objects up with points on one or two axes (besides an intuitive name, it's not clear if this would be any better than using translate to perform this task, for ex: 'translate -k . -a -y cube.s sph1.s sph2.s sph3.s' moves sph[1-3].s to the same y-coordinate as cube.s, without changing x/z positions.)
    • other ideas?