JUNE 5, 2018

Surveying the code

JUNE 5, 2018

Surveying the code

Richard W. is a Senior Software Engineer at PayTrace. He recently created his own customized bookmarking solution to make his job more effective. PayTrace encourages continual professional innovation.  Thank you, Richard, for having the creative mindset to build a solution.

by Richard W.

Computer programmers work with a lot of source code - projects ranging from hundreds to tens of thousands of files with hundreds or thousands of lines each. Being a successful, professional programmer means maintenance work that involves wading through all this code to locate a few specific lines relevant to the problem at hand. And, thanks to PayTrace's willingness to invest my time in its own success, the world now has a tool custom-made to simplify that work.

I've used a lot of different tools for working with source code from vi to Visual Studio and Eclipse. I've found I prefer a "smart editor" -  a text editor edging toward an integrated development environment (IDE) but foregoing any "smarts" that take a long time to load. I'm also a fan of open source editors that run on Windows, MacOS, and Linux. For now, my go-to editor is Atom. But neither Atom nor any of the full-fledged IDEs I've used offered what I'd been wanting: a robust, professional-grade bookmarking system for codebases.

One bright point of being a programmer using an extensible text editor is having the exact skills needed to create new tools custom-suited to my needs when off-the-shelf solutions aren't cutting it. I started out with envy for Google Chrome's bookmark system (not significantly different from the other browsers): I could visit pages, or even specific anchors on pages, and save them permanently for later reference and arrange the bookmarks in a hierarchy. I could use the editor's built-in bookmark system, but those usually don't support hierarchical ordering, user-specified ordering, or export/import. Or, through the course of my code excursions, I could note down the file and line number, but that approach has a user- surly interface: use copy/paste to open the file, then explicitly "go to" the typed-in or copy/pasted line number. Either way, the reference was only good until lines were added or removed earlier in the file, so the system was extremely fragile to changes or work on separate branches of the repository. 

What I wanted was an interactive "treasure map" with point-and-click to visit the bookmarked locations and drag-and-drop, hierarchical arrangement of the bookmarks. And notes - I definitely wanted to associate notes with the bookmarks.

With a basic plan in hand, I dusted off my Atom package-building skills (which look remarkably like Web development skills...hmmm) and built "casefile" -  a bookmarking system for serious programming professionals. It serves the same purpose as a detective's case file: bringing together all the relevant bits in a way that is easy to review and share. I made the casefile entries robust against changes (for projects managed in Git, anyway) through use of diffs against the commit referenced by each bookmark. And the whole casefile can be opened in a text format inside the editor for persistence in a ticketing system or for sharing with colleagues. It's not pretty yet, but it functions well enough that I use it at least once a week.

I'm proud that PayTrace supported this work because it makes me (and maybe my colleagues, too) a more effective programmer. And while the specific implementation is Atom-dependent, the overall architecture is not tied to Atom and it should be possible, if someone steps up and undertakes the effort, to integrate this functionality (down to the text representation) into other text/code editors or IDEs.

Perhaps, if circumstances align, I will be that someone; perhaps you will be, and make this a little better world in which to program.