Skip to content

Instantly share code, notes, and snippets.

Avatar
🧑‍🚀

Mike McNeil mikermcneil

🧑‍🚀
View GitHub Profile
@mikermcneil
mikermcneil / principles-for-delivering-professional-services.md
Last active Aug 11, 2022
Principles for delivering professional services
View principles-for-delivering-professional-services.md

Principles for delivering professional services

mikermcneil, 2022-08-10

A few principles for delivering a great customer experience and successfully completing professional services engagements. The following are lessons that I had to learn the hard way. Hopefully, they save you some trouble!

  1. Daily communication with the customer (like a standup during the engagement)
  2. Timebox the engagement (ok to scope features, but also set a timeframe.)
  3. Make it explicit who is working on it and how many hours they'll be working per week.
  4. Do frequent demos during the project (weekly or biweekly). If the customer doesn't show, demo internally anyways. Fix bugs that come up in the demos before moving on. Fri morning or Thu afternoon demos work best, to leave time for bug fixes before the week (and sometimes project timeframe) ends.
@mikermcneil
mikermcneil / do-i-need-queues-in-nodejs.md
Created Jan 17, 2022
Do I need queueing in Node.js / Sails.js?
View do-i-need-queues-in-nodejs.md

Question

So I guess in Rails and Laravel world queues and background jobs are really all front and center but I don't hear that mentioned even moderately in Node. What will be the equivalent?

Answer

Mike McNeil sent the following messages at 8:21 PM

The equivalent is like what's in the sendTemplateEmail() helper in default new sails apps, at the bottom

I know of a couple of valid reasons to use queues in Node.js:

@mikermcneil
mikermcneil / monitor-a-sails-app-in-papertrail.md
Last active Aug 3, 2022
Here's how to monitor your Sails app for missing `await`s, 500 errors, failed script runs, and more
View monitor-a-sails-app-in-papertrail.md

Monitoring your Sails app for errors

Monitor your Sails app for missing awaits, 500 errors, failed script runs, and more!

Here's how to monitor a Sails app for errors using Papertrail, a logging tool that works with anything but is particularly easy to use as a Heroku add-on. This search string uses Papertrail's search syntax, but the log output it's searching for is not Heroku-specific; neither is it Papertrail-specific. (Search "sails.js platzi" for a tutorial with an example involving Heroku. See part 5.) Anyway, you can use the general principles here to monitor a Sails app using any logging tool.

(error: Sending 500 ("Server Error") response:) OR (error: Background instruction failed:) OR (WARNING: A function that was initially called over 15 seconds) OR (Error: Internal error occurred while running) OR (warn:) OR (Could not run script)
@mikermcneil
mikermcneil / finding-the-fault-lines.md
Last active May 9, 2021
Finding the fault lines - Longitudinal vs latitudinal work division
View finding-the-fault-lines.md

Finding the fault lines

May 8, 2021

In our agile world, we often divide up tasks longitudinally; that is, along goal-oriented lines. This results in mini-projects like “put documentation on the website” or “put a contact form on the website”.

This is an intuitive and low-effort management exercise, which can have great results. And I love how it lets you put trust in people to figure things out. The problem is, to assign a directly responsible individual (DRI), they have to be the right person to make decisions about every part of the project: from the marketing copy to the coding to the deployment of the changes. If they don't? Not only can it be very frustrating for them, but output and quality of work can suffer. Not to mention that getting things back on track can eat up valuable time for other members of the team.

Alternatively, you can divide tasks latitudinally - along their natural, functional lines. These lines have to be felt out, since they depend on the nature of the types of work in

View is-sails-maintained.md

Originally posted in sindresorhus/awesome-nodejs#998 (comment)

Just want to clear things up here: the Sails framework is actively maintained and widely used. For context, I am its creator and BDFL. @rachaelshaw is lead maintainer, and @eashaw is community manager. @DominusKelvin also maintains an active supplementary community called SailsCasts. https://sailsjs.com/support has a full list of resources you might want to check out. As far as what that means: there's a daily check for vulnerable code paths, a weekly roundup of community GitHub issues/PRs, and active development as needed to fix any priority bugs. This is all funded by Flagship customers and supplemented by my continued personal financial commitment to keep the Sails framework alive.

This will continue for many years to come.

image ![image](https://user-images.githubusercontent.com/618009/10878

@mikermcneil
mikermcneil / avatar.component.js
Last active Jun 8, 2020
Reference component (parasails / Vue)
View avatar.component.js
/**
* <avatar>
* -----------------------------------------------------------------------------
*
* @type {Component}
*
* --- SLOTS: ---
* N/A
*
* --- EVENTS EMITTED: ---
@mikermcneil
mikermcneil / How to name a noun.md
Last active Jul 16, 2021
Naming conventions for things like variables, parameters, and attributes.
View How to name a noun.md

How to name a noun

Some of the naming conventions we use at Sails for nouns like variables, parameters, property names, config settings, database attributes/columns/fields, and so on.

Why bother?

Naming is hard. And naming conventions usually end up being wrong, or incomplete at best.

This may be an unpopular opinion, but in my experience, coming up with new methodologies for variables and such doesn't usually create a lot of value for an individual developer. So why bother?

@mikermcneil
mikermcneil / allow-emojis-mysql-with-nodejs-using-sailsjs-and-waterline.md
Created Mar 12, 2019
To allow emojis for one of your attributes when using Node.js / Sails / Waterline (MySQL)
View allow-emojis-mysql-with-nodejs-using-sailsjs-and-waterline.md

To allow emojis for one of your attributes when using Node.js / Sails / Waterline

Use the following auto-migration directive for MySQL:

columnType: 'LONGTEXT CHARACTER SET utf8mb4',// « allow emojis
@mikermcneil
mikermcneil / stripe-card-element.component.js
Created Feb 9, 2019
An example of a component for using Stripe Elements with parasails / Vue.js (`<stripe-card-element>`)
View stripe-card-element.component.js
/**
* <stripe-card-element>
* -----------------------------------------------------------------------------
* A wrapper for the Stripe Elements "card" component (https://stripe.com/elements)
*
* Example usage:
* ```
* <stripe-card-element stripePublishableKey="…" v-model="formData.cardInfo"></stripe-card-element>
* ```
*