Code Analysis Via Version Control History

Size: px
Start display at page:

Download "Code Analysis Via Version Control History"

Transcription

1 Code Analysis Via Version Control History Justin Mclean Class Software Blog:

2 Who am I? Freelance Developer Programming for 25 years Apache Flex PMC, Incubator PMC, Apache member and mentor for several incubator projects Run IoT meetup in Sydney Australia

3 In the last 40 years we have written billions of lines of code that will keep programmers employed for trillions of man hours in the next few thousand years to clean up this mess we ve made. Joe Armstrong

4 Your Code as a Crime Scene

5 You Write Code? 40-80% of all code is maintenance Goal is to understand existing code This is difficult, time consuming and expensive Perhaps more so with agile methodologies? How can we fix this?

6 Detecting Issues With Code Code reviews Pair programming Unit tests Continuous integration Static code analysis Complexity metrics

7 Scalability What about legacy code? What about large code bases? How do you decide what to work on? How to work out where the bugs are? What bugs are actually important?

8 Code Visualisation Can you visually represent code to get a better understanding of what s going on? Code City Make a city of each class arranged by packages in city blocks Height is number of methods, colour coded by no of lines and area by no of terms

9 Code City

10 Code City Limitations Supports only a few common languages Shows complexity (large buildings) but no real indication of where to possibly spend effort Existing hotspots may be stable

11 Version Control History Version control history contains a lot of useful information that we mostly ignore. Information like: Who changed what lines when How much and how often things change Can we aggregate information to tell us something useful?

12 Why Code Changes New functionality Fixing bugs Refactoring Poor understanding of the problem Change frequency == proxy for effort Code that changes in the past is likely to change again in the future

13 Effort and Complexity Change frequency / effort is not the whole story Configuration files changes frequently Overlaps in effort and complexity gives better possible hotspots

14 Code Hotspots Hotspots are places where complex code changes frequently Frequent changes to complex code usually indicate poor quality or buggy code Surprisingly simple complexity measures perform just as well as more complex measures

15 What use are Hotspots? Take cognitive biases out of the equation Where you bugs are likely to be Point out areas for code reviews refactoring extra testing documentation

16 Code Maat Performs various analysis on version control history Produces simple csv text files Supports parsing git, svn, mercurial version control systems Open source (GPL licensed)

17 Producing HotSpot Data Clone repo Work out time period Generate log summary data Generate change frequencies Generate code complexity metrics Combine to find hotspots

18 Apache Flex Project Large code base 25,000 files, 5 million loc or about 20 million loc including tests Mix of many file types and languages MXML, ActionScript, Java, XML files Two distinct phases, before and after donation Mature code base

19 Adobe Flex SDK Summary statistic,value number-of-commits,30090 number-of-entities,4672 number-of-entities-changed,34916 number-of-authors,18

20 Apache Flex SDK Summary statistic,value number-of-commits,3096 number-of-entities,51550 number-of-entities-changed,82508 number-of-authors,57

21 Complexity LOC is a terrible complexity measure, but turns out it s just as bad as most others It s fast and simple Language agnostic (mostly) CLOC

22 Apache Flex SDK Revisions module,revisions,code build.xml,142,1432 frameworks/build.xml,60,432 mustella/jenkins.sh,50,167 mustella/build.xml,44,1988 modules/downloads.xml,39,388 ide/checkallplayerglobals.sh,38,87 frameworks/projects/mobiletheme/defaults.css,35,1568 frameworks/projects/framework/src/mx/collections/listcollectionview.as,33,1442 frameworks/downloads.xml,31,257 installer.xml,29,821 frameworks/projects/spark/build.xml,28,231 frameworks/projects/advancedgrids/src/mx/controls/advanceddatagridbaseex.as,28,4781

23 Apache Flex SDK Last Year module,revisions,code frameworks/projects/framework/src/mx/collections/listcollectionview.as,13,1442 build.xml,12,1432 frameworks/projects/mobiletheme/defaults.css,10,1568 frameworks/projects/spark/src/spark/collections/sort.as,9,82 frameworks/projects/framework/src/mx/collections/sort.as,9,405 frameworks/projects/spark/src/spark/components/datagrid.as,8,2881 frameworks/projects/advancedgrids/src/mx/collections/hierarchicalcollectionviewcursor.as,7,830 frameworks/build.xml,7,432 frameworks/projects/framework/src/mx/collections/sortfield.as,7,356 frameworks/projects/framework/src/mx/utils/objectutil.as,7,791 frameworks/projects/framework/src/mx/collections/complexsortfield.as,7,31 frameworks/projects/framework/src/mx/collections/arraylist.as,7,356 frameworks/projects/spark/src/spark/components/callout.as,6,864 modules/downloads.xml,6,388

24 Hot Spot Confirmation Build and install files Mobile theme ListCollections DataGrid and AdvancedDataGrid DateField

25 Recent Hot Spots Past year: List Collections and Sorting Mobile Themes DataGrid and AdvancedDataGrid Build Scripts Experimental components

26 Hot Spot Limitations Just numbers so may need to normalise Time period may be hard to get right (hotspots move above over time) Some impact by individual commit styles May be some false positives Just a guide, but still a very useful one

27 Visualise Hot Spots Hard to understand a large amount of information Classes are nested in packages and we have complexity and change frequency / effort Circle packing works well. Circle size is loc, colour by change frequency. D3.js easy to use / can display easily Need CSV -> JSON conversion

