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)


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