SlideShare a Scribd company logo
1 of 32
Advanced Code Analysis in .NET




                                                                                                                                                          Stephen Ritchie
                                                                                                                                                                Nov 14, 2012



Stephen D. Ritchie – Senior Consultant – Excella Consulting, Inc., 2300 Wilson Blvd, Suite 630, Arlington, VA 22201 – 703.840.8600 – http://excella.com
Live Tweet, Slides and Examples

• Twitter: @RuthlessHelp
           @Apress

• Slides:
  http://www.slideshare.net/ruthlesshelp

• Code Samples:
  http://github.com/ruthlesshelp
Stephen D. Ritchie   2
Blueprint




Stephen D. Ritchie   3
Toolbox




Stephen D. Ritchie   4
Da Vinci Code … Analyzer




Stephen D. Ritchie   5
Code Analysis


Static
                     versus




Stephen D. Ritchie            6
Static Analysis




Stephen D. Ritchie   7
But wait …




Stephen D. Ritchie   8
1940 Tacoma Narrows Bridge

• Video
       – http://archive.org/download/SF121/SF121_51
         2kb.mp4




Stephen D. Ritchie         10
Static Analysis


Source   Visualizations
Code            Checks
Assembly       Metrics
            Detections
Stephen D. Ritchie   11
Dynamic Analysis


                     Visualizations
                            Checks
                           Metrics
                        Detections
Stephen D. Ritchie   12
Blueprint

                                     1

                               Analyze



                                                   2

                     Monitor             Improve
                     3




Stephen D. Ritchie              13
Toolbox


                      FxCop
Detections
Checks
                      Visual
                      Studio
       http://blogs.msdn.com/b/codeanalysis/
Stephen D. Ritchie           14
Toolbox


                      StyleCop
Detections
Checks


       http://stylecop.codeplex.com/
Stephen D. Ritchie            15
Toolbox


                        ReSharper
                        http://www.jetbrains.com/resharper/
Detections
Checks
                        Gendarme
                     http://www.mono-project.com/Gendarme

Stephen D. Ritchie                16
The Master Craft




Stephen D. Ritchie   17
Toolbox


                                 Simian
Detections

       http://www.harukizaemon.com/simian/



Stephen D. Ritchie          18
The Master Craft

                        Duplicates Finder .NET


       http://www.jetbrains.com/teamcity/

                     Clone Doctor
                     Semantic Designs
       http://www.semdesigns.com/Products/Clone/
Stephen D. Ritchie            19
Dynamic Analysis




                     Code Coverage
Stephen D. Ritchie      20
Toolbox


                     dotCover


       http://www.jetbrains.com/dotcover/



Stephen D. Ritchie           21
Toolbox


                     Open Cover


       http://nuget.org/packages/OpenCover



Stephen D. Ritchie          22
The Master Craft




       http://www.ncover.com/



Stephen D. Ritchie          23
Dynamic Analysis




                            Sampling
                     Instrumentation
Stephen D. Ritchie        24
Toolbox


                     Performance




Stephen D. Ritchie      25
Toolbox


                     Performance


                     http://www.jetbrains.com/profiler/

Stephen D. Ritchie           26
The Master Craft




Stephen D. Ritchie   27
The Master Craft


                     Memory
                     Queries
                     Logging
                     Security
Stephen D. Ritchie       28
Static Analysis


Source   Visualizations
Code            Checks
Assembly       Metrics
            Detections
Stephen D. Ritchie   29
The Master Craft


                     Code Quality
Visualizations         http://www.ndepend.com/
Checks
Metrics
Detections             http://www.lattix.com/

Stephen D. Ritchie      30
Hanselman’s Placemat




       http://bit.ly/LwKfwK
Stephen D. Ritchie            31
Shameless Self Promotion Time!

                     • 40% off eBook at
                       apress.com

                     • Use promo code:
                       PR0N3T

                     • Offer expires 15-Dec-
                       2012
Stephen D. Ritchie       32
Stephen’s Contact Info

• Twitter: @ruthlesshelp

• Email: stephen.ritchie@excella.com

• Blog:              http://ruthlesslyhelpful.net

• LinkedIn:
     http://www.linkedin.com/in/sritchie

Stephen D. Ritchie              33

More Related Content

Viewers also liked

Code-Review-Principles-Process-and-Tools (1)
Code-Review-Principles-Process-and-Tools (1)Code-Review-Principles-Process-and-Tools (1)
Code-Review-Principles-Process-and-Tools (1)
Aditya Bhuyan
 