28 Apache Flex SDK

29 Apache Flex SDK

30 Apache Flex SDK

31 Apache Flex SDK

32 Hotspot Analysis Hotspots are small proportion of all code Configuration files vs complex application logic Can have false positives

33 Hotspot Analysis 3rd party modules and compiler stable Experimental area is an unknown Data grids have been and are still an issue Collections classes being heavily worked on

34 Apache FlexJS

35 Hotspot Analysis Doesn t seem to be a lot of tests Large no of hotspots means lot of change happening XML and Flat theme likely to have bugs UIBase good candidate for refactoring

36 Apache Falcon

37 Hotspot Analysis Reasonably stable in most areas Flex JS / AS / Goog emitters prime candidate for refactoring

38 Apache Mynewt

39 Hotspot Analysis BLE area lots going on Changes in core around tasks, semaphores, scheduling, time, buffers Tests not changing as fast as other code

40 Complexity (again) LOC is OK as a bad measure but is there something a little better? Whitespace indentation! Easy to calculate (Mostly) language independent

41 DataGrid.as complexity CLOC shows 50/50 split between code and comments with 2800 lines of actual code. May be good idea to remove comments? DataGrid.as whitespace n,total,mean,sd,max 5860,9244,1.58,1.21,13 Mean is low, sd is low, but max is way too high We have a real hotspot

42 rev,n,total,mean,sd f52eb16,5608,8816,1.57,1.23 0c4290c,5609,8816,1.57, a8,5644,8856,1.57,1.23 fa2108b,5644,8856,1.57,1.23 abc381b,5644,8856,1.57, cdd7,5791,9061,1.56,1.22 5e6e5c3,5791,9061,1.56, da8,5791,9061,1.56,1.22 ec1ac28,5810,9090,1.56, b68de,5839,9124,1.56,1.22 b1d0359,5855,9164,1.57,1.22 1bef097,5851,9158,1.57,1.22 3e752d9,5854,9165,1.57,1.22 6c53962,5857,9172,1.57,1.22 c47f9f9,5855,9169,1.57,1.22 bb600fd,5855,9169,1.57, f8757,5853,9230,1.58,1.21 3a1769b,5860,9247,1.58, c20,5860,9244,1.58,1.21 Complexity Trend

43 UIBase Complexity Trend

44 Temporal Coupling File that need to change at the same time Causes: Copy paste Inadequate encapsulation Anti-pattern sometimes referred to as shotgun surgery

45 Detect Temporal Coupling Results are a bit noisy - may need to filter frameworks/projects/framework/src/mx/states/additems.as,frameworks/projects/mx/src/mx/core/container.as,83,6 frameworks/projects/framework/src/mx/states/additems.as,frameworks/projects/spark/src/spark/components/skinnablecontainer.as,83,6 frameworks/projects/mx/src/mx/core/container.as,frameworks/projects/spark/src/spark/components/group.as,76,7 frameworks/projects/mx/src/mx/containers/viewstack.as,frameworks/projects/spark/src/spark/components/skinnablecontainer.as,76,7 frameworks/projects/framework/src/mx/states/additems.as,frameworks/projects/mx/src/mx/containers/viewstack.as,76,7 frameworks/projects/mx/src/mx/containers/viewstack.as,frameworks/projects/mx/src/mx/core/container.as,76,7 frameworks/projects/spark/src/spark/components/group.as,frameworks/projects/spark/src/spark/components/skinnablecontainer.as,76,7 frameworks/projects/mx/src/mx/containers/viewstack.as,frameworks/projects/spark/src/spark/components/group.as,71,7 frameworks/projects/framework/src/mx/core/uicomponent.as,frameworks/projects/spark/src/spark/components/skinnablecontainer.as,63,10 frameworks/projects/framework/src/mx/core/uicomponent.as,frameworks/projects/framework/src/mx/states/additems.as,63,10 frameworks/projects/framework/src/mx/core/uicomponent.as,frameworks/projects/spark/src/spark/components/group.as,60,10

46 Apache Mynewt

47 Apache Flex SDK

48 Flex JS

49 Flex Falcon

50 Mynewt

51 Knowledge Map Generate ownership of files Multiple owners per file imply more potential bugs Knowledge maps - who know most about which files

52 Apache Flex SDK

53 Apache Flex SDK

54 What we have learnt Lot of useful information in your version control history waiting to be found out Technique scales easily to (very) large code bases Keep data formats simple Simple measures of effort and complexity are often as good as complex ones Can use version control history to find the areas that need attention in your code base

55 Links Code as a crime scene Code City CLOC Code Maat

56 Questions? Ask now, see me after the session, follow me on or me at Slides can be found at conference site.

How to Become an IoT Developer (and Have Fun!) Justin Mclean Class Software.

How to Become an IoT Developer (and Have Fun!) Justin Mclean Class Software. How to Become an IoT Developer (and Have Fun!) Justin Mclean Class Software Email: justin@classsoftware.com Twitter: @justinmclean Who am I? Freelance Developer - programming for 25 years Incubator PMC

More information

How to get your Release Through the Incubator

How to get your Release Through the Incubator How to get your Release Through the Incubator Justin Mclean Class Software Email: justin@classsoftware.com Twitter: @justinmclean Who am I? Freelance Developer - programming for 25 years Incubator PMC

