Keeping Rails on the Tracks

Size: px
Start display at page:

Download "Keeping Rails on the Tracks"

Transcription

1 Keeping Rails on the Tracks Mikel lindsaar.net

2 Working in Rails & Ruby for 5+ Years

3 On the Rails? What do I mean by on the rails? Apps that work and are easy to maintain & bug free

4 Experience helped write, rewrite, support or review 40 production rails last 12 months released a non trivial gem - mail maintained a non trivial gem - tmail made many patches to Rails itself, in the top 20 committers

5 Working Code? This is the one end of the pragmatic scale Devs that are paid to make it work take the green light, red light approach too far. Is it running? Yes, therefore it is working - leads to messy code

6 Sexy Code? This is the other end of the pragmatic scale Devs that get upset if something doesn t look right or is not super neat Time wasters on large scale projects Sexy code is nice to have, but often a waste of money

7 Maintainable Code? This is probably the middle ground Code that works Code that is neat and tidy, but not sacrificing budget for that Code that can be maintained

8 A Product is Only a Product if it is Exchanged This is pretty critical to all Rails developers.

9 Budget Matters Beautiful code is ugly if no one buys it

10 Trade-Offs are Life Decide how much refactoring needed based on code use Touched once a year, or once a month. Refactor the latter

11 You are not selling code You are selling a solution Running app are what counts Internal or External client doesn t matter

12 Deployment is a First Class Citizen This has been said by many people - not the first Need to be able to deploy - make it a trivial and repeatable one liner

13 Server Setup Use Chef / Puppet / whatever Repeatable Configuration Much easier to run a chef recipe that you know will work at 3am than remember how to install postgres

14 Use Bundler Removes Deployment Pain Be explicit with versions Only lock to git repos you own Not specifying versions in the Gemfile leads to future pain At least limit using the ~> control Lock to your own github fork, and at least specify branch or sha1 Never lock to open versions Edge rails in bundler, seriously!?

15 Repeatable Deployment Get the staging server up Use common deployment methods capistrano, or ey deploy, or heroku git deploy

16 Make a db/seeds.rb file Make it easy for other Developers The other developer may be you! In 6 months you will have no idea what you need to get it working

17 Link in Security Don t store passwords in the app Use some other data store

18 Using app Gem

19 Document It Update that README file! Should be able to open the readme and deploy your app Include authorisation needed (ssh keys on server or whatever)

20 Fast Page == Happy Client

21 Page Load Times Count Combine Javascript and CSS CSS Sprites Asset Pipelining in Rails 3.1 Before combination: 40 asset requests After combination: 5 asset requests Trivial in Rails 3.1 Rails 3 and lower, Jammit and other tools

22 Caching Optimisation Know and love Rails view caching: Fragment Cache Action Cache Page Cache Before fragment cache: 2480ms After fragment caching: 120ms

23 Big Session == Slow Site Session objects are a slippery slope to pain Store values, not objects 10k session record 5,000 new sessions per month 500mb session table in DB

24 Pick Your Fights Don t make a persisted session cart for every visitor 500,000 rows in sessions table Removed sessions for non customers Appdex went from 10% => 98% row session database store... no fun. File system is just asking for trouble - not scalable If follow previous two advices then overhead is minimal and very scalable

25 Opinions Matter

26 Use Pluralization Breaks conventions - hard to code and remember Simple fix using inflectors

27 Use the idioms

28 Less code written == less bugs Remove Useless Code

29 Being Smart can be Stupid

30 Explicit Methods Don t use before, after and around filters for object instantiation Filters are for state modification Valid uses of filters: timezones, authorization, authentication et al. Reasons: filters inherit, easy to get lost. Use explicit helpers

31 Keep Tests Simple Computers are good at nesting Humans less so We need to see context, as close to content as possible

32

33 Use Helpers Instead before & after should only maintain the test environment Keep tests wet Don t use before and after for app related activities

34 Hard to read Especially 2 pages down, where you can t see the before block

35 Easy to Read Easy to read no matter where you are in the test, also less context switching

36 Simple is better than Complex What you leave out is almost more important than what you put in Meta Programming has its place, that place is probably not in your Rails App Long writing methods better than dynamic if you can get away with it Meta programming has it s place, that place is not

37 Good Code is Easy to Read Good code might be non trivial to implement But should be trivial to understand. The more bad code you have, the closer you are to a rewrite

38 Reinvention is Over Rated

39 Reinventing Controllers Becomes code smell because you need to relearn simple idioms

40 Reinventing Controllers

41 Use the right tool for the job

42 Cucumber is not Unit Testing Making cucumber specs that should be unit tests

43 You too can refactor 5 level nested ternary INSIDE A STRING characters, one line Good t-shirt print

