Who are they?
This is really just a piece of the United States federal government. No, it's not one of those whose operations are normally top-secret or anything like that. However, they don't like it being known that any given person works for them (including consultants). I will only mention that they are a former client from when I was employed at BAE Systems, doing fairly similar work. I made a good impression on them, and kept in touch over the years, and when they had some suitable work, they contacted me.
To cut through a lot of the red tape inherent in government contracting, I am working as a subcontractor through a fairly large government contractor, who also prefers to avoid the spotlight. So, all I will say about them is that they're not one of the big famous ones most people would recognize, but enough that people in the business would recognize them.
What am I doing, when, where?
I have been working for them since January 2016, on a project to update a cross-domain High Assurance Guard adding a traffic monitoring dashboard, adapting it to new message types, adding other features, fixing bugs, etc. I've also come up with, and implemented, further labor-saving or quality-enhancing ideas, like a translator from OMG IDL to YAML (which they had been doing manually!), and scripts to run several quality-analysis tools on the codebase. I am not only writing code, but also advising on processes, tools, standards, and other such matters, helping define the features and such for similar upcoming projects, and mentoring junior developers. You're not going to get much further detail here, as they also don't like the work being discussed publicly either.
The work has been about 98% remote so far -- everything but a few local meetings, a few trips of a few days each, and a few days of pairing (near me) with a junior developer.
What am I using?
Technologies, techniques, tools, etc. I used there included:
- Ruby, though not on Rails; I turned one piece into a Sinatra app, but most of it does not have a web interface
- Reading an occasional bit of C, but no writing it yet
- MiniTest for testing, with Mocha for mocking and stubbing
- Mercurial/Hg for source code management
- Mingle for project management (task tracking etc.)
- TDD (Test Driven Development) or BDD (Behavior Driven Development), for most things
- I am introducing automated code quality tools such as Reek, Rubocop, Simplecov, etc., including developing scripts to run them all and display the results automagically.