Codestock 2017 Day 1 Notes

Keynote – Hadi Hariri from Jet Brains, “The Silver Bullet Syndrome”

Shawn Wildermuth, “Being a Better Developer: Learning Skills that are not on Your Resume

  • twitter: @shawnwildermuth
  • http://wilderminds.com
  • Skills developers should have:
    • Communication:
      • Are you listening, or just waiting your turn to talk?
      • Active Listening: “The skill of building understanding, trust, and rapport by becoming a better listener in order to actually hear what other people are saying”
        1. Restating
        2. Summarizing
        3. Reflecting
        4. Encouraging
        5. Silence
        6. Validation
        7. Speaking from the “I” instead of the “you”
      • Are you being heard?
        • Is writing or speaking better?
        • Does your communication address the audience?
    • Working with others
      • Fear is natural.
      • Don’t be controlled by the impostor syndrome, “A psychological phenomenon in which people are unable to internalize their accomplishments, despite external evidence of their competence.”
      • Arrogance is usually a cover for fear. You don’t need to know everything off the top of your head and, it is OK not to know everything there is to know.
      • Developers are hired because of thier skill set, but that is a mistake. Developers are learners, not technicians.
    • Problem Solving
      • Typing (code) is not always the best solution.
      • Follow these non-typing steps to help reach a solution:
        1. Get away from the problem.
        2. Explain the problem to a non-developed (rubber duck/teddy bear)
        3. Reproduce the problem outside the working project.
    • Remember to always have fun.

Kristina Hardin from Clayton Homes, “Details of Design: The Fine Art of Designing Web Experiences”

(Kristina will provide slide on request)

  • twitter: @kristinadutton
  • Color Theory
    • The Color Wheel
      • A visual representation of color relationships.
      • Primary, Secondary, Tertiary colors
    • Color Harmony
      • Arranging color so that it is pleasing to the eye
      • The extremes of boring and chaos should be avoided.
    • Color Context
      • How colors behave in relationship to each other
      • The emotional implication of color usage.
    • Typeography –  the style and appearance of printed matter.
      • Legibility
      • Readability
      • The art of aranging words
      • Choosing a typeface. Consider:
        • Size
        • Body font should be 10 or 12px minimum
        • Contrast
        • Hierarchy and scale
        • Measure and space
        • Leading (the vertical space between lines)
        • Kerning (the space between letters)
    • Microcopy
      • The craft of words, at the micro level. Consider the text of:
        • Buttons, error messages, validation messages, confirmation messages.
        • Words matter. think about voice and tone of everything.
  • Book suggestions:
    • Kate Keifer Lee, “Nicely Said: Writing for the Web with Style and Purpose”
    • Heydon Pickering, “Inclusive Design Patterns”

Brandon Bruce from Cirrus Insight, “How to get to Minimum Viable Product”

  • bbruce@cirrusinsight.com
  • twitter: @cirrusisight
  • Cirrus Insight is a connector between Salesforce and email/calander clients that enables sales people to use Salesforce by using the tools they already know how to use, Outlook and Gmail. The platform also provides extensive reporting capabilities.
  • Cirrus Insight has a company lunch every Friday. It is open to the public, just inform Brandon that you wish to attend and you are invited.
  • Getting to MVP:
    1. Sell first, Then Build
      • Sales are like hacking, Most of the work is not technical, it is social.
      • Call everyone, all the time. Email, LinkedIn, meet in person.
      • Don’t pitch the idea, Ask why, why, why. Figuring out the problems of your customer helps you to understand how your idea could help them solve their problems and customizes the pitch on the fly.
      • Ask if they want to see a demo. No matter what they say, schedule a demo anyway.
    2. Get help from others.
      • Others can provide specific help, general help is hard. (do you know a good lawyer, accountant, supplier?)
      • You have to be the overall expert in your industry.
      • Stay friends with the competition. Don’t give away trade secrets, but sharing experiences is almost always fruitful. Very few people are jerks, and it is better to find out who they are. Those who don’t share back are the jerks.
    3. Ship it.
      • Ship first, ask questions later.
        • Be first to market. Software that is 80% complete and being sold is better than software that is perfect and has no sales, because:
        • You will get feedback before your competition.
        • Be accessible to your customer base so you can get feedback from the users
    4. Repeat 1-3. There are unlimited opportunities to improve.