44 You too can refactor

45 Read Ruby Docs Go and read the standard Ruby documentation online Array, String, Hash, Ennumerator

46 Databases have feelings too

47 You don t need database agnostic code Make use of your database features Out of 50 apps, one is migrating DB Use migrations Good for development and testing Bad for production, get into the SQL and make the DB sing

48 Instantiation is Slow Report run in ruby: 45 minutes Equivalent SQL query: 15 seconds Object instantiation is slow

49 Use the DB tools you have Migrate legacy data with Active Record: 150 hours PostgreSQL COPY with generated CSV: 74 mins

50 Don t Share the DB 12 rails apps against one BIG database 12 places for migration files Refactor to API calls and CAS for auth

51 Code has responsibilities

52 Beware the Train Wreck Trivial example, but valid, train wrecks also can blow up your database

53 Control flow is code smell DEMO (control_flow_demo.rb) 85 line 10 if else statement method You can ALWAYS refactor control flow into object messages Cleaner code, easier to read Again, be pragmatic, and pick your fights

54 How to stay on track? What do I mean by on the rails? Apps that work and are easy to maintain & bug free

55 Get an Inspection Many consultancies do this Ask for a sample rubyx Inspect Service rubyx.com/services/inspect

56 Maintainable Code This is probably the middle ground Code that works Code that is neat and tidy, but not sacrificing budget for that Code that can be maintained

57 Questions? Mikel rubyx.com rubyx.com/services/inspect speakerrate.com/talks/7575

58

Contents in Detail. Foreword by Xavier Noria

Contents in Detail. Foreword by Xavier Noria Contents in Detail Foreword by Xavier Noria Acknowledgments xv xvii Introduction xix Who This Book Is For................................................ xx Overview...xx Installation.... xxi Ruby, Rails,

More information

Ruby in the Sky with Diamonds. August, 2014 Sao Paulo, Brazil

Ruby in the Sky with Diamonds. August, 2014 Sao Paulo, Brazil Ruby in the Sky with Diamonds August, 2014 Sao Paulo, Brazil JELASTIC PLATFORM AS INFRASTRUCTURE Jelastic provides enterprise cloud software that redefines the economics of cloud deployment and management.

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

The Long Road from Capistrano to Kubernetes

The Long Road from Capistrano to Kubernetes The Long Road from Capistrano to Kubernetes Tobias Schwab, Co-Founder of PhraseApp Slides: http://bit.ly/cap-to-kube How to deploy Ruby on Rails? Deploying Ruby on Rails required on all servers: OS + system

More information

Lecture 14. Moving Forward 1 / 23

Lecture 14. Moving Forward 1 / 23 Lecture 14 Moving Forward 1 / 23 Course Evaluations Remember to fill out course evaluations for this class! Please provide honest and constructive feedback on the course Anything that you'd want me to

More information

Angular 2 and Hexo. Static Meets Dynamic For the Best of Both Worlds! Copyright 2016 Code Career Academy

Angular 2 and Hexo. Static Meets Dynamic For the Best of Both Worlds! Copyright 2016 Code Career Academy Angular 2 and Hexo Static Meets Dynamic For the Best of Both Worlds! Who am I? Jeff Ammons Microsoft MVP Pluralsight Author CEO/Chief Instructor at Code Career Academy 25 Years Professional Experience

More information

Rails Engines. Use Case. The Implementation

Rails Engines. Use Case. The Implementation Rails Engines Rails engines range from simple plugins to powerful micro-applications. The discussions we ve had so far about Railties are closely related to the function of a Rails engine. One interesting

More information

AirBespoke Inventory Tracking System

AirBespoke Inventory Tracking System Colorado School of Mines Field Session AirBespoke Inventory Tracking System Client: Kylen McClintock Written by: Peter Palumbo, Kyle Thistlewood, Nhan Tran, Minh Vu June 22, 2016 Contents 1 Introduction

More information

MRI Internals. Koichi Sasada.

MRI Internals. Koichi Sasada. MRI Internals Koichi Sasada ko1@heroku.com MRI Internals towards Ruby 3 Koichi Sasada ko1@heroku.com Today s talk Koichi is working on improving Ruby internals Introduce my ideas toward Ruby 3 Koichi Sasada

More information

Git. all meaningful operations can be expressed in terms of the rebase command. -Linus Torvalds, 2015

Git. all meaningful operations can be expressed in terms of the rebase command. -Linus Torvalds, 2015 Git all meaningful operations can be expressed in terms of the rebase command -Linus Torvalds, 2015 a talk by alum Ross Schlaikjer for the GNU/Linux Users Group Sound familiar? add commit diff init clone

More information

Continuous Integration. Johannes Seitz