More information

FINDING TOXIC CODE. Experiences and techniques for finding dangerous code in large multi-language codebases

FINDING TOXIC CODE. Experiences and techniques for finding dangerous code in large multi-language codebases FINDING TOXIC CODE Experiences and techniques for finding dangerous code in large multi-language codebases Kornelis (Korny) Sietsma - @kornys on Twitter WHO AM I? 2 WHAT DO I DO NOW? Consulting, Delivery,

More information

TREASURE ISLAND VERSION

TREASURE ISLAND VERSION TREASURE ISLAND VERSION CONTROL @StefanSeegers TREASURE ISLAND? Hotspots Architectural Decay Commit Messages Knowledge Map Tools WHERE DID MY JOURNEY STARTED? CRIMES? Crimes have offenders To find offenders,

More information

1. Evolving Software. 1. Evolving Software. 2. Dissect your Architecture. Pro & Cons??? 3. Master the Social Aspects of Code

1. Evolving Software. 1. Evolving Software. 2. Dissect your Architecture. Pro & Cons??? 3. Master the Social Aspects of Code 1. Evolving Software 1. Evolving Software 2. Dissect your Architecture 3. Master the Social Aspects of Code Pro & Cons??? git clone https://github.com/hibernate/hibernate-orm.git https://github.com/adamtornhill/code-maat.git

More information

FlexJS Component Source Code Patterns

FlexJS Component Source Code Patterns FlexJS Component Source Code Patterns This page is not about "coding conventions" like where to put your curly braces. This page is about how a single.as file produces a component that runs in a SWF as

More information

The Attraction of Complexity

The Attraction of Complexity The Attraction of Complexity Carlo Bottiglieri December 10, 2017 1 Introduction How is complexity distributed through a codebase? Does this distribution present similarities across different projects?

More information

Planets Testbed Prototype Release and Report

Planets Testbed Prototype Release and Report Project Number Project Title Title of Deliverable Deliverable Number Contributing Sub-project and Work-package Deliverable Dissemination Level Deliverable Nature IST-2006-033789 Planets Testbed Prototype

More information

I Want To Go Faster! A Beginner s Guide to Indexing

I Want To Go Faster! A Beginner s Guide to Indexing I Want To Go Faster! A Beginner s Guide to Indexing Bert Wagner Slides available here! @bertwagner bertwagner.com youtube.com/c/bertwagner bert@bertwagner.com Why Indexes? Biggest bang for the buck Can

More information

UNIT I Programming Language Syntax and semantics. Kainjan Sanghavi

UNIT I Programming Language Syntax and semantics. Kainjan Sanghavi UNIT I Programming Language Syntax and semantics B y Kainjan Sanghavi Contents Bird s eye view of programming language concepts Syntax Semantics Pragmatics Programming Language Concepts A programming language

More information

Elliotte Rusty Harold August From XML to Flat Buffers: Markup in the Twenty-teens

Elliotte Rusty Harold August From XML to Flat Buffers: Markup in the Twenty-teens Elliotte Rusty Harold elharo@ibiblio.org August 2018 From XML to Flat Buffers: Markup in the Twenty-teens Warning! The Contenders XML JSON YAML EXI Protobufs Flat Protobufs XML JSON YAML EXI Protobuf Flat

More information

OpenEmbedded in the Real World

OpenEmbedded in the Real World OpenEmbedded in the Real World Scott Murray Senior Staff Software Engineer Konsulko Group http://konsulko.com Who am I? Long time Linux user (over 20 years) Have done Linux software development for over

More information

Arduino Platform Part I

Arduino Platform Part I Arduino Platform Part I Justin Mclean Class Software Email: justin@classsoftware.com Twitter: @justinmclean Blog: http://blog.classsoftware.com Who am I? Director of Class Software for almost 15 years

More information

CC PROCESAMIENTO MASIVO DE DATOS OTOÑO 2018

CC PROCESAMIENTO MASIVO DE DATOS OTOÑO 2018 CC5212-1 PROCESAMIENTO MASIVO DE DATOS OTOÑO 2018 Lecture 1: Introduction Aidan Hogan aidhog@gmail.com THE VALUE OF DATA Soho, London, 1854 Cholera: What we know now Cholera: What we knew in 1854 1854:

More information

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering The Power of Unit Testing and it s impact on your business Ashish Kumar Vice President, Engineering Agitar Software, 2006 1 The Power of Unit Testing Why Unit Test? The Practical Reality Where do we go

More information

FlexJS. OmPrakash Apache Flex PMC Member Advisory Software Engineer, IBM

FlexJS. OmPrakash Apache Flex PMC Member Advisory Software Engineer, IBM FlexJS OmPrakash Muppirala @bigosmallm bigosmallm@apache.org Apache Flex PMC Member Advisory Software Engineer, IBM Who am I? Advisory Software Engineer at IBM Apache Flex Committer and PMC Member UI Architect

More information

Agenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java

Agenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java CS121/IS223 Object Reference Variables Dr Olly Gotel ogotel@pace.edu http://csis.pace.edu/~ogotel Having problems? -- Come see me or call me in my office hours -- Use the CSIS programming tutors Agenda

More information

SQLite vs. MongoDB for Big Data

