SlideShare a Scribd company logo
Hacking the way you work: 
simple tools & tricks for your 
daily development workflow 
Fotis Alexandrou 
JOOMLADAY Greece 2013
Who am I 
• Developer at PeoplePerHour.com 
• Freelance Web Developer (Past) 
• Automation enthusiast 
• Nervous when talking in public
Challenges 
• Time management 
• Tracking changes & collaboration 
• Code structure 
• Code maintenance (the horror)
Time management
Common problems 
• “But it worked on my dev machine! What 
happened now?” 
• “Oh no! we use version 1.3.15 on the server? I 
run 2.6.13 which has the feature X 
implemented!”
Enter Vagrant 
• What it provides 
– Virtual Machines called “boxes” 
– Provisioning 
– Requirements: VirtualBox, Ruby
Configuration 
• Simple Ruby file called “Vagrantfile” 
– http://www.vagrantup.com/ 
• Plethora of pre-packaged boxes 
– http://vagrantbox.es 
• Provisioning via Puppet or Chef
Benefits 
• Consistency between local dev machine & production 
server 
• Ability to use the same provisioning recipes on production 
• Prevents from bloating the host OS with many services 
• Production server changes can be tested locally before 
being applied to production 
• Cloud integration (knife, vagrant aws)
Provisioning: Puppet vs Chef 
• Never ending discussion 
• Chef 
– Write Cookbooks in Ruby 
– http://docs.opscode.com/just_enough_ruby_for_chef.html 
• Puppet 
– Puppet manifests in Puppet script language 
• Both have the same results
Common Vagrant gotchas 
• Nginx + Apache sendfile (VirtualBox bug) 
• Memory increase 
– config.vm.customize ["modifyvm", :id, "--memory", 
1024] 
• Shared folder 
– :extra => "umask=0002,dmask=0002,fmask=0002" 
• Symlinks 
– https://coderwall.com/p/b5mu2w
Tracking changes & collaboration
SVN vs Git 
• Pros 
– Simple flow 
• Cons 
– Brances are separate directories 
– Always commiting to repo 
– Extreme CPU usage on big repos
Enter Git 
• Feature branches: No separate directories for 
branches 
• Submodules 
• Stash 
• Remotes
Remote Repos 
• Hosted on 3rd party services 
– Github 
– Bitbucket 
• Can be self-hosted 
– Gitlab 
– Gitolite 
– Gitorious
Git 
• Pull requests: Non merged commits –Visual 
representation of changes 
• Squash / Rebase: Merge several commits to 
one 
– Reverting only one commit if needed
Code Structure 
• Design patterns 
– “Design patterns are reusable solutions to 
commonly occurring problems in software 
design” 
• Help you get a solid start
Design patterns 
• Not the holy grail 
• Help developers read each others code as 
structure is somehow pre-defined 
• Avoid duplicate code
Examples 
• PHP design patterns: 
– https://github.com/domnikl/DesignPatternsPHP 
• Javascript design patterns 
– http://addyosmani.com/resources/essentialjsdesi 
gnpatterns/book/
Best Practices 
• Avoid hacks 
• DELETE your code 
– http://www.youtube.com/watch?v=Ev7lM7SWVHE 
• Less code is always better 
• Refactor while you still code
Other tips 
• Embrace coding standards 
– https://github.com/php-fig/fig-standards/ 
• Exceptions are your friends 
– Traceable, Catchable 
• Read other developers’ code 
– Github => Facebook for developers, browse repos, 
even in languages you are not familiar with
Thank you 
• Questions 
• Twitter: @falexandrou 
• Blog: falexandrou.com

More Related Content

What's hot

Cross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet coreCross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet core
Swaminathan Vetri
 
Pump up the JAM with Gatsby
Pump up the JAM with GatsbyPump up the JAM with Gatsby
Pump up the JAM with Gatsby
Stefan Adolf
 
Learning from the Ulabox stack
Learning from the Ulabox stackLearning from the Ulabox stack
Learning from the Ulabox stack
Rubén Sospedra
 
Isomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and ReactIsomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and React
Tyler Peterson
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
VincitOy
 
Why use Go for web development?
Why use Go for web development?Why use Go for web development?
Why use Go for web development?
Weng Wei
 
JEE Conf 2015: Less JS!
JEE Conf 2015: Less JS!JEE Conf 2015: Less JS!
JEE Conf 2015: Less JS!
_Dewy_
 
Continous Delivery with CQ
Continous Delivery with CQContinous Delivery with CQ
Continous Delivery with CQ
olibur
 
Web Assembly Big Picture
Web Assembly Big PictureWeb Assembly Big Picture
Web Assembly Big Picture
Yousif Shalaby
 
Ruby Midwest 2010 jRuby by Charles Nutter
Ruby Midwest 2010 jRuby by Charles NutterRuby Midwest 2010 jRuby by Charles Nutter
Ruby Midwest 2010 jRuby by Charles Nutter
Steven Chau
 
The Dark Side of Single Page Applications
The Dark Side of Single Page ApplicationsThe Dark Side of Single Page Applications
The Dark Side of Single Page Applications
Dor Kalev
 
Rapid CQ deployments by Jakub Wadolowski
Rapid CQ deployments by Jakub WadolowskiRapid CQ deployments by Jakub Wadolowski
Rapid CQ deployments by Jakub Wadolowski
AEM HUB
 
VersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient DevelopersVersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient Developers
Philippe Creux
 
SFJS 6-19-2012
SFJS 6-19-2012SFJS 6-19-2012
SFJS 6-19-2012
Adam Christian
 
Lessons in Open Source from the MongooseJS ODM
Lessons in Open Source from the MongooseJS ODMLessons in Open Source from the MongooseJS ODM
Lessons in Open Source from the MongooseJS ODM
Valeri Karpov
 
Sutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friendSutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friend
mpradny
 
Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
Valeri Karpov
 
Git branching
Git branchingGit branching
Git branching
iCapps
 
XPages build automation and testing
XPages build automation and testingXPages build automation and testing
XPages build automation and testing
mpradny
 
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Fwdays
 

What's hot (20)

Cross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet coreCross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet core
 
Pump up the JAM with Gatsby
Pump up the JAM with GatsbyPump up the JAM with Gatsby
Pump up the JAM with Gatsby
 
Learning from the Ulabox stack
Learning from the Ulabox stackLearning from the Ulabox stack
Learning from the Ulabox stack
 
Isomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and ReactIsomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and React
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
 
Why use Go for web development?
Why use Go for web development?Why use Go for web development?
Why use Go for web development?
 
JEE Conf 2015: Less JS!
JEE Conf 2015: Less JS!JEE Conf 2015: Less JS!
JEE Conf 2015: Less JS!
 
Continous Delivery with CQ
Continous Delivery with CQContinous Delivery with CQ
Continous Delivery with CQ
 
Web Assembly Big Picture
Web Assembly Big PictureWeb Assembly Big Picture
Web Assembly Big Picture
 
Ruby Midwest 2010 jRuby by Charles Nutter
Ruby Midwest 2010 jRuby by Charles NutterRuby Midwest 2010 jRuby by Charles Nutter
Ruby Midwest 2010 jRuby by Charles Nutter
 
The Dark Side of Single Page Applications
The Dark Side of Single Page ApplicationsThe Dark Side of Single Page Applications
The Dark Side of Single Page Applications
 
Rapid CQ deployments by Jakub Wadolowski
Rapid CQ deployments by Jakub WadolowskiRapid CQ deployments by Jakub Wadolowski
Rapid CQ deployments by Jakub Wadolowski
 
VersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient DevelopersVersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient Developers
 
SFJS 6-19-2012
SFJS 6-19-2012SFJS 6-19-2012
SFJS 6-19-2012
 
Lessons in Open Source from the MongooseJS ODM
Lessons in Open Source from the MongooseJS ODMLessons in Open Source from the MongooseJS ODM
Lessons in Open Source from the MongooseJS ODM
 
Sutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friendSutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friend
 
Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
 