Code Review
Code ReviewCode Review
Code Review
rantav
 
Student result mamagement
Student result mamagementStudent result mamagement
Student result mamagement
Mickey
 
Student database management system
Student database management systemStudent database management system
Student database management system
Snehal Raut
 
School management system
School management systemSchool management system
School management system
Soumya Behera
 
School management system
School management systemSchool management system
School management system
asd143
 

Viewers also liked (20)

.net code: some ideas to improve yours
.net code: some ideas to improve yours.net code: some ideas to improve yours
.net code: some ideas to improve yours
 
Code-Review-Principles-Process-and-Tools (1)
Code-Review-Principles-Process-and-Tools (1)Code-Review-Principles-Process-and-Tools (1)
Code-Review-Principles-Process-and-Tools (1)
 
Software Project Proposal- Result Analysis Tool
Software Project Proposal- Result Analysis ToolSoftware Project Proposal- Result Analysis Tool
Software Project Proposal- Result Analysis Tool
 
Code review guidelines
Code review guidelinesCode review guidelines
Code review guidelines
 
ClearCase Basics
ClearCase BasicsClearCase Basics
ClearCase Basics
 
Project for Student Result System
Project for Student Result SystemProject for Student Result System
Project for Student Result System
 
Code Review
Code ReviewCode Review
Code Review
 
Effective code reviews
Effective code reviewsEffective code reviews
Effective code reviews
 
Writing clean code in C# and .NET
Writing clean code in C# and .NETWriting clean code in C# and .NET
Writing clean code in C# and .NET
 
ERP on School Management System
ERP on School Management SystemERP on School Management System
ERP on School Management System
 
Introduction to .NET Framework
Introduction to .NET FrameworkIntroduction to .NET Framework
Introduction to .NET Framework
 
.Net and Windows Application Project on Hotel Management
.Net  and Windows Application Project on Hotel Management.Net  and Windows Application Project on Hotel Management
.Net and Windows Application Project on Hotel Management
 
C#/.NET Little Wonders
C#/.NET Little WondersC#/.NET Little Wonders
C#/.NET Little Wonders
 
Student result mamagement
Student result mamagementStudent result mamagement
Student result mamagement
 
College management system ppt
College management system pptCollege management system ppt
College management system ppt
 
Student database management system
Student database management systemStudent database management system
Student database management system
 
School management system
School management systemSchool management system
School management system
 
School management system
School management systemSchool management system
School management system
 
C# coding standards, good programming principles & refactoring
C# coding standards, good programming principles & refactoringC# coding standards, good programming principles & refactoring
C# coding standards, good programming principles & refactoring
 
School Management System ppt
School Management System pptSchool Management System ppt
School Management System ppt
 

Similar to Advanced Code Analysis with .NET

Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11
Stephen Ritchie
 
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
Keiichiro Ono
 
Tenacious Diggity - Skinny Dippin in a Sea of Bing
Tenacious Diggity - Skinny Dippin in a Sea of BingTenacious Diggity - Skinny Dippin in a Sea of Bing
Tenacious Diggity - Skinny Dippin in a Sea of Bing
Rob Ragan
 
Streaming Trend Discovery: Real-Time Discovery in a Sea of Events with Scott ...
Streaming Trend Discovery: Real-Time Discovery in a Sea of Events with Scott ...Streaming Trend Discovery: Real-Time Discovery in a Sea of Events with Scott ...
Streaming Trend Discovery: Real-Time Discovery in a Sea of Events with Scott ...
Databricks
 

Similar to Advanced Code Analysis with .NET (20)

Continuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master CraftContinuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master Craft
 
Continuous Integration: Toolbox, Blueprint, Master Craft
Continuous Integration: Toolbox, Blueprint, Master CraftContinuous Integration: Toolbox, Blueprint, Master Craft
Continuous Integration: Toolbox, Blueprint, Master Craft
 
Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11
 
DevOps Requires Agility
DevOps Requires AgilityDevOps Requires Agility
DevOps Requires Agility
 
Introduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R ShinyIntroduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R Shiny
 
Cryptocurrency && Ruby
Cryptocurrency && RubyCryptocurrency && Ruby
Cryptocurrency && Ruby
 
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
 
Code Security with GitHub Advanced Security
Code Security with GitHub Advanced SecurityCode Security with GitHub Advanced Security
Code Security with GitHub Advanced Security
 
