SlideShare a Scribd company logo
WORKFLOW: AN INQUIRTY INTO PRODUCTIVITY
TIMOTHY BOLTON
Workflow
• Creating Your Environment
• Dealing with External Variables
Workflow: Creating Your Environment
• Git
• FileZilla
• cURL
• XSLTProc
• Bash
• VPN/Dropbox
Workflow: Git
• What is Git?
• Why use Git?
• Get started QUICKLY
Workflow: Git
• Add files to the staging area:
• Commit the change:
• Push the change
Rinse and repeat
git add -A
git commit –m “Added getRSAFromAttr()”
git push
Workflow: Git
• Ignoring files
Workflow:
touch ~/.gitignore_global
echo "# Global Git Ignore File" >> ~/.gitignore_global
echo "*.mvc" >> ~/.gitignore_global
echo "*.so" >> ~/.gitignore_global
echo "*.tar" >> ~/.gitignore_global
# and so on for whatever you don't want to include..
echo "temp_*.*" >> ~/.gitignore_global #For any temporary file
git config --global core.excludesfile ~/.gitignore_global
Workflow: Git
• ftp.dat
touch ./.git/ftp.dat
echo “# For END_PATH_LOCATION, DON'T include last slash!” >> ./.git/ftp.dat
echo “# END_PATH_LOCATION upload location on server” >> ./.git/ftp.dat
echo ‘END_PATH_LOCATION="5.00/modules/util“’
Workflow: FileZilla
• Site Manager and sitemanager.xml
Workflow: cURL
• Why cURL is important
• How to use it
Workflow: cURL
• Using cURL for what we want to do is fairly
straight forward:
curl –T text.mv ftp://example.com/ --user username:password
Workflow: XSLTProc
• xsltproc
• ANOTHER tool? 0___O
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:param name="site_name">DEFAULT_SITE_HERE</xsl:param>
<xsl:param name="file_name"></xsl:param>
<xsl:param name="end_path_location"></xsl:param>
<xsl:output method="text"/>
<xsl:template match="Servers">
<xsl:for-each select="//Server">
<xsl:if test="Name=$site_name">
<xsl:choose>
<xsl:when test="Comments !=''">
<xsl:value-of select="Comments"/>
curl -T <xsl:value-of select="$file_name" /> ftp://<xsl:value-of select="Host"/>/<xsl:value-of select="Comments"/>/<xsl:value-of
select="$end_path_location" />/ --user <xsl:value-of select="User"/>:<xsl:value-of select="Pass"/>
</xsl:when>
<xsl:otherwise>
curl -T <xsl:value-of select="$file_name" /> ftp://<xsl:value-of select="Host"/>/httpdocs/mm5/<xsl:value-of
select="$end_path_location" />/ --user <xsl:value-of select="User"/>:<xsl:value-of select="Pass"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Workflow: Bash
• Incredibly basic scripting for the CLI
• Usage of our upload.sh script
Workflow:
#!/bin/sh
# $1 - File Name
# $2 - Site Name (As you've named it in your SiteManager)
# $END_PATH_LOCATION - The location of the upload
# Look into possibly getting the cwd, and uploading to that from a 'base'
. .git/ftp.dat
XSLT_LOCATION="/d/PCINET/scripts/xml/select_server.xsl"
SITE_MANAGER_LOCATION="/C/Users/Tim/AppData/Roaming/FileZilla/sitemanager.xml"
if [ $# == 1 ] ; then
xsltproc --stringparam file_name "$1" --stringparam end_path_location "$END_PATH_LOCATION" $XSLT_LOCATION
$SITE_MANAGER_LOCATION | sh
elif [ $# == 2 ] ; then
xsltproc --stringparam file_name "$1" --stringparam site_name "$2" --stringparam end_path_location "$END_PATH_LOCATION"
$XSLT_LOCATION $SITE_MANAGER_LOCATION | sh
else
echo "Usage (1) is: upload.sh FILE_NAME SITE_NAME"
echo "Usage (2) is: upload.sh FILE_NAME (this will upload to the default directory)"
exit 1
fi
Workflow: Bash
• upload.sh FILE_NAME “SITE_NAME”
– (as it is named in your Site Manager)
• upload.sh FILE_NAME
– (this uploads to the default directory supplied)
Workflow: Dropbox/NAS
• Centralizing file locations
Workflow: External Variables
• SNERPKWNIAAE
• Phone calls
• Emergencies
Workflow: SNERPKWNIAAE
• You might get this a couple of hours a day,
depending on how you take control of your
day.
Workflow: Phone calls
• Interruption Protocol
• Dealing with interruptions
• Wanted interruptions
Workflow: Emergencies
• Putting out fires
• Taking responsibility
Workflow:
Workflow:
Workflow:
Workflow:
Workflow:
Workflow:
Workflow:
Workflow:
Workflow:
Workflow:
Workflow:
Workflow:
Workflow:

More Related Content

What's hot

Ansible
AnsibleAnsible
Ansible
Michal Haták
 
Replacing Oracle with MongoDB for a templating application at the Bavarian go...
Replacing Oracle with MongoDB for a templating application at the Bavarian go...Replacing Oracle with MongoDB for a templating application at the Bavarian go...
Replacing Oracle with MongoDB for a templating application at the Bavarian go...
Comsysto Reply GmbH
 
Node.js
Node.jsNode.js
Node.js
Mat Schaffer
 
以 Ktor 快速打造 Web 應用
以 Ktor 快速打造 Web 應用以 Ktor 快速打造 Web 應用
以 Ktor 快速打造 Web 應用
Shengyou Fan
 
NoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDBNoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDB
Sqreen
 
用 Kotlin 做自動化工具
用 Kotlin 做自動化工具用 Kotlin 做自動化工具
用 Kotlin 做自動化工具
Shengyou Fan
 
Build web application by express
Build web application by expressBuild web application by express
Build web application by express
Shawn Meng
 
Automating OSD and Post-OSD Configuration with Powershell and Orchestrator
Automating OSD and Post-OSD Configuration with Powershell and OrchestratorAutomating OSD and Post-OSD Configuration with Powershell and Orchestrator
Automating OSD and Post-OSD Configuration with Powershell and Orchestrator
Digicomp Academy AG
 
Ansible 101, Gennadiy Mykhailiuta
Ansible 101, Gennadiy MykhailiutaAnsible 101, Gennadiy Mykhailiuta
Ansible 101, Gennadiy Mykhailiuta
Tetiana Saputo
 
[HKOSCon 2020] Build an api service using ktor rapidly
[HKOSCon 2020] Build an api service using ktor rapidly[HKOSCon 2020] Build an api service using ktor rapidly
[HKOSCon 2020] Build an api service using ktor rapidly
Shengyou Fan
 
Kotlin 在 Web 方面的应用
Kotlin 在 Web 方面的应用Kotlin 在 Web 方面的应用
Kotlin 在 Web 方面的应用
Shengyou Fan
 
MongoDB Munich 2012: MongoDB for official documents in Bavaria
MongoDB Munich 2012: MongoDB for official documents in BavariaMongoDB Munich 2012: MongoDB for official documents in Bavaria
MongoDB Munich 2012: MongoDB for official documents in Bavaria
MongoDB
 
Playing With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.jsPlaying With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.js
Mike Hagedorn
 
Node.js - A Quick Tour II
Node.js - A Quick Tour IINode.js - A Quick Tour II
Node.js - A Quick Tour II
Felix Geisendörfer
 
Ansible Introduction - Ansible Brno #1 - David Karban
Ansible Introduction - Ansible Brno #1 - David KarbanAnsible Introduction - Ansible Brno #1 - David Karban
Ansible Introduction - Ansible Brno #1 - David Karban
ansiblebrno
 
Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)
Felix Geisendörfer
 
Geb presentation
Geb presentationGeb presentation
Geb presentation
Ivar Østhus
 
Persistent mobile JavaScript
Persistent mobile JavaScriptPersistent mobile JavaScript
Persistent mobile JavaScript
Yorick Phoenix
 
Offline Capabilities of MindMeister
Offline Capabilities of MindMeisterOffline Capabilities of MindMeister
Offline Capabilities of MindMeister
mindmeister
 
Virthualenvwrapper
VirthualenvwrapperVirthualenvwrapper
Virthualenvwrapper
Kazufumi Ohkawa
 

What's hot (20)

Ansible
AnsibleAnsible
Ansible
 
Replacing Oracle with MongoDB for a templating application at the Bavarian go...
Replacing Oracle with MongoDB for a templating application at the Bavarian go...Replacing Oracle with MongoDB for a templating application at the Bavarian go...
Replacing Oracle with MongoDB for a templating application at the Bavarian go...
 
Node.js
Node.jsNode.js
Node.js
 
以 Ktor 快速打造 Web 應用
以 Ktor 快速打造 Web 應用以 Ktor 快速打造 Web 應用
以 Ktor 快速打造 Web 應用
 
NoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDBNoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDB
 
用 Kotlin 做自動化工具
用 Kotlin 做自動化工具用 Kotlin 做自動化工具
用 Kotlin 做自動化工具
 
Build web application by express
Build web application by expressBuild web application by express
Build web application by express
 
Automating OSD and Post-OSD Configuration with Powershell and Orchestrator
Automating OSD and Post-OSD Configuration with Powershell and OrchestratorAutomating OSD and Post-OSD Configuration with Powershell and Orchestrator
Automating OSD and Post-OSD Configuration with Powershell and Orchestrator
 
Ansible 101, Gennadiy Mykhailiuta
Ansible 101, Gennadiy MykhailiutaAnsible 101, Gennadiy Mykhailiuta
Ansible 101, Gennadiy Mykhailiuta
 
[HKOSCon 2020] Build an api service using ktor rapidly
[HKOSCon 2020] Build an api service using ktor rapidly[HKOSCon 2020] Build an api service using ktor rapidly
[HKOSCon 2020] Build an api service using ktor rapidly
 
Kotlin 在 Web 方面的应用
Kotlin 在 Web 方面的应用Kotlin 在 Web 方面的应用
Kotlin 在 Web 方面的应用
 
MongoDB Munich 2012: MongoDB for official documents in Bavaria
MongoDB Munich 2012: MongoDB for official documents in BavariaMongoDB Munich 2012: MongoDB for official documents in Bavaria
MongoDB Munich 2012: MongoDB for official documents in Bavaria
 
Playing With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.jsPlaying With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.js
 
Node.js - A Quick Tour II
Node.js - A Quick Tour IINode.js - A Quick Tour II
Node.js - A Quick Tour II
 
Ansible Introduction - Ansible Brno #1 - David Karban
Ansible Introduction - Ansible Brno #1 - David KarbanAnsible Introduction - Ansible Brno #1 - David Karban
Ansible Introduction - Ansible Brno #1 - David Karban
 
Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)
 
