﻿1
00:00:00,080 --> 00:00:03,320
Hello. This sequence
is about the Pharo Web Stack.

2
00:00:03,480 --> 00:00:07,200
I'll give you an overview
of existing frameworks

3
00:00:07,520 --> 00:00:10,280
and the ones we'll be using
in this course.

4
00:00:11,280 --> 00:00:16,720
This is a diagram of what happens
to an incoming HTTP request.

5
00:00:17,320 --> 00:00:22,560
"Zinc" is the basic HTTP/HTTPS
server built into Pharo.

6
00:00:23,160 --> 00:00:26,720
Teapot is above Zinc,
and there is a course available

7
00:00:27,040 --> 00:00:28,840
on Teapot syntax.

8
00:00:29,280 --> 00:00:33,880
Then, there's a series of format
frameworks, like JSON and Stone.

9
00:00:34,760 --> 00:00:36,440
There's also Seaside REST.

10
00:00:36,600 --> 00:00:39,600
Briefly, it's how to program REST
over Seaside.

11
00:00:39,760 --> 00:00:43,760
Seaside is the web framework
we will be using

12
00:00:44,200 --> 00:00:45,560
in Tinyblog.

13
00:00:45,760 --> 00:00:48,840
That's why we introduced
Seaside to you, as well.

14
00:00:49,000 --> 00:00:51,480
It is in widespread use in businesses.

15
00:00:51,960 --> 00:00:54,960
We will also use Voyage,

16
00:00:56,040 --> 00:00:59,800
which is a persistence framework
for documents.

17
00:01:00,160 --> 00:01:04,560
We take our objects and store them
in document form, in Mongo bases.

18
00:01:04,840 --> 00:01:06,640
There are others, of course.

19
00:01:07,080 --> 00:01:12,160
Garage is a sort of driver
for all relational databases.

20
00:01:12,680 --> 00:01:14,480
I'll also show you Magritte.

21
00:01:14,760 --> 00:01:17,360
Magritte is a way
of describing data

22
00:01:17,520 --> 00:01:20,920
and generating webforms
automatically, as a result,

23
00:01:21,080 --> 00:01:22,320
instead of manually.

24
00:01:22,760 --> 00:01:25,360
Reef is an application
that enables you

25
00:01:26,080 --> 00:01:29,200
to do embarked JavaScript
in web components.

26
00:01:29,680 --> 00:01:33,040
But we won't go into it further
in this course.

27
00:01:33,200 --> 00:01:38,080
Mustache is a template system
that generates HTML on the fly.

28
00:01:38,240 --> 00:01:40,920
Bootstrap is
the Twitter Bootstrap library,

29
00:01:41,080 --> 00:01:42,800
fully integrated into Seaside.

30
00:01:43,080 --> 00:01:45,640
These are the most
commonly used applications,

31
00:01:45,920 --> 00:01:50,600
but you have plenty of other packages
on top of Pharo.

32
00:01:50,760 --> 00:01:56,000
The ones used to connect to Amazon
or to do elastic searches, for example.

33
00:01:57,000 --> 00:01:59,080
We will be using Seaside.

34
00:01:59,240 --> 00:02:03,400
It's a web framework
for building dynamic applications

35
00:02:03,880 --> 00:02:06,920
based on reusable components.

36
00:02:08,080 --> 00:02:11,640
We don't really have to
manage requests.

37
00:02:11,800 --> 00:02:13,320
Seaside does it for us.

38
00:02:13,480 --> 00:02:16,240
Documentation is available
at Seaside.st.

39
00:02:16,400 --> 00:02:18,280
The site is being rebuilt.

40
00:02:18,640 --> 00:02:23,120
They have also compiled
a 250-page reference book

41
00:02:23,560 --> 00:02:25,480
at book.seaside.st.

42
00:02:25,640 --> 00:02:29,320
You can take a look, but we'll cover
the main points here

43
00:02:29,880 --> 00:02:30,880
in this course.

44
00:02:32,360 --> 00:02:33,800
Regarding persistence,

45
00:02:33,960 --> 00:02:37,640
as I said earlier,
there are two major frameworks

46
00:02:37,920 --> 00:02:41,280
that enable you to store documents
in NoSQL.

47
00:02:41,480 --> 00:02:46,440
They are based on components
like Mongo, CouchDB, and Riak.

48
00:02:46,960 --> 00:02:51,240
We use Voyage as an abstraction
on top of MongoDB.

49
00:02:52,280 --> 00:02:54,680
And Garage is a framework

50
00:02:54,840 --> 00:02:57,840
offering a unified API
for relational databases.

51
00:02:58,000 --> 00:03:01,120
We won't use it in this course,
but it has drivers

52
00:03:01,320 --> 00:03:03,880
for Postgres, MySQL, SQLite,
and OpenDBX.

53
00:03:04,080 --> 00:03:06,280
And it is always being improved.

54
00:03:07,160 --> 00:03:10,320
We are going to show you
another interesting feature.

55
00:03:10,800 --> 00:03:15,840
We have a framework called Magritte,
for the surrealist painter.

56
00:03:16,320 --> 00:03:19,240
It writes descriptions for your data

57
00:03:19,400 --> 00:03:22,760
and use them to generate
Seaside components.

58
00:03:22,920 --> 00:03:28,040
It really helps boost productivity
in creating web applications.

59
00:03:28,720 --> 00:03:30,240
To conclude, I would say

60
00:03:30,440 --> 00:03:32,760
Pharo offers a rich ecosystem.

61
00:03:32,920 --> 00:03:36,880
Most of the companies using Pharo
are web developers.

62
00:03:37,200 --> 00:03:38,720
It is business-ready.

63
00:03:39,720 --> 00:03:41,600
Seaside is really innovative,

64
00:03:41,760 --> 00:03:45,840
because it goes against certain
entrenched ways of programming.

65
00:03:46,240 --> 00:03:48,240
It helps you think differently.