time to tame the technologies!

Anne Collet

Citizens 3.0

Information & Communication Technologies

Software is at work Everywhere

Software is disrupting all industries

Software is Eating the World

2008

2009

1994

2004

1997

2009

why are tech startups
so popular today ? 

the tech infrastructure is now

commoditization                cost ↘︎

MATURE & affordable

↖︎

=>

a perfect environment for SAAS !

the Software as a Service business model
that many tech startups apply

a BM which relies heavily on the cloud infrastructure

SAAS products are highly scalable

for a Marginal COST +/- = 0

SAAS products are entirely dematerialized

SAAS products are easily Replicable

low barrier to entry

coding is fun, EASIER & powerful !

“Everybody should learn how to program a computer...
because it teaches you how to think.”  
                                          - Steve Jobs

“Coding is the 21st century literacy.”
                                          - Neelie Kroes

Don't just play on your phone. Program it.”
                                          - Barack Obama

 

more than ever

'cause...

human end-users
should always
come first !

From passive consumers...

... become active users !

The Technologies

are evolving fast !

© BestReviews

Computers (= hardware )

are machines that
can be told what to do

programs (= software )

are written instructions that
define what we want the computer to do

program

computer

input
device

output
device

info in

info out

treatment

storage

In order to be executable by the computer,
instructions must be passed to it in

binary language

a sequence of 0s and 1s

it's a base-2 system

a bit (= binary digit)
can only take 2 possible values :

a byte is a set of 8 bits

hence the possibility to represent
2^8 (= 256) different "things"
(numbers, colors, characters,...)

           128s     64s      32s     16s        8s        4s         2s        1s        

                0          0           0           0            0          0           0           1       

the equivalent decimal number is : 1

numbers in binary

           128s     64s      32s     16s        8s        4s         2s        1s        

                0          0           0           0            0          0           1           1       

the equivalent decimal number is : 3

numbers in binary

           128s     64s      32s     16s        8s        4s         2s        1s        

                1          0           1           0            0          0           1           1       

the equivalent decimal number is : 163

numbers in binary

           128s     64s      32s     16s        8s        4s        2s         1s        

characters in binary

87

65

71

79

78

W

A

G

O

N

characters in binary

BINARY INSTRUCTIONS 

1001101001001010100

programming languages

first_name = gets.chomp

 

vs

 these 0s and 1s represent the discrete states

OFF, False, 0 Volts, no current flowing



ON, True, +Volts, the current flows

that must take the computer's core components

i.e. the transistors

once charged electronically, billions of tiny transistors...

will execute the logic we want

combined on a thin film of silicon, a semiconductor material,

to form an integrated circuit (aka microchip)

behind the various programming languages :
a common logic : algorithmics

algorithm :
a set of instructions
that precisely defines
a sequence of operations
to be performed

algorithmics :
the art of building a procedure
which can solve a problem
by breaking it down
into small logical steps

flowchart is one of the ways to represent an algorithm

The fizzbuzz example

0.  Enumerate numbers until a defined stopper ('N')

1.  Start by considering 'number' is equal to 1

2.  If 'number' is a multiple of 3, say Fizz

3.  If 'number' is a multiple of 5, say Buzz

4.  If 'number' is a multiple of both, say FizzBuzz

5.  Else say the current value of 'number'

6.  Increment the value of 'number' by 1

7.  Repeat until the value of 'number' is equal to 'N'

The fizzbuzz example

http://rosettacode.org/wiki/FizzBuzz

ASSEMBLY

The fizzbuzz example

http://rosettacode.org/wiki/FizzBuzz

RUBY

The fizzbuzz example

JAVA

The fizzbuzz example

JAVASCRIPT

development tools

development tools

text editor

terminal

online resources

ergonomic keyboard (Dvorak, Bépo,...)

development methodologies

Fact #1 : Developers are bad
at estimating work

Fact #2 : Business Owners are bad at explaining what they want

Fact #3 : We do not speak
the same language

  => Agile - 101         

1. Split the work into small
user oriented tasks (User Stories)

2. Define time boxed
(short) iterations

3. End each iteration with a demo 

4. Learn, iterate & improve

4. Learn, iterate & improve

The applications

web app

desktop app

mobile app

1

3

2

1.  desktop application

a desktop application is
a program that runs locally on the user's computer

e.g. Microsoft Excel 2010

needs to
be
installed on
the user's computer

strict hardware
requirements
(hard disk, RAM,...)

one version
for each OS
(Windows, Mac,...)