Geb presentation
Geb presentationGeb presentation
Geb presentation
 
Persistent mobile JavaScript
Persistent mobile JavaScriptPersistent mobile JavaScript
Persistent mobile JavaScript
 
Offline Capabilities of MindMeister
Offline Capabilities of MindMeisterOffline Capabilities of MindMeister
Offline Capabilities of MindMeister
 
Virthualenvwrapper
VirthualenvwrapperVirthualenvwrapper
Virthualenvwrapper
 

Similar to WorkFlow: An Inquiry Into Productivity by Timothy Bolton

Build Automation of PHP Applications
Build Automation of PHP ApplicationsBuild Automation of PHP Applications
Build Automation of PHP Applications
Pavan Kumar N
 
Logstash
LogstashLogstash
Logstash
琛琳 饶
 
Go Web Development
Go Web DevelopmentGo Web Development
Go Web Development
Cheng-Yi Yu
 
Automating Your Workflow with Gulp.js - php[world] 2016
Automating Your Workflow with Gulp.js - php[world] 2016Automating Your Workflow with Gulp.js - php[world] 2016
Automating Your Workflow with Gulp.js - php[world] 2016
Colin O'Dell
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
Leo Lorieri
 
Sprockets
SprocketsSprockets
Installing odoo v8 from github
Installing odoo v8 from githubInstalling odoo v8 from github
Installing odoo v8 from github
Antony Gitomeh
 
GitSetupLinux
GitSetupLinuxGitSetupLinux
GitSetupLinux
Shubham Verma
 
Git setuplinux
Git setuplinuxGit setuplinux
Git setuplinux
Shubham Verma
 
Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.
Prajal Kulkarni
 
Catalyst MVC
Catalyst MVCCatalyst MVC
Catalyst MVC
Sheeju Alex
 
Git and github fundamental
Git and github fundamentalGit and github fundamental
Git and github fundamental
Rajesh Kumar
 
git-and-bitbucket
git-and-bitbucketgit-and-bitbucket
git-and-bitbucket
azwildcat
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
Stein Inge Morisbak
 
Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018
Ortus Solutions, Corp
 
Into The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and dockerInto The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and docker
Ortus Solutions, Corp
 