Continuous Integration. Johannes Seitz Continuous Integration Johannes Seitz - @Ookami86 What is Continuous Integration? That Jenkins job may be necessary, but not sufficient. Ways of working in a team Integrating often Integrating in a Big

More information

Extract API: Build sophisticated data models with the Extract API

Extract API: Build sophisticated data models with the Extract API Welcome # T C 1 8 Extract API: Build sophisticated data models with the Extract API Justin Craycraft Senior Sales Consultant Tableau / Customer Consulting My Office Photo Used with permission Agenda 1)

More information

WEB SECURITY WORKSHOP TEXSAW Presented by Solomon Boyd and Jiayang Wang

WEB SECURITY WORKSHOP TEXSAW Presented by Solomon Boyd and Jiayang Wang WEB SECURITY WORKSHOP TEXSAW 2014 Presented by Solomon Boyd and Jiayang Wang Introduction and Background Targets Web Applications Web Pages Databases Goals Steal data Gain access to system Bypass authentication

More information

Developing Kubernetes Services

Developing Kubernetes Services / MARCH 2019 / CON LONDON Developing Kubernetes Services at Airbnb Scale What is kubernetes? @MELAN IECEBULA Who am I? A BRIEF HISTORY Why Microservices? 4000000 3000000 MONOLITH LOC 2000000 1000000 0

More information

Web Hosting. Important features to consider

Web Hosting. Important features to consider Web Hosting Important features to consider Amount of Storage When choosing your web hosting, one of your primary concerns will obviously be How much data can I store? For most small and medium web sites,

More information

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications By, Janakiram MSV Executive Summary Application development has gone through a fundamental shift in the recent past.

More information

BeBanjo Infrastructure and Security Overview

BeBanjo Infrastructure and Security Overview BeBanjo Infrastructure and Security Overview Can you trust Software-as-a-Service (SaaS) to run your business? Is your data safe in the cloud? At BeBanjo, we firmly believe that SaaS delivers great benefits

More information

Overhauling Dev Arch with Ansible Tower and Docker

Overhauling Dev Arch with Ansible Tower and Docker Overhauling Dev Arch with Ansible Tower and Docker Scott Van Velsor, Bryan Shake, Khaled Awwad June 29 1130a #redhat #rhsummit origins the landscape that came before branch & path limits no automation

More information

Developers and DBAs. Farmers and City Slickers have different mindsets

Developers and DBAs. Farmers and City Slickers have different mindsets Developers and DBAs Farmers and City Slickers have different mindsets About ~ Øyvind Isene DBA Consultant working for Bicon in Oslo Optimization and helping developers with db OUGN and the Oracle community

More information

SYMFONY2 WEB FRAMEWORK

SYMFONY2 WEB FRAMEWORK 1 5828 Foundations of Software Engineering Spring 2012 SYMFONY2 WEB FRAMEWORK By Mazin Hakeem Khaled Alanezi 2 Agenda Introduction What is a Framework? Why Use a Framework? What is Symfony2? Symfony2 from

More information

