SlideShare una empresa de Scribd logo
1 de 69
SHOW YOUR
DEVELOPER TOOLS
Stefan Didak
http://www.stefandidak.com
(“not a web developer”)
the “and the kitchen sink too” version
Saturday, June 15, 13
HOLD ONTOYOUR SEAT
This presentation will commence at Warp 11 speed
Due to time restraints I will not be going into how to install
things, how to configure things, or what best practices are best
applied when dealing with the things we’ll be covering today.
You’re encouraged to check the slides on the website, follow
the links and whatever you do... DOTRYTHIS AT HOME!
Saturday, June 15, 13
NOT A WEB DEVELOPER
The first thing I did was SEARCH for the best tools!
Every job requires the right tool.
How do you find the right tools?
What are the right tools?
Depends on WHO you ASK!
Saturday, June 15, 13
UHM... OK....
Something about “real developers” and those that call
themselves “developers”... and why I don’t do public speaking.
Saturday, June 15, 13
REALITY CHECK
Not being a “web developer” doesn’t mean we can’t teach “web
developers” a thing or two. Or three, or four, or five...
A “real” developer is
someone who...
...owns domains like arealdeveloper.com, like me! :-)
...develops the tools YOU USE and the software that
runs the servers YOU and YOUR CLIENTS run on.
Saturday, June 15, 13
ISTHISYOUR DEVTOOL?
Good for you!
Saturday, June 15, 13
OR IS IT MORE LIKETHIS?
Unfortunately this is what an awful lot of “developers” use!
Saturday, June 15, 13
THETOPICS
What we’ll be covering in this session today
How to develop LOCALLY... and WHY
Various LAMP stacks and Virtualization
Developing CODE
Tools, Editing, Debugging, Profiling, Managing,
Versioning, and more...
Doing it in STYLE
SCSS, SASS, LESS, Compass, etc.
Saturday, June 15, 13
FAVORITE FEATURES
But there are just too many to cover today
Saturday, June 15, 13
LIVE DEMO
Depending on what JetBrains will show
Great debugger integration
Refactoring tools for PHP
Automatically formatting code
File Watches to process files
Versioning integration & support
Unit Testing (if you’re into thatTDD crap :-)
Saturday, June 15, 13
BECAUSE LOCAL IS FAST!
Save yourself some time and work at lightning speed
How to develop
LOCALLY...
the WHY part!
Saturday, June 15, 13
BECAUSE LOCAL JUST RULES
Try to avoid working on LIVE sites, always!
Safer than messing with a live site
Faster than working on a remote server
Will work for you if your internet/host is down
Backups and local CONTROL
Full control over EVERYTHING
Resources are YOURS to define
Easier testing and faster to undo a screwup
And many more reasons...
Saturday, June 15, 13
WAYSTO DEVELOP LOCALLY
You decide how much time or money you wish to invest
A LAMP installation on your system
(local install or another system you’ve got)
Virtual Machine with a LAMP stack
(local install or another system you’ve got)
Dedicated or Virtual LOCAL HOSTING
(the ultimate freedom and power)
Saturday, June 15, 13
LAMP ONYOUR SYSTEM
Many solutions from free to moderately priced
MAMP
MAMP PRO
For Apple OSX
...and things like Homebrew
...or just installing things yourself
...or just compiling your own builds
...or all of those are just a PITA
Saturday, June 15, 13
LAMP ONYOUR SYSTEM
Many solutions from free to moderately priced
XAMPP
WAMP
For Windows
...and M$ Web Platform Installer
...or just installing things yourself
...or just compiling your own builds
...or all of those are just a PITA
Saturday, June 15, 13
LAMP ONYOUR SYSTEM
Many solutions from free to moderately priced
The GOOD:
You only need one computer to do it all...
...but could be tweaked to run on another.
Great to take along to do live demos.
All the other good stuff about doing it locally.
The BAD:
Smaller systems may get slow(...er).
The better local LAMP solutions aren’t free.
Saturday, June 15, 13
LAMPVIRTUAL MACHINE
Because virtualization is the best invention since sliced bread
“Virtualization for Dummies”
Run multiple OS’es...
...without crappy “dual boot” stuff
Saturday, June 15, 13
LAMPVIRTUAL MACHINE
Because you get to decide which solution works best for you
Microsoft Hyper-V (Windows),
VMware Workstation (Windows),
VMware ESX (Server based), VMware
Fusion (Apple OSX), VMware Server
(obsolete), Oracle VM, Sun xVM,
Virtuozzo Containers, OpenVZ,
Xen, KVM, VServer,
VirtualBox, ...and more.
Saturday, June 15, 13
LAMPVIRTUAL MACHINE
Run one or more OS’es as if they were “real”.
Saturday, June 15, 13
LAMPVIRTUAL MACHINE
Safely experiment, develop, and test, while you control the
environment that your stuff is running on, or in.
ISOLATION
Does not
interfere with
your actual OS
on the system
Saturday, June 15, 13
LAMPVIRTUAL MACHINE(S)
Why stop at just one when you can have as many as your
system resources will allow you to run?
Saturday, June 15, 13
LAMPVIRTUAL MACHINE(S)
VMware Workstation running several LAMP/Linux servers
Saturday, June 15, 13
LAMPVIRTUAL MACHINE
SANDBOXING IS NOTTHE SAME AS AVIRTUAL MACHINE
Saturday, June 15, 13
LAMPVIRTUAL MACHINE
A small LAMPVM can run on as little as 512MB of RAM.
The GOOD:
Isolated from your main system.
Control over your entire environment & config.
Snapshots and “undo”.
The BAD:
Smaller systems may not be capable.
Can get very resource hungry.
The betterVM solutions aren’t free.
Saturday, June 15, 13
LAMPVIRTUAL MACHINE
The mother of all UNDO functions
SNAPSHOTS
Imagine messing up your system
to the point of having a total loss...
... and then undoing it all with
one click
Saturday, June 15, 13
DEDICATED/VIRTUAL LOCAL
Whether you run on bare metal or virtualize it all
Step 1
Repurpose or buy a suitable computer
Step 2
Install a LAMP stack or VM solution
Step 3
Start using it.
How Big? How Small? How Much?
Saturday, June 15, 13
DEDICATED/VIRTUAL LOCAL
This Big? Well... if you want to, sure, why not! :-)
How Big?
Saturday, June 15, 13
DEDICATED/VIRTUAL LOCAL
Like 3 pizza boxes... my “mini” virtual server web-dev cluster
How Small?
Saturday, June 15, 13
DEDICATED/VIRTUAL LOCAL
Having your “development servers” in the cloud is not always
the most cost effective way to do things.
Three Quad Core Xeon’s each with
16GB RAM, 250GB SSD’s and 2TB
RAID1 storage.
Can host +/- 35-65
virtual machines for development
purposes. Low power consumption.
Costs +/- $4000 to OWN.
But +/- $800 to $1500 A MONTH (at aVM/VPS/VHost)
Saturday, June 15, 13
DEDICATEDTINY LOCAL
Small Atom’s with 4GB RAM and 120GB SSD’s.
Perfect for small LAMP servers. Runs about $300-400.
How Much?
Saturday, June 15, 13
VIRTUAL LOCAL
The advantages never stop and there’s too much to list!
Try NGINX instead of Apache to create yourself a
LEMP (not LAMP) server.
Install and experiment with PHP APC,
memcached, Varnish, and all the other cool
performance boosters.
Be able to MAKE PROPER USE of the many
great developer tools that are out there.
Saturday, June 15, 13
DEDICATED/VIRTUAL LOCAL
The learning curve for building and managingVM’s locally is
really not that bad. Really.Try it and be pleasantly surprised.
The GOOD:
Everything mentioned on slide 19.
Endless possibilities going virtual.
Highest speed and performance.
Online/hosted servers are no match for it.
The BAD:
Hardware isn’t free.You will have to invest.
There’s a learning curve.You will invest time also.
Saturday, June 15, 13
SETUP A LAMP SERVER
LAMP = Linux,Apache, MySQL, PHP
Unfortunately we will not have time for
that today so if there is enough interest
in the topic I might be persuaded to
come back and cover that topic.
It is not really that difficult.
If you know how to copy and paste you can
get quite far!
Saturday, June 15, 13
A LOCAL SITE COPY
Whether you work on a local copy of a live site or develop
the site locally for later deployment to a live server
How to create a
LOCAL copy
of a LIVE site
Saturday, June 15, 13
METHOD ONE
Use the MySQL client command line or ensure you have
phpMyAdmin installed on your local server
Step 1
Get a copy of the MySQL DB
(command line, phpMyAdmin, etc.)
Step 2
Get a copy of all the files for the site
(through sFTP, FTP, etc.)
Step 3
Copy the files to your local server &
import the MySQL DB into your local
server’s MySQL instance
Saturday, June 15, 13
METHODTWO
I’ve done this also but still prefer the manual
control provided by method one.
Step 1
Install a Backup Plugin
(ithemes BackupBuddy works really well and is highly popular)
Step 2
Use the Backup Plugin
Step 3
Restore the backup to your local server
Saturday, June 15, 13
EDIT WP-CONGIF.PHP
For your local server you probably will need to edit the
wp-config.php file.
define('DB_NAME', 'myclientsite');
define('DB_USER', 'myclientsitedbuser');
define('DB_PASSWORD', 'magicpass');
define('DB_HOST', 'localhost');
Saturday, June 15, 13
BUTYOU’RE NOT DONEYET!
Just copying the site’s files and DB to a local server does
not make it magically work.
Your system/computer does not know
yet where to find the local copy of the
site because DNS resolution will cause
your browser to see the actual remote
and live site.
Let’s take care of that...
Saturday, June 15, 13
EDITINGYOUR HOSTS FILE
You can find the hosts file in C:Windowssystem32driversetc
on Windows and /etc/hosts on OSX
10.0.2.80 my.supersite.com
Add a single line to your hosts file
containing the IP address of your local
development server and the FQDN of
your site.
Saturday, June 15, 13
ALLTHIS LOCAL STUFF WHY?
Local servers allow you to use the tools they were intended to!
XDEBUG
Debugging, Profiling, Tracing
Live demo using JetBrains PHPStorm
XHPROF
Really seeing what’s going on
Live demo on profiling with XHPROF
Saturday, June 15, 13
XDEBUG / ZEND DEBUGGER
Because your using a rock to hammer nails rather than a
hammer! Stop using a rock dammit!
THIS IS YOUR BRAIN... (we hope)
Saturday, June 15, 13
XDEBUG / ZEND DEBUGGER
Don’t get lost. Get debugging!
This is your brain WITHOUT XDEBUG
Saturday, June 15, 13
“WHY LOCAL” YOU ASKED?
Don’t try using XDEBUG on a remote server.
You’ll be sorry you tried.
XDEBUG is an Apache Module
and needs to be installed on the server
You will need full control on your server
Not possible on shared hosting
Not possible on managed hosting
Not feasible on VPS/Virtual hosting
Not sensible in a production environment
Saturday, June 15, 13
LIVE XDEBUG DEMO
Running off a 15” Mac Retina, 16GB RAM, 768GB SSD
with a 4GB RAM LAMP server onVMware Fusion
Debugging into a WordPress Plugin
Debugging into a WordPress Theme
Debugging is the same for any PHP code
and not WordPress specific. Debug stepping through
WordPress itself helps you learn, understand, and at
times makes you feel appalled at what you see!
Saturday, June 15, 13
PROFILING = PINPOINTING
I would still not want XHPROF running all the time
within a production environment
XHPROF is an Apache Module
(originally developed by Facebook to deal with PHP performance issues)
and needs to be installed on the server
You will need full control on your server
Not possible on shared hosting
Not possible on managed hosting
IS possible in a production environment
Saturday, June 15, 13
PROFILING LIVE DEMO
Still running off a 15” Mac Retina, 16GB RAM, 768GB SSD
with a 4GB RAM LAMP server onVMware Fusion
XHPROF
Pinpoint bottlenecks.
Pinpoint badly performing code.
Pinpoint site/page performance issues.
Pinpoint which developer to blame.
Pinpointing.
Get the point here?
Saturday, June 15, 13
VERSIONING
If you don’t use versioning of any kind...
...stop calling yourself a developer, please!
Saturday, June 15, 13
SCM, RCS,VCS,WHATEVER!
There are many version control systems out there, too many to
mention and too many to cover here.
Subversion (SVN), GIT, CVS, Mercurial,
Perforce, and many others...
Even if you’re not part of a team and working
alone, use versioning and use it religiously.
Plan your repository ahead of time to avoid a
nasty mess as development progresses over
time. You’ll thank me for it later.
Saturday, June 15, 13
YOUR CLIENT APP
Or go hard core and use the command line like
“real” developers do!
Tortoise SVN, Tortoise GIT,
Tortoise HG (for Mercurial),
CornerStone (OSX)
(personal recommendation for Subversion)
There are so many, both free or commercial there’s no
way I can even begin to mention the top 50.
Try some out and see what you like.
Saturday, June 15, 13
WHAT DO I NEED?
Personal preference dominates the versioning spectrum.
Use what you or your team are most comfortable with.
Step 1
Deploy a versioning server
Step 2
Setup your repositories
Step 3
Install a client for what you picked
Step 4
Always backup your repository!
Saturday, June 15, 13
WHY HOW WHAT HUH
Versioning is not a science (well, it might be!) but whatever you
do make sure you’re doing it.
There is no info on this slide because
this is such a BIG TOPIC to cover that I’m just
going to “wing it” live and not have any helpful hints
on this slide.
I HOPE that everyone already uses versioning of
some sort. If not, those folks can line up outside of the
venue here for mandatory execution and/or hot-
coal and/or flogging “treatment” to deal with this
“ailment”. :-)
Saturday, June 15, 13
DOING IT IN STYLE!
CSS should be the end point that is generated,
not the “language” you should directly interact with.
Saturday, June 15, 13
SCSS, SASS, LESS
Lots of differences between SCSS/SASS and LESS
But also much of the same concept
All the things you MISS in CSS
Variables
Nested Rules
Mixins
Functions
Selector Inheritance
Control (i.e. if, for, while...)
Math (i.e. border-size * 2)
Saturday, June 15, 13
SCSS, SASS, LESS
High adoption rate!
Lots of support provided by the
editor you use.
Syntax highlighting
Intelligent editing support
“Transpilation” support in a growing
number of editors/IDE’s.
Saturday, June 15, 13
SCSS, SASS, LESS
Too much to tell and too little time since this could
easily fill several meetups worth of time.
Personal Preference
SCSS/SASS
Command line...
...or through utility applications
...or through your editor/IDE
Saturday, June 15, 13
SCSS, SASS, LESS
VARIABLES
$red: #cc0000;
$margin: 20px;
.content-block {
border-color: $red;
color: darken($red, 15%);
}
.border {
padding: $margin / 2;
margin: $margin / 2;
border-color: $red;
}
Saturday, June 15, 13
SCSS, SASS, LESS
VARIABLES
$red: #cc0000
$margin: 20px
.content-block
border-color: $red
color: darken($red, 15%)
.border
padding: $margin / 2
margin: $margin / 2
border-color: $red
Saturday, June 15, 13
SCSS, SASS, LESS
VARIABLES
$red: #cc0000;
$litered: (@red + #222);
.content-block {
border-color: @red;
color: @litered;
}
Saturday, June 15, 13
SCSS VERSUS CSS
SELECTOR INHERITANCE
.content {
border: 1px #f00;
background: #fcc;
}
.thick-content {
@extend .content;
border-width: 5px;
}
.content,
.thick-content {
border: 1px #f00;
background: #fcc;
}
.thick-content {
border-width: 5px;
}
Saturday, June 15, 13
SCSS VERSUS CSS
NESTING - Efficient and improves readability and maintenance
#navbar {
width: 80%;
height: 23px;
ul { list-style-type: none; }
li {
float: left;
a { font-weight: bold; }
}
}
Saturday, June 15, 13
SCSS VERSUS CSS
NESTING - Efficient and improves readability and maintenance
#navbar {
width: 80%;
height: 23px;
}
#navbar ul {
list-style-type: none;
}
#navbar li {
float: left;
}
#navbar li a {
font-weight: bold;
}
Saturday, June 15, 13
SCSS, SASS, LESS
Using PHPStorm and FileWatchers to automatically
“transpile” SCSS, SASS, LESS, into CSS files.
Saturday, June 15, 13
BONUS DEVELOPERTOOL 1
Sennheiser HD800 - a must have if you’re serious!
THE FUN PART OF FINISHING THIS
Saturday, June 15, 13
BONUS DEVELOPERTOOLS 2
You’ll need many of these when you develop for real! :-)
Single Malt Scotch
Hi Stefan!
Tequila
Hi Kelly!
Bourbon
Hi Mitch!
Beer
Hi Andrei!
Saturday, June 15, 13
DOWNLOADTHE SLIDES
Because all of this must have gone way too fast for you!
http://eastbaywp.com/
Saturday, June 15, 13
LINKINGTOTHE END
BYE BYE! See y’all next month... unless you kill me...
THANKS FOR HAVING
ME BORE THE LIVING...
something OUT OF YOU!
LINKS AHEAD...
Saturday, June 15, 13
THINGS MENTIONED (1/2)
In case you want to go look stuff up for yourself
JetBrains PHPStorm
http://www.jetbrains.com/phpstorm/
MAMP and MAMP PRO
http://www.mamp.info
XAMPP
http://www.apachefriends.org/en/xampp.html
WAMP SERVER
http://www.wampserver.com/en/
Microsoft Web Platform Installer
http://www.microsoft.com/web/downloads/platform.aspx
VMware (VMware ESX, VMware Workstation, VMware Fusion)
http://www.vmware.com/
Parallels Desktop
http://www.parallels.com/products/desktop/
Virtualization Solutions
http://www.cyberciti.biz/tips/linux-virtualization-software.html
More on Virtualization and Sandboxing
http://goo.gl/PESjo
Varnish
https://www.varnish-cache.org/
Memcached
http://memcached.org/
PHP APC
http://php.net/manual/en/book.apc.php
XDEBUG
http://xdebug.org/
Zend Debugger, Zend Server, Zend Studio
http://www.zend.com
XHPROF
https://github.com/facebook/xhprof
XHGUI
https://github.com/preinheimer/xhprof
ithemes BackupBuddy
http://ithemes.com/purchase/backupbuddy/
anything I forgot to add here... simple... google it
Saturday, June 15, 13
THINGS MENTIONED (2/2)
In case you want to go look even more stuff up for yourself
Visual SVN (Windows)
http://www.visualsvn.com/
Subversion (SVN)
http://subversion.apache.org/
Tortoise SVN (Windows)
http://tortoisesvn.net/
Tortoise GIT (Windows)
https://code.google.com/p/tortoisegit/
CornerStone (OSX)
http://www.zennaware.com/cornerstone/index.php
GIT
http://git-scm.com/
CVS
http://cvs.nongnu.org/
Mercurial
http://mercurial.selenic.com/
Tortoise HG
http://mercurial.selenic.com/wiki/TortoiseHg
Perforce
http://www.perforce.com/
anything I forgot to add here... simple... google it
SCSS & Sass
http://sass-lang.com/
LESS
http://lesscss.org/
Compass
http://compass-style.org/
Compass App (OSX)
http://compass.handlino.com/
Atlassian
http://www.atlassian.com/
Altova
http://www.altova.com/
And finally, a “real developer’s” home office :-)
http://www.stefandidak.com/office/
http://www.flickr.com/photos/didak/sets/72157633152434208/
http://www.flickr.com/photos/didak/sets/72157632343719954/
http://www.flickr.com/photos/didak/sets/72157632244753177/
Saturday, June 15, 13
QUESTIONS
Because I’m sure there’ll be some!
Saturday, June 15, 13