SQLite vs. MongoDB for Big Data SQLite vs. MongoDB for Big Data In my latest tutorial I walked readers through a Python script designed to download tweets by a set of Twitter users and insert them into an SQLite database. In this post

More information

CS121/IS223. Object Reference Variables. Dr Olly Gotel

CS121/IS223. Object Reference Variables. Dr Olly Gotel CS121/IS223 Object Reference Variables Dr Olly Gotel ogotel@pace.edu http://csis.pace.edu/~ogotel Having problems? -- Come see me or call me in my office hours -- Use the CSIS programming tutors CS121/IS223

More information

GETTING STARTED. User Story Mapping

GETTING STARTED. User Story Mapping GETTING STARTED User Story Mapping contents SECTION 1 user story maps what is a user story map? 3 examples of user story maps 4 breakdown of a user story map 5 why create user story maps? 6 benefits of

More information

Mischa Kölliker. JavaLounge Zürich, 23. Juni 2009

Mischa Kölliker. JavaLounge Zürich, 23. Juni 2009 Mischa Kölliker Ueli Kistler JavaLounge Zürich, 23. Juni 2009 Basel Baden Bern Brugg Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg München Stuttgart Wien & The RIA space What is Adobe

More information

Grading Rubric Homework 1

Grading Rubric Homework 1 Grading Rubric Homework 1 Used Git, has many commits, over time, wrote appropriate commit comments, set up Git correctly with git config Cloning repository results in a working site, no broken links, no

More information

Building Flex Components

Building Flex Components Michael Labriola Senior Consultant >> Adobe Certified Instructor Adobe Community Expert >> Flex Community Champion Building Flex Components 1 What are we going to cover? Understanding why we build components

More information

Project Horizon Technical Overview. Bob Rullo GM; Presentation Architecture

Project Horizon Technical Overview. Bob Rullo GM; Presentation Architecture Project Horizon Technical Overview Bob Rullo GM; Presentation Architecture robert.rullo@sungardhe.com Agenda Banner Evolution Overview Project Horizon Overview Project Horizon Architecture Review Preparing

More information

Week 5. CS 400 Programming III

Week 5. CS 400 Programming III Exam Conflicts are due this week: 1. Put all course meetings, quizzes, and exams in your calendar 2. Report any conflicts with cs400 exams by Friday of this week 3. Report complete information via the

More information

Management. Software Quality. Dr. Stefan Wagner Technische Universität München. Garching 28 May 2010

Management. Software Quality. Dr. Stefan Wagner Technische Universität München. Garching 28 May 2010 Technische Universität München Software Quality Management Dr. Stefan Wagner Technische Universität München Garching 28 May 2010 Some of these slides were adapted from the tutorial "Clone Detection in

More information

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read) 1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?

More information

Tips and Tricks for Microsoft PowerPoint Game

Tips and Tricks for Microsoft PowerPoint Game Tips and Tricks for Microsoft PowerPoint Game Topics include: 1. Linking 2. Inserting Sound 3. Animation 4. Background Ideas 5. Buttons and Image Linking 6. Creating an Invisible Hot Spot 7. Set as One

More information

Welcome to Python! If you re the type of person who wants to know

Welcome to Python! If you re the type of person who wants to know In This Chapter The history of Python What people use Python for Chapter 1 Introducing Python Useful concepts for Python programming Welcome to Python! If you re the type of person who wants to know what

More information

Building modern enterprise applications from scratch: lessons learned DOAG 2014 Dr. Clemens Wrzodek

Building modern enterprise applications from scratch: lessons learned DOAG 2014 Dr. Clemens Wrzodek Building modern enterprise applications from scratch: lessons learned DOAG 2014 Dr. Clemens Wrzodek @wrzodek Roche Group Penzberg Founded 1896 in Basel, Switzerland Employing > 82,000 people Clear focus

More information

How We Refactor, and How We Know It

How We Refactor, and How We Know It Emerson Murphy-Hill, Chris Parnin, Andrew P. Black How We Refactor, and How We Know It Urs Fässler 30.03.2010 Urs Fässler () How We Refactor, and How We Know It 30.03.2010 1 / 14 Refactoring Definition

More information

CSE 70 Final Exam Fall 2009

CSE 70 Final Exam Fall 2009 Signature cs70f Name Student ID CSE 70 Final Exam Fall 2009 Page 1 (10 points) Page 2 (16 points) Page 3 (22 points) Page 4 (13 points) Page 5 (15 points) Page 6 (20 points) Page 7 (9 points) Page 8 (15

More information

3 Continuous Integration 3. Automated system finding bugs is better than people

3 Continuous Integration 3. Automated system finding bugs is better than people This presentation is based upon a 3 day course I took from Jared Richardson. The examples and most of the tools presented are Java-centric, but there are equivalent tools for other languages or you can

More information

Experiences with Apache Beam. Dan Debrunner Programming Model Architect IBM Streams STSM, IBM

Experiences with Apache Beam. Dan Debrunner Programming Model Architect IBM Streams STSM, IBM Experiences with Apache Beam Dan Debrunner Programming Model Architect IBM Streams STSM, IBM Background To define my point of view IBM Streams brief history 2002 IBM Research/DoD joint research project

More information

Painless Persistence. Some guidelines for creating persistent Java applications that work

Painless Persistence. Some guidelines for creating persistent Java applications that work Painless Persistence Some guidelines for creating persistent Java applications that work The Authors Anthony Patricio Senior JBoss Certification Developer Highest volume poster on early Hibernate forums

More information

24 th Annual Research Review

24 th Annual Research Review 24 th Annual Research Review April 4-6 2017 Towards Better Understanding of Software Quality Evolution Through Commit-Impact Analysis Pooyan Behnamghader USC CSSE pbehnamg@usc.edu Commit-Impact Analysis

More information

Case Study: Access Control. Steven M. Bellovin October 4,

Case Study: Access Control. Steven M. Bellovin October 4, Case Study: Access Control Steven M. Bellovin October 4, 2015 1 Case Studies in Access Control Joint software development Mail Steven M. Bellovin October 4, 2015 2 Situations Small team on a single machine

More information

Doxygen Flavor for Structure 101g

Doxygen Flavor for Structure 101g Doxygen Flavor for Structure 101g By Marcio Marchini (marcio.marchini@gmail.com) 2012/01/05 1) What is the Doxygen Flavor for Structure101g? This is a sort of a plugin for Structure 101g (called a flavor).

