SlideShare a Scribd company logo
Learning to
be
IDE Free
DAVID WESST
What are we doing?
Learning to be IDE Free (PrDC 2015)
David Wesst
Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)
The Point
The Point
Goals for Today
 Dissect and understand your IDE
 Understand what you "need" and what you "want" as a developer
 Show you some tools you might not have seen
 Create a dialogue about our tools of choice
Cross Platform Presentation
 Java
 Also applies to:
 JavaScript / NodeJS
 ASP.NET
 Many, many, others
The Toolbox
What is in the IDE?
 Source Control
 Code Editor
 Project Template
 Dependency Management
 Compilers
 Test Runner
 Deployment
Learning to be IDE Free (PrDC 2015)
My Tools
 Java JDK
 Atom
 Maven 3.3.3
 ConEmu+ Cygwin
 Git / CVS
 NodeJS / NPM
 azure-cli
Demo
WELCOME TO THE TERMINAL
Source
Controlling the Source
Git
SVN
Mercurial
TFS
…CVS
Demo
USE THE SOURCE  SHAMELESS STAR WARS PUN
Code
THE POWER OF AN EDITOR
Code Slinging
 VIM, Emacs,
 Atom.io, Visual Studio Code, Notepad++, jEdit
Code Slinging
 What should your editor do for you?
 <audience answers here>
Code Slinging
 What should your editor do for you?
 Syntax Highlighting
 Compiler Errors / Language Linter
 Simplify File Management
 Autocomplete
 Intellisense
 Source Control Management
 Improve Productivity and Understanding!
Demo
PICKING AND UNDERSTANDING AN EDITOR
Test / Build / Run
Project Templates & Dependencies
 Java
 Maven, Gradle
 JavaScript
 NPM (Server) & Bower (Client)
 Express, Ember-Cli, etc…
 .NET
 Nuget, Chocolately
 DNX (.NET eXecution Environment)
Project Templates & Dependencies
 Maven
 Project Templates with archetypes
 Basic Commands (clean install and test)
 Manages Dependencies Consistently(Installs and Downloads across
machines)
 Check notes for POM and command details
Project Templates & Dependencies
 Yeoman
 Generators for any type of project on any platform
 Java (Jhipster)
 .NET (aspnet, aspnetdnx, aspnetdnx2)
 JavaScript (angular-fullstack, express)
 You can even write your own!
Red Light / Green Light (Test)
 Testing Framework + Test Runner
 Java
 JUnit or TestNG + Maven
 JavaScript
 Jasmine / Mocha with Chai / Qunit + NPM
 .NET
 NUnit or MSTest + Test Runner
Red Light / Green Light (Test)
 Testing Framework + Test Runner
 Java
 JUnit or TestNG + Maven
 JavaScript
 Jasmine / Mocha with Chai / Qunit + NPM
 .NET
 NUnit or MSTest + Test Runner
Demo
MAVEN FOR FUN!
Plugins
MAKING DEVELOPMENT EASIER SINCE…FOREVER
Plugins
 “Plugins”
 a.k.a. packages, gems, extensions, etc…
 Executables or shortcuts to tools and/or scripts that make tools quicker
to access and use
 Make up the bulk of the power of an IDE
 Examples
 Eclipse -> Run
 Visual Studio -> F5
Plugins
 “Plugins”
 Tools should be understood and explored prior to use
 Do you know what you’re adding to the project?
 …or
 Are you actually adding anything to the project (unintended or
otherwise)?
Demo
MORE MAVEN-Y GOODNESS
The Point
Quick Recap
 If you can use it from the terminal, you can script it
 Script = Code
 Any Tool should enhance your developer skill, not dull them
 Ask the question:
 Am I adding something to the project (intentionally, or unintentionally)
Quick Recap
 Be comfortable with your terminal
 Source Control is _always_ a terminal solution
 Code Editor is nothing more than a Text Editor
 Templates and Dependencies can be managed with tools
 Which tool does your team use?
 Plugins are powerful
 Just don’t let them dull your skills