Más contenido relacionado

La actualidad más candente

Construindo um micro framework web em Python
Construindo um micro framework web em PythonConstruindo um micro framework web em Python
Construindo um micro framework web em PythonAllisson Azevedo
 
How QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsHow QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsQing-Cheng Li
 
WordPress の可能性
WordPress の可能性WordPress の可能性
WordPress の可能性Naoko Takano
 
Performance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For SpeedPerformance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For SpeedVijay Rayapati
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature CreatureChristian Heilmann
 
<?php>Hello Worl...Ooo Shiny!
<?php>Hello Worl...Ooo Shiny! <?php>Hello Worl...Ooo Shiny!
<?php>Hello Worl...Ooo Shiny! Sean Prunka
 
Practical guide for front-end development for django devs
Practical guide for front-end development for django devsPractical guide for front-end development for django devs
Practical guide for front-end development for django devsDavidson Fellipe
 
Educ 515 W2 Sp109
Educ 515 W2 Sp109Educ 515 W2 Sp109
Educ 515 W2 Sp109lancesfa
 
Joomla 10-jaar-vooruitgang-jdnl15
Joomla 10-jaar-vooruitgang-jdnl15Joomla 10-jaar-vooruitgang-jdnl15
Joomla 10-jaar-vooruitgang-jdnl15Peter Martin
 