More information

CSE 190D Spring 2017 Final Exam Answers

CSE 190D Spring 2017 Final Exam Answers CSE 190D Spring 2017 Final Exam Answers Q 1. [20pts] For the following questions, clearly circle True or False. 1. The hash join algorithm always has fewer page I/Os compared to the block nested loop join

More information

SANER 17. Klagenfurt, Austria

SANER 17. Klagenfurt, Austria SANER 17 Klagenfurt, Austria Carol V. Alexandru, Sebastiano Panichella, Harald C. Gall Software Evolution and Architecture Lab University of Zurich, Switzerland {alexandru,panichella,gall}@ifi.uzh.ch 22.02.2017

More information

BD-HDMV vs BD-J Menus

BD-HDMV vs BD-J Menus BD-HDMV vs BD-J Menus and the winner is... Paul Masters A Wasting Time Production Table of Contents Introduction...3 Comparison Charts...4 General...4 BD-HDMV pages vs BD-J looping chapters...5 Discussion...6

More information

Java Without the Jitter

Java Without the Jitter TECHNOLOGY WHITE PAPER Achieving Ultra-Low Latency Table of Contents Executive Summary... 3 Introduction... 4 Why Java Pauses Can t Be Tuned Away.... 5 Modern Servers Have Huge Capacities Why Hasn t Latency

More information

Maintainability and Agile development. Author: Mika Mäntylä

Maintainability and Agile development. Author: Mika Mäntylä Maintainability and Agile development Author: Mika Mäntylä ISO 9126 Software Quality Characteristics Are the required functions available in the software? How easy is it to

More information

How we built a highly scalable Machine Learning platform using Apache Mesos

How we built a highly scalable Machine Learning platform using Apache Mesos How we built a highly scalable Machine Learning platform using Apache Mesos Daniel Sârbe Development Manager, BigData and Cloud Machine Translation @ SDL Co-founder of BigData/DataScience Meetup Cluj,

More information

Python Unit Testing and CI Workflow. Tim Scott, Python Meetup 11/07/17

Python Unit Testing and CI Workflow. Tim Scott, Python Meetup 11/07/17 Python Unit Testing and CI Workflow Tim Scott, Python Meetup 11/07/17 A Little About Me Started as a CoOp Engineer (2007-2008) and Design Engineer at Adtran (2010-2014) Currently work at Abaco Systems

More information

Unit Testing & Continuous Integration

Unit Testing & Continuous Integration O n a blustery autumn evening five old friends met in the backroom of one of the city s oldest and most private clubs. Each had traveled a long distance from all corners of the world to meet on this very

More information

Landing Page Optimization What is Split Testing?... 13

Landing Page Optimization What is Split Testing?... 13 Table of Contents Introduction... 4 Types of Landing Pages... 5 Elements of Successful Landing Pages... 8 Creating Stunning Landing Pages... 10 WordPress Themes & Plugins... 10 Templates & Systems... 11

More information

comma separated values .csv extension. "save as" CSV (Comma Delimited)

comma separated values .csv extension. save as CSV (Comma Delimited) What is a CSV and how do I import it? A CSV is a comma separated values file which allows data to be saved in a table structured format. CSVs look like normal spreadsheet but with a.csv extension. Traditionally

More information

Test Driven Development TDD

Test Driven Development TDD Test Driven Development TDD Testing Testing can never demonstrate the absence of errors in software, only their presence Edsger W. Dijkstra (but it is very good at the latter). Testing If it's worth building,

More information

Challenges, Benefits and Best Practices of Performance Focused DevOps. 1 #Dynatrace

Challenges, Benefits and Best Practices of Performance Focused DevOps. 1 #Dynatrace Challenges, Benefits and Best Practices of Performance Focused DevOps Wolfgang Gottesheim @gottesheim 1 #Dynatrace When do we find performance problems? Developers Unit/Integration Tests Acceptance Tests

More information

How invariants help writing loops Author: Sander Kooijmans Document version: 1.0

How invariants help writing loops Author: Sander Kooijmans Document version: 1.0 How invariants help writing loops Author: Sander Kooijmans Document version: 1.0 Why this document? Did you ever feel frustrated because of a nasty bug in your code? Did you spend hours looking at the

More information

Teradata. This was compiled in order to describe Teradata and provide a brief overview of common capabilities and queries.