Git branching
Git branchingGit branching
Git branching
 
XPages build automation and testing
XPages build automation and testingXPages build automation and testing
XPages build automation and testing
 
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
 

Viewers also liked

The One Question
The One QuestionThe One Question
The One Question
Bill Jensen
 
5 practical tips to leverage the power of simplicity
5 practical tips to leverage the power of simplicity5 practical tips to leverage the power of simplicity
5 practical tips to leverage the power of simplicity
Lisa Jansen
 
Leading Simply
Leading SimplyLeading Simply
Leading Simply
Bill Jensen
 
Five Simple Rules (for Corp. Rules, Tools, Processes)
Five Simple Rules (for Corp. Rules, Tools, Processes)Five Simple Rules (for Corp. Rules, Tools, Processes)
Five Simple Rules (for Corp. Rules, Tools, Processes)
Bill Jensen
 
The Ultimate 10-Page Presentation
The Ultimate 10-Page PresentationThe Ultimate 10-Page Presentation
The Ultimate 10-Page Presentation
Bill Jensen
 
Project Management Overview
Project Management OverviewProject Management Overview
Project Management Overview
cford1973
 
Simplicity Debono
Simplicity DebonoSimplicity Debono
Simplicity Debono
Vishwanath Ramdas
 
Simplicity
SimplicitySimplicity
Simplicity
Adam Jorlen
 

Viewers also liked (8)

The One Question
The One QuestionThe One Question
The One Question
 
5 practical tips to leverage the power of simplicity
5 practical tips to leverage the power of simplicity5 practical tips to leverage the power of simplicity
5 practical tips to leverage the power of simplicity
 
Leading Simply
Leading SimplyLeading Simply
Leading Simply
 
Five Simple Rules (for Corp. Rules, Tools, Processes)
Five Simple Rules (for Corp. Rules, Tools, Processes)Five Simple Rules (for Corp. Rules, Tools, Processes)
Five Simple Rules (for Corp. Rules, Tools, Processes)
 
The Ultimate 10-Page Presentation
The Ultimate 10-Page PresentationThe Ultimate 10-Page Presentation
The Ultimate 10-Page Presentation
 
Project Management Overview
Project Management OverviewProject Management Overview
Project Management Overview
 
Simplicity Debono
Simplicity DebonoSimplicity Debono
Simplicity Debono
 
Simplicity
SimplicitySimplicity
Simplicity
 

Similar to Hacking the way you work

August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Howard Greenberg
 
Magento 2 Workflows
Magento 2 WorkflowsMagento 2 Workflows
Magento 2 Workflows
Ryan Street
 
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit EuropeAutomation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
AppDynamics
 
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The UglyDevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGroup
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
Gaetano Giunta
 
Git preso to valtech cfml team
Git preso to valtech cfml teamGit preso to valtech cfml team
Git preso to valtech cfml team
SaravanaMuthu Jayaraj
 
The Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetThe Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With Puppet
Mike Merideth
 
The Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with PuppetThe Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with Puppet
VictorOps
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers
Mark Leusink
 
Benefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaBenefits of an Open environment with Wakanda
Benefits of an Open environment with Wakanda
Alexandre Morgaut
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
Code Mastery
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
indiver
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
GlobalLogic Ukraine
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
Betclic Everest Group Tech Team
 
Web Tools for GemStone/S
Web Tools for GemStone/SWeb Tools for GemStone/S
Web Tools for GemStone/S
ESUG
 
Microservices: The Best Practices
Microservices: The Best PracticesMicroservices: The Best Practices
Microservices: The Best Practices
Pavel Mička
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
Vaidik Kapoor
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
E. Camden Fisher
 
Enterprise Griffon
Enterprise GriffonEnterprise Griffon
Enterprise Griffon
James Williams
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
Tuenti
 

Similar to Hacking the way you work (20)

August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Magento 2 Workflows
Magento 2 WorkflowsMagento 2 Workflows
Magento 2 Workflows
 
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit EuropeAutomation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
 
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The UglyDevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
 