Configuration surgery with Augeas (OggCamp 12)
Configuration surgery with Augeas (OggCamp 12)Configuration surgery with Augeas (OggCamp 12)
Configuration surgery with Augeas (OggCamp 12)
Dominic Cleal
 
Automating complex infrastructures with Puppet
Automating complex infrastructures with PuppetAutomating complex infrastructures with Puppet
Automating complex infrastructures with Puppet
Kris Buytaert
 
Virtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + PuppetVirtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + Puppet
Omar Reygaert
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 

Similar to WorkFlow: An Inquiry Into Productivity by Timothy Bolton (20)

Build Automation of PHP Applications
Build Automation of PHP ApplicationsBuild Automation of PHP Applications
Build Automation of PHP Applications
 
Logstash
LogstashLogstash
Logstash
 
Go Web Development
Go Web DevelopmentGo Web Development
Go Web Development
 
Automating Your Workflow with Gulp.js - php[world] 2016
Automating Your Workflow with Gulp.js - php[world] 2016Automating Your Workflow with Gulp.js - php[world] 2016
Automating Your Workflow with Gulp.js - php[world] 2016
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
 
Sprockets
SprocketsSprockets
Sprockets
 
Installing odoo v8 from github
Installing odoo v8 from githubInstalling odoo v8 from github
Installing odoo v8 from github
 
GitSetupLinux
GitSetupLinuxGitSetupLinux
GitSetupLinux
 
Git setuplinux
Git setuplinuxGit setuplinux
Git setuplinux
 
Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.
 
Catalyst MVC
Catalyst MVCCatalyst MVC
Catalyst MVC
 
Git and github fundamental
Git and github fundamentalGit and github fundamental
Git and github fundamental
 
git-and-bitbucket
git-and-bitbucketgit-and-bitbucket
git-and-bitbucket
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 
Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018
 
Into The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and dockerInto The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and docker
 
Configuration surgery with Augeas (OggCamp 12)
Configuration surgery with Augeas (OggCamp 12)Configuration surgery with Augeas (OggCamp 12)
Configuration surgery with Augeas (OggCamp 12)
 
Automating complex infrastructures with Puppet
Automating complex infrastructures with PuppetAutomating complex infrastructures with Puppet
Automating complex infrastructures with Puppet
 
Virtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + PuppetVirtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + Puppet
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 

More from Miva

2016 Ecommerce Trends & Conversion Best Practices
2016 Ecommerce Trends & Conversion Best Practices2016 Ecommerce Trends & Conversion Best Practices
2016 Ecommerce Trends & Conversion Best Practices
Miva
 
Miva ReadyThemes for Store Owners
Miva ReadyThemes for Store OwnersMiva ReadyThemes for Store Owners
Miva ReadyThemes for Store Owners
Miva
 
Facebook Advertising: From Content to Conversions
Facebook Advertising: From Content to ConversionsFacebook Advertising: From Content to Conversions
Facebook Advertising: From Content to Conversions
Miva
 
Artistry and Ethics in Email Marketing
Artistry and Ethics in Email MarketingArtistry and Ethics in Email Marketing
Artistry and Ethics in Email Marketing
Miva
 
Secrets to Writing Content That Matters - Gillian Muessig
Secrets to Writing Content That Matters - Gillian MuessigSecrets to Writing Content That Matters - Gillian Muessig
Secrets to Writing Content That Matters - Gillian Muessig
Miva
 
Content Marketing Data That Moves the Needle
Content Marketing Data That Moves the NeedleContent Marketing Data That Moves the Needle
Content Marketing Data That Moves the Needle
Miva
 
7 Actionable SEO Strategies to Build Real Revenue Now
7 Actionable SEO Strategies to Build Real Revenue Now7 Actionable SEO Strategies to Build Real Revenue Now
7 Actionable SEO Strategies to Build Real Revenue Now
Miva
 
Wizards & Executors - Gillian Muessig
Wizards & Executors  - Gillian MuessigWizards & Executors  - Gillian Muessig
Wizards & Executors - Gillian Muessig
Miva
 
What's New in Miva Merchant 9
What's New in Miva Merchant 9What's New in Miva Merchant 9
What's New in Miva Merchant 9
Miva
 
Increasing Conversions with Relevancy, Merchandising & Actionable Insights
Increasing Conversions with Relevancy, Merchandising & Actionable InsightsIncreasing Conversions with Relevancy, Merchandising & Actionable Insights
Increasing Conversions with Relevancy, Merchandising & Actionable Insights
Miva
 
Google Analytics for Miva Merchants
Google Analytics for Miva MerchantsGoogle Analytics for Miva Merchants
Google Analytics for Miva Merchants
Miva
 
Expanding Product Sales Using eBay & Amazon
Expanding Product Sales Using eBay & AmazonExpanding Product Sales Using eBay & Amazon
Expanding Product Sales Using eBay & Amazon
Miva
 
Web Development Trends 2016
Web Development Trends 2016Web Development Trends 2016
Web Development Trends 2016
Miva
 
Trust Drives Ecommerce Differentiations & Conversions
Trust Drives Ecommerce Differentiations & ConversionsTrust Drives Ecommerce Differentiations & Conversions
Trust Drives Ecommerce Differentiations & Conversions
Miva
 
Best Practices in Order Fulfillment
Best Practices in Order FulfillmentBest Practices in Order Fulfillment
Best Practices in Order Fulfillment
Miva
 
2016 Mobile Design & UX Trends
2016 Mobile Design & UX Trends2016 Mobile Design & UX Trends
2016 Mobile Design & UX Trends
Miva
 
On Page SEO & Miva Merchant 2016
On Page SEO & Miva Merchant 2016On Page SEO & Miva Merchant 2016
On Page SEO & Miva Merchant 2016
Miva
 
Miva Merchant 9 Admin - Optimizing Daily Workflow
Miva Merchant 9 Admin - Optimizing Daily WorkflowMiva Merchant 9 Admin - Optimizing Daily Workflow
Miva Merchant 9 Admin - Optimizing Daily Workflow
Miva
 
Merchandising & Miva Merchant 9 - Price Groups
Merchandising & Miva Merchant 9 - Price GroupsMerchandising & Miva Merchant 9 - Price Groups
Merchandising & Miva Merchant 9 - Price Groups
Miva
 
Usability & User Engagement
Usability & User EngagementUsability & User Engagement
Usability & User Engagement
Miva
 

More from Miva (20)

2016 Ecommerce Trends & Conversion Best Practices
2016 Ecommerce Trends & Conversion Best Practices2016 Ecommerce Trends & Conversion Best Practices
2016 Ecommerce Trends & Conversion Best Practices
 