Teradata. This was compiled in order to describe Teradata and provide a brief overview of common capabilities and queries. Teradata This was compiled in order to describe Teradata and provide a brief overview of common capabilities and queries. What is it? Teradata is a powerful Big Data tool that can be used in order to quickly

More information

Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer

Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer http://ewolff.com Why Microservices? Why Microservices? Strong modularization Replaceability Small units Sustainable Development

More information

Erlang. Joe Armstrong.

Erlang. Joe Armstrong. Erlang Joe Armstrong joe.armstrong@ericsson.com 1 Who is Joe? Inventor of Erlang, UBF, Open Floppy Grid Chief designer of OTP Founder of the company Bluetail Currently Software Architect Ericsson Current

More information

THANKS FOR READING. - Marco Behler, Author. Copyright 2015 Marco Behler GmbH. All Rights Reserved.

THANKS FOR READING. - Marco Behler, Author. Copyright 2015 Marco Behler GmbH. All Rights Reserved. 6 THANKS FOR READING Thanks for reading Customer Requirements - Everything Programmers Need To Know Before Writing Code. If you have any suggestions, feedback (good or bad) then please do not hesitate

More information

Software Project (Lecture 4): Git & Github

Software Project (Lecture 4): Git & Github Software Project (Lecture 4): Git & Github Wouter Swierstra, Atze Dijkstra Feb 2016 Wouter Swierstra, Atze Dijkstra Software Project (Lecture 4): Git & Github Feb 2016 1 / 45 Wouter Swierstra, Atze Dijkstra

More information

Last Time: Acceleration Data Structures for Ray Tracing. Schedule. Today. Shadows & Light Sources. Shadows

Last Time: Acceleration Data Structures for Ray Tracing. Schedule. Today. Shadows & Light Sources. Shadows Last Time: Acceleration Data Structures for Ray Tracing Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion

More information

Improving Drupal search experience with Apache Solr and Elasticsearch

Improving Drupal search experience with Apache Solr and Elasticsearch Improving Drupal search experience with Apache Solr and Elasticsearch Milos Pumpalovic Web Front-end Developer Gene Mohr Web Back-end Developer About Us Milos Pumpalovic Front End Developer Drupal theming

More information

Installation Guide for the TITAN Designer and TITAN Executor for the Eclipse IDE

Installation Guide for the TITAN Designer and TITAN Executor for the Eclipse IDE INSTALLATION GUIDE 1 (13) Installation Guide for the TITAN Designer and TITAN Executor for the Eclipse IDE Abstract This document describes the detailed information of installing the TITAN Designer and

More information

DrupalGovcon July 20th, 2016

DrupalGovcon July 20th, 2016 Agile Drupal 8 Builds: Doing the Most Without PHP DrupalGovcon July 20th, 2016 Matt Cheney & Molly Byrnes 1 Hello to Drupalcon Govcon My name is Matthew Cheney. I work on the magical platform that is Pantheon.

More information

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi.

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi. Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 18 Tries Today we are going to be talking about another data

More information

CS168 Programming Assignment 2: IP over UDP

CS168 Programming Assignment 2: IP over UDP Programming Assignment 2: Assignment Out: February 17, 2011 Milestone: February 25, 2011 Assignment Due: March 4, 2011, 10pm 1 Introduction In this assignment you will be constructing a Virtual IP Network

More information

Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as

Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as contentious as the text editor This talk tries to address

More information

Automated Testing of Tableau Dashboards

Automated Testing of Tableau Dashboards Kinesis Technical Whitepapers April 2018 Kinesis CI Automated Testing of Tableau Dashboards Abstract Companies make business critical decisions every day, based on data from their business intelligence

More information

Hello, welcome to creating a widget in MyUW. We only have 300 seconds, so let s get going.

Hello, welcome to creating a widget in MyUW. We only have 300 seconds, so let s get going. Hello, welcome to creating a widget in MyUW. We only have 300 seconds, so let s get going. And I ve included a slide about me. You might wonder why, since I only have five minutes, but don t worry. Widgets

More information

Handout 4: Version Control Reference

Handout 4: Version Control Reference CSCI 2600 Principles of Software Handout 4: Version Control Reference Introduction SVN (Subversion) provides the following functionality: It allows multiple users to edit the same files independently,

More information

MBFuzzer - MITM Fuzzing for Mobile Applications

MBFuzzer - MITM Fuzzing for Mobile Applications MBFuzzer - MITM Fuzzing for Mobile Applications Fatih Özavcı Mentor of MBFuzer @ yakindanegitim.org fatih.ozavci at gamasec.net gamasec.net/fozavci Scope Yakindan Egitim Project Security Vulnerabilities

More information

TOP 10 FREE PYTHON PROGRAMMING BOOKS - DOWNLOAD PDF OR