Git preso to valtech cfml team
Git preso to valtech cfml teamGit preso to valtech cfml team
Git preso to valtech cfml team
 
The Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetThe Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With Puppet
 
The Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with PuppetThe Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with Puppet
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers
 
Benefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaBenefits of an Open environment with Wakanda
Benefits of an Open environment with Wakanda
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
Web Tools for GemStone/S
Web Tools for GemStone/SWeb Tools for GemStone/S
Web Tools for GemStone/S
 
Microservices: The Best Practices
Microservices: The Best PracticesMicroservices: The Best Practices
Microservices: The Best Practices
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
Enterprise Griffon
Enterprise GriffonEnterprise Griffon
Enterprise Griffon
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
 

Recently uploaded

Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 

Recently uploaded (20)

Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 

Hacking the way you work

  • 1. Hacking the way you work: simple tools & tricks for your daily development workflow Fotis Alexandrou JOOMLADAY Greece 2013
  • 2. Who am I • Developer at PeoplePerHour.com • Freelance Web Developer (Past) • Automation enthusiast • Nervous when talking in public
  • 3. Challenges • Time management • Tracking changes & collaboration • Code structure • Code maintenance (the horror)
  • 5. Common problems • “But it worked on my dev machine! What happened now?” • “Oh no! we use version 1.3.15 on the server? I run 2.6.13 which has the feature X implemented!”
  • 6. Enter Vagrant • What it provides – Virtual Machines called “boxes” – Provisioning – Requirements: VirtualBox, Ruby
  • 7. Configuration • Simple Ruby file called “Vagrantfile” – http://www.vagrantup.com/ • Plethora of pre-packaged boxes – http://vagrantbox.es • Provisioning via Puppet or Chef
  • 8. Benefits • Consistency between local dev machine & production server • Ability to use the same provisioning recipes on production • Prevents from bloating the host OS with many services • Production server changes can be tested locally before being applied to production • Cloud integration (knife, vagrant aws)
  • 9. Provisioning: Puppet vs Chef • Never ending discussion • Chef – Write Cookbooks in Ruby – http://docs.opscode.com/just_enough_ruby_for_chef.html • Puppet – Puppet manifests in Puppet script language • Both have the same results
  • 10. Common Vagrant gotchas • Nginx + Apache sendfile (VirtualBox bug) • Memory increase – config.vm.customize ["modifyvm", :id, "--memory", 1024] • Shared folder – :extra => "umask=0002,dmask=0002,fmask=0002" • Symlinks – https://coderwall.com/p/b5mu2w
  • 11. Tracking changes & collaboration
  • 12. SVN vs Git • Pros – Simple flow • Cons – Brances are separate directories – Always commiting to repo – Extreme CPU usage on big repos
  • 13. Enter Git • Feature branches: No separate directories for branches • Submodules • Stash • Remotes
  • 14. Remote Repos • Hosted on 3rd party services – Github – Bitbucket • Can be self-hosted – Gitlab – Gitolite – Gitorious
  • 15. Git • Pull requests: Non merged commits –Visual representation of changes • Squash / Rebase: Merge several commits to one – Reverting only one commit if needed
  • 16. Code Structure • Design patterns – “Design patterns are reusable solutions to commonly occurring problems in software design” • Help you get a solid start
  • 17. Design patterns • Not the holy grail • Help developers read each others code as structure is somehow pre-defined • Avoid duplicate code
  • 18. Examples • PHP design patterns: – https://github.com/domnikl/DesignPatternsPHP • Javascript design patterns – http://addyosmani.com/resources/essentialjsdesi gnpatterns/book/
  • 19. Best Practices • Avoid hacks • DELETE your code – http://www.youtube.com/watch?v=Ev7lM7SWVHE • Less code is always better • Refactor while you still code
  • 20. Other tips • Embrace coding standards – https://github.com/php-fig/fig-standards/ • Exceptions are your friends – Traceable, Catchable • Read other developers’ code – Github => Facebook for developers, browse repos, even in languages you are not familiar with
  • 21. Thank you • Questions • Twitter: @falexandrou • Blog: falexandrou.com