Think like an Elm developer
|
|
- Todd Strickland
- 5 years ago
- Views:
Transcription
1 Think like an Elm developer
2 Piper Niehaus Denver, CO, USA Backpacker / skier Nonprofit board chair
3 Software Engineer at Pivotal Pivotal Tracker team Elm in Production since 2016 Internal Products and Services team Kotlin
4 We all get excited about new languages
5 Production changes everything Bugs matter Testing matters Maintainability matters
6 Goals The promise (level set) The production hump What s next?
7 Agenda About me The promise of Elm Background Language Architecture The Pivotal Tracker experience Is Elm right for you?
8 Elm: A DSL for web apps Language Framework Ecosystem
9 Elm in production
10 Elm background Evan Czaplicki s Harvard thesis Now at noredink Elm s Benevolent Dictator For Life
11 Benevolent dictator for life Design Direction Priorities Pace
12 Agenda About me The promise of Elm Background Language Architecture The Pivotal Tracker experience Is Elm right for you?
13 Elm language Elm is a programming language that compiles to JavaScript Pure functional Strong static type system with a friendly compiler
14 Agenda About me The promise of Elm Background Language Pure functional Strong static type system with a friendly compiler Architecture The Pivotal Tracker experience Is Elm right for you?
15 What is a pure function? A function that takes some input and returns output without affecting or being affected by external state
16 Pure function Impure function Function (arguments) { Computations } Function (arguments) { External state Computations } Return value Return value
17
18 Pure vs impure functional programming languages Pure functional languages: Languages that support only functional paradigms (Haskell, Elm) Impure functional languages: Languages that support both functional and imperative style programming (Kotlin, Python)
19 Benefits of pure functional programming Consistency Code is easy to follow and understand A function given the same values always has the same result Lack of race conditions Time travel debugger
20 Elm time travel debugger Because every function in Elm is pure See the system at any state Roll back, roll forward
21 Time travel debugging
22 Agenda About me The promise of Elm Background Language Pure functional Strong static type system with a friendly compiler Architecture The Pivotal Tracker experience Is Elm right for you?
23 What is a type? An object s type describes Examples: The kind of data in the object What it can do String Int All languages must check types Can t do 1 + two
24 What is static typing? All languages must check types but statically typed languages check at compile time, while dynamically typed languages check at runtime. Example: Can t do 1 + two In ruby: we find this out when we try to load a page and see an error In Elm: we can t even compile our code to run the app at all
25 Dynamic typing Types are checked at runtime Static typing Types are checked at compile time Strong static* typing Static typing with the goal of minimizing the gap between code that compiles and code that runs error-free * While static is a definite CS term, strong is colloquial. This is our definition going forward.
26 Dynamic typing Code compiles Static typing Code compiles Code compiles Code runs without errors Code runs without errors Strong static typing Code runs without errors
27 Strong static typing tools in Elm Extra checks to prevent runtime errors. EG: Custom types Null checks Exhaustiveness checks type Pet = Cat Dog Fish Fido is a pet. Everywhere we use fido, we must account for the possibility that fido could be a cat, a dog or a fish
28 Benefits of strong static typing... Catches errors early and preempts null pointer exceptions Provides parameter + return type matching Makes impossible states impossible (no need to test them) Encode business logic into type system
29 For the developer, strong static typing means... Enables developers to focus on business logic Provides fast feedback Makes code easy to read Refactoring is easy
30 Elm s friendly compiler Elm s compiler messages are easy to read Makes it easy to rely on the compiler
31 Example, a misspelled function name Function addints is defined Oops! We tried to call it but misspelled Compiler error is helpful and friendly
32 Agenda About me The promise of Elm Background Language Architecture The Pivotal Tracker experience Is Elm right for you?
33 What is the Elm architecture? A way of building web apps that separates an application into: Model: the application s current state Update: the only way that the state is updated View: the application s current state in html format The elm architecture feels natural in Elm, but it also works in other languages Inspiration for Redux
34 Elm architecture example User makes a change in the UI (onclick) Message is sent to update function View Update New model is passed to view function and rendered in the browser Model Update function returns a new model based on the old model and function arguments
35 An example
36
37 Benefits of the Elm architecture Single source of truth Easy to understand Removes race conditions Model and view stay in sync
38 Why use Elm? Language Static typing + Architecture Pure functions + Architecture = Few runtime errors
39 Agenda About me The promise of Elm The Pivotal Tracker experience Background Types & FP in practice Scaling Testing JavaScript interop Is Elm right for you?
40 Elm and functional programming at Pivotal Tracker RoR / React / Backbone Much discussion Dashboard in Elm 2018 New user Project experience Memberships in Elm Page in Elm Kotlin, TypeScript experiments
41 Elm here!
42 The decision to use Elm Developers using Elm in personal projects Multiple meetings, much thought Would Elm stick around? Interop between multiple languages? Developers using multiple languages? Started in an isolated piece of the app Not interconnected with other stuff Easy to pull out if it didn t work
43 Projects The Dashboard page Learning curve (Most) developers like it Challenge of scaling an Elm app Testing philosophies in Elm vs on our team Expanded usage Testing hitting a stride Challenge of interop with Javascript external libraries
44 Continuing to use Elm mentalities Where else can we apply functional programming and strong types? More Elm? TypeScript? Kotlin?
45 Agenda About me The promise of Elm The Pivotal Tracker experience Background Types & FP in practice Scaling Testing JavaScript interop Is Elm right for you?
46 Elm lives up to its promise Runtime errors Race conditions Easy refactors Mindset change
47 Encoding business logic into types Example: Managing memberships Project member First name Last name Invitee
48 People
49
50 Agenda About me The promise of Elm The Pivotal Tracker experience Background Types & FP in practice Scaling Testing JavaScript interop Is Elm right for you?
51 How to structure a large Elm app? It depends One of the biggest hurdles and biggest FAQs Big files? Small files? Big update loops? Multiple update loops? \_(ツ)_/
52 Agenda About me The promise of Elm The Pivotal Tracker experience Background Types & FP in practice Scaling Puzzle Mindset Testing Is Elm right for you?
53 File structure puzzle Pure function = less obvious structure Elm apps are broken up into Modules Each file is a module Modules have public (exposed) functions and private functions
54 Hello World The first modules More modules Main.elm Main.elm Main.elm Model & Types Update loop View Model & Types Update loop View.elm Takes: Model Returns: Html Model & Types Update loop View.elm Takes: Model Returns: Html (Etc).elm
55 Agenda About me The promise of Elm The Pivotal Tracker experience Background Types & FP in practice Scaling Puzzle Mindset Testing Is Elm right for you?
56 Elm structure mindset Each Tracker Elm app has a different structure We debated Conventions? Top-down structures in advance? Big files? Conclusions Refactor often (for now) Follow guidelines
57 Ease of refactoring Elm Ease of refactoring Elm allows delay of architectural decisions Compiler makes large files easier to manage We have restructured all Elm projects multiple times
58 Landing point: Conventional Wisdom + Conventional wisdom: Keep everything together until it starts to clump naturally Break clumps into modules Modules generally structure around a type Tracker addendum: Use tests and module exposures to drive structure
59 Agenda About me The promise of Elm The Pivotal Tracker experience Background Types & FP in practice Scaling Testing Elm language Elm application JavaScript interop Is Elm right for you?
60 Testing in Elm The myth: If it compiles, it works The reality: The elm compiler catches many errors Testing business logic is still important The compiler prevents using a String where we need an Int, but it can t prevent using the wrong Int all together.
61 Test/Type Driven Development (TDD) Use compiler failures AND tests to drive code Compiler ensures that code will always run Tests ensure that code will fulfill business logic
62
63
64
65 Agenda About me The promise of Elm The Pivotal Tracker experience Background Scaling Testing Elm language Elm application JavaScript interop Is Elm right for you?
66 Testing phase 1 Tests here Not here The first modules Main.elm Model & Types Update loop View.elm Takes: Model Returns: Html
67 Testing the update loop Update loop is the main logic of the app Pure functional makes testing easier Elm architecture makes testing resultant updates hard
68 Testing HTML We test HTML output via Happy Path integration tests Testing HTML is brittle We don t test the view Much debate Testing view output in Elm is cumbersome
69 The first modules Selector pattern Tests here Main.elm Update function Model & Types Selector.elm Tests here Takes: Model Returns: Selector View.elm Takes: Selector Returns: Html
70 Selectors Middle layer between model and view Computed, not stored View state Model Stored application state Selector Calculated state View HTML based on selector calculations
71 Elm tests driving structure If no external modules use a function, don t expose it If a module exposes a function, test it If an unexposed function feels like it needs testing, make a new module and expose it
72 Agenda About me The promise of Elm The Pivotal Tracker experience Background Scaling Testing JavaScript interop Is Elm right for you? It depends Think like an elm developer
73 JavaScript interop Elm sends messages to and from JavaScript Ports Native code (EEK!) Multi-language code base
74 Agenda About me The promise of Elm The Pivotal Tracker experience Background Scaling Testing JavaScript interop Background Multi-language code base Is Elm right for you? It depends Think like an elm developer
75 Background on JS interop Ports Recommended Hooks into the update loop Native code Not recommended Less safe
76 What s a port? Elm app JavaScript Outgoing Incoming: Update loop sends a Cmd to contact JS via a port Subscribe to the port, get the message, do the thing Incoming: Outgoing Subscribe to the port, Msg enters the update loop Send to a port in Elm
77 Good: Anything JS can do, Elm can do More libraries Meh: Communication via JSON In and out of type safety Multiple languages in your codebase
78 Native code Very discouraged, hacky way of wrapping native (JS) code in Elm to create Elm libraries Won t work in Elm 0.19
79 Agenda About me The promise of Elm The Pivotal Tracker experience Background Scaling Testing JavaScript interop Background Multi-language code base Is Elm right for you? It depends Think like an elm developer
80 Elm devs support multiple languages long-term Elm is growing but lacks libraries Transition to Elm is gradual Need to maintain Ports long term During the transition, you ll need Elm and JS to still work Transition may not be the goal
81 Issues with supporting multiple languages Developers need proficiency in multiple languages Same code in multiple languages? Dependent on libraries and webpack knowledge React-elm-components doesn t work with React 16 Native libraries will disappear in next Elm version
82 Agenda About me The promise of Elm The Pivotal Tracker experience Is Elm right for you? It depends Think like an elm developer
83 As a developer... :) Coding feels good Learning Excitement High productivity after ramp up Easy refactors :( Need to know multiple languages Port / JS complexity Longer ramp-up
84 As a product owner or tester... :) Time travel debugger No runtime exceptions :( Potential higher cost for features that require libraries
85 As a user... :) No runtime exceptions :( Excitement is the spice of life?
86 Agenda About me The promise of Elm The Pivotal Tracker experience Is Elm right for you? It depends Think like an elm developer
87 What if Elm isn t right for you? Elm learnings can still be important Encode business logic in the type system Make impossible states impossible Minimize side effects to minimize confusion Culture can compensate for language Similar to TDD
88 Think like an Elm developer Code compiles Code compiles Language + culture Code runs without errors Code runs without errors
89 Language + Culture Elm Language Kotlin Language Typescript Language Culture Culture Culture
90 Cultural shifts Kotlin Typescript
91 Strong static typing / FP in Kotlin Pay attention to warnings compilekotlin { kotlinoptions.allwarningsaserrors = true } Be functionally minded (avoid side-effects) Avoid!!
92 Compiles with a warning Bird is missing
93 Strong static typing / FP in Typescript Be functionally minded Always turn on --strictnullchecks Avoid Any Exception: 3rd party libraries, sometimes Avoid type casting Avoid returns after case statements
94 Don t override TypeScript exhaustiveness checking Adding a return after the case statement ends disables exhaustiveness checking
95 You should Use Elm Think like an Elm developer
96 Happy (FUNctional) coding!
Beyond JavaScript Frameworks: Writing Reliable Web Apps With. Elm. Erik Wendel DevDays Vilnius 2018
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm Erik Wendel DevDays Vilnius 2018 Who is Jonathan Ive? Erik Wendel JavaZone 2017 Elm is like Jonathan Ive would have designed a programming
More informationCase study on PhoneGap / Apache Cordova
Chapter 1 Case study on PhoneGap / Apache Cordova 1.1 Introduction to PhoneGap / Apache Cordova PhoneGap is a free and open source framework that allows you to create mobile applications in a cross platform
More informationIntro. Scheme Basics. scm> 5 5. scm>
Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if
More informationDown With JavaScript!
Down With JavaScript! September 2018 training@instil.co Instil Software 2018 Develop Consult Train Where Things Were Better Did you know that the original 4GL s were designed to be an ideal coding environment
More informationUnit testing in CakePHP. Making bullet resistant code.
Unit testing in CakePHP Making bullet resistant code. Goals for next hour If you are not familiar with Unit Testing, introduce you to the concepts and practices of Unit testing. If you are familiar with
More informationCS354 gdb Tutorial Written by Chris Feilbach
CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that
More informationHow Rust views tradeoffs. Steve Klabnik
How Rust views tradeoffs Steve Klabnik 03.04.2019 What is a tradeoff? Bending the Curve Overview Design is about values Case Studies BDFL vs Design By Committee Stability Without Stagnation Acceptable
More information3 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 informationSimple AngularJS thanks to Best Practices
Simple AngularJS thanks to Best Practices Learn AngularJS the easy way Level 100-300 What s this session about? 1. AngularJS can be easy when you understand basic concepts and best practices 2. But it
More informationTest-Driven Development (TDD)
Test-Driven Development (TDD) CS 4501 / 6501 Software Testing [Lasse Koskela, Test Driven, Chapters 2-3] 1 Agile Airplane Testing Test harness: Appearance matches Color coding in place Fly 6ft (or 2m)
More informationUnit Testing as Hypothesis Testing
Unit Testing as Hypothesis Testing Jonathan Clark September 19, 2012 5 minutes You should test your code. Why? To find bugs. Even for seasoned programmers, bugs are an inevitable reality. Today, we ll
More informationHOW REACT NATIVE AND NATIVESCRIPT CHANGE YOUR MOBILE STRATEGY SEBASTIAN
HOW REACT NATIVE AND NATIVESCRIPT CHANGE YOUR MOBILE STRATEGY SEBASTIAN WITALEC @SEBAWITA NATIVE DEVELOPMENT WHY DO I EVEN HAVE TO CHOOSE? THE PROBLEM WHAT WE WANT REALITY DEV SETUP OBJECTIVE- C SWIFT
More informationTOP DEVELOPERS MINDSET. All About the 5 Things You Don t Know.
MINDSET TOP DEVELOPERS All About the 5 Things You Don t Know 1 INTRODUCTION Coding and programming are becoming more and more popular as technology advances and computer-based devices become more widespread.
More information9 th CA 2E/CA Plex Worldwide Developer Conference 1
1 Introduction/Welcome Message Organizations that are making major changes to or replatforming an application need to dedicate considerable resources ot the QA effort. In this session we will show best
More informationJavaScript: the language of browser interactions. Claudia Hauff TI1506: Web and Database Technology
JavaScript: the language of browser interactions Claudia Hauff TI1506: Web and Database Technology ti1506-ewi@tudelft.nl Densest Web lecture of this course. Coding takes time. Be friendly with Codecademy
More informationChapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change
Chapter01.fm Page 1 Monday, August 23, 2004 1:52 PM Part I The Mechanics of Change The Mechanics of Change Chapter01.fm Page 2 Monday, August 23, 2004 1:52 PM Chapter01.fm Page 3 Monday, August 23, 2004
More informationIntroduction to Programming Style
Introduction to Programming Style Thaddeus Aid The IT Learning Programme The University of Oxford, UK 30 July, 2013 Abstract Programming style is the part of the program that the human reads and the compiler
More informationTest Driven Development (TDD)
Test Driven Development (TDD) Test Driven Development Introduction Good programmers write code, great programmers write tests Never, in the field of programming, have so many owed so much to so few - Martin
More informationServer execution of JavaScript: What could possibly go wrong?
Server execution of JavaScript: What could possibly go wrong? Brian Geffon Staff Software Engineer Hello! 2 Outline Introductions Ø Brief History The paradigm shift Problems! Where we are today Closing
More information4 KEY FACTORS FOR DATA QUALITY ON A DATA LAKE (OR: HOW TO AVOID THE DATA SWAMP) JOSH HERRITZ MIOSOFT CORPORATION MIOsoft Corporation.
4 KEY FACTORS FOR DATA QUALITY ON A DATA LAKE (OR: HOW TO AVOID THE DATA SWAMP) JOSH HERRITZ MIOSOFT CORPORATION The trends in digital business promise that the future holds an unprecedented volume, variety,
More informationTA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out
Announcements TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out Get you setup for project/lab work. We ll check it with the first lab. Stars
More information1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE.
CUSTOMER PAIN POINTS 1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE.NET FRAMEORK. THAT S TAKING UP SPACE ON MY HARDDRIVE
More informationWhere Should the Brain of Your Mobile Application Live?
Where Should the Brain of Your Mobile Application Live? Or, how Gilt architected its ios apps so compiled binaries released years ago can keep up with evolving server data models First, an introduction
More informationSoftware Engineering /48
Software Engineering 1 /48 Topics 1. The Compilation Process and You 2. Polymorphism and Composition 3. Small Functions 4. Comments 2 /48 The Compilation Process and You 3 / 48 1. Intro - How do you turn
More informationCS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L
CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your
More informationSecrets to a successful design system
Secrets to a successful design system 2018 Monica Lent Lead Frontend Engineer at SumUp Defining success! Why & What? Secrets to a successful design system SumUp. A better way to get paid Blockchain Design
More informationAlfresco Voice Writing for the user interface
Alfresco Voice Writing for the user interface One day I will find the right words, and they will be simple. Jack Kerouac Contents Writing Tone - how to write Language - what to write Capitalization Abbreviations
More informationFunctional Programming in Java. CSE 219 Department of Computer Science, Stony Brook University
Functional Programming in Java CSE 219, Stony Brook University What is functional programming? There is no single precise definition of functional programming (FP) We should think of it as a programming
More informationPage 1. Human-computer interaction. Lecture 1b: Design & Implementation. Building user interfaces. Mental & implementation models
Human-computer interaction Lecture 1b: Design & Implementation Human-computer interaction is a discipline concerned with the design, implementation, and evaluation of interactive systems for human use
More informationThe COS 333 Project. Robert M. Dondero, Ph.D. Princeton University
The COS 333 Project Robert M. Dondero, Ph.D. Princeton University 1 Overview A simulation of reality In groups of 3-5 people... Build a substantial three tier software system 2 Three-Tier Systems "Three
More informationExtension Web Publishing 3 Lecture # 1. Chapter 6 Site Types and Architectures
Chapter 6 Site Types and Architectures Site Types Definition: A public Web site, an Internet Web site, an external Web site or simply a Web site is one that is not explicitly restricted to a particular
More information12 Follow-up Templates
12 Follow-up Email Templates that help turn prospects into customers in 2018 When you look at the sales process of most B2B sales teams, there s typically A LOT of things that you could improve. I generally
More informationUnit Testing as Hypothesis Testing
Unit Testing as Hypothesis Testing Jonathan Clark September 19, 2012 You should test your code. Why? To find bugs. Even for seasoned programmers, bugs are an inevitable reality. Today, we ll take an unconventional
More informationEXAMINING THE CODE. 1. Examining the Design and Code 2. Formal Review: 3. Coding Standards and Guidelines: 4. Generic Code Review Checklist:
EXAMINING THE CODE CONTENTS I. Static White Box Testing II. 1. Examining the Design and Code 2. Formal Review: 3. Coding Standards and Guidelines: 4. Generic Code Review Checklist: Dynamic White Box Testing
More informationCords and gumballs. Mike Hearn.
Cords and gumballs Mike Hearn mike@r3.com Who what why huh?! Who am I? Kotlin early adopter: first patch to Kotlin website Sept 2014, introduced to my first product Feb 2015. Lead Platform Engineer on
More informationMobile & More: Preparing for the Latest Design Trends
February 26, 2015 Mobile & More: Preparing for the Latest Design Trends LATEST TRENDS Responsive Takes Over Material Is the New Flat Hero Images Getting Bigger Interactions Are Micro Video in the Background
More informationThis wouldn t work without the previous declaration of X. This wouldn t work without the previous declaration of y
Friends We want to explicitly grant access to a function that isn t a member of the current class/struct. This is accomplished by declaring that function (or an entire other struct) as friend inside the
More informationUsing Expressions Effectively
Using Expressions Effectively By Kevin Hazzard and Jason Bock, author of Metaprogramming in.net Writing code in IL can easily lead to incorrect implementations and requires a mental model of code execution
More information1: Introduction to Object (1)
1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface
More informationQUIZ Friends class Y;
QUIZ Friends class Y; Is a forward declaration neeed here? QUIZ Friends QUIZ Friends - CONCLUSION Forward (a.k.a. incomplete) declarations are needed only when we declare member functions as friends. They
More informationKotlin for Android Developers
Kotlin for Android Developers Learn Kotlin the easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published
More informationTest Your XAML-based Windows Store Apps with Visual Studio 2013 Benjamin Day
Test Your XAML-based Windows Store Apps with Visual Studio 2013 Benjamin Day Level: Intermediate Benjamin Day Brookline, MA Consultant, Coach, & Trainer Microsoft MVP for Visual Studio ALM Team Foundation
More informationPivotal Tracker Kanban Prototype COLORADO SCHOOL OF MINES 2017 FIELD SESSION
Pivotal Tracker Kanban Prototype COLORADO SCHOOL OF MINES 2017 FIELD SESSION Ann Gustafson Emily Dederick Christopher Bonin Gerald Ung CLIENT Morgan Whitney Table of Contents 1. Introduction... 2 1.1.
More informationwelcome to BOILERCAMP HOW TO WEB DEV
welcome to BOILERCAMP HOW TO WEB DEV Introduction / Project Overview The Plan Personal Website/Blog Schedule Introduction / Project Overview HTML / CSS Client-side JavaScript Lunch Node.js / Express.js
More informationCross-Platform Data Models and API Using grpc
Cross-Platform Data Models and API Using grpc Sebastian Hagedorn, Felix Lamouroux Outline 1. Motivation & Goals 2. Choosing the Right Cross-Platform Technology 3. Introduction to Protocol Buffers and grpc
More informationDealing with Bugs. Kenneth M. Anderson University of Colorado, Boulder CSCI 5828 Lecture 27 04/21/2009
Dealing with Bugs Kenneth M. Anderson University of Colorado, Boulder CSCI 5828 Lecture 27 04/21/2009 University of Colorado, 2009 1 Goals 2 Review material from Chapter 11 of Pilone & Miles Dealing with
More informationLesson: Web Programming(6) Omid Jafarinezhad Sharif University of Technology
Lesson: Web Programming(6) Omid Jafarinezhad Sharif University of Technology React QUICK START QUICK START ADVANCED GUIDES React QUICK START Installation Hello World Introducing JSX Components and Props
More informationLearning to Provide Modern Solutions
1 Learning to Provide Modern Solutions Over the course of this book, you will learn to enhance your existing applications to modernize the output of the system. To do this, we ll take advantage of the
More informationVerilog Overview. The Verilog Hardware Description Language. Simulation of Digital Systems. Simulation of Digital Systems. Don Thomas, 1998, Page 1
The Verilog Hardware Description Language These slides were created by Prof. Don Thomas at Carnegie Mellon University, and are adapted here with permission. The Verilog Hardware Description Language, Fifth
More informationNative Mobile Apps in JavaScript
Native Mobile Apps in JavaScript Using Exponent and React Native Charlie Cheever CS50 Seminar October 28, 2016 About Me Harvard Amazon Facebook Quora Exponent A Brief History of Mobile Development Mobile
More informationTopics in Software Testing
Dependable Software Systems Topics in Software Testing Material drawn from [Beizer, Sommerville] Software Testing Software testing is a critical element of software quality assurance and represents the
More informationTest 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 informationMcCa!"s Triangle of Quality
McCa!"s Triangle of Quality Maintainability Portability Flexibility Reusability Testability Interoperability PRODUCT REVISION PRODUCT TRANSITION PRODUCT OPERATION Correctness Usability Reliability Efficiency
More informationVerilog Overview. The Verilog Hardware Description Language. Simulation of Digital Systems. Simulation of Digital Systems. Don Thomas, 1998, Page 1
The Verilog Hardware Description Language These slides were created by Prof. Dan Thomas at Carnegie Mellon University, and are adapted here with permission. The Verilog Hardware Description Language, Fourth
More informationEvolution of the "Web
Evolution of the "Web App" @HenrikJoreteg @Hoarse_JS THIS USED TO BE SIMPLE! 1. WRITE SOME HTML 2. LAY IT OUT WITH FRAMES OR TABLES 3. FTP IT TO A SERVER! 4. BAM! CONGRATULATIONS, YOU RE A WEB DEVELOPER!
More informationHigh Performance Single Page Application with Vue.js
High Performance Single Page Application with Vue.js Premise Static HTML and simple web-pages are already a history now. The novel web applications are advanced and do a lots of functionalities. Also,
More informationQUIZ. What is wrong with this code that uses default arguments?
QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code
More informationTest-driven development
Test-driven development And how we do it at WIX Mantas Indrašius Software Engineer WIX.COM Agenda Tests overview Test-driven development (TDD) The Bowling Game demo Kickstarting a project using TDD How
More informationAgile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?
Topics 1) What is trying to do? Manifesto & XP Chapter 3.1-3.3 2) How to choose plan-driven vs? 3) What practices go into (XP) development? 4) How to write tests while writing new code? CMPT 276 Dr. B.
More informationThe 23 Point UX Design Checklist
The 23 Point UX Design Checklist The 23 Point UX Design Checklist During the design process, some flaws in your product will go unnoticed. Those little (or sometimes big) things can do a lot to hurt the
More informationint $0x32 // call interrupt number 50
Kernel Programming: Process isolation, goal to make programs run fast and reliably o Processes should not affect others, unless there s a specific and allowed communication channel o Each process can act
More informationJavascript Performance in the Browser. Charlie Fiskeaux II User Interface Engineer
Javascript Performance in the Browser Charlie Fiskeaux II User Interface Engineer About Me & Circonus Lead User Interface Engineer for Circonus Industry-leading monitoring and analytics platform We deploy
More informationUser Interfaces Assignment 3: Heuristic Re-Design of Craigslist (English) Completed by Group 5 November 10, 2015 Phase 1: Analysis of Usability Issues Homepage Error 1: Overall the page is overwhelming
More informationUI-Testing, Reactive Programming and some Kotlin.
UI-Testing, Reactive Programming and some Kotlin anders.froberg@liu.se Load up your guns, and bring your friends This is the end, My only Friend, the end Äntligen stod prästen i predikstolen I ll be back
More informationIntro to Algorithms. Professor Kevin Gold
Intro to Algorithms Professor Kevin Gold What is an Algorithm? An algorithm is a procedure for producing outputs from inputs. A chocolate chip cookie recipe technically qualifies. An algorithm taught in
More informationGearing Up for Development CS130(0)
Gearing Up for Development CS130(0) Development Development is a coding heavy assignment! You will need to create application using React.js (a Javascript Library). This application will display a list
More information11 Coding Standards CERTIFICATION OBJECTIVES. Use Sun Java Coding Standards
11 Coding Standards CERTIFICATION OBJECTIVES Use Sun Java Coding Standards 2 Chapter 11: Coding Standards CERTIFICATION OBJECTIVE Use Sun Java Coding Standards Spacing Standards The Developer exam is challenging.
More informationUNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING
UNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING CMPE13/L: INTRODUCTION TO PROGRAMMING IN C SPRING 2012 Lab 3 Matrix Math Introduction Reading In this lab you will write a
More informationCrash Course in Modernization. A whitepaper from mrc
Crash Course in Modernization A whitepaper from mrc Introduction Modernization is a confusing subject for one main reason: It isn t the same across the board. Different vendors sell different forms of
More informationTHOMAS LATOZA SWE 621 FALL 2018 DESIGN ECOSYSTEMS
THOMAS LATOZA SWE 621 FALL 2018 DESIGN ECOSYSTEMS LOGISTICS HW5 due today Project presentation on 12/6 Review for final on 12/6 2 EXAMPLE: NPM https://twitter.com/garybernhardt/status/1067111872225136640
More informationWEB DESIGN SERVICES. Google Certified Partner. In-Studio Interactive CEO: Onan Bridgewater. instudiologic.com.
In-Studio Interactive CEO: Onan Bridgewater instudiologic.com sales@instudiologic.com info@instudiologic.com WEB DESIGN SERVICES Google Certified Partner 1. Brand Building Engagements that Drive Sales
More informationCSE 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 informationQUIZ. Write the following for the class Bar: Default constructor Constructor Copy-constructor Overloaded assignment oper. Is a destructor needed?
QUIZ Write the following for the class Bar: Default constructor Constructor Copy-constructor Overloaded assignment oper. Is a destructor needed? Or Foo(x), depending on how we want the initialization
More informationUsable Privacy and Security Introduction to HCI Methods January 19, 2006 Jason Hong Notes By: Kami Vaniea
Usable Privacy and Security Introduction to HCI Methods January 19, 2006 Jason Hong Notes By: Kami Vaniea Due Today: List of preferred lectures to present Due Next Week: IRB training completion certificate
More informationFinal Project: LC-3 Simulator
Final Project: LC-3 Simulator Due Date: Friday 4/27/2018 11:59PM; No late handins This is the final project for this course. It is a simulator for LC-3 computer from the Patt and Patel book. As you work
More informationVerilog Overview. The Verilog Hardware Description Language. Simulation of Digital Systems. Simulation of Digital Systems. Don Thomas, 1998, Page 1
The Verilog Hardware Description Language These slides were created by Prof. Don Thomas at Carnegie Mellon University, and are adapted here with permission. The Verilog Hardware Description Language, Fifth
More informationIntroduction to Programming
CHAPTER 1 Introduction to Programming Begin at the beginning, and go on till you come to the end: then stop. This method of telling a story is as good today as it was when the King of Hearts prescribed
More informationWhat Is React Native?
CHAPTER 1 What Is React Native? React Native is a JavaScript framework for writing real, natively rendering mobile applications for ios and Android. It s based on React, Facebook s JavaScript library for
More informationSoftware Engineering Testing and Debugging Testing
Software Engineering Testing and Debugging Testing Prof. Dr. Peter Thiemann Universitt Freiburg 08.06.2011 Recap Testing detect the presence of bugs by observing failures Debugging find the bug causing
More informationCS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise
CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise If you re not already crazy about Scheme (and I m sure you are), then here s something to get
More informationTHE 18 POINT CHECKLIST TO BUILDING THE PERFECT LANDING PAGE
THE 18 POINT CHECKLIST TO BUILDING THE PERFECT LANDING PAGE The 18 point checklist to building the Perfect landing page Landing pages come in all shapes and sizes. They re your metaphorical shop front
More informationLiquibase Version Control For Your Schema. Nathan Voxland April 3,
Liquibase Version Control For Your Schema Nathan Voxland April 3, 2014 nathan@liquibase.org @nvoxland Agenda 2 Why Liquibase Standard Usage Tips and Tricks Q&A Why Liquibase? 3 You would never develop
More informationCS 241 Honors Memory
CS 241 Honors Memory Ben Kurtovic Atul Sandur Bhuvan Venkatesh Brian Zhou Kevin Hong University of Illinois Urbana Champaign February 20, 2018 CS 241 Course Staff (UIUC) Memory February 20, 2018 1 / 35
More informationKotlin for Android Developers
Kotlin for Android Developers Learn Kotlin the easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published
More informationAdvance Mobile& Web Application development using Angular and Native Script
Advance Mobile& Web Application development using Angular and Native Script Objective:- As the popularity of Node.js continues to grow each day, it is highly likely that you will use it when you are building
More informationB r o w s e r s u p p o r t
A Browser Support Since writing this book, much has changed in the browser market. The Chromium project, which the Chrome browser is based on, stopped using WebKit and created their own fork, called Blink.
More informationIt turns out that races can be eliminated without sacrificing much in terms of performance or expressive power.
The biggest two problems in multi-threaded programming are races and deadlocks. Races reached new levels with the introduction of relaxed memory processors. It turns out that races can be eliminated without
More informationAlan J. Perlis - Epigrams on Programming
Programming Languages (CS302 2007S) Alan J. Perlis - Epigrams on Programming Comments on: Perlis, Alan J. (1982). Epigrams on Programming. ACM SIGPLAN Notices 17(9), September 1982, pp. 7-13. 1. One man
More informationEcocion Facility Management System Alex Anderson Niles Hacking Ryan Shipp June 16, 2015
Ecocion Facility Management System Alex Anderson Niles Hacking Ryan Shipp June 16, 2015 1 Table of Contents 1. Introduction 2 1.1. Client Description 1.2. Product Vision 2. Requirements. 2 2.1. Functional
More informationAudience: Info Workers, Dev
Wes Preston PWR202 Audience: Info Workers, Dev Solution and application sites built in SharePoint or O365 often rely on a baseline understanding of how SharePoint works. This entry point can stifle user
More informationProgramming with Math and Logic
.. Programming with Math and Logic an invitation to functional programming Ed Morehouse Wesleyan University The Plan why fp? terms types interfaces The What and Why of Functional Programming Computing
More informationThe great primary-key debate
http://builder.com.com/5100-6388-1045050.html Página 1 de 3 16/11/05 Log in Join now Help SEARCH: Builder.com GO Home : Architect : Database : The great primary-key debate Resources Newsletters Discussion
More informationUXD. using the elements: structure
using the elements: structure defining structure you are here structure essentially defines how users get to a given screen and where they can go when they re done. structure also defines categories of
More informationRapid Software Testing Guide to Making Good Bug Reports
Rapid Software Testing Guide to Making Good Bug Reports By James Bach, Satisfice, Inc. v.1.0 Bug reporting is a very important part of testing. The bug report, whether oral or written, is the single most
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationQUIZ on Ch.5. Why is it sometimes not a good idea to place the private part of the interface in a header file?
QUIZ on Ch.5 Why is it sometimes not a good idea to place the private part of the interface in a header file? Example projects where we don t want the implementation visible to the client programmer: The
More informationInDesign UX Design Patterns. by Justin Putney
InDesign UX Design Patterns by Justin Putney InDesign UX Design Patterns Hi, I m Justin Putney, Owner of Ajar Productions. Thanks for downloading this guide! It s full of ways to create interactive user
More informationCOURSE 20480B: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3
ABOUT THIS COURSE This course provides an introduction to HTML5, CSS3, and JavaScript. This course helps students gain basic HTML5/CSS3/JavaScript programming skills. This course is an entry point into
More informationManipulating Web Application Interfaces a New Approach to Input Validation Testing. AppSec DC Nov 13, The OWASP Foundation
Manipulating Web Application Interfaces a New Approach to Input Validation Testing Felipe Moreno-Strauch AppSec DC Nov 13, 2009 felipe@wobot.org http://groundspeed.wobot.org The Foundation http://www.owasp.org
More informationMeeting the OMB FY2012 Objective: Experiences, Observations, Lessons-Learned, and Other Thoughts
Meeting the OMB FY2012 Objective: Experiences, Observations, Lessons-Learned, and Other Thoughts 2013 Federal Interagency Workshop 9 December, 2013 Ron Broersma DREN Chief Engineer ron@dren.mil Introduction
More information