Transforming Tribal Knowledge Into Learning Trees: Part 1 -Getting Jekyll and Squirrel-U Running Locally in Visual Studio

Last weekend I attended CodeStock 2016 and listened to many speakers tout their wares and tell their software engineering stories. One of the most interesting, and entertaining sessions I attended was entitled “Transforming Tribal Knowledge Into Learning Trees” given by Jim D Kohl and his team. I thoroughly expected the talk to be a soft skills lesson on convincing the tribal knowledge sinks to make their knowledge public by some means of documentation. Jim exceeded my expectations completely.

What he presented, by way of a humorous and enjoyable children’s story, was Squirrel-U. It is a set of markdown pages, that are run through gh-pages on GitHub which uses Jekyll to compile the markdown into linked, searchable HTML pages. These pages are not only easy to curate, but also allow for QA by way of the Git repository’s forking and pull request workflows. Jim’s team’s tooling included an on site GitHub instance and IntelliJ, so they were in need on someone to give setup for other IDEs, most notably Visual Studio.

This post will be the first in a series of posts about my journey in configuring Jekyll and Visual Studio to stand up an instance of  Squirrel-U in a Microsoft environment instead of a Java/GitHub environment. The goal by the end is to have an instance of Squirrel-U operating on an IIS server, that listens to a Git repository residing in Visual Studio Team Services, and updates itself on the server when approved changes are pushed to the production branch of Squirrel-U.

Forking Squirrel-U

The first step to the process is just like any other project in Git. Fork the Squirrel-U Git repository located here. If you have never worked with an open source project on GitHub, go here to find directions on forking a GitHub repository, after you create a free GitHub account.

Adding Squirrel-U to a Visual Studio Solution

After you have forked the Squirrel-U Source Code, do the following to set-up the Visual Studio environment (2010 or later) to receive the Squirrel-U code.

  1. Configure Visual Studio Source Control to use GitHub (if not already done)
    • Open Visual Studio from any new or existing project
    • Open Tools -> Options -> Source Control -> Plug-in Selection
    • Select Microsoft Git Provider
    • In Team Explorer Home, select Settings -> Git Settings
    • Enter your user name, email address, and default repository location
  2. Windows Users: Install Git to your machine
  3. Clone the forked repository to a local repository by doing the following
    1. Click the Connect to Team Projects icon on the Team Explorer pane
    2. Expand the Clone drop down under Local Git Repositories
    3. Fill in the URL for the forked repository.
    4. Fill in the directory where you want the local repository placed. THIS DIRECTORY SHOULD NOT EXIST YET
    5. Click Clone to create the local directory and clone the repository.
  4. Create a new Visual Studio project from Existing Code File -> New -> Project From Existing Code
    • Select any project type you want, this does not effect the outcome, Click next.
    • Specify the project details as follows:
      • Where are the files?: Navigate to the location of the local repository
      • Name: Name the project as you see fit.
      • Output Type: Class Library
    • Click Finish

Install Jekyll on the Local Machine

Too many people have installed Jekyll on a Windows machine before for me to write in depth instructions on how to get Jekyll installed on your development machine. These instructions where very helpful to me. This will get the Ruby SDKs needed, along with Jekyll installed on your local machine. When starting Squirrel-U for the first time, you may get a warning that Jekyll can’t find the gem jemoji. As long as you have Ruby installed in your PATH environmental variable, just type gem install jemoji in the command prompt and it will fix you right up.