Securing the Pipeline
Securing the PipelineSecuring the Pipeline
Securing the Pipeline
 
Isolating the Ghost in the Machine: Unveiling Post Exploitation Threatsrsac
Isolating the Ghost in the Machine:  Unveiling Post Exploitation ThreatsrsacIsolating the Ghost in the Machine:  Unveiling Post Exploitation Threatsrsac
Isolating the Ghost in the Machine: Unveiling Post Exploitation Threatsrsac
 
Blue team reboot - HackFest
Blue team reboot - HackFest Blue team reboot - HackFest
Blue team reboot - HackFest
 
api-driven-development.pdf
api-driven-development.pdfapi-driven-development.pdf
api-driven-development.pdf
 
[2011 CodeEngn Conference 05] Deok9 - DBI(Dynamic Binary Instrumentation)를 이용...
[2011 CodeEngn Conference 05] Deok9 - DBI(Dynamic Binary Instrumentation)를 이용...[2011 CodeEngn Conference 05] Deok9 - DBI(Dynamic Binary Instrumentation)를 이용...
[2011 CodeEngn Conference 05] Deok9 - DBI(Dynamic Binary Instrumentation)를 이용...
 
Tenacious Diggity - Skinny Dippin in a Sea of Bing
Tenacious Diggity - Skinny Dippin in a Sea of BingTenacious Diggity - Skinny Dippin in a Sea of Bing
Tenacious Diggity - Skinny Dippin in a Sea of Bing
 
Streaming Trend Discovery: Real-Time Discovery in a Sea of Events with Scott ...
Streaming Trend Discovery: Real-Time Discovery in a Sea of Events with Scott ...Streaming Trend Discovery: Real-Time Discovery in a Sea of Events with Scott ...
Streaming Trend Discovery: Real-Time Discovery in a Sea of Events with Scott ...
 
Continuum Analytics and Python
Continuum Analytics and PythonContinuum Analytics and Python
Continuum Analytics and Python
 
COSCUP Scouter: Face recognizer retrieves your Github contribution
COSCUP Scouter: Face recognizer retrieves your Github contributionCOSCUP Scouter: Face recognizer retrieves your Github contribution
COSCUP Scouter: Face recognizer retrieves your Github contribution
 
Achieving Secure DevOps: Overcoming the Risks of Modern Service Delivery
Achieving Secure DevOps: Overcoming the Risks of Modern Service DeliveryAchieving Secure DevOps: Overcoming the Risks of Modern Service Delivery
Achieving Secure DevOps: Overcoming the Risks of Modern Service Delivery
 
Primers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code ReviewPrimers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code Review
 
Metrics for aglie teams
Metrics for aglie teamsMetrics for aglie teams
Metrics for aglie teams
 

More from Stephen Ritchie

DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangersDCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
Stephen Ritchie
 
Automated Testing: Obstacles, Pitfalls, and Dangers
Automated Testing: Obstacles, Pitfalls, and DangersAutomated Testing: Obstacles, Pitfalls, and Dangers
Automated Testing: Obstacles, Pitfalls, and Dangers
Stephen Ritchie
 
Automated Testing with Databases
Automated Testing with DatabasesAutomated Testing with Databases
Automated Testing with Databases
Stephen Ritchie
 

More from Stephen Ritchie (13)

Overview of .NET Best Practices
Overview of .NET Best PracticesOverview of .NET Best Practices
Overview of .NET Best Practices
 
Lightweight Documentation
Lightweight DocumentationLightweight Documentation
Lightweight Documentation
 
Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015
 
Lightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile ApproachLightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile Approach
 
Continuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master CraftContinuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master Craft
 
Dc scrum agile_eng_20130923
Dc scrum agile_eng_20130923Dc scrum agile_eng_20130923
Dc scrum agile_eng_20130923
 
Agile Testing Best Practices
Agile Testing Best PracticesAgile Testing Best Practices
Agile Testing Best Practices
 
An Overview of .NET Best Practices
An Overview of .NET Best PracticesAn Overview of .NET Best Practices
An Overview of .NET Best Practices
 
Overcoming the Obstacles, Pitfalls, and Dangers of Unit Testing
Overcoming the Obstacles, Pitfalls, and Dangers of Unit TestingOvercoming the Obstacles, Pitfalls, and Dangers of Unit Testing
Overcoming the Obstacles, Pitfalls, and Dangers of Unit Testing
 