Browser controller testing for webapps (in Windows environment)
Browser controller testing for webapps (in Windows environment)Browser controller testing for webapps (in Windows environment)
Browser controller testing for webapps (in Windows environment)Adrian Spinei
 
Targeting Screens with HTML5, Flash & Native
Targeting Screens with HTML5, Flash & NativeTargeting Screens with HTML5, Flash & Native
Targeting Screens with HTML5, Flash & NativeEric Fickes
 
Daniel Steigerwald - Este.js - konec velkého Schizma
Daniel Steigerwald - Este.js - konec velkého SchizmaDaniel Steigerwald - Este.js - konec velkého Schizma
Daniel Steigerwald - Este.js - konec velkého SchizmaDevelcz
 
[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web Design[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web DesignChristopher Schmitt
 
5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)Erwin Elling
 
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...Baruch Sadogursky
 
10 tips to improve the usability of Joomla - Joomla World Conference 2014
10 tips to improve the usability of Joomla - Joomla World Conference 201410 tips to improve the usability of Joomla - Joomla World Conference 2014
10 tips to improve the usability of Joomla - Joomla World Conference 2014Sander Potjer
 

La actualidad más candente (20)

Construindo um micro framework web em Python
Construindo um micro framework web em PythonConstruindo um micro framework web em Python
Construindo um micro framework web em Python
 
How QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsHow QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser Extensions
 
WordPress の可能性
WordPress の可能性WordPress の可能性
WordPress の可能性
 
Performance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For SpeedPerformance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For Speed
 
Progressive Enhancement
Progressive EnhancementProgressive Enhancement
Progressive Enhancement
 
A Period of Transition
A Period of TransitionA Period of Transition
A Period of Transition
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature Creature
 
Linux Users are People, Too!
Linux Users are People, Too!Linux Users are People, Too!
Linux Users are People, Too!
 
<?php>Hello Worl...Ooo Shiny!
<?php>Hello Worl...Ooo Shiny! <?php>Hello Worl...Ooo Shiny!
<?php>Hello Worl...Ooo Shiny!
 
Practical guide for front-end development for django devs
Practical guide for front-end development for django devsPractical guide for front-end development for django devs
Practical guide for front-end development for django devs
 
Web pack and friends
Web pack and friendsWeb pack and friends
Web pack and friends
 
Educ 515 W2 Sp109
Educ 515 W2 Sp109Educ 515 W2 Sp109
Educ 515 W2 Sp109
 
Joomla 10-jaar-vooruitgang-jdnl15
Joomla 10-jaar-vooruitgang-jdnl15Joomla 10-jaar-vooruitgang-jdnl15
Joomla 10-jaar-vooruitgang-jdnl15
 
Browser controller testing for webapps (in Windows environment)
Browser controller testing for webapps (in Windows environment)Browser controller testing for webapps (in Windows environment)
Browser controller testing for webapps (in Windows environment)
 
Targeting Screens with HTML5, Flash & Native
Targeting Screens with HTML5, Flash & NativeTargeting Screens with HTML5, Flash & Native
Targeting Screens with HTML5, Flash & Native
 
Daniel Steigerwald - Este.js - konec velkého Schizma
Daniel Steigerwald - Este.js - konec velkého SchizmaDaniel Steigerwald - Este.js - konec velkého Schizma
Daniel Steigerwald - Este.js - konec velkého Schizma
 
[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web Design[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web Design
 
5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)
 
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
 
10 tips to improve the usability of Joomla - Joomla World Conference 2014
10 tips to improve the usability of Joomla - Joomla World Conference 201410 tips to improve the usability of Joomla - Joomla World Conference 2014
10 tips to improve the usability of Joomla - Joomla World Conference 2014
 

Destacado

bbPress - WCSF 2012
bbPress - WCSF 2012bbPress - WCSF 2012
bbPress - WCSF 2012John Jacoby
 
WordPress SEO Revisited by Lou Anne McKeefery of Be Found
WordPress SEO Revisited by Lou Anne McKeefery of Be FoundWordPress SEO Revisited by Lou Anne McKeefery of Be Found
WordPress SEO Revisited by Lou Anne McKeefery of Be FoundEast Bay WordPress Meetup
 
WCSF 2012 - All You Can Eat Content Types
WCSF 2012 - All You Can Eat Content TypesWCSF 2012 - All You Can Eat Content Types
WCSF 2012 - All You Can Eat Content TypesScott Clark
 
Rob La Gatta; Making the Events Calendar Sit Up and Beg
Rob La Gatta; Making the Events Calendar Sit Up and BegRob La Gatta; Making the Events Calendar Sit Up and Beg
Rob La Gatta; Making the Events Calendar Sit Up and BegEast Bay WordPress Meetup
 
Sallie Goetsch: Making the Events Calendar Sit Up and Beg
Sallie Goetsch: Making the Events Calendar Sit Up and BegSallie Goetsch: Making the Events Calendar Sit Up and Beg
Sallie Goetsch: Making the Events Calendar Sit Up and BegEast Bay WordPress Meetup
 
Git Version Control for the Complete N00b by Adam LaBarge
Git Version Control for the Complete N00b by Adam LaBargeGit Version Control for the Complete N00b by Adam LaBarge
Git Version Control for the Complete N00b by Adam LaBargeEast Bay WordPress Meetup
 
WordPress and Business Intelligence
WordPress and Business IntelligenceWordPress and Business Intelligence
WordPress and Business IntelligenceTech Liminal
 
High Performance WordPress
High Performance WordPressHigh Performance WordPress
High Performance WordPressvnsavage
 
Technote Index Map Help
Technote Index Map HelpTechnote Index Map Help
Technote Index Map Helpguest0e7fb2
 
Developing Your Ultimate Package
Developing Your Ultimate PackageDeveloping Your Ultimate Package
Developing Your Ultimate PackageSimon Collison
 
いちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマいちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマHideki MACHIDA
 

Destacado (20)

cPanel User Manual
cPanel User ManualcPanel User Manual
cPanel User Manual
 
Making WordPress Easier to Use
Making WordPress Easier to UseMaking WordPress Easier to Use
Making WordPress Easier to Use
 
bbPress - WCSF 2012
bbPress - WCSF 2012bbPress - WCSF 2012
bbPress - WCSF 2012
 
WordPress SEO Revisited by Lou Anne McKeefery of Be Found
WordPress SEO Revisited by Lou Anne McKeefery of Be FoundWordPress SEO Revisited by Lou Anne McKeefery of Be Found
WordPress SEO Revisited by Lou Anne McKeefery of Be Found
 
WCSF 2012 - All You Can Eat Content Types
WCSF 2012 - All You Can Eat Content TypesWCSF 2012 - All You Can Eat Content Types
WCSF 2012 - All You Can Eat Content Types
 
WordPress Comments (November Meetup)
WordPress Comments (November Meetup)WordPress Comments (November Meetup)
WordPress Comments (November Meetup)
 
Rob La Gatta; Making the Events Calendar Sit Up and Beg
Rob La Gatta; Making the Events Calendar Sit Up and BegRob La Gatta; Making the Events Calendar Sit Up and Beg
Rob La Gatta; Making the Events Calendar Sit Up and Beg
 
Sallie Goetsch: Making the Events Calendar Sit Up and Beg
Sallie Goetsch: Making the Events Calendar Sit Up and BegSallie Goetsch: Making the Events Calendar Sit Up and Beg
Sallie Goetsch: Making the Events Calendar Sit Up and Beg
 
WordPress Gallery tutorial
WordPress Gallery tutorialWordPress Gallery tutorial
WordPress Gallery tutorial
 
Git Version Control for the Complete N00b by Adam LaBarge
Git Version Control for the Complete N00b by Adam LaBargeGit Version Control for the Complete N00b by Adam LaBarge
Git Version Control for the Complete N00b by Adam LaBarge
 
Is Your (Client's) Website Ready for 2017?
Is Your (Client's) Website Ready for 2017?Is Your (Client's) Website Ready for 2017?
Is Your (Client's) Website Ready for 2017?
 
WordPress and Business Intelligence
WordPress and Business IntelligenceWordPress and Business Intelligence
WordPress and Business Intelligence
 
High Performance WordPress
High Performance WordPressHigh Performance WordPress
High Performance WordPress
 
Clipagem tarumã setembro 2010
Clipagem tarumã   setembro 2010Clipagem tarumã   setembro 2010
Clipagem tarumã setembro 2010
 
Livestock and Land
Livestock and LandLivestock and Land
Livestock and Land
 
NASL
NASLNASL
NASL
 
C lipagem tarumã maio 2010
C lipagem tarumã   maio 2010C lipagem tarumã   maio 2010
C lipagem tarumã maio 2010
 
Technote Index Map Help
Technote Index Map HelpTechnote Index Map Help
Technote Index Map Help
 
Developing Your Ultimate Package
Developing Your Ultimate PackageDeveloping Your Ultimate Package
Developing Your Ultimate Package
 
いちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマいちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマ
 

Similar a Real Developer Tools for WordPress by Stefan Didak

Ci For The Web 2.0 Guy Or Gal
Ci For The Web 2.0 Guy Or GalCi For The Web 2.0 Guy Or Gal
Ci For The Web 2.0 Guy Or GalChad Woolley
 
Microservices and functional programming
Microservices and functional programmingMicroservices and functional programming
Microservices and functional programmingMichael Neale
 
Tools/Processes for serious android app development
Tools/Processes for serious android app developmentTools/Processes for serious android app development
Tools/Processes for serious android app developmentGaurav Lochan
 
Georgia Tech hacking Accessibility
Georgia Tech hacking AccessibilityGeorgia Tech hacking Accessibility
Georgia Tech hacking AccessibilityChristian Heilmann
 
Rob "Mubix" Fuller: Attacker Ghost Stories
Rob "Mubix" Fuller: Attacker Ghost StoriesRob "Mubix" Fuller: Attacker Ghost Stories
Rob "Mubix" Fuller: Attacker Ghost StoriesArea41
 
Attacker Ghost Stories (CarolinaCon / Area41 / RVASec)
Attacker Ghost Stories (CarolinaCon / Area41 / RVASec)Attacker Ghost Stories (CarolinaCon / Area41 / RVASec)
Attacker Ghost Stories (CarolinaCon / Area41 / RVASec)Rob Fuller
 
RubyMotion: Put your Dreams in Motion with Ruby
RubyMotion: Put your Dreams in Motion with RubyRubyMotion: Put your Dreams in Motion with Ruby
RubyMotion: Put your Dreams in Motion with RubyAstrails
 
Raspberry pi: Aprende raspberry pi con Linux por peter membrey y david hows.
Raspberry pi: Aprende raspberry pi con Linux por peter membrey y david hows.Raspberry pi: Aprende raspberry pi con Linux por peter membrey y david hows.
Raspberry pi: Aprende raspberry pi con Linux por peter membrey y david hows.SANTIAGO PABLO ALBERTO
 
setup-a-dedicated-web
setup-a-dedicated-websetup-a-dedicated-web
setup-a-dedicated-webfurkids
 
Virtualización de Escriorios VMWare View 5
Virtualización de Escriorios VMWare View 5Virtualización de Escriorios VMWare View 5
Virtualización de Escriorios VMWare View 5RaGaZoMe
 
The InstallShield of the 21st Century – Theo Schlossnagle
The InstallShield of the 21st Century – Theo SchlossnagleThe InstallShield of the 21st Century – Theo Schlossnagle
The InstallShield of the 21st Century – Theo SchlossnagleChef Software, Inc.
 
Project: Intrusion Detection
Project: Intrusion DetectionProject: Intrusion Detection
Project: Intrusion DetectionJay Schulman
 
Professional web development with libraries
Professional web development with librariesProfessional web development with libraries
Professional web development with librariesChristian Heilmann
 
Guide to dual booting
Guide to dual bootingGuide to dual booting
Guide to dual bootingMahfud Saja
 
Always ready for release by Bogdan Costea
Always ready for release by Bogdan CosteaAlways ready for release by Bogdan Costea
Always ready for release by Bogdan CosteaBosnia Agile
 
Untangling the web9
Untangling the web9Untangling the web9
Untangling the web9Derek Jacoby
 

Similar a Real Developer Tools for WordPress by Stefan Didak (20)

Making WordPress Fly
Making WordPress FlyMaking WordPress Fly
Making WordPress Fly
 
Git Makes Me Angry Inside
Git Makes Me Angry InsideGit Makes Me Angry Inside
Git Makes Me Angry Inside
 
Ci For The Web 2.0 Guy Or Gal
Ci For The Web 2.0 Guy Or GalCi For The Web 2.0 Guy Or Gal
Ci For The Web 2.0 Guy Or Gal
 
A Brief introduction to Webassembly
A Brief introduction to WebassemblyA Brief introduction to Webassembly
A Brief introduction to Webassembly
 
A false digital alibi on mac os x
A false digital alibi on mac os xA false digital alibi on mac os x
A false digital alibi on mac os x
 
Microservices and functional programming
Microservices and functional programmingMicroservices and functional programming
Microservices and functional programming
 
Tools/Processes for serious android app development
Tools/Processes for serious android app developmentTools/Processes for serious android app development
Tools/Processes for serious android app development
 
Georgia Tech hacking Accessibility
Georgia Tech hacking AccessibilityGeorgia Tech hacking Accessibility
Georgia Tech hacking Accessibility
 
Rob "Mubix" Fuller: Attacker Ghost Stories
Rob "Mubix" Fuller: Attacker Ghost StoriesRob "Mubix" Fuller: Attacker Ghost Stories
Rob "Mubix" Fuller: Attacker Ghost Stories
 
Attacker Ghost Stories (CarolinaCon / Area41 / RVASec)
Attacker Ghost Stories (CarolinaCon / Area41 / RVASec)Attacker Ghost Stories (CarolinaCon / Area41 / RVASec)
Attacker Ghost Stories (CarolinaCon / Area41 / RVASec)
 
RubyMotion: Put your Dreams in Motion with Ruby
RubyMotion: Put your Dreams in Motion with RubyRubyMotion: Put your Dreams in Motion with Ruby
RubyMotion: Put your Dreams in Motion with Ruby
 
Raspberry pi: Aprende raspberry pi con Linux por peter membrey y david hows.
Raspberry pi: Aprende raspberry pi con Linux por peter membrey y david hows.Raspberry pi: Aprende raspberry pi con Linux por peter membrey y david hows.
Raspberry pi: Aprende raspberry pi con Linux por peter membrey y david hows.
 
setup-a-dedicated-web
setup-a-dedicated-websetup-a-dedicated-web
setup-a-dedicated-web
 
Virtualización de Escriorios VMWare View 5
Virtualización de Escriorios VMWare View 5Virtualización de Escriorios VMWare View 5
Virtualización de Escriorios VMWare View 5
 
The InstallShield of the 21st Century – Theo Schlossnagle
The InstallShield of the 21st Century – Theo SchlossnagleThe InstallShield of the 21st Century – Theo Schlossnagle
The InstallShield of the 21st Century – Theo Schlossnagle
 
Project: Intrusion Detection
Project: Intrusion DetectionProject: Intrusion Detection
Project: Intrusion Detection
 
Professional web development with libraries
Professional web development with librariesProfessional web development with libraries
Professional web development with libraries
 
Guide to dual booting
Guide to dual bootingGuide to dual booting
Guide to dual booting
 
Always ready for release by Bogdan Costea
Always ready for release by Bogdan CosteaAlways ready for release by Bogdan Costea
Always ready for release by Bogdan Costea
 
Untangling the web9
Untangling the web9Untangling the web9
Untangling the web9
 

Más de East Bay WordPress Meetup

How to Develop a Color Palette for Your Website with Amanada McCoy
How to Develop a Color Palette for Your Website with Amanada McCoyHow to Develop a Color Palette for Your Website with Amanada McCoy
How to Develop a Color Palette for Your Website with Amanada McCoyEast Bay WordPress Meetup
 
Beyond Gravity Forms: Form Plugins for WordPress
Beyond Gravity Forms: Form Plugins for WordPressBeyond Gravity Forms: Form Plugins for WordPress
Beyond Gravity Forms: Form Plugins for WordPressEast Bay WordPress Meetup
 
Advanced Custom Fields: Amazing Possibilities and Irritating Limitations
Advanced Custom Fields: Amazing Possibilities and Irritating LimitationsAdvanced Custom Fields: Amazing Possibilities and Irritating Limitations
Advanced Custom Fields: Amazing Possibilities and Irritating LimitationsEast Bay WordPress Meetup
 
Introduction to Google Analytics by Katherine Mancuso
Introduction to Google Analytics by Katherine MancusoIntroduction to Google Analytics by Katherine Mancuso
Introduction to Google Analytics by Katherine MancusoEast Bay WordPress Meetup
 
iThemes Exchange: the New Kid on the WordPress E-Commerce Block
iThemes Exchange: the New Kid on the WordPress E-Commerce BlockiThemes Exchange: the New Kid on the WordPress E-Commerce Block
iThemes Exchange: the New Kid on the WordPress E-Commerce BlockEast Bay WordPress Meetup
 
What Developers Need Designers to Know about WordPress
What Developers Need Designers to Know about WordPressWhat Developers Need Designers to Know about WordPress
What Developers Need Designers to Know about WordPressEast Bay WordPress Meetup
 
Drag-and-drop WordPress Themes, featuring Themify Builder
Drag-and-drop WordPress Themes, featuring Themify BuilderDrag-and-drop WordPress Themes, featuring Themify Builder
Drag-and-drop WordPress Themes, featuring Themify BuilderEast Bay WordPress Meetup
 

Más de East Bay WordPress Meetup (20)

How to Conduct an SEO Audit
How to Conduct an SEO AuditHow to Conduct an SEO Audit
How to Conduct an SEO Audit
 
WordPress Membership Plugins: WP-Members
WordPress Membership Plugins: WP-MembersWordPress Membership Plugins: WP-Members
WordPress Membership Plugins: WP-Members
 
WordPress Membership Plugins: MemberPress
WordPress Membership Plugins: MemberPress WordPress Membership Plugins: MemberPress
WordPress Membership Plugins: MemberPress
 
How to Develop a Color Palette for Your Website with Amanada McCoy
How to Develop a Color Palette for Your Website with Amanada McCoyHow to Develop a Color Palette for Your Website with Amanada McCoy
How to Develop a Color Palette for Your Website with Amanada McCoy
 
Event Management Plugins for WordPress
Event Management Plugins for WordPressEvent Management Plugins for WordPress
Event Management Plugins for WordPress
 
Beyond Gravity Forms: Form Plugins for WordPress
Beyond Gravity Forms: Form Plugins for WordPressBeyond Gravity Forms: Form Plugins for WordPress
Beyond Gravity Forms: Form Plugins for WordPress
 
Advanced Custom Fields: Amazing Possibilities and Irritating Limitations
Advanced Custom Fields: Amazing Possibilities and Irritating LimitationsAdvanced Custom Fields: Amazing Possibilities and Irritating Limitations
Advanced Custom Fields: Amazing Possibilities and Irritating Limitations
 
March 2015: Plugins Worth Paying For
March 2015: Plugins Worth Paying ForMarch 2015: Plugins Worth Paying For
March 2015: Plugins Worth Paying For
 
Google Webmaster Tools for WordPress
Google Webmaster Tools for WordPressGoogle Webmaster Tools for WordPress
Google Webmaster Tools for WordPress
 
Introduction to Google Analytics by Katherine Mancuso
Introduction to Google Analytics by Katherine MancusoIntroduction to Google Analytics by Katherine Mancuso
Introduction to Google Analytics by Katherine Mancuso
 
iThemes Exchange: the New Kid on the WordPress E-Commerce Block
iThemes Exchange: the New Kid on the WordPress E-Commerce BlockiThemes Exchange: the New Kid on the WordPress E-Commerce Block
iThemes Exchange: the New Kid on the WordPress E-Commerce Block
 
Running a WordPress Business--Some Numbers
Running a WordPress Business--Some NumbersRunning a WordPress Business--Some Numbers
Running a WordPress Business--Some Numbers
 
What Developers Need Designers to Know about WordPress
What Developers Need Designers to Know about WordPressWhat Developers Need Designers to Know about WordPress
What Developers Need Designers to Know about WordPress
 
Drag-and-drop WordPress Themes, featuring Themify Builder
Drag-and-drop WordPress Themes, featuring Themify BuilderDrag-and-drop WordPress Themes, featuring Themify Builder
Drag-and-drop WordPress Themes, featuring Themify Builder
 
Drag and-Drop WordPress Themes
Drag and-Drop WordPress ThemesDrag and-Drop WordPress Themes
Drag and-Drop WordPress Themes
 
Fun with WooCommerce
Fun with WooCommerceFun with WooCommerce
Fun with WooCommerce
 
Managed WordPress Hosting
Managed WordPress HostingManaged WordPress Hosting
Managed WordPress Hosting
 
Having Fun with Local WordPress Development
Having Fun with Local WordPress DevelopmentHaving Fun with Local WordPress Development
Having Fun with Local WordPress Development
 
Share Your WordPress Developer Tools
Share Your WordPress Developer ToolsShare Your WordPress Developer Tools
Share Your WordPress Developer Tools
 
Show off your WordPress site
Show off your WordPress siteShow off your WordPress site
Show off your WordPress site
 

Último

Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 

Último (20)

Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 

Real Developer Tools for WordPress by Stefan Didak

  • 1. SHOW YOUR DEVELOPER TOOLS Stefan Didak http://www.stefandidak.com (“not a web developer”) the “and the kitchen sink too” version Saturday, June 15, 13
  • 2. HOLD ONTOYOUR SEAT This presentation will commence at Warp 11 speed Due to time restraints I will not be going into how to install things, how to configure things, or what best practices are best applied when dealing with the things we’ll be covering today. You’re encouraged to check the slides on the website, follow the links and whatever you do... DOTRYTHIS AT HOME! Saturday, June 15, 13
  • 3. NOT A WEB DEVELOPER The first thing I did was SEARCH for the best tools! Every job requires the right tool. How do you find the right tools? What are the right tools? Depends on WHO you ASK! Saturday, June 15, 13
  • 4. UHM... OK.... Something about “real developers” and those that call themselves “developers”... and why I don’t do public speaking. Saturday, June 15, 13
  • 5. REALITY CHECK Not being a “web developer” doesn’t mean we can’t teach “web developers” a thing or two. Or three, or four, or five... A “real” developer is someone who... ...owns domains like arealdeveloper.com, like me! :-) ...develops the tools YOU USE and the software that runs the servers YOU and YOUR CLIENTS run on. Saturday, June 15, 13
  • 6. ISTHISYOUR DEVTOOL? Good for you! Saturday, June 15, 13
  • 7. OR IS IT MORE LIKETHIS? Unfortunately this is what an awful lot of “developers” use! Saturday, June 15, 13
  • 8. THETOPICS What we’ll be covering in this session today How to develop LOCALLY... and WHY Various LAMP stacks and Virtualization Developing CODE Tools, Editing, Debugging, Profiling, Managing, Versioning, and more... Doing it in STYLE SCSS, SASS, LESS, Compass, etc. Saturday, June 15, 13
  • 9. FAVORITE FEATURES But there are just too many to cover today Saturday, June 15, 13
  • 10. LIVE DEMO Depending on what JetBrains will show Great debugger integration Refactoring tools for PHP Automatically formatting code File Watches to process files Versioning integration & support Unit Testing (if you’re into thatTDD crap :-) Saturday, June 15, 13
  • 11. BECAUSE LOCAL IS FAST! Save yourself some time and work at lightning speed How to develop LOCALLY... the WHY part! Saturday, June 15, 13
  • 12. BECAUSE LOCAL JUST RULES Try to avoid working on LIVE sites, always! Safer than messing with a live site Faster than working on a remote server Will work for you if your internet/host is down Backups and local CONTROL Full control over EVERYTHING Resources are YOURS to define Easier testing and faster to undo a screwup And many more reasons... Saturday, June 15, 13
  • 13. WAYSTO DEVELOP LOCALLY You decide how much time or money you wish to invest A LAMP installation on your system (local install or another system you’ve got) Virtual Machine with a LAMP stack (local install or another system you’ve got) Dedicated or Virtual LOCAL HOSTING (the ultimate freedom and power) Saturday, June 15, 13
  • 14. LAMP ONYOUR SYSTEM Many solutions from free to moderately priced MAMP MAMP PRO For Apple OSX ...and things like Homebrew ...or just installing things yourself ...or just compiling your own builds ...or all of those are just a PITA Saturday, June 15, 13
  • 15. LAMP ONYOUR SYSTEM Many solutions from free to moderately priced XAMPP WAMP For Windows ...and M$ Web Platform Installer ...or just installing things yourself ...or just compiling your own builds ...or all of those are just a PITA Saturday, June 15, 13
  • 16. LAMP ONYOUR SYSTEM Many solutions from free to moderately priced The GOOD: You only need one computer to do it all... ...but could be tweaked to run on another. Great to take along to do live demos. All the other good stuff about doing it locally. The BAD: Smaller systems may get slow(...er). The better local LAMP solutions aren’t free. Saturday, June 15, 13
  • 17. LAMPVIRTUAL MACHINE Because virtualization is the best invention since sliced bread “Virtualization for Dummies” Run multiple OS’es... ...without crappy “dual boot” stuff Saturday, June 15, 13
  • 18. LAMPVIRTUAL MACHINE Because you get to decide which solution works best for you Microsoft Hyper-V (Windows), VMware Workstation (Windows), VMware ESX (Server based), VMware Fusion (Apple OSX), VMware Server (obsolete), Oracle VM, Sun xVM, Virtuozzo Containers, OpenVZ, Xen, KVM, VServer, VirtualBox, ...and more. Saturday, June 15, 13
  • 19. LAMPVIRTUAL MACHINE Run one or more OS’es as if they were “real”. Saturday, June 15, 13
  • 20. LAMPVIRTUAL MACHINE Safely experiment, develop, and test, while you control the environment that your stuff is running on, or in. ISOLATION Does not interfere with your actual OS on the system Saturday, June 15, 13
  • 21. LAMPVIRTUAL MACHINE(S) Why stop at just one when you can have as many as your system resources will allow you to run? Saturday, June 15, 13
  • 22. LAMPVIRTUAL MACHINE(S) VMware Workstation running several LAMP/Linux servers Saturday, June 15, 13
  • 23. LAMPVIRTUAL MACHINE SANDBOXING IS NOTTHE SAME AS AVIRTUAL MACHINE Saturday, June 15, 13
  • 24. LAMPVIRTUAL MACHINE A small LAMPVM can run on as little as 512MB of RAM. The GOOD: Isolated from your main system. Control over your entire environment & config. Snapshots and “undo”. The BAD: Smaller systems may not be capable. Can get very resource hungry. The betterVM solutions aren’t free. Saturday, June 15, 13
  • 25. LAMPVIRTUAL MACHINE The mother of all UNDO functions SNAPSHOTS Imagine messing up your system to the point of having a total loss... ... and then undoing it all with one click Saturday, June 15, 13
  • 26. DEDICATED/VIRTUAL LOCAL Whether you run on bare metal or virtualize it all Step 1 Repurpose or buy a suitable computer Step 2 Install a LAMP stack or VM solution Step 3 Start using it. How Big? How Small? How Much? Saturday, June 15, 13
  • 27. DEDICATED/VIRTUAL LOCAL This Big? Well... if you want to, sure, why not! :-) How Big? Saturday, June 15, 13
  • 28. DEDICATED/VIRTUAL LOCAL Like 3 pizza boxes... my “mini” virtual server web-dev cluster How Small? Saturday, June 15, 13
  • 29. DEDICATED/VIRTUAL LOCAL Having your “development servers” in the cloud is not always the most cost effective way to do things. Three Quad Core Xeon’s each with 16GB RAM, 250GB SSD’s and 2TB RAID1 storage. Can host +/- 35-65 virtual machines for development purposes. Low power consumption. Costs +/- $4000 to OWN. But +/- $800 to $1500 A MONTH (at aVM/VPS/VHost) Saturday, June 15, 13
  • 30. DEDICATEDTINY LOCAL Small Atom’s with 4GB RAM and 120GB SSD’s. Perfect for small LAMP servers. Runs about $300-400. How Much? Saturday, June 15, 13
  • 31. VIRTUAL LOCAL The advantages never stop and there’s too much to list! Try NGINX instead of Apache to create yourself a LEMP (not LAMP) server. Install and experiment with PHP APC, memcached, Varnish, and all the other cool performance boosters. Be able to MAKE PROPER USE of the many great developer tools that are out there. Saturday, June 15, 13
  • 32. DEDICATED/VIRTUAL LOCAL The learning curve for building and managingVM’s locally is really not that bad. Really.Try it and be pleasantly surprised. The GOOD: Everything mentioned on slide 19. Endless possibilities going virtual. Highest speed and performance. Online/hosted servers are no match for it. The BAD: Hardware isn’t free.You will have to invest. There’s a learning curve.You will invest time also. Saturday, June 15, 13
  • 33. SETUP A LAMP SERVER LAMP = Linux,Apache, MySQL, PHP Unfortunately we will not have time for that today so if there is enough interest in the topic I might be persuaded to come back and cover that topic. It is not really that difficult. If you know how to copy and paste you can get quite far! Saturday, June 15, 13
  • 34. A LOCAL SITE COPY Whether you work on a local copy of a live site or develop the site locally for later deployment to a live server How to create a LOCAL copy of a LIVE site Saturday, June 15, 13
  • 35. METHOD ONE Use the MySQL client command line or ensure you have phpMyAdmin installed on your local server Step 1 Get a copy of the MySQL DB (command line, phpMyAdmin, etc.) Step 2 Get a copy of all the files for the site (through sFTP, FTP, etc.) Step 3 Copy the files to your local server & import the MySQL DB into your local server’s MySQL instance Saturday, June 15, 13
  • 36. METHODTWO I’ve done this also but still prefer the manual control provided by method one. Step 1 Install a Backup Plugin (ithemes BackupBuddy works really well and is highly popular) Step 2 Use the Backup Plugin Step 3 Restore the backup to your local server Saturday, June 15, 13
  • 37. EDIT WP-CONGIF.PHP For your local server you probably will need to edit the wp-config.php file. define('DB_NAME', 'myclientsite'); define('DB_USER', 'myclientsitedbuser'); define('DB_PASSWORD', 'magicpass'); define('DB_HOST', 'localhost'); Saturday, June 15, 13
  • 38. BUTYOU’RE NOT DONEYET! Just copying the site’s files and DB to a local server does not make it magically work. Your system/computer does not know yet where to find the local copy of the site because DNS resolution will cause your browser to see the actual remote and live site. Let’s take care of that... Saturday, June 15, 13
  • 39. EDITINGYOUR HOSTS FILE You can find the hosts file in C:Windowssystem32driversetc on Windows and /etc/hosts on OSX 10.0.2.80 my.supersite.com Add a single line to your hosts file containing the IP address of your local development server and the FQDN of your site. Saturday, June 15, 13
  • 40. ALLTHIS LOCAL STUFF WHY? Local servers allow you to use the tools they were intended to! XDEBUG Debugging, Profiling, Tracing Live demo using JetBrains PHPStorm XHPROF Really seeing what’s going on Live demo on profiling with XHPROF Saturday, June 15, 13
  • 41. XDEBUG / ZEND DEBUGGER Because your using a rock to hammer nails rather than a hammer! Stop using a rock dammit! THIS IS YOUR BRAIN... (we hope) Saturday, June 15, 13
  • 42. XDEBUG / ZEND DEBUGGER Don’t get lost. Get debugging! This is your brain WITHOUT XDEBUG Saturday, June 15, 13
  • 43. “WHY LOCAL” YOU ASKED? Don’t try using XDEBUG on a remote server. You’ll be sorry you tried. XDEBUG is an Apache Module and needs to be installed on the server You will need full control on your server Not possible on shared hosting Not possible on managed hosting Not feasible on VPS/Virtual hosting Not sensible in a production environment Saturday, June 15, 13
  • 44. LIVE XDEBUG DEMO Running off a 15” Mac Retina, 16GB RAM, 768GB SSD with a 4GB RAM LAMP server onVMware Fusion Debugging into a WordPress Plugin Debugging into a WordPress Theme Debugging is the same for any PHP code and not WordPress specific. Debug stepping through WordPress itself helps you learn, understand, and at times makes you feel appalled at what you see! Saturday, June 15, 13
  • 45. PROFILING = PINPOINTING I would still not want XHPROF running all the time within a production environment XHPROF is an Apache Module (originally developed by Facebook to deal with PHP performance issues) and needs to be installed on the server You will need full control on your server Not possible on shared hosting Not possible on managed hosting IS possible in a production environment Saturday, June 15, 13
  • 46. PROFILING LIVE DEMO Still running off a 15” Mac Retina, 16GB RAM, 768GB SSD with a 4GB RAM LAMP server onVMware Fusion XHPROF Pinpoint bottlenecks. Pinpoint badly performing code. Pinpoint site/page performance issues. Pinpoint which developer to blame. Pinpointing. Get the point here? Saturday, June 15, 13
  • 47. VERSIONING If you don’t use versioning of any kind... ...stop calling yourself a developer, please! Saturday, June 15, 13
  • 48. SCM, RCS,VCS,WHATEVER! There are many version control systems out there, too many to mention and too many to cover here. Subversion (SVN), GIT, CVS, Mercurial, Perforce, and many others... Even if you’re not part of a team and working alone, use versioning and use it religiously. Plan your repository ahead of time to avoid a nasty mess as development progresses over time. You’ll thank me for it later. Saturday, June 15, 13
  • 49. YOUR CLIENT APP Or go hard core and use the command line like “real” developers do! Tortoise SVN, Tortoise GIT, Tortoise HG (for Mercurial), CornerStone (OSX) (personal recommendation for Subversion) There are so many, both free or commercial there’s no way I can even begin to mention the top 50. Try some out and see what you like. Saturday, June 15, 13
  • 50. WHAT DO I NEED? Personal preference dominates the versioning spectrum. Use what you or your team are most comfortable with. Step 1 Deploy a versioning server Step 2 Setup your repositories Step 3 Install a client for what you picked Step 4 Always backup your repository! Saturday, June 15, 13
  • 51. WHY HOW WHAT HUH Versioning is not a science (well, it might be!) but whatever you do make sure you’re doing it. There is no info on this slide because this is such a BIG TOPIC to cover that I’m just going to “wing it” live and not have any helpful hints on this slide. I HOPE that everyone already uses versioning of some sort. If not, those folks can line up outside of the venue here for mandatory execution and/or hot- coal and/or flogging “treatment” to deal with this “ailment”. :-) Saturday, June 15, 13
  • 52. DOING IT IN STYLE! CSS should be the end point that is generated, not the “language” you should directly interact with. Saturday, June 15, 13
  • 53. SCSS, SASS, LESS Lots of differences between SCSS/SASS and LESS But also much of the same concept All the things you MISS in CSS Variables Nested Rules Mixins Functions Selector Inheritance Control (i.e. if, for, while...) Math (i.e. border-size * 2) Saturday, June 15, 13
  • 54. SCSS, SASS, LESS High adoption rate! Lots of support provided by the editor you use. Syntax highlighting Intelligent editing support “Transpilation” support in a growing number of editors/IDE’s. Saturday, June 15, 13
  • 55. SCSS, SASS, LESS Too much to tell and too little time since this could easily fill several meetups worth of time. Personal Preference SCSS/SASS Command line... ...or through utility applications ...or through your editor/IDE Saturday, June 15, 13
  • 56. SCSS, SASS, LESS VARIABLES $red: #cc0000; $margin: 20px; .content-block { border-color: $red; color: darken($red, 15%); } .border { padding: $margin / 2; margin: $margin / 2; border-color: $red; } Saturday, June 15, 13
  • 57. SCSS, SASS, LESS VARIABLES $red: #cc0000 $margin: 20px .content-block border-color: $red color: darken($red, 15%) .border padding: $margin / 2 margin: $margin / 2 border-color: $red Saturday, June 15, 13
  • 58. SCSS, SASS, LESS VARIABLES $red: #cc0000; $litered: (@red + #222); .content-block { border-color: @red; color: @litered; } Saturday, June 15, 13
  • 59. SCSS VERSUS CSS SELECTOR INHERITANCE .content { border: 1px #f00; background: #fcc; } .thick-content { @extend .content; border-width: 5px; } .content, .thick-content { border: 1px #f00; background: #fcc; } .thick-content { border-width: 5px; } Saturday, June 15, 13
  • 60. SCSS VERSUS CSS NESTING - Efficient and improves readability and maintenance #navbar { width: 80%; height: 23px; ul { list-style-type: none; } li { float: left; a { font-weight: bold; } } } Saturday, June 15, 13
  • 61. SCSS VERSUS CSS NESTING - Efficient and improves readability and maintenance #navbar { width: 80%; height: 23px; } #navbar ul { list-style-type: none; } #navbar li { float: left; } #navbar li a { font-weight: bold; } Saturday, June 15, 13
  • 62. SCSS, SASS, LESS Using PHPStorm and FileWatchers to automatically “transpile” SCSS, SASS, LESS, into CSS files. Saturday, June 15, 13
  • 63. BONUS DEVELOPERTOOL 1 Sennheiser HD800 - a must have if you’re serious! THE FUN PART OF FINISHING THIS Saturday, June 15, 13
  • 64. BONUS DEVELOPERTOOLS 2 You’ll need many of these when you develop for real! :-) Single Malt Scotch Hi Stefan! Tequila Hi Kelly! Bourbon Hi Mitch! Beer Hi Andrei! Saturday, June 15, 13
  • 65. DOWNLOADTHE SLIDES Because all of this must have gone way too fast for you! http://eastbaywp.com/ Saturday, June 15, 13
  • 66. LINKINGTOTHE END BYE BYE! See y’all next month... unless you kill me... THANKS FOR HAVING ME BORE THE LIVING... something OUT OF YOU! LINKS AHEAD... Saturday, June 15, 13
  • 67. THINGS MENTIONED (1/2) In case you want to go look stuff up for yourself JetBrains PHPStorm http://www.jetbrains.com/phpstorm/ MAMP and MAMP PRO http://www.mamp.info XAMPP http://www.apachefriends.org/en/xampp.html WAMP SERVER http://www.wampserver.com/en/ Microsoft Web Platform Installer http://www.microsoft.com/web/downloads/platform.aspx VMware (VMware ESX, VMware Workstation, VMware Fusion) http://www.vmware.com/ Parallels Desktop http://www.parallels.com/products/desktop/ Virtualization Solutions http://www.cyberciti.biz/tips/linux-virtualization-software.html More on Virtualization and Sandboxing http://goo.gl/PESjo Varnish https://www.varnish-cache.org/ Memcached http://memcached.org/ PHP APC http://php.net/manual/en/book.apc.php XDEBUG http://xdebug.org/ Zend Debugger, Zend Server, Zend Studio http://www.zend.com XHPROF https://github.com/facebook/xhprof XHGUI https://github.com/preinheimer/xhprof ithemes BackupBuddy http://ithemes.com/purchase/backupbuddy/ anything I forgot to add here... simple... google it Saturday, June 15, 13
  • 68. THINGS MENTIONED (2/2) In case you want to go look even more stuff up for yourself Visual SVN (Windows) http://www.visualsvn.com/ Subversion (SVN) http://subversion.apache.org/ Tortoise SVN (Windows) http://tortoisesvn.net/ Tortoise GIT (Windows) https://code.google.com/p/tortoisegit/ CornerStone (OSX) http://www.zennaware.com/cornerstone/index.php GIT http://git-scm.com/ CVS http://cvs.nongnu.org/ Mercurial http://mercurial.selenic.com/ Tortoise HG http://mercurial.selenic.com/wiki/TortoiseHg Perforce http://www.perforce.com/ anything I forgot to add here... simple... google it SCSS & Sass http://sass-lang.com/ LESS http://lesscss.org/ Compass http://compass-style.org/ Compass App (OSX) http://compass.handlino.com/ Atlassian http://www.atlassian.com/ Altova http://www.altova.com/ And finally, a “real developer’s” home office :-) http://www.stefandidak.com/office/ http://www.flickr.com/photos/didak/sets/72157633152434208/ http://www.flickr.com/photos/didak/sets/72157632343719954/ http://www.flickr.com/photos/didak/sets/72157632244753177/ Saturday, June 15, 13
  • 69. QUESTIONS Because I’m sure there’ll be some! Saturday, June 15, 13