Miva ReadyThemes for Store Owners
Miva ReadyThemes for Store OwnersMiva ReadyThemes for Store Owners
Miva ReadyThemes for Store Owners
 
Facebook Advertising: From Content to Conversions
Facebook Advertising: From Content to ConversionsFacebook Advertising: From Content to Conversions
Facebook Advertising: From Content to Conversions
 
Artistry and Ethics in Email Marketing
Artistry and Ethics in Email MarketingArtistry and Ethics in Email Marketing
Artistry and Ethics in Email Marketing
 
Secrets to Writing Content That Matters - Gillian Muessig
Secrets to Writing Content That Matters - Gillian MuessigSecrets to Writing Content That Matters - Gillian Muessig
Secrets to Writing Content That Matters - Gillian Muessig
 
Content Marketing Data That Moves the Needle
Content Marketing Data That Moves the NeedleContent Marketing Data That Moves the Needle
Content Marketing Data That Moves the Needle
 
7 Actionable SEO Strategies to Build Real Revenue Now
7 Actionable SEO Strategies to Build Real Revenue Now7 Actionable SEO Strategies to Build Real Revenue Now
7 Actionable SEO Strategies to Build Real Revenue Now
 
Wizards & Executors - Gillian Muessig
Wizards & Executors  - Gillian MuessigWizards & Executors  - Gillian Muessig
Wizards & Executors - Gillian Muessig
 
What's New in Miva Merchant 9
What's New in Miva Merchant 9What's New in Miva Merchant 9
What's New in Miva Merchant 9
 
Increasing Conversions with Relevancy, Merchandising & Actionable Insights
Increasing Conversions with Relevancy, Merchandising & Actionable InsightsIncreasing Conversions with Relevancy, Merchandising & Actionable Insights
Increasing Conversions with Relevancy, Merchandising & Actionable Insights
 
Google Analytics for Miva Merchants
Google Analytics for Miva MerchantsGoogle Analytics for Miva Merchants
Google Analytics for Miva Merchants
 
Expanding Product Sales Using eBay & Amazon
Expanding Product Sales Using eBay & AmazonExpanding Product Sales Using eBay & Amazon
Expanding Product Sales Using eBay & Amazon
 
Web Development Trends 2016
Web Development Trends 2016Web Development Trends 2016
Web Development Trends 2016
 
Trust Drives Ecommerce Differentiations & Conversions
Trust Drives Ecommerce Differentiations & ConversionsTrust Drives Ecommerce Differentiations & Conversions
Trust Drives Ecommerce Differentiations & Conversions
 
Best Practices in Order Fulfillment
Best Practices in Order FulfillmentBest Practices in Order Fulfillment
Best Practices in Order Fulfillment
 
2016 Mobile Design & UX Trends
2016 Mobile Design & UX Trends2016 Mobile Design & UX Trends
2016 Mobile Design & UX Trends
 
On Page SEO & Miva Merchant 2016
On Page SEO & Miva Merchant 2016On Page SEO & Miva Merchant 2016
On Page SEO & Miva Merchant 2016
 
Miva Merchant 9 Admin - Optimizing Daily Workflow
Miva Merchant 9 Admin - Optimizing Daily WorkflowMiva Merchant 9 Admin - Optimizing Daily Workflow
Miva Merchant 9 Admin - Optimizing Daily Workflow
 
Merchandising & Miva Merchant 9 - Price Groups
Merchandising & Miva Merchant 9 - Price GroupsMerchandising & Miva Merchant 9 - Price Groups
Merchandising & Miva Merchant 9 - Price Groups
 
Usability & User Engagement
Usability & User EngagementUsability & User Engagement
Usability & User Engagement
 

Recently uploaded

JD Euroway Report 2024 : Shocking Revelations
JD Euroway Report 2024 : Shocking RevelationsJD Euroway Report 2024 : Shocking Revelations
JD Euroway Report 2024 : Shocking Revelations
JD Euroway
 
The Strengths and Weaknesses of Each Zodiac Sign
The Strengths and Weaknesses of Each Zodiac SignThe Strengths and Weaknesses of Each Zodiac Sign
The Strengths and Weaknesses of Each Zodiac Sign
my Pandit
 
Game Product Manager VS Product Manager.pdf
Game Product Manager VS Product Manager.pdfGame Product Manager VS Product Manager.pdf
Game Product Manager VS Product Manager.pdf
shohreesmaili1
 
Family/Indoor Entertainment Centers Market: Regulation and Compliance Updates
Family/Indoor Entertainment Centers Market: Regulation and Compliance UpdatesFamily/Indoor Entertainment Centers Market: Regulation and Compliance Updates
Family/Indoor Entertainment Centers Market: Regulation and Compliance Updates
AishwaryaDoiphode3
 
Cheslyn Jacobs- TymeBank: Building Consumer Trust in Digital Banking
Cheslyn Jacobs- TymeBank: Building Consumer Trust in Digital  BankingCheslyn Jacobs- TymeBank: Building Consumer Trust in Digital  Banking
Cheslyn Jacobs- TymeBank: Building Consumer Trust in Digital Banking
itnewsafrica
 
Pricing sophistication - auto insurance telematics
Pricing sophistication - auto insurance telematicsPricing sophistication - auto insurance telematics
Pricing sophistication - auto insurance telematics
Matteo Carbone
 
Destor.one - One Pager for Investment Round Dec22.pdf
Destor.one - One Pager for Investment Round Dec22.pdfDestor.one - One Pager for Investment Round Dec22.pdf
Destor.one - One Pager for Investment Round Dec22.pdf
Thales Jacobi
 
Importance of Quality Transformations in VUCA World
Importance of Quality Transformations in VUCA WorldImportance of Quality Transformations in VUCA World
Importance of Quality Transformations in VUCA World
Ankur860831
 
THE IMPORTANCE OF CODING IN DEVOPS EXPLANATION
THE IMPORTANCE OF CODING IN DEVOPS EXPLANATIONTHE IMPORTANCE OF CODING IN DEVOPS EXPLANATION
THE IMPORTANCE OF CODING IN DEVOPS EXPLANATION
hrajkumar444
 
Factory Roofing Contractors Chennai.pptx
Factory Roofing Contractors Chennai.pptxFactory Roofing Contractors Chennai.pptx
Factory Roofing Contractors Chennai.pptx
Roofing Contractor
 
Business model Lean format - sample Feb23.pdf
Business model Lean format - sample Feb23.pdfBusiness model Lean format - sample Feb23.pdf
Business model Lean format - sample Feb23.pdf
Thales Jacobi
 
