Some people argue that Semantic Versioning fails to deliver. Why they expect miracles, I’m not sure. Other people propose entirely new schemes for schemas, because they want to get some different meanings out of their versioning system.

My current approach:

  • Using SemVer gives you compatibility, feature and build information that you would otherwise not get; it may not be absolutely precise to use these big buckets, but having them is good
  • Using SemVer for schemas works for me, in this way:
    • to represent database incompatibility, bump the major version (“don’t fear the major bump”)
    • to represent the need for a database upgrade, bump the minor version
    • perk #1: database upgrades can be completely driven by just the minor version (major versions must match, of course, but patch can be ignored)
    • fallout #1: you MUST consider dbs with older major versions to be incompatible, even if the major bump was not db related
    • fallout #2: you MUST run an upgrade on databases with older minor versions, even if the minor bump was not db related; the upgrade will simply update the internal db version

Works for me.  Upwards.

Check it out on github.

Also, rad-scripts.

My domains just got a little more life in them. As in, an A rating from ssllabs, at least for the moment!

ssl_A

Highlights:

  • Problem: Time Warner has a monopoly on broadband here; they gouge you if you want a static IP; and they do thorough reporting of all IP ranges as dynamic to spamhaus, so no email servers from home folks
  • Problem: 1and1 has a horrible interface to maintain even a handful of domains, as you have to use a useless separate “packages” layer to get enough subdomains; they charge for email
  • Solution: Switched all domains to Google Registrar, which has a much better UI, supports subdomains, and allows domain name email forwarding for free
  • Solution: Once you have control over your domain email, StartSSL provides amazing easy free SSL certs; they have the BEST completely automated service and the best docs; my Apache site configs are now better organized, SNI-based, and the sites are getting great scores on ssllabs, thanks to using Mozilla’s “modern” recommendations
  • Solution: phabricator needs to run on its own domain, and with this new level of control, I can easily get that going; although curl and arcanist are picky about the CA store – I could NOT get them to work with the agile.bitpost.com subdomain, at all, and I really tried – so I went with https://abettersoftware.org

A brave new world.  I love it when a plan comes together.

Node is fun!  Except when it’s not.  It’s pretty easy stuff, but I was burned by a couple things today while debugging.  Take note!

  • You can – and MUST, at times – mess with installed node modules; hack away directly at their source for instantaneous satisfaction!
    • find them here:
      • linux (always easier): ~/.npm
      • Windows: C:\Users\#name#\AppData\Roaming\npm
    • however, watch out that you follow dependencies properly; if a module requires another, it will often keep a copy underneath its folder; there may also be a global copy in the root npm folder
  • debugging is most easily accomplished by the good old-fashioned “jam in print statements” hacker methodology
    • via console.log(“WHAT IS HAPPENING!?);
  • when you grow up and want to get into serious debugging, use linux, and sling your code into the Chrome debugger, via node-inspector

I’ve documented my Phabricator workflow on the wiki.  It’s working great.  The very-configurable workboard column configuration can make querying difficult. But epriestley works hard to keep the whole thing driving forward without it spinning into chaos.  I just did a [git pull] and got the new features I was looking for that allowed me to save sort defaults for my workboards, just perfect.  I’m still waiting for one more feature, but I have workarounds described on the wiki to keep my flow pretty damned tight.