Start up Jekyll and see if you can get Squirrel-U started Locally

The following instructions will use Jekyll to build the Squirrel-U site and serve it locally so that you can see how you are doing.

  1. Open a command window and navigate to the local squirrel-u repository.
  2. Enter the command jekyll build --destination <destinationdir>, where <destinationdir> is the directory that you want the site to be built in.
  3. Navigate to the <destinationdir>
  4. Start the jekyll server by entering the command jekyll serve you should see a message in the terminal saying something similar to the following:
    done in 67.513 seconds.
    Auto-regeneration: enabled for 'C:/git/squirrel-u'
    Configuration file: C:/git/squirrel-u/_config.yml
    Server address: http://127.0.0.1:4000
    Server running... press ctrl-c to stop.
    
  5. You can now go to http://127.0.0.1:4000 and see your squirrel-u running locally!

Up Next

As long as you have followed these instructions, you should be moving along swimmingly. You now have a Visual Studio Project containing the Squirrel-U source that you can serve locally after running the Jekyll build manually. In the next installment, we will look at installing Grunt.js so that we can keep track of changed files and re-publish Squirrel-U automatically when the pages in specific directories have changed.

Notes on Tara Nicholson’s Talk, “The Quality Of Things,” From CodeStock 2015

This year at CodeStock I attended a talk by Tara Nicholson on the subject of quality assurance. Several of my colleagues wanted access to my notes on the talk and I thought this would be the best forum for those notes. The slides from Tara’s presentation can be found here.

The following are my notes:

“Software Quality is the degree to which written code meets product requirements, has value, and is maintainable.”

Where do bugs come from?

  • Things change.
  • Ambiguity
  • Lack of understanding of requirements. (Tara stated that she thinks that this is the #1 source of bugs in software)

Think about software quality early. The cost at each stage of the development process increases exponentially.

  • The agile testing quadrants. (Source: Lisa Crispin – http://lisacrispin.com/2011/11/08/using-the-agile-testing-quadrants/)
  • How? Create habits that routinely draw out things you have not thought of.
    • Make use of quick cards – a card each member of the development team carries that has a list of the elements, integrations, and dependancies to think about related to QA during the development process.
    • The “Grocery List” – A list of all features and requirements that were agreed upon by the business, development team, and QA team have agreed on. Note: some may not make it to production.
  • Do you need a dedicated test team? It may not always be feasible, but it certainly is optimal.

Load and Performance Monitoring

  • Server vs Page performance – can the server handle the load vs is the app performant from the users point of view
  • Tools used at scripts
    • Load Runner – runs load tests on the server in a virtual(non-production) environment.
    • jMeter – back-end profiler
    • Webpagetest – opensource front-end profiler.
    • Speedcurve – for pay app from Webpagetest that digests the report from Webpagetest and make optimization suggestions.
    • NewRelic – Infrastructure performance tester.

Compatibility

  • What are the costs of supporting compatibility (what does it cost to run on IE8?)
  • Must consider the platform (Win7, linux), carrier (Verison, AT&T), and client (Firefox, IE)
  • Who owns the decision on compatibility? Do we have to support IE8 because the CEO’s son won’t use anything else?
  • Plan early for compatibility and create a strategy to support it.
  • If you decide not to support something, highly consider partial support. (i.e. works in IE8, but not optimally)
  • Know your traffic/demographics – there is no reason to support Opera if no one visits your site using it.

Automation

  • Automate tests – Scripps uses JBehave for BDD
    • Small tests – unit tests that rarely change. <- most tests here.
    • Medium tests – integration tests that change occasionally.
    • Large tests – UI/Integration tests that change frequently. (i.e. user authentication works) <- fewest tests here
  • Release Automation – Continuous integration, nuff said.
    • Jenkins
    • CloudBees
    • CruiseControl
  • Infrastructure Automation
    • Automate content updates.

Resources