Navigating Change Strategies for Effective Transition and Operational Plannin...
Navigating Change Strategies for Effective Transition and Operational Plannin...Navigating Change Strategies for Effective Transition and Operational Plannin...
Navigating Change Strategies for Effective Transition and Operational Plannin...
Brian Frerichs
 
DEKISH ELEVATOR INDIA PVT LTD Brochure.pdf
DEKISH ELEVATOR INDIA PVT LTD Brochure.pdfDEKISH ELEVATOR INDIA PVT LTD Brochure.pdf
DEKISH ELEVATOR INDIA PVT LTD Brochure.pdf
unosafeads
 
Mandated reporting powerpoint to help with understanding your role
Mandated reporting powerpoint to help with understanding your roleMandated reporting powerpoint to help with understanding your role
Mandated reporting powerpoint to help with understanding your role
khidalgo2
 
Entrepreneurial mindset: An Introduction to Entrepreneurship
Entrepreneurial mindset: An Introduction to EntrepreneurshipEntrepreneurial mindset: An Introduction to Entrepreneurship
Entrepreneurial mindset: An Introduction to Entrepreneurship
Sanjay Joshi
 
PROVIDING THE WORLD WITH EFFECTIVE & EFFICIENT LIGHTING SOLUTIONS SINCE 1976
PROVIDING THE WORLD WITH EFFECTIVE & EFFICIENT LIGHTING SOLUTIONS SINCE 1976PROVIDING THE WORLD WITH EFFECTIVE & EFFICIENT LIGHTING SOLUTIONS SINCE 1976
PROVIDING THE WORLD WITH EFFECTIVE & EFFICIENT LIGHTING SOLUTIONS SINCE 1976
PYROTECH GROUP
 
TPH Global Solutions Overview: Successful Strategies for Selling to Mass Merc...
TPH Global Solutions Overview: Successful Strategies for Selling to Mass Merc...TPH Global Solutions Overview: Successful Strategies for Selling to Mass Merc...
TPH Global Solutions Overview: Successful Strategies for Selling to Mass Merc...
David Schmidt
 
Credit Card Stats And Trends in 2024- Webpays
Credit Card Stats And Trends in 2024- WebpaysCredit Card Stats And Trends in 2024- Webpays
Credit Card Stats And Trends in 2024- Webpays
itio Innovex Pvt Ltv
 
Commercial Roofing Contractors Chennai.pptx
Commercial Roofing Contractors Chennai.pptxCommercial Roofing Contractors Chennai.pptx
Commercial Roofing Contractors Chennai.pptx
Roofing Contractor
 
Guide to Obtaining a Money Changer License in Singapore
Guide to Obtaining a Money Changer License in SingaporeGuide to Obtaining a Money Changer License in Singapore
Guide to Obtaining a Money Changer License in Singapore
Enterslice
 

Recently uploaded (20)

JD Euroway Report 2024 : Shocking Revelations
JD Euroway Report 2024 : Shocking RevelationsJD Euroway Report 2024 : Shocking Revelations
JD Euroway Report 2024 : Shocking Revelations
 
The Strengths and Weaknesses of Each Zodiac Sign
The Strengths and Weaknesses of Each Zodiac SignThe Strengths and Weaknesses of Each Zodiac Sign
The Strengths and Weaknesses of Each Zodiac Sign
 
Game Product Manager VS Product Manager.pdf
Game Product Manager VS Product Manager.pdfGame Product Manager VS Product Manager.pdf
Game Product Manager VS Product Manager.pdf
 
Family/Indoor Entertainment Centers Market: Regulation and Compliance Updates
Family/Indoor Entertainment Centers Market: Regulation and Compliance UpdatesFamily/Indoor Entertainment Centers Market: Regulation and Compliance Updates
Family/Indoor Entertainment Centers Market: Regulation and Compliance Updates
 
Cheslyn Jacobs- TymeBank: Building Consumer Trust in Digital Banking
Cheslyn Jacobs- TymeBank: Building Consumer Trust in Digital  BankingCheslyn Jacobs- TymeBank: Building Consumer Trust in Digital  Banking
Cheslyn Jacobs- TymeBank: Building Consumer Trust in Digital Banking
 
Pricing sophistication - auto insurance telematics
Pricing sophistication - auto insurance telematicsPricing sophistication - auto insurance telematics
Pricing sophistication - auto insurance telematics
 
Destor.one - One Pager for Investment Round Dec22.pdf
Destor.one - One Pager for Investment Round Dec22.pdfDestor.one - One Pager for Investment Round Dec22.pdf
Destor.one - One Pager for Investment Round Dec22.pdf
 
Importance of Quality Transformations in VUCA World
Importance of Quality Transformations in VUCA WorldImportance of Quality Transformations in VUCA World
Importance of Quality Transformations in VUCA World
 
THE IMPORTANCE OF CODING IN DEVOPS EXPLANATION
THE IMPORTANCE OF CODING IN DEVOPS EXPLANATIONTHE IMPORTANCE OF CODING IN DEVOPS EXPLANATION
THE IMPORTANCE OF CODING IN DEVOPS EXPLANATION
 
Factory Roofing Contractors Chennai.pptx
Factory Roofing Contractors Chennai.pptxFactory Roofing Contractors Chennai.pptx
Factory Roofing Contractors Chennai.pptx
 
Business model Lean format - sample Feb23.pdf
Business model Lean format - sample Feb23.pdfBusiness model Lean format - sample Feb23.pdf
Business model Lean format - sample Feb23.pdf
 
Navigating Change Strategies for Effective Transition and Operational Plannin...
Navigating Change Strategies for Effective Transition and Operational Plannin...Navigating Change Strategies for Effective Transition and Operational Plannin...
Navigating Change Strategies for Effective Transition and Operational Plannin...
 
DEKISH ELEVATOR INDIA PVT LTD Brochure.pdf
DEKISH ELEVATOR INDIA PVT LTD Brochure.pdfDEKISH ELEVATOR INDIA PVT LTD Brochure.pdf
DEKISH ELEVATOR INDIA PVT LTD Brochure.pdf
 
Mandated reporting powerpoint to help with understanding your role
Mandated reporting powerpoint to help with understanding your roleMandated reporting powerpoint to help with understanding your role
Mandated reporting powerpoint to help with understanding your role
 
Entrepreneurial mindset: An Introduction to Entrepreneurship
Entrepreneurial mindset: An Introduction to EntrepreneurshipEntrepreneurial mindset: An Introduction to Entrepreneurship
Entrepreneurial mindset: An Introduction to Entrepreneurship
 