Goals for Today
 Dissect and understand your IDE
 Understand what you "need" and what you "want" as a developer
 Show you some tools you might not have seen
 Create a dialogue about our tools of choice
The Point
Call to Action
 Open up your terminal and give it a shot
 Identify what tools you and your team are using
 Can they be used from the command line (I bet they can)
 What does your IDE do for you other than edit code?
 Can you script your common project tasks?
 .sh, .cmd, or otherwise
The Point
 Know what your IDE can do
 Learn the tools themselves, not just how to open the toolbox
 Terminal / Basic Code Editor is a great way to start
 Become a cross-platform developer by applying your development
knowledge across platforms!
Who am I?
 David Wesst
 University of Manitoba, Application Developer
 Slides and Source Available Online

More Related Content

Learning to be IDE Free (PrDC 2015)

  • 2. What are we doing?
  • 12. Goals for Today  Dissect and understand your IDE  Understand what you "need" and what you "want" as a developer  Show you some tools you might not have seen  Create a dialogue about our tools of choice
  • 13. Cross Platform Presentation  Java  Also applies to:  JavaScript / NodeJS  ASP.NET  Many, many, others
  • 15. What is in the IDE?  Source Control  Code Editor  Project Template  Dependency Management  Compilers  Test Runner  Deployment
  • 17. My Tools  Java JDK  Atom  Maven 3.3.3  ConEmu+ Cygwin  Git / CVS  NodeJS / NPM  azure-cli
  • 21. Demo USE THE SOURCE  SHAMELESS STAR WARS PUN
  • 22. Code THE POWER OF AN EDITOR
  • 23. Code Slinging  VIM, Emacs,  Atom.io, Visual Studio Code, Notepad++, jEdit
  • 24. Code Slinging  What should your editor do for you?  <audience answers here>
  • 25. Code Slinging  What should your editor do for you?  Syntax Highlighting  Compiler Errors / Language Linter  Simplify File Management  Autocomplete  Intellisense  Source Control Management  Improve Productivity and Understanding!
  • 27. Test / Build / Run
  • 28. Project Templates & Dependencies  Java  Maven, Gradle  JavaScript  NPM (Server) & Bower (Client)  Express, Ember-Cli, etc…  .NET  Nuget, Chocolately  DNX (.NET eXecution Environment)
  • 29. Project Templates & Dependencies  Maven  Project Templates with archetypes  Basic Commands (clean install and test)  Manages Dependencies Consistently(Installs and Downloads across machines)  Check notes for POM and command details
  • 30. Project Templates & Dependencies  Yeoman  Generators for any type of project on any platform  Java (Jhipster)  .NET (aspnet, aspnetdnx, aspnetdnx2)  JavaScript (angular-fullstack, express)  You can even write your own!
  • 31. Red Light / Green Light (Test)  Testing Framework + Test Runner  Java  JUnit or TestNG + Maven  JavaScript  Jasmine / Mocha with Chai / Qunit + NPM  .NET  NUnit or MSTest + Test Runner
  • 32. Red Light / Green Light (Test)  Testing Framework + Test Runner  Java  JUnit or TestNG + Maven  JavaScript  Jasmine / Mocha with Chai / Qunit + NPM  .NET  NUnit or MSTest + Test Runner
  • 35. Plugins  “Plugins”  a.k.a. packages, gems, extensions, etc…  Executables or shortcuts to tools and/or scripts that make tools quicker to access and use  Make up the bulk of the power of an IDE  Examples  Eclipse -> Run  Visual Studio -> F5
  • 36. Plugins  “Plugins”  Tools should be understood and explored prior to use  Do you know what you’re adding to the project?  …or  Are you actually adding anything to the project (unintended or otherwise)?
  • 39. Quick Recap  If you can use it from the terminal, you can script it  Script = Code  Any Tool should enhance your developer skill, not dull them  Ask the question:  Am I adding something to the project (intentionally, or unintentionally)
  • 40. Quick Recap  Be comfortable with your terminal  Source Control is _always_ a terminal solution  Code Editor is nothing more than a Text Editor  Templates and Dependencies can be managed with tools  Which tool does your team use?  Plugins are powerful  Just don’t let them dull your skills
  • 41. Goals for Today  Dissect and understand your IDE  Understand what you "need" and what you "want" as a developer  Show you some tools you might not have seen  Create a dialogue about our tools of choice
  • 43. Call to Action  Open up your terminal and give it a shot  Identify what tools you and your team are using  Can they be used from the command line (I bet they can)  What does your IDE do for you other than edit code?  Can you script your common project tasks?  .sh, .cmd, or otherwise
  • 44. The Point  Know what your IDE can do  Learn the tools themselves, not just how to open the toolbox  Terminal / Basic Code Editor is a great way to start  Become a cross-platform developer by applying your development knowledge across platforms!
  • 45. Who am I?  David Wesst  University of Manitoba, Application Developer  Slides and Source Available Online

