Agile is really important.  I’ve commented before that it’s nothing new, but it’s an important refinement.  It allows you to quickly think about priorities, every day, and then focus on the highest one.  Very important.

I’ve played with a lot of development planning tools over the years, and JIRA Agile is at the top.  But I will always go open source whereever it is an option.  I stood up Phabricator and so far it has been very little pain to get a solid quality set of Agile boards going for my top 4 projects.  The “Conduit” API appears a bit dicey to navigate, but if I can get that going, I’ll have board-driven priorities for all my projects on my home page.  Onwards.

I pushed my http[s] RESTy client and server to github yesterday.  It’s almost there.  Today, working on favicon.ico support.  Cmon!

Persistent notes will go on the wiki.

There are a million ways to do CI.  My goal is to keep it as simple as possible.  Concepts:

  • My target projects include multi-platform C++ applications, Firefox addons, cross-platform desktop apps, mobile apps, and web apps with lots of JavaScript and JavaScript libraries.
  • I want to use a simple-to-use very-capable cross-platform scripting language.  I’ve concluded that I will use JavaScript via Node.js.  It is async and portable from the day it was born.  Installing a node.js module for scripts means they are available from any path on any platform’s command line.
  • For CI tasks, I will avoid dependencies on anything else.  The core Node.js API is very capable.  Modules are available if needed (eg the amazing aws-sdk) but will be avoided whenever possible.
  • I need intelligent placement of CI windows (eg a popup shell for build-on-save).  My Ubuntu i3 window manager is capable of this, as is Autohotkeys under Windows.  These auto-placed windows will always run cross-platform node scripts.
  • If you want to use Powershell, for the love of all that’s holy, make sure you fix its terrible default of hiding debug output with:
       $global:DebugPreference = "Continue"
  • Goals:
    • on code save: automatically build
    • on code commit: automatically build, do any custom build steps, run any unit tests, run any end-to-end tests, and report results dynamically
    • on app production release: compile artifacts, assist in automatic versioning

See the wiki for details.

I’m writing trading software called A better Trader.  For the web UI, I started using some basic JQuery and JQuery UI, with a mind to kick the tires on Bootstrap.  I dug in and after looking at a  bazillion frameworks and libraries (some fading, some up and coming, NONE really owning it)… K.I.S.S. is ruling the day.  I’m finding myself happy with the following:

  • HTML5 with support for multimedia, flexboxes, dragon droppings, etc.
  • JQuery && (JQuery UI || bootstrap)
  • D3 for all things visual… so good…
  • iframes!  Yep!  API calls typically return SVG-based graphic components in iframes, and API parent pages combine them into application-like views.

On the back end, I’m doing RESTful services with boost ASIO.  It’s a light clean set of tools.  I will probably stand up bootstrap on the front end, and node.js on the back end, for comparison.  We’ll see how it goes.

VISUAL_STUDIO_R.I.P._1989-2014

Visual Studio started CLOSING on me as I was editing due to my apparent change in status at some far-flung location for which I have no control. If Microsoft thinks that’s a feature I want in my primary development tool… well, all I have to say is, never again will I rely on it. Eclipse is a decent IDE and I’ll be converting my muscle memory to its ways after a couple decades of baking Visual Studio into my hands. It may be painful but it is also long overdue.

  1. Install Eclipse
    1. I went for the PHP version (“PDT”) since it seemed to have a few bells and whistles (eg git)
    2. The C++ support in Eclipse is called “CDT” and  you can install it by adding this “Work with” repo: http://download.eclipse.org/tools/cdt/releases/kepler
    3. I installed “CDT Main Features”, plus optional Memory View Enhancements, Misc Utils, Multicore Visualizer, Qt support, (ironically) Visual C++ support, and Visualizer Framework.  Not sure about these, time will tell.
  2. Configure Eclipse
    1. The biggest startup challenge is setting up key shortcuts.  The default ones are pretty stupid if you’ve used Microsoft products.  The main thing to remember is that you have to search for existing shortcut keys and manually remove them before you can add a new one, otherwise you will just get conflicts and nothing will work.  This sucks shit but not too bad once you realize what is going on.
    2. Set UTF-8 encoding:
      Windows > Preferences > General > Content Types, set UTF-8 as the default encoding for all content types.
      Windows > Preferences > General > Workspace, set "Text file encoding" to "Other : UTF-8".
  3. Set up projects
    1. Open C++ perspective
    2. Right-click project pane, New…, Blank Makefile, Other toolchain, use existing codebase location for workspace
    3. Search…, Working set, Choose, New, Resource, Name = codebase, click on existing codebase location, OK

More to come as I work with it. I’m moving the notes to the wiki.