The Pursuit of
The Perfect Workflow
By Josh Nederveld
Who is this Josh?
Alternatively, a short introduction.
1. What's a workflow?
3. How do you improve a workflow?
2. How do you know when a workflow needs improvement?
So what's a workflow?
A workflow is an organized way of getting things done.
It's not what you're doing, it's the way you do it.
A good workflow doesn't come from having a lot of shiny tools.
Continuous Improvement.
Continuous Improvement.
How do you know when a workflow needs improvement?
Frequency
Do I do this task often?
Effort
Can I reduce the amount of
time/energy/money
that it takes to do this task?
Severity
How big is the problem?
The Principles of an Effective Workflow
Not perfect; effective.
Planning
Don't fall for the trap of excitement.
Structure
Like the edge pieces of a puzzle.
Simplicity
Shoot for easy repeatability.
Efficiency
Do we get faster results?
Quality
Do we get a better result?
Flexibility
How easy is it to add a new step?
Documentation
A sharable workflow is a good workflow.
Some Applications
of the front-end variety.
CSS Progression
CSS to SCSS with Codekit to SCSS with Gulp
#header li {
float: left;
display: inline;
text-indent: -9999px;
}
#header li a {
display: block;
background-image: url(images/nav.gif);
height: 12px;
line-height: 12px;
}
#header li a.home {
width: 66px;
background-position: 0px 0px;
}
#header li a.about-us {
width: 93px;
background-position: -66px 0px;
}
#header li a.contact {
width: 82px;
background-position: -159px 0px;
}
#header li a.facebook {
width: 97px;
background-position: -241px 0px;
}
#header li a.home:hover,#header ul.home a.home {
background-position: 0px -12px;
}
#header li a.about-us:hover,#header ul.about-us a.about-us {
background-position: -66px -12px;
}
#header li a.contact:hover,#header ul.contact a.contact {
background-position: -159px -12px;
}
#header li a.facebook:hover {
background-position: -241px -12px;
}
CSS (circa 2009)
.logo {
position: absolute;
top: 0;
left: $cntrpad + 65;
z-index: 999;
border-radius: 5px;
@media ($desktoplg) {
left: $cntrpad-desktoplg + 65;
}
@media ('min-width:#{$cntrmaxwidth}') {
left: 50%;
}
a {
display: block;
text-indent: -9999em;
height: 50px;
margin-top: 18px;
background-image: url(../images/logo.png);
}
&, a {
@extend %transparentselection;
}
}
SCSS (circa 2012)
The problem with Codekit
/*——————————————————————————————————————————————————————————
/ Logo-Background -> Logo-Column
——————————————————————————————————————————————————————————*/
&-background {
background-color: #ffffff;
position: relative;
z-index: 2;
@include css_by_breakpoint((
default: (
padding-top: scut-em(10),
padding-bottom: scut-em(10)
),
medium: (
margin-bottom: scut-em(-96),
padding-top: scut-em(27),
padding-bottom: scut-em(27)
)
));
}
SCSS Today
{Insert browser-sync demo gif here.}
Do we have time
for one more?
if ( true === $response ) { goToNextSlide(); }
<table class="footer mobile-footer" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: none;
border-collapse: collapse; border-spacing: 0 !important; margin: 0 auto; mso-table-lspace: 0pt; mso-table-rspace: 0pt;"
border="0" cellpadding="0" cellspacing="0" bgcolor="#215a3f" width="100%"><tr style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;"><td class="footer-gold-cell" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt;" bgcolor="#f6a704" height="10px"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxz/98942/14143/spacer.gif" height="10" width="1"
style="-ms-interpolation-mode: bicubic; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0
!important; outline: none !important; text-decoration: none !important;"></td></tr><tr style="-ms-text-size-adjust:
100%; -webkit-text-size-adjust: 100%;"><td class="footer-green-cell footer-contact-cell" style="-ms-text-size-adjust:
100%; -webkit-text-size-adjust: 100%; color: #fff; font-family: Arial, sans-serif; font-size: 10px; line-height: 24px;
mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 15px 5px 0 5px;" bgcolor="#215a3f" align="center"><a
class="footer-logo" href="http://saintleo.edu/" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxg/98942/14129/slu_bottom2.png" style="-ms-interpolation-mode:
bicubic; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0 !important; outline: none !important;
padding-bottom: 8px; text-decoration: none !important;"></a><br style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;"><span class="footer-address" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; padding-right: 15px; white-space: normal;">Saint Leo University, 33701 State Road 52,
Saint Leo, FL 33574-6665</span> <span class="footer-phone" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust:
100%; padding-right: 10px;">(352) 588-8283</span> <span class="footer-tollfree" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;">(800) 334-5532</span><br style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust:
100%;"><a class="footer-pardotlink" href="%%view_online%%" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust:
100%; color: #fff; font-family: Arial, sans-serif; font-size: 10px; line-height: 24px;">View email in browser</a>
| <a class="footer-pardotlink" href="%%email_preference_center%%" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; color: #fff; font-family: Arial, sans-serif; font-size: 10px; line-height: 24px;">Update
your email preferences</a> | <a class="footer-pardotlink" href="%%unsubscribe%%"
style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #fff; font-family: Arial, sans-serif;
font-size: 10px; line-height: 24px;">Unsubscribe</a></td></tr><tr style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;"><td class="footer-green-cell footer-social-cell" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding-top: 15px;" bgcolor="#215a3f"
align="center"><a href="https://www.facebook.com/mysaintleou" target="_blank" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;"><img src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxj/98942/14127/facebook.png"
style="-ms-interpolation-mode: bicubic; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0
!important; outline: none !important; text-decoration: none !important;"></a> <a href="https://twitter.com/mysaintleou"
target="_blank" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxx/98942/14141/twitter_1.png" style="-ms-interpolation-mode: bicubic;
-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0 !important; outline: none !important;
text-decoration: none !important;"></a> <a href="https://www.instagram.com/mysaintleou" target="_blank"
style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxs/98942/14137/instagram.png" style="-ms-interpolation-mode: bicubic;
-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0 !important; outline: none !important;
text-decoration: none !important;"></a> <a href="https://www.youtube.com/channel/UCKhGARkVEEPN3Y8KlFYlTDw"
target="_blank" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxq/98942/14133/youtube_1.png" style="-ms-interpolation-mode: bicubic;
-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0 !important; outline: none !important;
text-decoration: none !important;"></a></td></tr><tr style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust:
100%;"><td bgcolor="#215a3f" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; mso-table-lspace: 0pt;
mso-table-rspace: 0pt;"> </td></tr></table></body></html>
HTML Emails
<table>
<tr>
<td pardot-region>
<img class="article-image article-img-max" src="http://placehold.it/277x285"/>
</td>
<td pardot-region class="article-right article grapefruit">
<table>
<tr>
<td class="article-text">
<h1 class="article-text-title">Upcoming Open House Preview Day</h1>
<p class="article-text-description">
Tour our beautiful campus, meet faculty and staff,
dine in our dining hall, and interact with current
students.
</p>
<span class="article-text-more"><a href="#" target="_blank">Learn More</a></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
HTML Email Partials!
var gulp = require('gulp');
/* Gulp Plugins */
var fileinclude = require('gulp-file-include');
var rename = require("gulp-rename");
var sass = require('gulp-sass');
var inlineCSS = require('gulp-inline-css');
var htmlmin = require('gulp-htmlmin');
var browserSync = require('browser-sync');
gulp.task('html-includes', function () {
var stream = gulp.src('./src/templates/newsletter/*.tmpl.html')
.pipe(fileinclude())
.pipe(rename({
extname: ""
}))
.pipe(rename({
extname: ".html"
}))
.pipe(gulp.dest(function (file) {
return file.base + '/compiled/';
}))
return stream;
});
gulp.task('compile-sass', ['html-includes'], function () {
var stream = gulp.src('./src/templates/newsletter/*.scss')
.pipe(sass.sync().on('error', sass.logError))
.pipe(gulp.dest(function (file) {
return file.base + '/compiled/';
}))
return stream;
});
/*
htmlmin comes before inlineCSS because it was stripping the semicolon on the last value of an inline CSS
tag, which caused all sorts of problems in Pardot.
*/
gulp.task('inline-css-and-minify', ['compile-sass'], function () {
var stream = gulp.src('./src/templates/newsletter/compiled/*.html')
.pipe(htmlmin({
collapseWhitespace: true,
minifyCSS: false,
keepClosingSlash: true
}))
.pipe(inlineCSS({
preserveMediaQueries: true,
applyTableAttributes: true
}))
.pipe(gulp.dest('./dist'));
return stream;
});
gulp.task('build', ['html-includes', 'compile-sass', 'inline-css-and-minify'], browserSync.reload);
gulp.task('watch', function () {
browserSync.init({
server: {
baseDir: "./"
}
});
gulp.watch(["src/**/*"], ['build']);
});
Sprinkle some Gulp...
<table class="footer mobile-footer" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: none;
border-collapse: collapse; border-spacing: 0 !important; margin: 0 auto; mso-table-lspace: 0pt; mso-table-rspace: 0pt;"
border="0" cellpadding="0" cellspacing="0" bgcolor="#215a3f" width="100%"><tr style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;"><td class="footer-gold-cell" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt;" bgcolor="#f6a704" height="10px"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxz/98942/14143/spacer.gif" height="10" width="1"
style="-ms-interpolation-mode: bicubic; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0
!important; outline: none !important; text-decoration: none !important;"></td></tr><tr style="-ms-text-size-adjust:
100%; -webkit-text-size-adjust: 100%;"><td class="footer-green-cell footer-contact-cell" style="-ms-text-size-adjust:
100%; -webkit-text-size-adjust: 100%; color: #fff; font-family: Arial, sans-serif; font-size: 10px; line-height: 24px;
mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 15px 5px 0 5px;" bgcolor="#215a3f" align="center"><a
class="footer-logo" href="http://saintleo.edu/" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxg/98942/14129/slu_bottom2.png" style="-ms-interpolation-mode:
bicubic; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0 !important; outline: none !important;
padding-bottom: 8px; text-decoration: none !important;"></a><br style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;"><span class="footer-address" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; padding-right: 15px; white-space: normal;">Saint Leo University, 33701 State Road 52,
Saint Leo, FL 33574-6665</span> <span class="footer-phone" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust:
100%; padding-right: 10px;">(352) 588-8283</span> <span class="footer-tollfree" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;">(800) 334-5532</span><br style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust:
100%;"><a class="footer-pardotlink" href="%%view_online%%" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust:
100%; color: #fff; font-family: Arial, sans-serif; font-size: 10px; line-height: 24px;">View email in browser</a>
| <a class="footer-pardotlink" href="%%email_preference_center%%" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; color: #fff; font-family: Arial, sans-serif; font-size: 10px; line-height: 24px;">Update
your email preferences</a> | <a class="footer-pardotlink" href="%%unsubscribe%%"
style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #fff; font-family: Arial, sans-serif;
font-size: 10px; line-height: 24px;">Unsubscribe</a></td></tr><tr style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;"><td class="footer-green-cell footer-social-cell" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding-top: 15px;" bgcolor="#215a3f"
align="center"><a href="https://www.facebook.com/mysaintleou" target="_blank" style="-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;"><img src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxj/98942/14127/facebook.png"
style="-ms-interpolation-mode: bicubic; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0
!important; outline: none !important; text-decoration: none !important;"></a> <a href="https://twitter.com/mysaintleou"
target="_blank" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxx/98942/14141/twitter_1.png" style="-ms-interpolation-mode: bicubic;
-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0 !important; outline: none !important;
text-decoration: none !important;"></a> <a href="https://www.instagram.com/mysaintleou" target="_blank"
style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxs/98942/14137/instagram.png" style="-ms-interpolation-mode: bicubic;
-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0 !important; outline: none !important;
text-decoration: none !important;"></a> <a href="https://www.youtube.com/channel/UCKhGARkVEEPN3Y8KlFYlTDw"
target="_blank" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><img
src="http://go.saintleo.edu/l/98942/2016-02-09/29sqxq/98942/14133/youtube_1.png" style="-ms-interpolation-mode: bicubic;
-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; border: 0 !important; outline: none !important;
text-decoration: none !important;"></a></td></tr><tr style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust:
100%;"><td bgcolor="#215a3f" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; mso-table-lspace: 0pt;
mso-table-rspace: 0pt;"> </td></tr></table></body></html>
and we get the same thing!
Fin.
Any questions?
The Pursuit of The Perfect Workflow
By Josh Nederveld
The Pursuit of The Perfect Workflow
- 354