PROVIDING THE WORLD WITH EFFECTIVE & EFFICIENT LIGHTING SOLUTIONS SINCE 1976
PROVIDING THE WORLD WITH EFFECTIVE & EFFICIENT LIGHTING SOLUTIONS SINCE 1976PROVIDING THE WORLD WITH EFFECTIVE & EFFICIENT LIGHTING SOLUTIONS SINCE 1976
PROVIDING THE WORLD WITH EFFECTIVE & EFFICIENT LIGHTING SOLUTIONS SINCE 1976
 
TPH Global Solutions Overview: Successful Strategies for Selling to Mass Merc...
TPH Global Solutions Overview: Successful Strategies for Selling to Mass Merc...TPH Global Solutions Overview: Successful Strategies for Selling to Mass Merc...
TPH Global Solutions Overview: Successful Strategies for Selling to Mass Merc...
 
Credit Card Stats And Trends in 2024- Webpays
Credit Card Stats And Trends in 2024- WebpaysCredit Card Stats And Trends in 2024- Webpays
Credit Card Stats And Trends in 2024- Webpays
 
Commercial Roofing Contractors Chennai.pptx
Commercial Roofing Contractors Chennai.pptxCommercial Roofing Contractors Chennai.pptx
Commercial Roofing Contractors Chennai.pptx
 
Guide to Obtaining a Money Changer License in Singapore
Guide to Obtaining a Money Changer License in SingaporeGuide to Obtaining a Money Changer License in Singapore
Guide to Obtaining a Money Changer License in Singapore
 

WorkFlow: An Inquiry Into Productivity by Timothy Bolton

  • 1. WORKFLOW: AN INQUIRTY INTO PRODUCTIVITY TIMOTHY BOLTON
  • 2. Workflow • Creating Your Environment • Dealing with External Variables
  • 3. Workflow: Creating Your Environment • Git • FileZilla • cURL • XSLTProc • Bash • VPN/Dropbox
  • 4. Workflow: Git • What is Git? • Why use Git? • Get started QUICKLY
  • 5. Workflow: Git • Add files to the staging area: • Commit the change: • Push the change Rinse and repeat git add -A git commit –m “Added getRSAFromAttr()” git push
  • 7. Workflow: touch ~/.gitignore_global echo "# Global Git Ignore File" >> ~/.gitignore_global echo "*.mvc" >> ~/.gitignore_global echo "*.so" >> ~/.gitignore_global echo "*.tar" >> ~/.gitignore_global # and so on for whatever you don't want to include.. echo "temp_*.*" >> ~/.gitignore_global #For any temporary file git config --global core.excludesfile ~/.gitignore_global
  • 8. Workflow: Git • ftp.dat touch ./.git/ftp.dat echo “# For END_PATH_LOCATION, DON'T include last slash!” >> ./.git/ftp.dat echo “# END_PATH_LOCATION upload location on server” >> ./.git/ftp.dat echo ‘END_PATH_LOCATION="5.00/modules/util“’
  • 9. Workflow: FileZilla • Site Manager and sitemanager.xml
  • 10. Workflow: cURL • Why cURL is important • How to use it
  • 11. Workflow: cURL • Using cURL for what we want to do is fairly straight forward: curl –T text.mv ftp://example.com/ --user username:password
  • 12. Workflow: XSLTProc • xsltproc • ANOTHER tool? 0___O
  • 13. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:param name="site_name">DEFAULT_SITE_HERE</xsl:param> <xsl:param name="file_name"></xsl:param> <xsl:param name="end_path_location"></xsl:param> <xsl:output method="text"/> <xsl:template match="Servers"> <xsl:for-each select="//Server"> <xsl:if test="Name=$site_name"> <xsl:choose> <xsl:when test="Comments !=''"> <xsl:value-of select="Comments"/> curl -T <xsl:value-of select="$file_name" /> ftp://<xsl:value-of select="Host"/>/<xsl:value-of select="Comments"/>/<xsl:value-of select="$end_path_location" />/ --user <xsl:value-of select="User"/>:<xsl:value-of select="Pass"/> </xsl:when> <xsl:otherwise> curl -T <xsl:value-of select="$file_name" /> ftp://<xsl:value-of select="Host"/>/httpdocs/mm5/<xsl:value-of select="$end_path_location" />/ --user <xsl:value-of select="User"/>:<xsl:value-of select="Pass"/> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>
  • 14. Workflow: Bash • Incredibly basic scripting for the CLI • Usage of our upload.sh script
  • 15. Workflow: #!/bin/sh # $1 - File Name # $2 - Site Name (As you've named it in your SiteManager) # $END_PATH_LOCATION - The location of the upload # Look into possibly getting the cwd, and uploading to that from a 'base' . .git/ftp.dat XSLT_LOCATION="/d/PCINET/scripts/xml/select_server.xsl" SITE_MANAGER_LOCATION="/C/Users/Tim/AppData/Roaming/FileZilla/sitemanager.xml" if [ $# == 1 ] ; then xsltproc --stringparam file_name "$1" --stringparam end_path_location "$END_PATH_LOCATION" $XSLT_LOCATION $SITE_MANAGER_LOCATION | sh elif [ $# == 2 ] ; then xsltproc --stringparam file_name "$1" --stringparam site_name "$2" --stringparam end_path_location "$END_PATH_LOCATION" $XSLT_LOCATION $SITE_MANAGER_LOCATION | sh else echo "Usage (1) is: upload.sh FILE_NAME SITE_NAME" echo "Usage (2) is: upload.sh FILE_NAME (this will upload to the default directory)" exit 1 fi
  • 16. Workflow: Bash • upload.sh FILE_NAME “SITE_NAME” – (as it is named in your Site Manager) • upload.sh FILE_NAME – (this uploads to the default directory supplied)
  • 18. Workflow: External Variables • SNERPKWNIAAE • Phone calls • Emergencies
  • 19. Workflow: SNERPKWNIAAE • You might get this a couple of hours a day, depending on how you take control of your day.
  • 20. Workflow: Phone calls • Interruption Protocol • Dealing with interruptions • Wanted interruptions
  • 21. Workflow: Emergencies • Putting out fires • Taking responsibility