Editor's Notes

  1. It's not just knowing which wrench to use, but to know how to use the wrench, and where in the grand scheme you're supposed to use it.
  2. Introduction to Cygwin and ConEmu Basic commands, make up scripts. Scripts are programmable Node & NPM provide extra power that crosses platforms Azure cli Babel All major tools have foundation in the terminal
  3. CVS Init cvsrepo, create sandbox, checkout repo, add and commit file Git - Init repo (local), add a file, create second repo, pull and demonstrate checkout lock, add file and push to new branch, then merge in original
  4. References jEdit - http://www.jedit.org/index.php Vim - http://www.vim.org/download.php Atom - https://atom.io/ VS Code - https://code.visualstudio.com/
  5. References jEdit - http://www.jedit.org/index.php Vim - http://www.vim.org/download.php Atom - https://atom.io/ VS Code - https://code.visualstudio.com/
  6. References Vim - http://www.vim.org/download.php Atom - https://atom.io/ VS Code - https://code.visualstudio.com/
  7. Editing Code with Vim Move to Atom.io / Visual Studio Code for Ease of Use Talk about cross-platform usage and Visual Studio Code Check out plugins for Atom.io
  8. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">   <modelVersion>4.0.0</modelVersion>   <groupId>prdc</groupId>   <artifactId>dw-javawebapp</artifactId>   <packaging>war</packaging>   <version>1.0-SNAPSHOT</version>   <name>dw-javawebapp Maven Webapp</name>   <url>http://maven.apache.org</url>   <dependencies>     <dependency>       <groupId>junit</groupId>       <artifactId>junit</artifactId>       <version>3.8.1</version>       <scope>test</scope>     </dependency>   </dependencies>   <build>       <finalName>dw-javawebapp</finalName>       <plugins>           <plugin>               <groupId>org.apache.tomcat.maven</groupId>               <artifactId>tomcat7-maven-plugin</artifactId>               <version>2.2</version>           </plugin>       </plugins>   </build> </project>
  9. Reference: http://jhipster.github.io/installation.html
  10. http://maven.apache.org/surefire/maven-surefire-plugin/examples/junit.html
  11. http://maven.apache.org/surefire/maven-surefire-plugin/examples/junit.html
  12. mvn archetype:generate -DgroupId=ca.prdc -DartifactId=java-quickstart -DarchetypeArtifactId=maven-archetype-quickstart mvn clean install mvn test java -cp target/java-quickstart-1.0-SNAPSHOT.jar ca.prdc.App Generate an application Clean and Install Run Tests Package and Run
  13. mvn archetype:generate -DgroupId=ca.prdc -DartifactId=java-webapp -DarchetypeArtifactId=maven-archetype-webapp mvn clean install mvn tomcat7:run Generate a Tomcat Application Update the POM to include the Tomcat Runner Clean and run it Deploy to Tomcat instance