An Overview of .NET Best Practices
An Overview of .NET Best PracticesAn Overview of .NET Best Practices
An Overview of .NET Best Practices
 
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangersDCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
 
Automated Testing: Obstacles, Pitfalls, and Dangers
Automated Testing: Obstacles, Pitfalls, and DangersAutomated Testing: Obstacles, Pitfalls, and Dangers
Automated Testing: Obstacles, Pitfalls, and Dangers
 
Automated Testing with Databases
Automated Testing with DatabasesAutomated Testing with Databases
Automated Testing with Databases
 

Recently uploaded

Recently uploaded (20)

AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, Ocado
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 

Advanced Code Analysis with .NET

  • 1. Advanced Code Analysis in .NET Stephen Ritchie Nov 14, 2012 Stephen D. Ritchie – Senior Consultant – Excella Consulting, Inc., 2300 Wilson Blvd, Suite 630, Arlington, VA 22201 – 703.840.8600 – http://excella.com
  • 2. Live Tweet, Slides and Examples • Twitter: @RuthlessHelp @Apress • Slides: http://www.slideshare.net/ruthlesshelp • Code Samples: http://github.com/ruthlesshelp Stephen D. Ritchie 2
  • 5. Da Vinci Code … Analyzer Stephen D. Ritchie 5
  • 6. Code Analysis Static versus Stephen D. Ritchie 6
  • 8. But wait … Stephen D. Ritchie 8
  • 9. 1940 Tacoma Narrows Bridge • Video – http://archive.org/download/SF121/SF121_51 2kb.mp4 Stephen D. Ritchie 10
  • 10. Static Analysis Source Visualizations Code Checks Assembly Metrics Detections Stephen D. Ritchie 11
  • 11. Dynamic Analysis Visualizations Checks Metrics Detections Stephen D. Ritchie 12
  • 12. Blueprint 1 Analyze 2 Monitor Improve 3 Stephen D. Ritchie 13
  • 13. Toolbox FxCop Detections Checks Visual Studio http://blogs.msdn.com/b/codeanalysis/ Stephen D. Ritchie 14
  • 14. Toolbox StyleCop Detections Checks http://stylecop.codeplex.com/ Stephen D. Ritchie 15
  • 15. Toolbox ReSharper http://www.jetbrains.com/resharper/ Detections Checks Gendarme http://www.mono-project.com/Gendarme Stephen D. Ritchie 16
  • 16. The Master Craft Stephen D. Ritchie 17
  • 17. Toolbox Simian Detections http://www.harukizaemon.com/simian/ Stephen D. Ritchie 18
  • 18. The Master Craft Duplicates Finder .NET http://www.jetbrains.com/teamcity/ Clone Doctor Semantic Designs http://www.semdesigns.com/Products/Clone/ Stephen D. Ritchie 19
  • 19. Dynamic Analysis Code Coverage Stephen D. Ritchie 20
  • 20. Toolbox dotCover http://www.jetbrains.com/dotcover/ Stephen D. Ritchie 21
  • 21. Toolbox Open Cover http://nuget.org/packages/OpenCover Stephen D. Ritchie 22
  • 22. The Master Craft http://www.ncover.com/ Stephen D. Ritchie 23
  • 23. Dynamic Analysis Sampling Instrumentation Stephen D. Ritchie 24
  • 24. Toolbox Performance Stephen D. Ritchie 25
  • 25. Toolbox Performance http://www.jetbrains.com/profiler/ Stephen D. Ritchie 26
  • 26. The Master Craft Stephen D. Ritchie 27
  • 27. The Master Craft Memory Queries Logging Security Stephen D. Ritchie 28
  • 28. Static Analysis Source Visualizations Code Checks Assembly Metrics Detections Stephen D. Ritchie 29
  • 29. The Master Craft Code Quality Visualizations http://www.ndepend.com/ Checks Metrics Detections http://www.lattix.com/ Stephen D. Ritchie 30
  • 30. Hanselman’s Placemat http://bit.ly/LwKfwK Stephen D. Ritchie 31
  • 31. Shameless Self Promotion Time! • 40% off eBook at apress.com • Use promo code: PR0N3T • Offer expires 15-Dec- 2012 Stephen D. Ritchie 32
  • 32. Stephen’s Contact Info • Twitter: @ruthlesshelp • Email: stephen.ritchie@excella.com • Blog: http://ruthlesslyhelpful.net • LinkedIn: http://www.linkedin.com/in/sritchie Stephen D. Ritchie 33