TOP 10 FREE PYTHON PROGRAMMING BOOKS - DOWNLOAD PDF OR PDF EBOOK3000 TOP 10 FREE PYTHON PROGRAMMING BOOKS - DOWNLOAD PDF OR 1 / 5 2 / 5 3 / 5 java database programming bible pdf ebook Details: Paperback: 366 pages Publisher: WOW! ebook; 1st edition (April

More information

SECTION 2: HW3 Setup.

SECTION 2: HW3 Setup. SECTION 2: HW3 Setup cse331-staff@cs.washington.edu slides borrowed and adapted from Alex Mariakis,CSE 390a,Justin Bare, Deric Pang, Erin Peach, Vinod Rathnam LINKS TO DETAILED SETUP AND USAGE INSTRUCTIONS

More information

Karlen Communications Track Changes and Comments in Word. Karen McCall, M.Ed.

Karlen Communications Track Changes and Comments in Word. Karen McCall, M.Ed. Karlen Communications Track Changes and Comments in Word Karen McCall, M.Ed. Table of Contents Introduction... 3 Track Changes... 3 Track Changes Options... 4 The Revisions Pane... 10 Accepting and Rejecting

More information

Analytics for UX Workshop. Web Analytics for UX,

Analytics for UX Workshop. Web Analytics for UX, Analytics for UX Workshop 1 About Me Mike Beasley @UXMikeBeasley UX Architect, ITHAKA Author, Practical Web Analytics for User Experience Co-founder, Ignite UX Michigan (igniteuxmi.com) 2 Meet Google Analytics

More information

Developing Accessible Flex Applications

Developing Accessible Flex Applications Developing Accessible Flex Applications Andrew Kirkpatrick Adobe Systems akirkpat@adobe.com 1 Agenda Introductions Motivation for Accessibility Planning for Accessibility Building Accessible Applications

More information

The Next Generation of Eclipse: e4. Mike Milinkovich Executive Director Eclipse Foundation

The Next Generation of Eclipse: e4. Mike Milinkovich Executive Director Eclipse Foundation The Next Generation of Eclipse: e4 Mike Milinkovich Executive Director Eclipse Foundation 1 Changing Environment New Technologies: RIA Applications and Cloud Computing AJAX, Flash, Silverlight Amazon E2

More information

Rust for high level applications. Lise Henry

Rust for high level applications. Lise Henry Rust for high level applications Lise Henry Who am I Elisabeth Henry A.k.a Lizzie Crowdagger Computer science background Semi-professional fantasy writer I like Rust, but not really into systems programming

More information

FreeBSD and Git. Ed Maste - FreeBSD Vendor Summit 2018

FreeBSD and Git. Ed Maste - FreeBSD Vendor Summit 2018 FreeBSD and Git Ed Maste - FreeBSD Vendor Summit 2018 Purpose History and Context - ensure we re starting from the same reference Identify next steps for more effective use / integration with Git / GitHub

More information

Selecting Wordpress as Your Web Platform

Selecting Wordpress as Your Web Platform Selecting Wordpress as Your Web Platform Why Choose WordPress: World s most popular weblog platform New York Times, CNN, People, EBay, Yahoo Becoming widely used as a CMS (Content Management System) easy

More information

Project Horizon Technical Overview. Steven Forman Principal Technical Consultant

Project Horizon Technical Overview. Steven Forman Principal Technical Consultant Project Horizon Technical Overview Steven Forman Principal Technical Consultant Agenda Banner Evolution Overview Project Horizon Overview Project Horizon Architecture Review Preparing for Project Horizon

More information

Reengineering II. Transforming the System

Reengineering II. Transforming the System Reengineering II Transforming the System Recap: Reverse Engineering We have a detailed impression of the current state We identified the important parts We identified reengineering opportunities We have

More information

High Availability Distributed (Micro-)services. Clemens Vasters Microsoft

High Availability Distributed (Micro-)services. Clemens Vasters Microsoft High Availability Distributed (Micro-)services Clemens Vasters Microsoft Azure @clemensv ice Microsoft Azure services I work(-ed) on. Notification Hubs Service Bus Event Hubs Event Grid IoT Hub Relay Mobile

More information

Analysis Tool Project

Analysis Tool Project Tool Overview The tool we chose to analyze was the Java static analysis tool FindBugs (http://findbugs.sourceforge.net/). FindBugs is A framework for writing static analyses Developed at the University

More information

Zero Install. Decentralised cross-platform package management

Zero Install. Decentralised cross-platform package management Zero Install Decentralised cross-platform package management Thomas Leonard / University of Cambridge / @talex5 OCaml 2014, Gothenburg, Sweden, September 5, 2014 History Started the ROX desktop in 1999...

More information

DECISION STRUCTURES: USING IF STATEMENTS IN JAVA

DECISION STRUCTURES: USING IF STATEMENTS IN JAVA DECISION STRUCTURES: USING IF STATEMENTS IN JAVA S o far all the programs we have created run straight through from start to finish, without making any decisions along the way. Many times, however, you

More information

"BEHAVIOR PATTERNS FOR DESIGNING AUTOMATED TESTS"

BEHAVIOR PATTERNS FOR DESIGNING AUTOMATED TESTS BIO PRESENTATION W3 5/16/2007 11:30:00 AM "BEHAVIOR PATTERNS FOR DESIGNING AUTOMATED TESTS" Jamie Mitchell Test & Automation Consulting LLC International Conference On Software Test Analysis And Review

More information

Selenium Testing Course Content

Selenium Testing Course Content Selenium Testing Course Content Introduction What is automation testing? What is the use of automation testing? What we need to Automate? What is Selenium? Advantages of Selenium What is the difference

More information

The Intuitive Jira Guide For Users (2018)

The Intuitive Jira Guide For Users (2018) The Intuitive Jira Guide For Users (2018) idalko.com/jira-guide-pdf/ June 27, 2018 In this PDF you ll find the comprehensive Jira guide for users, brought to you by the Atlassian Platinum Solution Partner

More information

First-Order Translation Checklist

First-Order Translation Checklist CS103 Winter 2019 First-Order Translation Checklist Cynthia Lee Keith Schwarz In this handout, we ve distilled five specific points that you should check in your first-order logic statements before submitting

More information

CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability

CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability Featuring Accenture managing directors

More information

Caching Basics. Memory Hierarchies

Caching Basics. Memory Hierarchies Caching Basics CS448 1 Memory Hierarchies Takes advantage of locality of reference principle Most programs do not access all code and data uniformly, but repeat for certain data choices spatial nearby

More information

Belle II - Git migration

Belle II - Git migration Belle II - Git migration Why git? Stash GIT service managed by DESY Powerful branching and merging capabilities Resolution of (JIRA) issues directly be map to branches and commits Feature freeze in pre-release

More information

. social? better than. 7 reasons why you should focus on . to GROW YOUR BUSINESS...

. social? better than. 7 reasons why you should focus on  . to GROW YOUR BUSINESS... Is EMAIL better than social? 7 reasons why you should focus on email to GROW YOUR BUSINESS... 1 EMAIL UPDATES ARE A BETTER USE OF YOUR TIME If you had to choose between sending an email and updating your

More information

Automatic Identification of Important Clones for Refactoring and Tracking

Automatic Identification of Important Clones for Refactoring and Tracking Automatic Identification of Important Clones for Refactoring and Tracking Manishankar Mondal Chanchal K. Roy Kevin A. Schneider Department of Computer Science, University of Saskatchewan, Canada {mshankar.mondal,

More information

GROW YOUR BUSINESS WITH HELP FROM GOOGLE Ranking Factors

GROW YOUR BUSINESS WITH HELP FROM GOOGLE Ranking Factors GROW YOUR BUSINESS WITH HELP FROM GOOGLE Ranking Factors JUSTIN EMIG VP, MARKETING AND INNOVATION WEB TALENT MARKETING HELLO I am Justin Emig Holds 10 digital marketing certifications Has 9 years of digital

More information

David Bernstein Five Development Practices Essential for Scrum Teams

David Bernstein Five Development Practices Essential for Scrum Teams David Bernstein Five Development Practices Essential for Scrum Teams 1 Welcome! I m David Scott Bernstein Software developer since 1980 Trained 8,000 developers since 1990 Published author since 2015 Website:

More information

WACC Report. Zeshan Amjad, Rohan Padmanabhan, Rohan Pritchard, & Edward Stow

WACC Report. Zeshan Amjad, Rohan Padmanabhan, Rohan Pritchard, & Edward Stow WACC Report Zeshan Amjad, Rohan Padmanabhan, Rohan Pritchard, & Edward Stow 1 The Product Our compiler passes all of the supplied test cases, and over 60 additional test cases we wrote to cover areas (mostly

More information

Git Branching for Agile Teams

Git Branching for Agile Teams Git Branching for Agile Teams Why use Git + agile? Git helps agile teams unleash their potential How? Developer First, let s review two pillars of agile 1 Build in narrow vertical slices Waterfall: can

More information

Top 5 Issues that Cannot be Resolved by DBAs (other than missed bind variables)

Top 5 Issues that Cannot be Resolved by DBAs (other than missed bind variables) Top 5 Issues that Cannot be Resolved by DBAs (other than missed bind variables) March 12, 2013 Michael Rosenblum Dulcian, Inc. www.dulcian.com 1 of 43 Who Am I? Misha Oracle ACE Co-author of 2 books PL/SQL

More information

JUGAT Flex 3. Christoph Atteneder. May Flash / Flex Development Technical Lead Adobe Systems Incorporated. All Rights Reserved.

JUGAT Flex 3. Christoph Atteneder. May Flash / Flex Development Technical Lead Adobe Systems Incorporated. All Rights Reserved. JUGAT Flex 3 Christoph Atteneder Flash / Flex Development Technical Lead May 2008 2006 Adobe Systems Incorporated. All Rights Reserved. 1 ADOBE FLEX 3 A highly productive, free open source framework for

More information

CS221: Algorithms and Data Structures. Asymptotic Analysis. Alan J. Hu (Borrowing slides from Steve Wolfman)

CS221: Algorithms and Data Structures. Asymptotic Analysis. Alan J. Hu (Borrowing slides from Steve Wolfman) CS221: Algorithms and Data Structures Asymptotic Analysis Alan J. Hu (Borrowing slides from Steve Wolfman) 1 Learning Goals By the end of this unit, you will be able to Define which program operations

More information

Version Control. Kyungbaek Kim. Chonnam National University School of Electronics and Computer Engineering. Original slides from James Brucker

Version Control. Kyungbaek Kim. Chonnam National University School of Electronics and Computer Engineering. Original slides from James Brucker Version Control Chonnam National University School of Electronics and Computer Engineering Kyungbaek Kim Original slides from James Brucker What is version control Manage documents over time Keep a history

More information

Haskell Program Coverage Toolkit

Haskell Program Coverage Toolkit Haskell Program Coverage Toolkit Andy Gill Colin Runciman Why Study Code Coverage? If your program contains reachable code that has not been executed by your tests, then your program is insufficiently

More information