complicated
updates

no Internet connection needed to use it

often, basic
user interfaces

1.  desktop application

2.  mobile application

a mobile application is
a program that runs on a mobile device
 
and is exchanging data with a remote server via Internet

needs to
be
installed on
the user's mobile device

e.g. Zoho Sheet Mobile

SENSORS

CPU (PERFORMANCe)

SHATTERED WORLD

+

- for iOS (Objective C or Swift) 
- for
Android (Java)
- for
Windows Phone (C#)

=> 2 to 3 times the cost
of a web app !

3 very different families of
technologies / mobile OS :

SHATTERED WORLD

3.  web application

a web application is
a program that runs on a remote web server
 
and is displayed on the user's computer's web browser

all you need is
a
web browser on
the user's computer

e.g. Google Sheets

works even on users' devices with limited hardware capabilities

one single version of the app,
with
continuous
development

seamless upgrade & easier maintenance

big problem for the user
if bad internet connection!

more interactive, media-rich user interfaces

3.  web application

1. a computer

which tools to access a web page ?

a computer ?

1. a computer

2. an internet connection

which tools to access a web page ?

Internet (1969 - TCP/IP)

the global system of INTERconnected computer NETworks

Vint Cerf

Bob Kahn

Internet ?

TCP / IP

TCP / IP

an internet connection ?

ISP = Internet Service Provider

an internet connection ?

wired

wired

wireless

wireless

an internet connection ?

ISP = Internet Service Provider

in Belgium ?

via an Internet service provider (ISP)

an internet connection ?

ISP = Internet Service Provider

1. a computer

2. an internet connection

which tools to access a web page ?

3. a web browser

a web browser ?

www (1989 - HTTP)

the (World Wide) Web

Tim Berners-Lee

Robert Cailliau

www (1989 - HTTP)

the (World Wide) Web

accessible through a web browser 

identifiable thanks to their unique URL/URI

connected together
via
hyperlinks,
which allow us to
surf
from one to another

a gigantic space of resources (images, HTML documents,...)

1. a computer

2. an internet connection

which tools to access a web page ?

3. a web browser

we're ready to surf the web ! *

* aka, navigate from one web page to another
by following hyperlinks

Web   Internet

the World Wide Web is one of the many services
relying on the
Internet infrastructure

Web   Internet

the World Wide Web is one of the many services
relying on the
Internet infrastructure

Web   Internet

the World Wide Web is one of the many services
relying on the
Internet infrastructure

DNS Resolver

www.google.com = IP address ?      

url = IP address  

Example :

www.google.com = 216.58.208.46

DNS servers hierarchy

DNS = Domain Name System

google.com = 216.58.208.46

url = IP address  

webmaster

web visitors

web hosting

http request / http response

static website

 (aka site vitrine)

http request / http response

dynamic website

 (aka web application)

on the Client-side

( = the front-end part )

Front-end languages

content
+ structure 

style

dynamism 
+ usability 

on the server-side

( = the back-end part )

back-end languages

The lego game

we could program everything from scratch...

...but it's boring & non productive

So we decided to

 create re-usable blocks 

of functionalities

pre-packaged libraries

within a specific framework

up to Build anything !

It has never been so easy to make software !

The API's

human to machine communication

but also mainly 
machine to machine communication

thanks to API (application programming interfaces)

API

API

API

API

machines exchange structured content

{"richestPeople":[
    {"firstName":"Bill""lastName":"Gates""value":"81"}, 
    {"firstName":"Carlos""lastName":"Slim""value":"79"},
    {"firstName":"Warren""lastName":"Buffet""value":"72"}
]}

what a machine likes to see

web services

more & more applications are created today
by
calling the APIs of third-party web services
(Google maps, Facebook authentication,...)

web services

can be integrated into your application
by calling  and consuming their API

web services

select the best ones
already widely tested & acclaimed
for their 
usability & functionality

Stripe (payment)

Drift (live chat)

MailChimp (e-mailing)

Uber
application stack

web services

focus on your core business
and outsource the rest through APIs calls

API's are eating software

your learning process

learn to understand

Learn to experiment

Learn to build

online resources

events

online dev communities

offline dev communities

Thank you

See you soon !

Citizens_3.0-Time_to_tame_the_technologies

By Le Wagon Brussels

Citizens_3.0-Time_to_tame_the_technologies

Today's world is all about tech... Citizens, parents, teachers, managers,... it's time for you to tame these new technologies!

  • 1,717