Surrogate Dependencies (in

Surrogate Dependencies (in Surrogate Dependencies (in NodeJS) @DinisCruz London, 29th Sep 2016 Me Developer for 25 years AppSec for 13 years Day jobs: Leader OWASP O2 Platform project Application Security Training JBI Training,

More information

Scaling DreamFactory

Scaling DreamFactory Scaling DreamFactory This white paper is designed to provide information to enterprise customers about how to scale a DreamFactory Instance. The sections below talk about horizontal, vertical, and cloud

More information

Stanko Tadić

Stanko Tadić State of modern JavaScript development 04.02.2017. Stanko Tadić HELLO, MY NAME IS STANKO TADIĆ and I m a Principal Developer at Work & Co. I love development, music and cartoons. You might say I m a geek.

More information

ERICH PRIMEHAMMER REFACTORING

ERICH PRIMEHAMMER REFACTORING ERICH KADERKA @ PRIMEHAMMER REFACTORING WHAT IS REFACTORING? Martin Fowler: Refactoring is a controlled technique for improving the design of an existing code base. Its essence is applying a series of

More information

Cold, Hard Cache KV? On the implementation and maintenance of caches. who is

Cold, Hard Cache KV? On the implementation and maintenance of caches. who is 1 of 5 TE X T ONLY Cold, Hard Cache On the implementation and maintenance of caches who is KV? click for video Dear KV, Our latest project at work requires a large number of slightly different software

More information

Gunnery Documentation

Gunnery Documentation Gunnery Documentation Release 0.1 Paweł Olejniczak August 18, 2014 Contents 1 Contents 3 1.1 Overview................................................. 3 1.2 Installation................................................

More information

ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile

ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile Status: Closed Priority: Normal Author: Enno Grà per Category: Created: 2011-07-17 Assignee: Updated: 2012-06-23 Due date:

More information

Git Basi, workflow e concetti avanzati (pt2)

Git Basi, workflow e concetti avanzati (pt2) Git Basi, workflow e concetti avanzati (pt2) Andrea Fornaia, Ph.D. Department of Mathema.cs and Computer Science University of Catania Viale A.Doria, 6-95125 Catania Italy fornaia@dmi.unict.it hfp://www.cs.unict.it/~fornaia/

More information

JavaScript: the Big Picture

JavaScript: the Big Picture JavaScript had to look like Java only less so be Java's dumb kid brother or boy-hostage sidekick. Plus, I had to be done in ten days or something worse than JavaScript would have happened.! JavaScript:

More information

Episode 298. Getting Started With Spree

Episode 298. Getting Started With Spree Episode 298 Getting Started With Spree Spree 1 is a fully-featured e-commerce solution that can be easily integrated into a Rails application. If you need to turn a Rails app into a store that sells products

More information

Real Life Web Development. Joseph Paul Cohen

Real Life Web Development. Joseph Paul Cohen Real Life Web Development Joseph Paul Cohen joecohen@cs.umb.edu Index 201 - The code 404 - How to run it? 500 - Your code is broken? 200 - Someone broke into your server? 400 - How are people using your

More information

Rocking with Racket. Marc Burns Beatlight Inc

Rocking with Racket. Marc Burns Beatlight Inc Rocking with Racket Marc Burns Beatlight Inc What am I doing here? My first encounter with Racket was in 2010 I wanted to use Racket in industry The opportunity arose in June 2014: Loft What am I doing

More information

Getting Started With Containers

Getting Started With Containers DEVNET 2042 Getting Started With Containers Matt Johnson Developer Evangelist @mattdashj Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1. Find this session

More information

Introduction and first application. Luigi De Russis. Rails 101

Introduction and first application. Luigi De Russis. Rails 101 Introduction and first application Luigi De Russis 2 About Rails Ruby on Rails 3 Framework for making dynamic web applications created in 2003 Open Source (MIT License) for the Ruby programming language

More information

learn programming the right way

learn programming the right way Coding 101 learn programming the right way 1 INTRODUCTION Before you begin learning how to code, it s first useful to discuss why you would want to learn web development. There are lots of good reasons

More information

a handful of Git workflows for the agilist steven harman twitter: stevenharman

a handful of Git workflows for the agilist steven harman twitter: stevenharman a handful of Git workflows for the agilist steven harman twitter: stevenharman http://stevenharman.net stop worrying and start loving The Git. git is awesome - if you re using it, you know. if not, don

More information

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017 Linux System Management with Puppet, Gitlab, and R10k Scott Nolin, SSEC Technical Computing 22 June 2017 Introduction I am here to talk about how we do Linux configuration management at the Space Science

More information

Japan on Rails. Name: Akira Matsuda GitHub: amatsuda

Japan on Rails. Name: Akira Matsuda GitHub: amatsuda Japan on Rails Name: Akira Matsuda Twitter: @a_matsuda GitHub: amatsuda Index The Problems The Communities Ruby in Japan Rails in Japan % whoami whoami A Community Leader Freelance Railer - A Programmer

More information

EPHEMERAL DEVOPS: ADVENTURES IN MANAGING SHORT-LIVED SYSTEMS

EPHEMERAL DEVOPS: ADVENTURES IN MANAGING SHORT-LIVED SYSTEMS SESSION ID: CSV-W12 EPHEMERAL DEVOPS: ADVENTURES IN MANAGING SHORT-LIVED SYSTEMS Todd Carr DevOps Engineer Unity Technologies @frozenfoxx Who am I? DevOps Engineer at Unity Technologies Security Enthusiast

More information

Expert Guidance on Migrating from Magento 1 to Magento 2

Expert Guidance on Migrating from Magento 1 to Magento 2 Expert Guidance on Migrating from Magento 1 to Magento 2 Gordon Knoppe Business Solutions Architect, ECG James Cowie Technical Architect, ECG Expert Consulting Group ECG Charter: To provide expert insight,

More information

We re working full time this summer alongside 3 UCOSP (project course) students (2 from Waterloo: Mark Rada & Su Zhang, 1 from UofT: Angelo Maralit)

We re working full time this summer alongside 3 UCOSP (project course) students (2 from Waterloo: Mark Rada & Su Zhang, 1 from UofT: Angelo Maralit) We re working full time this summer alongside 3 UCOSP (project course) students (2 from Waterloo: Mark Rada & Su Zhang, 1 from UofT: Angelo Maralit) Our supervisors: Karen: heads project, which has been

More information

O Reilly RailsConf,

O Reilly RailsConf, O Reilly RailsConf, 2011-05- 18 Who is that guy? Jesper Richter- Reichhelm / @jrirei Berlin, Germany Head of Engineering @ wooga Wooga does social games Wooga has dedicated game teams Cooming soon PHP

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

monolith to micro-services? event sourcing can help Doug

monolith to micro-services? event sourcing can help Doug monolith to micro-services? event sourcing can help Doug legacy Client Culture Amp (2012-2015) Rails App (Murmur) Read-write Query Server Read-only DB Our journey Our meandering path to CQRS & event sourcing

More information

DevOps Anti-Patterns. Have the Ops team deal with it. Time to fire the Ops team! Let s hire a DevOps unit! COPYRIGHT 2019 MANICODE SECURITY

DevOps Anti-Patterns. Have the Ops team deal with it. Time to fire the Ops team! Let s hire a DevOps unit! COPYRIGHT 2019 MANICODE SECURITY DevOps Anti-Patterns Have the Ops team deal with it. Time to fire the Ops team! Let s hire a DevOps unit! 31 Anti-Pattern: Throw it Over the Wall Development Operations 32 Anti-Pattern: DevOps Team Silo

More information

Holistic Database Security

Holistic Database Security Holistic Database Security 1 Important Terms Exploit: Take advantage of a flaw or feature Attack Surface: Any node on the network that can be attacked. That can be the UI, People, anything that touches

More information

Deployment Is Not A Four Letter Word. Chris Hartjes PHP Quebec 2009 Conference

Deployment Is Not A Four Letter Word. Chris Hartjes PHP Quebec 2009 Conference Deployment Is Not A Four Letter Word Chris Hartjes PHP Quebec 2009 Conference WARNING: This presentation may contain language that is offensive to some. I ll try not to swear but sometimes it just comes

More information

Web2py Instant Admin Documentation

Web2py Instant Admin Documentation Web2py Instant Admin Documentation Release 0.1 Ramana Mar 29, 2017 Contents 1 Web2py Instant Admin 3 1.1 What is it?................................................ 3 1.2 How to Install?..............................................

More information

Learning to love release notes

Learning to love release notes Learning to love release notes Anne Edwards Write the Docs 2018 anne@improbable.io Who am I? technical writer for nearly four years three different companies - currently working at Improbable long-form

More information

CloudCenter for Developers

CloudCenter for Developers DEVNET-1198 CloudCenter for Developers Conor Murphy, Systems Engineer Data Centre Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1. Find this session in the

More information

ElasticIntel. Scalable Threat Intel Aggregation in AWS

ElasticIntel. Scalable Threat Intel Aggregation in AWS ElasticIntel Scalable Threat Intel Aggregation in AWS Presenter: Matt Jane Obligatory Who I Am slide.. Builder/Automator I put things in clouds Open Source Advocate

More information

Beyond 1001 Dedicated Data Service Instances

Beyond 1001 Dedicated Data Service Instances Beyond 1001 Dedicated Data Service Instances Introduction The Challenge Given: Application platform based on Cloud Foundry to serve thousands of apps Application Runtime Many platform users - who don

More information

nacelle Documentation

nacelle Documentation nacelle Documentation Release 0.4.1 Patrick Carey August 16, 2014 Contents 1 Standing on the shoulders of giants 3 2 Contents 5 2.1 Getting Started.............................................. 5 2.2

More information

Flexible Network Analytics in the Cloud. Jon Dugan & Peter Murphy ESnet Software Engineering Group October 18, 2017 TechEx 2017, San Francisco

Flexible Network Analytics in the Cloud. Jon Dugan & Peter Murphy ESnet Software Engineering Group October 18, 2017 TechEx 2017, San Francisco Flexible Network Analytics in the Cloud Jon Dugan & Peter Murphy ESnet Software Engineering Group October 18, 2017 TechEx 2017, San Francisco Introduction Harsh realities of network analytics netbeam Demo

More information

Power Up/Level Up: Supercharging Your Security Program for Cloud and DevOps. Rich

Power Up/Level Up: Supercharging Your Security Program for Cloud and DevOps. Rich Power Up/Level Up: Supercharging Your Security Program for Cloud and DevOps Rich Mogull @rmogull CISO Ragnarok The board is breathing down your neck, the CEO wants reports, and the CFO writes Try Open

More information

Ruby on Rails. SITC Workshop Series American University of Nigeria FALL 2017

Ruby on Rails. SITC Workshop Series American University of Nigeria FALL 2017 Ruby on Rails SITC Workshop Series American University of Nigeria FALL 2017 1 Evolution of Web Web 1.x Web 1.0: user interaction == server roundtrip Other than filling out form fields Every user interaction

More information

Distributed Systems. 29. Distributed Caching Paul Krzyzanowski. Rutgers University. Fall 2014

Distributed Systems. 29. Distributed Caching Paul Krzyzanowski. Rutgers University. Fall 2014 Distributed Systems 29. Distributed Caching Paul Krzyzanowski Rutgers University Fall 2014 December 5, 2014 2013 Paul Krzyzanowski 1 Caching Purpose of a cache Temporary storage to increase data access

More information

Application Deployment

Application Deployment Application Deployment Software Engineering II WS 2018/19 Christoph Matthies (christoph.matthies@hpi.de) Enterprise Platform and Integration Concepts Datacenter Work by Leonardo Rizzi (CC BY-SA 2.0) Agenda

More information

Get in Touch Module 1 - Core PHP XHTML

Get in Touch Module 1 - Core PHP XHTML PHP/MYSQL (Basic + Advanced) Web Technologies Module 1 - Core PHP XHTML What is HTML? Use of HTML. Difference between HTML, XHTML and DHTML. Basic HTML tags. Creating Forms with HTML. Understanding Web

More information

Monica. Personal Relationship Management

Monica. Personal Relationship Management Monica Personal Relationship Management Alexis SAETTLER FOSDEM 2019 1. Presentation of Monica 2. What we are trying to do 1. Presentation of Monica 2. What we are trying to do Idea Remember everything

More information

Spam. Time: five years from now Place: England

Spam. Time: five years from now Place: England Spam Time: five years from now Place: England Oh no! said Joe Turner. When I go on the computer, all I get is spam email that nobody wants. It s all from people who are trying to sell you things. Email

More information

Liquibase Version Control For Your Schema. Nathan Voxland April 3,

Liquibase 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 information

A TALE OF TWO APPS WHY DEVELOPMENT PRACTICES MATTER

A TALE OF TWO APPS WHY DEVELOPMENT PRACTICES MATTER A TALE OF TWO APPS WHY DEVELOPMENT PRACTICES MATTER WHO AM I? PHP Developer for about 9 years Worked in insurance for 4.5 years I know RPG! (Not that good at it though) WHAT DID WE NEED TO DO? Build an

More information

Read & Download (PDF Kindle) Programming: C ++ Programming : Programming Language For Beginners: LEARN IN A DAY! (C++, Javascript, PHP, Python, Sql,

Read & Download (PDF Kindle) Programming: C ++ Programming : Programming Language For Beginners: LEARN IN A DAY! (C++, Javascript, PHP, Python, Sql, Read & Download (PDF Kindle) Programming: C ++ Programming : Programming Language For Beginners: LEARN IN A DAY! (C++, Javascript, PHP, Python, Sql, HTML, Swift) Start Learning to Program in the C++ Language

More information

The Art and Science of Memory Allocation

The Art and Science of Memory Allocation Logical Diagram The Art and Science of Memory Allocation Don Porter CSE 506 Binary Formats RCU Memory Management Memory Allocators CPU Scheduler User System Calls Kernel Today s Lecture File System Networking

More information

Developing ASP.Net MVC 4 Web Application

Developing ASP.Net MVC 4 Web Application Developing ASP.Net MVC 4 Web Application About this Course In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5 tools and technologies. The focus will

More information

Web Programming Step by Step

Web Programming Step by Step Web Programming Step by Step Chapter 13: Taking a Website Live Alex Loddengaard (alexloddengaard@gmail.com) (http://www.alexloddengaard.com) 6/4/08 Alex Loddengaard 1 What is Cellarspot? Social network

More information

test with :) chen songyong

test with :) chen songyong test with :) chen songyong about me about me Remote worker! Worked in start-ups, web consultancies, banks and digital agencies! @aquajach in Twitter & Github test in old days test in old days do you write

More information

The Idiot s Guide to Quashing MicroServices. Hani Suleiman

The Idiot s Guide to Quashing MicroServices. Hani Suleiman The Idiot s Guide to Quashing MicroServices Hani Suleiman The Promised Land Welcome to Reality Logging HA/DR Monitoring Provisioning Security Debugging Enterprise frameworks Don t Panic WHOAMI I wrote

More information

App Engine: Datastore Introduction

App Engine: Datastore Introduction App Engine: Datastore Introduction Part 1 Another very useful course: https://www.udacity.com/course/developing-scalableapps-in-java--ud859 1 Topics cover in this lesson What is Datastore? Datastore and

More information

An Incredibly Brief Introduction to Relational Databases: Appendix B - Learning Rails

An Incredibly Brief Introduction to Relational Databases: Appendix B - Learning Rails O'Reilly Published on O'Reilly (http://oreilly.com/) See this if you're having trouble printing code examples An Incredibly Brief Introduction to Relational Databases: Appendix B - Learning Rails by Edd

More information

Lecture 4. Ruby on Rails 1 / 52

Lecture 4. Ruby on Rails 1 / 52 Lecture 4 Ruby on Rails 1 / 52 Homeworks 2 & 3 Grades were released for homework 2 Homework 3 was due last night Everyone got a style freebie since my default setup ignores spec files and I didn't change

More information

Rancher Part 4: Using the Catalog Example with GlusterFS

Rancher Part 4: Using the Catalog Example with GlusterFS Rancher Part 4: Using the Catalog Example with GlusterFS As promised, it s time to get to the catalog goodness. Since GlusterFS hasn t gotten enough love from me lately, it s time to bring that into the

More information

COURSE 20486B: DEVELOPING ASP.NET MVC 4 WEB APPLICATIONS

COURSE 20486B: DEVELOPING ASP.NET MVC 4 WEB APPLICATIONS ABOUT THIS COURSE In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5 tools and technologies. The focus will be on coding activities that enhance the

More information

Web Application Expectations

Web Application Expectations Effective Ruby on Rails Development Using CodeGear s Ruby IDE Shelby Sanders Principal Engineer CodeGear Copyright 2007 CodeGear. All Rights Reserved. 2007/6/14 Web Application Expectations Dynamic Static

More information

Back-end architecture

Back-end architecture Back-end architecture Tiberiu Vilcu Prepared for EECS 411 Sugih Jamin 2 January 2018 https://education.github.com/pack 1 2 Outline HTTP 1. HTTP and useful web tools 2. Designing APIs 3. Back-end services

More information

Rewrite or Refactor. When to declare technical bankruptcy. Laura Thomson OSCON - July 22,

Rewrite or Refactor. When to declare technical bankruptcy. Laura Thomson OSCON - July 22, Rewrite or Refactor When to declare technical bankruptcy Laura Thomson (laura@mozilla.com) OSCON - July 22, 2010 1 Technical debt Shipping first time code is like going into debt. A little debt speeds

More information

Aspirin as a Service: Using the Cloud to Cure Security Headaches

Aspirin as a Service: Using the Cloud to Cure Security Headaches SESSION ID: CSV-T10 Aspirin as a Service: Using the Cloud to Cure Security Headaches Bill Shinn Principle Security Solutions Architect Amazon Web Services Rich Mogull CEO Securosis @rmogull Little. Cloudy.

More information

Web App Vs Web Site. Some tricks of the trade. Laurent Technical Director, BlackBerry Web Platform

Web App Vs Web Site. Some tricks of the trade. Laurent Technical Director, BlackBerry Web Platform Web App Vs Web Site Some tricks of the trade Laurent Hasson @ldhasson, lhasson@rim.com Technical Director, BlackBerry Web Platform 2012-05-09 Web Apps Vs. Web Sites 1 INTRODUCTION 2012-05-09 Web Apps Vs.

More information

Final Report: Faculty Progress Report System Team Deadpool

Final Report: Faculty Progress Report System Team Deadpool Final Report: Faculty Progress Report System Team Deadpool Team Members and roles: - Adedoyin Aderibigbe ( Scrum Master) - aadedoyino@email.tamu.edu - Kelly Luk Bounsawat (Product Owner) - kelly_12azn@tamu.edu

More information

CS Lab 1: httpd

CS Lab 1: httpd CS 194-24 Palmer Dabbelt February 6, 2013 Contents 1 Setup 2 2 Distributed Code 3 2.1 Cucumber, Capybara and Mechanize.............................. 3 2.2 HTTP Server...........................................

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

Developing ASP.NET MVC 4 Web Applications

Developing ASP.NET MVC 4 Web Applications Developing ASP.NET MVC 4 Web Applications Course 20486B; 5 days, Instructor-led Course Description In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5

More information

MySQL. The Right Database for GIS Sometimes

MySQL. The Right Database for GIS Sometimes MySQL The Right Database for GIS Sometimes Who am I? Web/GIS Software Engineer with Cimbura.com BS in IT, MGIS Michael Moore I like making and using tools (digital or physical) GIS Web Services I m most

More information

Unit Testing J2EE from JRuby. Evan Light

Unit Testing J2EE from JRuby. Evan Light Unit Testing J2EE from JRuby Evan Light http://evan.tiggerpalace.com Who I am Professional developer since 1996 Java since 1999 J2EE since 2000 Ruby since 2006 Some yutz with Keynote and a remote control

More information

CS 520: VCS and Git. Intermediate Topics Ben Kushigian

CS 520: VCS and Git. Intermediate Topics Ben Kushigian CS 520: VCS and Git Intermediate Topics Ben Kushigian https://people.cs.umass.edu/~rjust/courses/2017fall/cs520/2017_09_19.zip Our Goal Our Goal (Overture) Overview the basics of Git w/ an eye towards

More information

Cloud Native Applications. 主讲人 :Capital One 首席工程师 Kevin Hoffman

Cloud Native Applications. 主讲人 :Capital One 首席工程师 Kevin Hoffman Cloud Native Applications 主讲人 :Capital One 首席工程师 Kevin Hoffman Agenda Define Cloud Native Cloud Native practices and the 15 factors From Monoliths to the Cloud Q&A What is Cloud Native? Contract between

More information

Working with the Seagull Framework. By Demian Turner, Seagull Systems

Working with the Seagull Framework. By Demian Turner, Seagull Systems Working with the Seagull Framework By Demian Turner, Seagull Systems seagullproject.org Who is Demian Turner? Developing websites since 1996, using PHP since 1999 Committer on several open source projects:

More information

Transcript for Episode 3: The Right Tool for the Job

Transcript for Episode 3: The Right Tool for the Job (October 2013) Panelists: Jonathan Stark (), Mobile Strategy Consultant and Series Host Kevin Smith (), General Manager, Mobile Computing & Compilers, Developer Products Division, Intel Doug Schepers (DW),

More information

SECURITY AUTOMATION BEST PRACTICES. A Guide on Making Your Security Team Successful with Automation SECURITY AUTOMATION BEST PRACTICES - 1

SECURITY AUTOMATION BEST PRACTICES. A Guide on Making Your Security Team Successful with Automation SECURITY AUTOMATION BEST PRACTICES - 1 SECURITY AUTOMATION BEST PRACTICES A Guide on Making Your Security Team Successful with Automation SECURITY AUTOMATION BEST PRACTICES - 1 Introduction The best security postures are those that are built

More information

Crystal for Rubyists

Crystal for Rubyists Crystal for Rubyists Serdar Dogruyol Contents Preamble 2 Why Crystal? 3 Installing Crystal 5 Binary installers.............................. 5 From Source................................ 5 Future Proofing............................

More information

Lecture 4. Ruby on Rails 1 / 49

Lecture 4. Ruby on Rails 1 / 49 Lecture 4 Ruby on Rails 1 / 49 Client-Server Model 2 / 49 What is it? A client (e.g. web browser, phone, computer, etc.) sends a request to a server Request is an HTTP request Stands for HyperText Transfer

More information

Continuous Delivery of your infrastructure. Christophe

Continuous Delivery of your infrastructure. Christophe Continuous Delivery of your infrastructure Christophe Vanlancker @Carroarmato0 Christophe Vanlancker Internal operations and consulting Mentor Kris couldn t make it so I s/kris/christophe/g Todays Goals

More information

Enterprise Systems & Frameworks

Enterprise Systems & Frameworks Enterprise Systems & Frameworks CS25010 - Web Programming Connor Goddard 5 th November 2015 Aberystwyth University 1 INTRODUCTION In today s session, we will aim to cover the following: Multi-tier Architectural

More information

Git: Distributed Version Control

Git: Distributed Version Control Git: Distributed Version Control Computer Science and Engineering College of Engineering The Ohio State University Lecture 3 What Does "D" Stand For? Distributed version control Multiple people, distributed

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

Offline-first PWA con Firebase y Vue.js

Offline-first PWA con Firebase y Vue.js Offline-first PWA con Firebase y Vue.js About me Kike Navalon, engineer Currently working at BICG playing with data You can find me at @garcianavalon 2 We live in a disconnected & battery powered world,

More information

ComSpOC: 3D Buildings:

ComSpOC:   3D Buildings: 1 ComSpOC: http://apps.agi.com/satelliteviewer/ 3D Buildings: http://cesiumjs.org/newyork/ Red Bull X-Alps: http://www.redbullxalps.com/news/article/relive-the-day-10-battle.html NORAD Tracks Santa: http://cesiumjs.org/demos/noradtrackssanta.html

More information

Git: Distributed Version Control

Git: Distributed Version Control Git: Distributed Version Control Computer Science and Engineering College of Engineering The Ohio State University Lecture 3 Demo Prep: Empty (but initialized) repo Linear development: Create, edit, rename,

More information

Outline Key Management CS 239 Computer Security February 9, 2004

Outline Key Management CS 239 Computer Security February 9, 2004 Outline Key Management CS 239 Computer Security February 9, 2004 Properties of keys Key management Key servers Certificates Page 1 Page 2 Introduction Properties of Keys It doesn t matter how strong your

More information