WEBVTT

00:00:00.080 --> 00:00:03.320 align:middle
Hello. This sequence
is about the Pharo Web Stack.

00:00:03.480 --> 00:00:07.200 align:middle
I'll give you an overview
of existing frameworks

00:00:07.520 --> 00:00:10.280 align:middle
and the ones we'll be using
in this course.

00:00:11.280 --> 00:00:16.720 align:middle
This is a diagram of what happens
to an incoming HTTP request.

00:00:17.320 --> 00:00:22.560 align:middle
"Zinc" is the basic HTTP/HTTPS
server built into Pharo.

00:00:23.160 --> 00:00:26.720 align:middle
Teapot is above Zinc,
and there is a course available

00:00:27.040 --> 00:00:28.840 align:middle
on Teapot syntax.

00:00:29.280 --> 00:00:33.880 align:middle
Then, there's a series of format
frameworks, like JSON and Stone.

00:00:34.760 --> 00:00:36.440 align:middle
There's also Seaside REST.

00:00:36.600 --> 00:00:39.600 align:middle
Briefly, it's how to program REST
over Seaside.

00:00:39.760 --> 00:00:43.760 align:middle
Seaside is the web framework
we will be using

00:00:44.200 --> 00:00:45.560 align:middle
in Tinyblog.

00:00:45.760 --> 00:00:48.840 align:middle
That's why we introduced
Seaside to you, as well.

00:00:49.000 --> 00:00:51.480 align:middle
It is in widespread use in businesses.

00:00:51.960 --> 00:00:54.960 align:middle
We will also use Voyage,

00:00:56.040 --> 00:00:59.800 align:middle
which is a persistence framework
for documents.

00:01:00.160 --> 00:01:04.560 align:middle
We take our objects and store them
in document form, in Mongo bases.

00:01:04.840 --> 00:01:06.640 align:middle
There are others, of course.

00:01:07.080 --> 00:01:12.160 align:middle
Garage is a sort of driver
for all relational databases.

00:01:12.680 --> 00:01:14.480 align:middle
I'll also show you Magritte.

00:01:14.760 --> 00:01:17.360 align:middle
Magritte is a way
of describing data

00:01:17.520 --> 00:01:20.920 align:middle
and generating webforms
automatically, as a result,

00:01:21.080 --> 00:01:22.320 align:middle
instead of manually.

00:01:22.760 --> 00:01:25.360 align:middle
Reef is an application
that enables you

00:01:26.080 --> 00:01:29.200 align:middle
to do embarked JavaScript
in web components.

00:01:29.680 --> 00:01:33.040 align:middle
But we won't go into it further
in this course.

00:01:33.200 --> 00:01:38.080 align:middle
Mustache is a template system
that generates HTML on the fly.

00:01:38.240 --> 00:01:40.920 align:middle
Bootstrap is
the Twitter Bootstrap library,

00:01:41.080 --> 00:01:42.800 align:middle
fully integrated into Seaside.

00:01:43.080 --> 00:01:45.640 align:middle
These are the most
commonly used applications,

00:01:45.920 --> 00:01:50.600 align:middle
but you have plenty of other packages
on top of Pharo.

00:01:50.760 --> 00:01:56.000 align:middle
The ones used to connect to Amazon
or to do elastic searches, for example.

00:01:57.000 --> 00:01:59.080 align:middle
We will be using Seaside.

00:01:59.240 --> 00:02:03.400 align:middle
It's a web framework
for building dynamic applications

00:02:03.880 --> 00:02:06.920 align:middle
based on reusable components.

00:02:08.080 --> 00:02:11.640 align:middle
We don't really have to
manage requests.

00:02:11.800 --> 00:02:13.320 align:middle
Seaside does it for us.

00:02:13.480 --> 00:02:16.240 align:middle
Documentation is available
at Seaside.st.

00:02:16.400 --> 00:02:18.280 align:middle
The site is being rebuilt.

00:02:18.640 --> 00:02:23.120 align:middle
They have also compiled
a 250-page reference book

00:02:23.560 --> 00:02:25.480 align:middle
at book.seaside.st.

00:02:25.640 --> 00:02:29.320 align:middle
You can take a look, but we'll cover
the main points here

00:02:29.880 --> 00:02:30.880 align:middle
in this course.

00:02:32.360 --> 00:02:33.800 align:middle
Regarding persistence,

00:02:33.960 --> 00:02:37.640 align:middle
as I said earlier,
there are two major frameworks

00:02:37.920 --> 00:02:41.280 align:middle
that enable you to store documents
in NoSQL.

00:02:41.480 --> 00:02:46.440 align:middle
They are based on components
like Mongo, CouchDB, and Riak.

00:02:46.960 --> 00:02:51.240 align:middle
We use Voyage as an abstraction
on top of MongoDB.

00:02:52.280 --> 00:02:54.680 align:middle
And Garage is a framework

00:02:54.840 --> 00:02:57.840 align:middle
offering a unified API
for relational databases.

00:02:58.000 --> 00:03:01.120 align:middle
We won't use it in this course,
but it has drivers

00:03:01.320 --> 00:03:03.880 align:middle
for Postgres, MySQL, SQLite,
and OpenDBX.

00:03:04.080 --> 00:03:06.280 align:middle
And it is always being improved.

00:03:07.160 --> 00:03:10.320 align:middle
We are going to show you
another interesting feature.

00:03:10.800 --> 00:03:15.840 align:middle
We have a framework called Magritte,
for the surrealist painter.

00:03:16.320 --> 00:03:19.240 align:middle
It writes descriptions for your data

00:03:19.400 --> 00:03:22.760 align:middle
and use them to generate
Seaside components.

00:03:22.920 --> 00:03:28.040 align:middle
It really helps boost productivity
in creating web applications.

00:03:28.720 --> 00:03:30.240 align:middle
To conclude, I would say

00:03:30.440 --> 00:03:32.760 align:middle
Pharo offers a rich ecosystem.

00:03:32.920 --> 00:03:36.880 align:middle
Most of the companies using Pharo
are web developers.

00:03:37.200 --> 00:03:38.720 align:middle
It is business-ready.

00:03:39.720 --> 00:03:41.600 align:middle
Seaside is really innovative,

00:03:41.760 --> 00:03:45.840 align:middle
because it goes against certain
entrenched ways of programming.

00:03:46.240 --> 00:03:48.240 align:middle
It helps you think differently.