Editor's Notes

  1. This session is going to be broken down into two sessions, the first is going to be the creation of our environment that we work from.The second is going to be keeping our environment when external variables and circumstance enter in.
  2. A couple of years ago, I decided to create a development environment. I had done this before, with different jobs and businesses, and I enjoyed it.Previously, my environments dealt a lot with setting up servers, virtual hosts, virtual machines, and all that jazz. They still do, but they weren’t focused on coding. They were focused on web development.I had a nice set of tools that I built which allowed me to easily and very rapidly deploy a new instance for what the project required. This was nice, because before that I was just using a local web server, and creating different directories in the server. And before that, I was creating different directories on my client’s sites. And sadly, before that I was just doing the work at night, on a production machine when most people weren’t using the site.Now, the last instance was about 16 years ago, when I was 17 years old. It’s still pretty bad, but I think we’ve all been there before.I didn’t know anyone who had done these things before and my resources were limited. So, I had to create an environment that was stable. Each tool that was developed or integrated was a tool of necessity, then a tool of convenience.So, the first tool was creating sub directories, “dev.example.com”. That was great, and it worked well. That was until the site was crawled and indexed. That’s when I learned what the robots.txt file was.After I realized the power of sub directories, I got really sick and tired of uploading my files from the text editor to the FTP client. It was really not ideal, and even though it only took a few seconds each time they were my few seconds. Also Firebug and better developer tools hadn’t been developed yet, so CSS modification was not as trivial as it is today.The next step was to figure out how to either upload the files without having a confirmation, upload the files automatically upon save, or find a way to develop locally and test without having to upload.That was what I wanted to do. So I started learning about web servers. I knew the term, but I didn’t understand them at all. It was like a secret society of people all decided that they knew what they were talking about, and when I tried to figure it out, I was lost. I couldn’t even search “apache” at the time without having to sift through helicopters and Native American tribes.Anyway, fast forward: I now had a web server at my house. I could deploy changes faster, and easier. But I was very limited in my scope of what I could do, since I was just using directories for separation.It’s interesting to note, that at this point, I still couldn’t test in Safari on a Mac because my networking skills were severely underdeveloped.The next step though, was figuring a way to access my computer from other computers. I didn’t want to copy and paste and end up with modifications from one computer and not on the other.So, I learned about the hosts file and messed with that a bit to open access.When I realized that I wanted more than just a single server on a computer, I looked into Apache and stumbled upon virtual hosts. That’s where things really opened up for me. I realized that these virtual hosts were what I was looking for.They gave me the tools necessary to have multiple sites properly organized on my computer.I was getting sick of maintaining multiple hosts files though. So after a bit more research, I found out about DNS and what it did.I hacked together an internal DNS – and it worked. It really did. As silly as it might sound, it really gave me confidence, because it was confirming that whatever it was that I put my mind to, I could accomplish.Now, after giving different hosts the DNS they all could access the sites and testing and deploying was very simple.After this, it was figuring out how PAT and port forwarding worked. There were almost bricked routers, there was hacked firmware, there was looking at “binwalk” to try and reverse engineer what someone had programmed. Lots of things, eventually, DynDNS saved the day, and gave me exactly what I was looking for.Now I could show my clients what I was working on from their office, at my house, with a domain name that was easy enough to remember.Other tools were ones that automated virtual host builds, email processing and so on and so forth.So, saying ALL of that, to say: our environment is so critical to what we can do. Not just in how we work, but in how we are as programmers and people.As a developer, my value is based upon what I can do, what I know, and how I can communicate. If I have an idea, but I can’t communicate it in a way that people want to listen to me, the idea has now lost value. If I can program really well, but I’m unreliable (which happens from time to time. I’m not ashamed to admit it), then my value goes down, because people don’t feel like they can depend on me to always “be on”. And if I don’t know a lot… well, my value as a programmer will generally go down a bit, if I can’t find a way to make up for it.I wouldn’t be where I am today if it wasn’t for the mistakes, failures and accomplishments of the past.So, now, as a developer, the tools that I’m working with are a bit different.I’m looking for ways to maintain my code.I’m looking for ways to integrate technology so that I don’t have to spend my time writing tools that directly have to interface with the TCP/IP stack. I want to work with wrappers. And I want to work with tools that I’m already using.So, what we’re going to do is, write our code. Then we’re going to save, and update our Git branch and upload our files to the server at the same time, with some very simple commands.
  3. Git is a version control system which will put hair on your chest and make you smell like roses after a fresh rain.Git is a very fast and efficient way to maintain your code. If you have multiple things that you’re working on, you can create branches. So one person is working on one branch, while you’re working on another, and you guys wont’ overwrite each other. Also, you can have development branches, and production branches. It’s really a much better alternative to “script.js” and “script_old.js”, and “script_new.js”.For GitBootcamp, I’d recommend going to bitbucket.org. They offer free private repositories as well as public ones too.Also, Git takes care of documenting what you’ve done. When you make a “commit” or apply what you’re working on, you have to give a message. Commits are meant to be done often. So you can look at when commits happened, what they say, and you can have a list of the work you’ve done for the day.One more think to remember, since all changes you have made are tracked, you can also roll back to previous versions of your code.On a modern Windows platform, I recommend using MinGW. It has most of the tools that you’re going to be looking for.
  4. Git has something called a “staging” area, which is basically a place where you put files that you want to commit.So, we want to add our modified files to the staging area so they can be committed.When we’re ready to commit the changes to be pushed the repository, we commit them and add a messageWhen we’re ready to make them live, we push them.Just so everyone is on the same page, this isn’t the most efficient way to use git, by any stretch of the imagination. This is something to get people up and running, so that they can learn Git on their own.
  5. Sometimes we don’t want to have files be added to our repository, such as PASSWORD FILES for local development. Or zipped files, binary libraries, etc..
  6. This is a global ignore file that we’re going to configure with git. Basically, we don’t really want to upload our MVC files, any compressed files, and compiled libraries. Odds are, your needs will be different, but these work for me.Just make sure you understand what’s going on. Git for me was ethereal and difficult to grasp. I’m not the world’s most intelligent guy, but I’m annoyingly persistent, to a fault. So eventually, I will understand something.
  7. Since we are working with a module here, not specifically a store (though we can extend it to that), we’re going to just set up a simple “end path location” for us to upload to. In this example, we’re pretending to use a utility module.
  8. For me, I was using FileZilla to manage my client’s site information.FileZilla is nice, and easy to work with. However, it has one annoying thing. It asks you if you want to overwrite a file when you save a file you’re editing. Every time, and the FileZilla people won’t listen to the userbase when we clamor for them to give us that option.One way to get past that is to not use FileZilla as an FTP client all the time. You can still use the configuration settings though.FileZilla has this little XML file called “sitemanager.xml” that’s in your user/username/AppData/roaming/FileZilla folder. Everything in there is saved in plaintext. Usernames and passwords.So, this makes it accessible for us without having to know the salt to decrypt it.This is one of the reasons why I use FileZilla for my FTP client.FileZilla also has a “comments” section in the Site Manager. I use this to descriptively put in where the uploads will start at if they are going to be different than /httpdocs/mm5
  9. cURL is one of the unsung heroes of web application development. As it stands, there isn’t a cURL wrapper that I know of for Miva Merchant, but that doesn’t mean that we can’t use it for building tools outside of MivaScript.cURL allows us to programmatically access a URL (and MANY MANY other things), and send a list of options and data. It’s like wget on steroids, and then some. If you haven’t worked with cURL before, I really encourage you to.This is important, because we can post data with cURL. What we’re going to focus on, in our MivaScript development, is posting a file via FTP and send authentication credentials.
  10. Linux/Unix/BSD have a philosophy of a package/program should do a single job. That makes it easy for single little programs to perform a function, and be chained together to do what you want.At first, it can be difficult, because you might not even know what it is that you’re looking for. But once you get a little familiar with the subject, and what it is that you want to accomplish, you’ll find that it isn’t as daunting as it initially seemed.XSLT is an XML parsing and templating system. What that means is, you can feed an XML file to an XSLT template, and have it give you something based off of the data.In our case, we’re going to feed our sitemap.xml file, from FileZilla, into an XSLT template, and we’re going to get our cURL command with the proper credentials.XSLT
  11. Bash files are similar to .bat or batch files from the bad old days of MS DOS. When I was in third grade, I wanted to play Mortal Kombat on my 386. The only way to do this was to not load Windows. So, I wrote some modifications to the autoexec.bat file and modified the config.sys file. Then I did a few other tweaks that allowed me to have enough space in memory to load the entire game.That was a big day for me. It was one of the first times when I decided I wasn’t going to let the limitations of my default environment hold me back from what I wanted to do. I wanted to play MortakKombat, and I wanted to have there be blood. This wasn’t the Super Nintendo version without blood, this was the real deal. And after reading through the manual, and doing a couple of tweaks, I did it.The CLI can still be our friend. We can do lots from it, and with Windows we can actually do some pretty powerful things with Powershell.
  12. Situation Normal Everything Running Peachy Keen With No Issues. At All. Ever.Bit bucket has built in issue tracking. This is excellent, as it integrates with what you’re doing and allows you to keep track of bugs within the software, and keeps you accountable to the issues.You want to have regular time set up for you to fix bugs and do maintenance. This should be a regular part of your workflow and should be something that you have built in.
  13. You have to define what you’re going to do when interruptions want to knock on your door.Do you answer? Do you decline the knock? What is your plan of attack?There are a couple types of interruptions, we’ll focus on two: Wanted and Unwanted.Unwanted interruptions can be something like an email notification which detracts from your focus and spreads you more thin.Wanted distractions can be something like a call from a coworker about an issue they fixed.I have a couple of ways that I work through the day. One of these is using the “Pomodoro Technique”.The pomodoro technique is a technique that was developed by a guy who had a tomato kitchen timer. He set it to about 15 minutes, and said, “I’m not going to allow there to be any interruptions for 15 minutes. I’m just going to work on what I’m working on.”And he did it. He didn’t answer phone calls. He didn’t check emails. He didn’t search Reddit, or learn to play harmonica because he was tryin to procrastinate. He just focused on the problem at hand for 15 minutes.When the timer went off, he took a five minute break, and went to the next 15 minute block. This technique actually ended up working really well, and it is now frequently used to improve efficiency. I’ve used it and it works well for me. Very well.Often times when I’m talking with someone, I’ll ask to call them back in 15 minutes. When I do this, it’s because I want to focus.I can have issues getting focused on a project. I’ve noticed that I have a very hotspot of productivity during the day. It usually starts around 2PM and carries on until about 5PM. During this block of time, I get about 90% of my billable work done, in a way that can be measured by a client.I’ve noticed that it takes me a long time to get concentrated, but once I am, I’m locked in and ready to go. Similar to what I’ve been told about jet engines. Apparently, they use more fuel to get up in the air, than they do while they’re flying. So, it’s the initial commitment that causes the drain in energy.I’m not even kidding, I’ve literally shoved my fingers in my ears, closed my eyes, and started talking, because I had a person come into the room to ask me a question when I needed to concentrate. Sounds crazy, probably is a bit, but my concentration was so important at that point, that if I lost it I could have lost a lot more than just the few things I was thinking about. I would have lost the time after, trying to concentrate again, too. That’s a big deal to me.So, how does the Pomodoro technique work when you have an interruption? Well generally, you can just write down the issue if it’s necessary. Is a client calling? Write down to call them back. Turn off your email client, and check emails when your current Pomodoro is over.Just remember to address the issue that came up when you’ve made yourself unavailable. That way you won’t have things fall through the cracks.Also, remember, you’ll want to have certain interruptions. New clients are GREAT interruptions. A wife having a baby? That’s also a great interruption, and that can usually supersede a pomodoro.Not everything is bad, duh.. We know that. And it’s nice to be reminded of that when you’re dealing with your work flow.
  14. When a customer’s site goes down, it’s time to act.One time, I was working on the .htaccess file of a client’s site, when I left to go pick my son up from daycare.What I didn’t realize, was that I accidentally modified ANOTHER site’s .htaccess file to redirect to their site.I also decided that I wanted to take my son to the mall, and we were going to ride around on an oversized train and wave at people and mock them, because they had to use their legs, while we harnessed technology to move us around.As I’m picking my son up, I get a call, from the client’s site who I had done the work for, asking if I did what I said I was going to do. I said yes, and hung up. About 15 minutes later, I got a call… this time, it was urgent, and very much an issue. Another client’s site was getting redirected to the wrong domain. Every. Single. Request.There wasn’t a whole lot I could do. I was at a mall. I was about 20 minutes away from my home, and I had a client who thought they were being hacked. I thought they were too, at first.So I pulled up their site on my phone, and I immediately knew what was wrong. I was an idiot. That’s what was wrong. I knew how to fix the issue, but I just needed the time to fix it.I called the client up, and let them know what was wrong. I told them that I messed up, that I had their .htaccess open, as well as the other site’s .htaccess, and I modified the wrong one. I gave them an ETA for going home and resolving the issue and finished the rest of my train ride.Then I went home, and put out the fire. It was resolved quickly and efficiently. The issue was mine, yes. I made the mistake, but I also took responsibility.I signed up to do the work, and I also put myself in position to take the heat when things happen. I didn’t have any excuses. I didn’t have anything to hide behind.What I learned that day was that a person would rather have something get fixed, and have a known ETA, than have an excuse and be in the dark about resolution.I don’t give a rip about excuses when I’m on the other end. I give a rip about things getting resolved, and moving on.