1
00:00:00,000 --> 00:00:24,756
RC3 preroll music
2
00:00:24,756 --> 00:00:31,000
Herald: Hello, everyone, welcome back to
Chaos West TV. The next talk will start
3
00:00:31,000 --> 00:00:34,620
momentarily. I will now switch back to
German for a few seconds to announce a
4
00:00:34,620 --> 00:00:40,613
translation. Then I'll switch back and
then we'll go off to the races as they say
5
00:00:40,613 --> 00:00:45,540
So nochmal schnell auf Deutsch,
willkommen zurück zu Chaos West TV, eure
6
00:00:45,540 --> 00:00:51,298
beste Bühne auf dem rc3. Der nächste Talk
beginnt gleich er ist zwar auf Englisch
7
00:00:51,298 --> 00:00:55,550
wird aber wie so vieles dank unserer
Übersetzungscrew auf Deutsch übersetzt.
8
00:00:55,550 --> 00:01:00,241
Ihr solltet in der Lage sein das im Stream
einfach auszuwählen ohne größere Probleme
9
00:01:00,241 --> 00:01:03,570
und dann könnt ihr den Vortrag auch direkt
simultanübersetzt auf Deutsch hören
10
00:01:03,570 --> 00:01:06,031
und ich rede jetzt auf Englisch weiter.
11
00:01:06,031 --> 00:01:07,971
Alright back to English.
12
00:01:07,971 --> 00:01:11,896
Now in the comfort of your own homes
or wherever you're viewing the stream,
13
00:01:11,896 --> 00:01:15,313
please do a warm round of applause
for our next speaker,
14
00:01:15,313 --> 00:01:23,114
Martin, who will talk about
optimizing public transport.
15
00:01:23,114 --> 00:01:24,436
Let's go.
16
00:01:26,924 --> 00:01:33,050
Martin: Welcome to my contribution to this
year's rC3 2021 in the form of this talk,
17
00:01:33,050 --> 00:01:37,147
Optimizing public transport:
a data-driven bike sharing study in Marburg
18
00:01:37,147 --> 00:01:42,241
I would like to thank the organizers of the
rC3 2021 for organizing the whole event.
19
00:01:42,241 --> 00:01:47,140
And in particular, I would like to thank
the channel that accepted me Chaos West TV
20
00:01:47,140 --> 00:01:52,750
well for accepting the presentation of my
work. Today I would like to give you a
21
00:01:52,750 --> 00:01:57,220
quick overview of one of my hobby projects
in which I scraped and therefore
22
00:01:57,220 --> 00:02:02,270
downloaded over one million data points
regarding the bike sharing system in the
23
00:02:02,270 --> 00:02:09,099
city of Marburg. This study came about
when I was traveling from Stuttgart to
24
00:02:09,099 --> 00:02:13,220
Frankfurt and ultimately to Marburg some
time ago, and I was watching the amazing
25
00:02:13,220 --> 00:02:17,440
SpiegelMining talk by David Kriesel. So
thank you very much for this implicit
26
00:02:17,440 --> 00:02:20,515
inspiration of the work that you're about
to see now.
27
00:02:20,515 --> 00:02:26,091
Who am I? My name is Martin Lellep,
and I studied physics in the past,
28
00:02:26,091 --> 00:02:30,425
and actually, I continue to do so in the
form of a Ph.D. in theoretical physics at
29
00:02:30,425 --> 00:02:34,258
the University of Edinburgh in Scotland
and in my spare time I like to do data
30
00:02:34,258 --> 00:02:39,255
analysis of all kinds of data.
There are two more things...
31
00:02:39,255 --> 00:02:42,045
There are two more things
that are important for here now.
32
00:02:42,045 --> 00:02:45,883
It's first of all, I studied at the
University of Marburg, obviously in
33
00:02:45,883 --> 00:02:52,070
Marburg previously, and then also I like
to ride my bike. Marburg, for those who
34
00:02:52,070 --> 00:02:56,310
don't know it yet, it's a small,
university dominated town that is in the
35
00:02:56,310 --> 00:03:00,840
north of Frankfurt am Main, roughly 80
kilometers. So an hour by car or an hour
36
00:03:00,840 --> 00:03:07,450
by train, approximately. And again, it's
quite dominated by the university that is
37
00:03:07,450 --> 00:03:12,070
located there, and that can be seen simply
in terms of, for instance, numbers. There
38
00:03:12,070 --> 00:03:19,100
are roughly 25,000 students for an overall
population of 77,000 residents in total,
39
00:03:19,100 --> 00:03:26,540
which is quite substantial, obviously. You
can see a quite popular picture here of a
40
00:03:26,540 --> 00:03:32,600
picturesque scene in Marburg. We can see
the castle and then the river Lahn, as
41
00:03:32,600 --> 00:03:37,290
well as a few houses and a bit of green.
And the bike rentals are currently
42
00:03:37,290 --> 00:03:44,430
provided at the time of recording this by
the company called Nextbike. Before now
43
00:03:44,430 --> 00:03:49,790
diving into a bit more technical details,
I would like to motivate my story or my
44
00:03:49,790 --> 00:03:54,870
study by the story of Anna. Anna is a
university... is a university student at
45
00:03:54,870 --> 00:03:59,780
the University of Marburg, and she lives a
bit outside the city, so she typically
46
00:03:59,780 --> 00:04:06,910
does not walk to the place that she needs
to be or study at. But she takes the bus
47
00:04:06,910 --> 00:04:13,310
from her... from her flat to the
university, to the city. And then does the
48
00:04:13,310 --> 00:04:19,959
last mile by walking or cycling or
whatever. And she's also quite an eager
49
00:04:19,959 --> 00:04:24,220
student, so she very often studies quite
late. As you can see here, that's a
50
00:04:24,220 --> 00:04:29,940
picture of late Marburg, so to say, and
just as it happens now, she needs to catch
51
00:04:29,940 --> 00:04:34,621
a bus now because she's a bit late. She
forgot to pack in her... her fancy MacBook
52
00:04:34,621 --> 00:04:41,110
in time, so she needs to hurry up a
bit and, well, didn't really make it. So
53
00:04:41,110 --> 00:04:43,720
therefore, she thought maybe
54
00:04:43,720 --> 00:04:47,127
taking a Nextbike for the last mile
to the bus station is a good idea
55
00:04:47,127 --> 00:04:51,292
so she can safely take then subsequently
the bus home. And normally the bus…
56
00:04:51,292 --> 00:04:55,710
The Nextbike stations look like
that here. So there are plenty of bikes.
57
00:04:55,710 --> 00:05:02,530
It's very easy to go there, grab a bike
and go to your destination. Now Anna must
58
00:05:02,530 --> 00:05:07,551
be a very unlucky student today because
she arrives at the bike station, and it
59
00:05:07,551 --> 00:05:12,610
turns out that the station is empty, so
ultimately she misses at least this bus
60
00:05:12,610 --> 00:05:19,717
and therefore only arrives at home a bit
later. Her cooking plans and her Netflix
61
00:05:19,717 --> 00:05:26,459
plans, all that stuff postponed a bit
because, well, she arrives a bit later.
62
00:05:26,459 --> 00:05:32,603
And that's, of course, a very, very sad
story, and maybe it happens to multiple
63
00:05:32,603 --> 00:05:38,059
people, not only Anna. And in fact, it
also happened to me a few times, and every
64
00:05:38,059 --> 00:05:41,919
time it happened to me, I thought, well, I
must be the most unlucky person in whole
65
00:05:41,919 --> 00:05:46,504
Marburg going to a normally completely
fully packed bike station and now it's
66
00:05:46,504 --> 00:05:51,513
completely empty. Missing, for instance,
subsequent public transportation.
67
00:05:51,513 --> 00:05:56,714
After it happened to me a few times, I
thought, well, maybe I'm not that unlucky.
68
00:05:56,714 --> 00:06:02,551
So is there may be a system to empty bike
stations in Marburg. And given all my
69
00:06:02,551 --> 00:06:06,529
my spare time interest of analyzing and
capturing data, I thought, well, data to
70
00:06:06,529 --> 00:06:12,550
the rescue, of course. And therefore, the
idea for this talk now was to build a web
71
00:06:12,550 --> 00:06:17,901
scraper in order to acquire Nextbike data.
Collect the data, store the data, analyze
72
00:06:17,901 --> 00:06:23,069
the data and then hopefully finally help
Anna, me, and other students to figure out
73
00:06:23,069 --> 00:06:28,700
which stations maybe to avoid and which
stations are safe to go to if you're in
74
00:06:28,700 --> 00:06:31,233
desperate need for a bike.
75
00:06:31,898 --> 00:06:35,517
The tech stack that I'm using here,
it's based on a Docker container
76
00:06:35,517 --> 00:06:39,560
in which a python scraper runs
every 30 seconds that queries the
77
00:06:39,560 --> 00:06:44,979
Nextbike API. It downloads the data, it
parses the data, and then saves the data
78
00:06:44,979 --> 00:06:51,360
outside the Docker container in order to
be evaluated later on. And it turns out
79
00:06:51,360 --> 00:06:56,180
that the whole concept of what I just
described also has a name. It's called
80
00:06:56,180 --> 00:07:02,389
Extract, Transform, Load Pipeline or ETL
in short. And what I again wrote here is
81
00:07:02,389 --> 00:07:06,330
an ETL pipeline in Python, and then I
wrote an analysis code also written in
82
00:07:06,330 --> 00:07:13,779
Python and all that was running on a small
home server in my flat. The data that I
83
00:07:13,779 --> 00:07:19,629
captured consists of the bikes identified
through IDs and then also the locations of
84
00:07:19,629 --> 00:07:23,779
those bikes, typically at stations, but
some of them were also freestanding and
85
00:07:23,779 --> 00:07:29,349
last but not least, the station locations,
and of course, obviously also a list of of
86
00:07:29,349 --> 00:07:38,889
stations. And then with it, I went ahead
and did a few pictures that I'm about to
87
00:07:38,889 --> 00:07:43,899
show now and a few analyses. And if you're
interested in that and there are slides
88
00:07:43,899 --> 00:07:48,529
available on this website here, the
website can be read through the QR code or
89
00:07:48,529 --> 00:07:52,939
through that link and this website
contains the slides that you'll see in
90
00:07:52,939 --> 00:07:56,741
here, high resolution figures, a few
interactive figures and all the
91
00:07:56,741 --> 00:08:01,175
information on the previous blog articles
that I wrote about this topic.
92
00:08:02,659 --> 00:08:07,165
So the results of Anna, first of all, to
start slowly. It turns out that there are
93
00:08:07,165 --> 00:08:13,242
37 bike stations in Marburg,
with roughly 230 bikes spread across
94
00:08:13,242 --> 00:08:16,047
the whole Nextbike Marburg ecosystem.
95
00:08:17,097 --> 00:08:20,657
And it's now, well, knowing that
there are roughly 40 stations,
96
00:08:20,657 --> 00:08:23,394
it's quite interesting to see
where these stations are,
97
00:08:23,394 --> 00:08:25,294
because then Anna could,
98
00:08:25,294 --> 00:08:28,644
for instance, already go to another
station if one station is empty.
99
00:08:28,644 --> 00:08:32,668
And what you can see here is now a map
of Marburg, where the stations are
100
00:08:32,668 --> 00:08:36,363
annotated by these dots.
And the area of the dot,
101
00:08:36,363 --> 00:08:40,080
as well as the color code,
corresponds to the average number of
102
00:08:40,080 --> 00:08:46,640
parked bikes at that station. So let's see
an interactive version because it's a bit
103
00:08:46,640 --> 00:08:53,500
nicer to see it in that way. So I click on
here. Alright. OK, now we can pan around
104
00:08:53,500 --> 00:08:59,850
and zoom as you can often do with these
interactive graphics and also by clicking
105
00:08:59,850 --> 00:09:04,680
on these buttons or on these these points,
you can see the station name, as well as
106
00:09:04,680 --> 00:09:11,699
the average number of bikes placed there.
And becomes quite obvious that, well, most
107
00:09:11,699 --> 00:09:17,970
of the stations are in the central part of
the city, a few in the outskirts here. And
108
00:09:17,970 --> 00:09:22,980
it turns out that the largest station in
terms of the number of parked bikes on
109
00:09:22,980 --> 00:09:27,759
average is the main train station
Hauptbahnhof. There are again a few more
110
00:09:27,759 --> 00:09:30,683
spread around the
central part of the station,
111
00:09:30,683 --> 00:09:34,291
such as the Elisabeth-Blochmann-Platz,
which is the second largest station.
112
00:09:34,291 --> 00:09:38,305
And then if you continue the train
line here, you can see that there's
113
00:09:38,305 --> 00:09:44,730
actually another set of stations, where
the secondary train station is.
114
00:09:44,730 --> 00:09:48,484
So that's another train station,
smaller train station.
115
00:09:51,150 --> 00:09:58,130
OK, so the first results for Anna
would then be a day-hour usage histogram,
116
00:09:58,130 --> 00:10:03,740
because it's the kind of the first order
approach, I would say, in order to see how
117
00:10:03,740 --> 00:10:11,980
the ecosystem of Nextbikes is in use
against day as well as hour. And therefore
118
00:10:11,980 --> 00:10:19,089
Anna will based on this figure here, she
will understand when to maybe plan for a
119
00:10:19,089 --> 00:10:23,990
bit more time when looking for a bike in a
desperate fashion. And since this figure
120
00:10:23,990 --> 00:10:27,959
is a bit more difficult to understand, I
would like to take a moment to explain it
121
00:10:27,959 --> 00:10:31,600
and we are going to start with the top
figure here. What you can see on the x
122
00:10:31,600 --> 00:10:35,750
axis is the hour of the day and on the y
axis, and that's shown in the whole
123
00:10:35,750 --> 00:10:40,279
figure. So each of the the numbers that
you see is the following: it's the
124
00:10:40,279 --> 00:10:46,940
average. And well it's the number of
parked bikes and then you subtract the
125
00:10:46,940 --> 00:10:51,560
average of the number of parked bikes in
the whole ecosystem of Marburg. So that
126
00:10:51,560 --> 00:10:55,930
means if a number of zero is encountered
like roughly here, it means that the
127
00:10:55,930 --> 00:11:01,110
average number of parked bikes simply in
the system at that point in time. When the
128
00:11:01,110 --> 00:11:05,920
number is larger, it's above the average,
if it's smaller, it's below the average.
129
00:11:05,920 --> 00:11:10,709
And you can clearly see from this small
figure here already that in the morning,
130
00:11:10,709 --> 00:11:15,430
more bikes are typically parked. And then
in the evenings or around noon, you can
131
00:11:15,430 --> 00:11:21,750
see two dips, a bimodal distribution so to
say. Where people, well, obviously use
132
00:11:21,750 --> 00:11:28,129
bikes around noon and six p.m. roughly
where these used bikes, of course, are not
133
00:11:28,129 --> 00:11:32,050
parked, and therefore these numbers are
smaller. And the same thing can be done
134
00:11:32,050 --> 00:11:37,170
for the day of the week. Here and here you
can see that the Monday, well, the
135
00:11:37,170 --> 00:11:40,190
beginning of the week and the end of the
week, meaning Monday, Tuesday and Saturday
136
00:11:40,190 --> 00:11:46,990
Sunday are a bit more popular, so more
people ride a bike and therefore fewer
137
00:11:46,990 --> 00:11:49,950
bikes are parked and therefore this is
negative. And then in the middle of the
138
00:11:49,950 --> 00:11:55,649
week, fewer people seem to ride the bike,
the bikes in general. And if you combine
139
00:11:55,649 --> 00:11:59,839
these figures now, you can see the the
joint histogram here, where you can not
140
00:11:59,839 --> 00:12:05,140
only look for time or day separately, but
also in a combined fashion. So you would,
141
00:12:05,140 --> 00:12:09,584
for instance, see that Monday morning is
the time where many people use bikes
142
00:12:09,584 --> 00:12:13,821
because they are not as many bikes parked.
And then also on a Saturday, you can see
143
00:12:13,821 --> 00:12:20,876
the same, so around afternoon many people
seem to use the bikes. Last but not least
144
00:12:20,876 --> 00:12:24,853
on Friday mornings, it's quite easy to get
a bike because many bikes appear to be
145
00:12:24,853 --> 00:12:29,500
parked, maybe because people envision
already the weekend. So that's the first
146
00:12:29,500 --> 00:12:36,529
outcome for Anna. Well try to avoid times
around six and around noon when
147
00:12:36,529 --> 00:12:41,350
desperately looking for bike. And although
even more interesting part for Anna is the
148
00:12:41,350 --> 00:12:45,899
probability to find a specific station to
be empty. For that, I took the time series
149
00:12:45,899 --> 00:12:51,389
of the number of parked bikes and counted
the occasions where there was no bike for
150
00:12:51,389 --> 00:12:56,019
each of the stations here. And that has
been done again for each station
151
00:12:56,019 --> 00:12:59,949
separately, so for each station, at the
end of the day, you get a number that
152
00:12:59,949 --> 00:13:03,810
denotes the probability of finding that
station empty. And clearly, for instance,
153
00:13:03,810 --> 00:13:08,242
the Hauptbahnhof, the main train station,
which was the largest station. It's
154
00:13:10,038 --> 00:13:14,787
quite unlikely to find it empty,
and contrary, if you go to these
155
00:13:14,787 --> 00:13:18,447
stations down here, for instance
the Am Plan / Wirtschaftswissenschaften
156
00:13:18,447 --> 00:13:23,769
it turns out that these are empty at about
70 percent of the time, which is quite
157
00:13:23,769 --> 00:13:28,910
substantial, I would say. And
interestingly, if you now look for the the
158
00:13:28,910 --> 00:13:33,130
secondary train station in Marburg, the
Südbahnhof, you can see that this has
159
00:13:33,130 --> 00:13:37,825
quite a substantial probability of
running empty at about 30 to 40 percent.
160
00:13:37,825 --> 00:13:41,889
In particular, in comparison to the main
train station, which is essentially almost
161
00:13:41,889 --> 00:13:50,990
never empty. Also interestingly, you can
then plot these probabilities against the
162
00:13:50,990 --> 00:13:54,920
average number of parked bikes at the
station and you find an antiproportional
163
00:13:54,920 --> 00:13:59,349
relation between those two. It means that
the larger the stations, the more unlikely
164
00:13:59,349 --> 00:14:02,811
it is that it's empty, which is quite a
reasonable outcome, I would say.
165
00:14:02,811 --> 00:14:05,749
So finally, to conclude for Anna,
166
00:14:05,749 --> 00:14:08,809
she should try to avoid small stations
167
00:14:08,809 --> 00:14:11,868
and in particular, she should try
to avoid the stations that are
168
00:14:11,868 --> 00:14:14,595
well, annotated here with
the sad smiley, because these
169
00:14:14,595 --> 00:14:18,567
tend to run empty quite often.
170
00:14:21,363 --> 00:14:25,037
OK, so I have all this ETL pipeline
stuff already set up,
171
00:14:25,037 --> 00:14:27,560
I have collected
over a million data points
172
00:14:27,560 --> 00:14:32,584
and then I thought, well, maybe there's
more in the data then only helping Anna.
173
00:14:32,584 --> 00:14:37,743
So everything that I've shown you so far,
it's from the perspective of a user.
174
00:14:37,743 --> 00:14:40,954
And now I would like to turn to
what's the perspective of a city.
175
00:14:40,954 --> 00:14:42,870
And there I would like to
ask a few questions, like…
176
00:14:42,870 --> 00:14:45,541
How is Nextbike used in Marburg?
first of all,
177
00:14:45,541 --> 00:14:48,540
and then, in general,
Is cycling a good thing for a city?
178
00:14:48,540 --> 00:14:52,850
How can, or,
Can cycling contribute to a better city?
179
00:14:52,850 --> 00:14:57,533
And now–better is of course first a quite
vague term–and then last, but not least,
180
00:14:57,533 --> 00:15:01,336
is it worth improving
bike infrastructure for a city?
181
00:15:02,804 --> 00:15:10,196
And all this again, is now from the
perspective of a city instead of a user.
182
00:15:10,196 --> 00:15:14,834
The first thing that I would like to start
with is something that I call the distance
183
00:15:14,834 --> 00:15:21,709
matrix in which I concentrated on the
positions of the bike stations and
184
00:15:21,709 --> 00:15:26,029
computed the pairwise distances for all of
them. And since the distance is, of
185
00:15:26,029 --> 00:15:32,045
course, symmetric, also the stored matrix
is now in the end also symmetric. And,
186
00:15:32,045 --> 00:15:36,470
It turns out that there are roughly 600
combinations, and these combinations can
187
00:15:36,470 --> 00:15:41,760
be shown in a symmetric matrix, as shown
here, where on the x axis this one here
188
00:15:41,760 --> 00:15:47,709
and the y axis you can see the stations
and then each combination denotes
189
00:15:47,709 --> 00:15:52,620
the distance between that one station and
the other station. It turns out that the
190
00:15:52,620 --> 00:15:57,319
range of these distances is between zero
and roughly nine kilometers. And of
191
00:15:57,319 --> 00:16:03,407
course, those that have a zero distance to
other stations are essentially the…
192
00:16:03,407 --> 00:16:07,920
the stations themselves. So if you pick a
station, obviously the distance to itself
193
00:16:07,920 --> 00:16:12,370
is zero and therefore the diagonal is
exactly zero. And then again, all the
194
00:16:12,370 --> 00:16:20,379
remaining part is a symmetric copy of the
other diagonal part. The other thing and
195
00:16:20,379 --> 00:16:26,559
that is now the main treasure, I would say
of this study, so the main base for
196
00:16:26,559 --> 00:16:31,490
everything that follows is what I call the
transition matrix, where I counted the
197
00:16:31,490 --> 00:16:35,749
number of transition of bikes from one
station to the other station. That is now,
198
00:16:35,749 --> 00:16:40,394
of course, not symmetric anymore because
just because, say, five bikes go from one to
199
00:16:40,394 --> 00:16:44,212
the other station, it does not mean that
these five bikes really come back again.
200
00:16:44,212 --> 00:16:50,598
And therefore, the number of entries
is roughly 1400. Again, it can be shown
201
00:16:50,598 --> 00:16:58,470
or visualized in the same fashion.
So you again have the stations on the one
202
00:16:58,470 --> 00:17:03,186
axis and the same stations on the other
axis, and now each entry here in the
203
00:17:03,186 --> 00:17:07,150
matrix corresponds to the number of
transitions of bikes from one to the
204
00:17:07,150 --> 00:17:14,650
other. And the range is from zero to over
3000. And it turns out that actually the
205
00:17:14,650 --> 00:17:19,010
self transitions, meaning somebody takes a
bike from a station, does something with a
206
00:17:19,010 --> 00:17:23,460
bike, maybe grocery shop, grocery shopping
or so, and then the person comes back to
207
00:17:23,460 --> 00:17:30,070
the same station. These events occur the
most frequent and therefore the largest
208
00:17:30,070 --> 00:17:36,420
entry are on the diagonal, typically.
Sometimes it is not so interesting what
209
00:17:36,420 --> 00:17:41,170
happens regarding the self transitions and
therefore another matrix can be derived
210
00:17:41,170 --> 00:17:46,010
from the first one, namely a transition
matrix without diagonal elements where
211
00:17:46,010 --> 00:17:51,625
those elements have been set to zero as
you can see here, if you look closely.
212
00:17:51,625 --> 00:17:57,566
Speaking of looking closely, it's quite
educational if you not only see the
213
00:17:57,566 --> 00:18:02,140
figures, but also can explore them a bit,
and therefore I rendered an interactive
214
00:18:02,140 --> 00:18:07,450
version of it. Let's... let's visit it. So
that's now again, the matrix without the
215
00:18:07,450 --> 00:18:11,880
diagonal and one with the diagonal. And
now by hovering over these entries so you
216
00:18:11,880 --> 00:18:16,740
can see that, for instance, from Am
Schülerpark to Ockershäuser Allee zero
217
00:18:16,740 --> 00:18:20,960
transitions happened. And then a bit
larger one, for instance, Biegenstraße to
218
00:18:20,960 --> 00:18:28,120
Hauptbahnhof over 800 transitions happened
in the time of capturing the data. So feel
219
00:18:28,120 --> 00:18:35,210
free to explore a bit, maybe identify the
most, most interesting, most used popular
220
00:18:35,210 --> 00:18:44,560
routes. Ok, such a transition matrix can
actually also be shown as a network graph
221
00:18:44,560 --> 00:18:49,310
where here I concentrate only on the
largest entry because it turns out the
222
00:18:49,310 --> 00:18:55,520
full transition matrix is a bit too dense.
And what is shown out here is as blue
223
00:18:55,520 --> 00:19:04,340
circles, it corresponds to a station and
then these edges here are drawn whenever
224
00:19:04,340 --> 00:19:08,440
there happens a transition. And you can
already see here that there are a few
225
00:19:08,440 --> 00:19:13,009
stations that are quite isolated, like
those and then many stations have a self
226
00:19:13,009 --> 00:19:16,330
transition and mostly feed to a more
central station.
227
00:19:16,330 --> 00:19:20,243
And since that is also more
interesting in an interactive fashion,
228
00:19:20,243 --> 00:19:22,606
I also rendered
an interactive version of that.
229
00:19:22,606 --> 00:19:29,311
Now again, we can zoom, pan around
and drag the graph around a bit.
230
00:19:29,311 --> 00:19:33,760
And interestingly, if you click on a
station, you can see from where
231
00:19:33,760 --> 00:19:39,940
transitions happen to that station. So
like those interconnected central ones,
232
00:19:39,940 --> 00:19:43,440
like the Hauptbahnhof, the main train
station, it's quite connected in the
233
00:19:43,440 --> 00:19:46,940
graph. And then there are a few like
Friedrichplatz which are not connected at
234
00:19:46,940 --> 00:19:53,940
all. Interestingly, that one here, for
instance, the Cafe Trauma/Aföllerwiesen it
235
00:19:53,940 --> 00:19:58,120
doesn't even have a self connection. So it
turns out that, well, people apparently
236
00:19:58,120 --> 00:20:01,515
mostly use it for taking a bike going into
the city.
237
00:20:01,515 --> 00:20:08,216
And most dominantly,
the Elisabeth-Blochmann-Platz, actually.
238
00:20:12,178 --> 00:20:17,910
OK, so if you now take
these transition matrices,
239
00:20:17,910 --> 00:20:22,500
as well as the distance matrices
into account and mix them, first of all,
240
00:20:22,500 --> 00:20:29,080
you can get a few interesting numbers. So
here I calculated the overall number of
241
00:20:29,080 --> 00:20:35,280
trips, which turned out to be 210,000
trips in the time of capturing the data,
242
00:20:35,280 --> 00:20:39,550
which is quite some essential number for
such a small city like Marburg. And this
243
00:20:39,550 --> 00:20:44,030
is, of course, computed by taking the sum
of the transition matrix elements. And
244
00:20:44,030 --> 00:20:48,280
then if you weigh these sums or these
entries with the distances between those
245
00:20:48,280 --> 00:20:54,380
stations, it turns out that those
transitions or those trips essentially
246
00:20:54,380 --> 00:20:58,610
correspond to a distance of 320,000
kilometers that have been traveled, which
247
00:20:58,610 --> 00:21:02,305
is a few times around the Earth actually.
248
00:21:02,305 --> 00:21:05,466
Now, when these two basic numbers and the
249
00:21:05,466 --> 00:21:10,690
the matrices that I introduced earlier are
combined with a few statistical details –
250
00:21:10,690 --> 00:21:14,650
like, for instance, the average
consumption of fuel of a car or how much
251
00:21:14,650 --> 00:21:21,050
CO2 it produces while driving – a few
ecological, economic and social benefits
252
00:21:21,050 --> 00:21:25,550
of a bike system or cycling in general can
be derived. First of all, I found it quite
253
00:21:25,550 --> 00:21:33,210
entertaining that the overall number of
calories burned corresponds to 8.6 million
254
00:21:33,210 --> 00:21:40,331
kilocalories. And to convert that to a bit
more, well, real life number, I would say
255
00:21:40,331 --> 00:21:44,030
I calculated how many Nutella jars
those are, and it turns out that
256
00:21:44,030 --> 00:21:47,763
it's roughly 4,000 Nutella jars that
have been burned in terms of calories
257
00:21:47,763 --> 00:21:56,265
just by this system of cycling. And then
also, it can be found that this distance
258
00:21:56,265 --> 00:22:00,240
here, if you would have driven it
by a car, you would have,
259
00:22:00,240 --> 00:22:06,281
well, used almost 26,000 liters of fuel.
You would have produced 40 tons of CO2.
260
00:22:06,281 --> 00:22:13,164
And that fuel that you would have bought
would have cost 34,000 €, actually.
261
00:22:13,164 --> 00:22:18,194
Interestingly, that number here
of 40 tons of saved CO2
262
00:22:18,194 --> 00:22:23,008
corresponds to an average
German who lives for 4 years
263
00:22:23,008 --> 00:22:27,498
or 4 Germans that live for one year.
So a typical German produces
264
00:22:27,498 --> 00:22:31,060
roughly 10 tons, and therefore
it's four times that, obviously.
265
00:22:32,803 --> 00:22:36,250
Ok, so again, from the transition matrix,
266
00:22:36,250 --> 00:22:40,130
you can derive a few more interesting
details like, for instance, details that
267
00:22:40,130 --> 00:22:44,062
are interesting from the perspective
of traffic management.
268
00:22:44,062 --> 00:22:48,651
Like, here I calculated the most popular
routes by finding the maximal elements
269
00:22:48,651 --> 00:22:54,141
of the transition matrix. And it turns out
that the most popular route has been used
270
00:22:54,141 --> 00:22:58,941
well over 2000 times a year from the
Hauptbahnhof to the Ginseldorfer Weg. And
271
00:22:58,941 --> 00:23:02,820
if you look closely, you can see that the
main train station or the Hauptbahnhof,
272
00:23:02,820 --> 00:23:07,264
as well as the Elisabeth-Blochmann-Platz
is involved in many of those top row routes.
273
00:23:07,264 --> 00:23:12,580
And that's now again interesting. For
instance, if a city would like to improve
274
00:23:12,580 --> 00:23:18,733
the bike system because we've now seen
it has quite a good impact for social,
275
00:23:18,733 --> 00:23:23,211
ecological, and economical aspects.
276
00:23:23,211 --> 00:23:27,259
But let's say the the city has maybe
limited financial resources.
277
00:23:27,259 --> 00:23:30,491
It would be interesting to simply
calculate the most popular routes,
278
00:23:30,491 --> 00:23:33,690
and then start fixing
or improving them first.
279
00:23:35,690 --> 00:23:38,820
OK, now at that point,
you might ask yourself,
280
00:23:38,820 --> 00:23:41,883
Well, what kind of data did he scrape?
281
00:23:41,883 --> 00:23:44,454
And for that, I would like to
show you this graph. It shows
282
00:23:44,454 --> 00:23:48,444
the number of parked bikes in the whole
ecosystem of Marburg against time.
283
00:23:48,444 --> 00:23:50,879
And as you can see,
I did it in two batches.
284
00:23:50,879 --> 00:23:55,700
The first one has been obtained from
March to December 2020. So last year.
285
00:23:55,700 --> 00:24:01,440
And then I restarted the scraping at the
end of April and finished just a few days
286
00:24:01,440 --> 00:24:06,660
ago in December 2021. And you can clearly
see that the number of parked bikes
287
00:24:06,660 --> 00:24:12,260
decreases when the weather is good or when
there are summer months and therefore most
288
00:24:12,260 --> 00:24:17,740
likely because the weather is good. And of
course, it suggests itself a bit given
289
00:24:17,740 --> 00:24:22,900
that I captured this in 2020 and that one
year in 2021 and taking the corona
290
00:24:22,900 --> 00:24:25,308
pandemic into account. Well, how does it
compare?
291
00:24:25,308 --> 00:24:31,330
And therefore, I concentrated on the
overlapping month of the two data sets
292
00:24:31,330 --> 00:24:34,809
and calculated, well,
the comparison, as you can see here.
293
00:24:34,809 --> 00:24:40,206
Now in blue, it's 2021 this year
and 2021, sorry 2020 is shown in red.
294
00:24:40,206 --> 00:24:43,951
And you can see that the number of
parked bikes increased actually.
295
00:24:43,951 --> 00:24:49,683
There might be a multitude
of explanations for that. I don't know.
296
00:24:49,683 --> 00:24:54,908
Maybe one explanation could be that people
took more advantage of working from home.
297
00:24:56,397 --> 00:25:00,548
OK, so everything that I've shown you so far,
298
00:25:00,548 --> 00:25:05,488
it's been mostly statistical statements,
averages, sums and stuff like that,
299
00:25:05,488 --> 00:25:10,355
and now I was interested if it's possible
to do also more precise predictions.
300
00:25:10,355 --> 00:25:12,980
And therefore I turn
towards a machine learning or
301
00:25:12,980 --> 00:25:17,540
artificial intelligence task where I
predicted the num… where I tried to
302
00:25:17,540 --> 00:25:21,220
predict the number of parked bikes,
meaning the quantity that I've shown over
303
00:25:21,220 --> 00:25:26,062
and over again in the in the last few
minutes. So is it possible to predict that
304
00:25:26,062 --> 00:25:31,340
number based on the hour of the day, the
weekday and the temperature that is shown
305
00:25:31,340 --> 00:25:36,760
here for 2020? And when starting such a
task, it's always, first of all, very
306
00:25:36,760 --> 00:25:41,219
useful to investigate the training data.
And therefore well I try to plot it. And
307
00:25:41,219 --> 00:25:44,703
And because it's a three dimensional face
space, it's also very simple to plot it.
308
00:25:44,703 --> 00:25:49,410
So you can essentially plot it as a
scatterplot. And the color coding here has
309
00:25:49,410 --> 00:25:53,928
been chosen to denote the target variable,
meaning the number of parked bikes.
310
00:25:53,928 --> 00:25:57,470
And just by inspecting the data, you can
already see that the smaller the
311
00:25:57,470 --> 00:26:02,810
temperatures are, the fewer… sorry, the
more bikes are parked and therefore the
312
00:26:02,810 --> 00:26:07,710
fewer bikes are used. I use a random
forest machine learning model, which
313
00:26:07,710 --> 00:26:12,870
consists... which is an ensemble model of
decision trees, of randomized decision
314
00:26:12,870 --> 00:26:18,010
trees. And this model is quite powerful
because it can work with little data. It
315
00:26:18,010 --> 00:26:22,880
can work with a lot of data, and it's also
very flexible. If you would ever like to
316
00:26:22,880 --> 00:26:28,320
extend the face space, like maybe it would
be interesting to see if one could predict
317
00:26:28,320 --> 00:26:33,220
the number of parked bikes given a bank
holiday or given weekend. And all these
318
00:26:33,220 --> 00:26:38,350
aspects could be added to the random
forest relatively easily. And that's now
319
00:26:38,350 --> 00:26:42,130
the outcome: So I show the measured data,
well that's been data that hasn't been
320
00:26:42,130 --> 00:26:49,610
seen by the model before, and I show that
data here and then the densely covered,
321
00:26:49,610 --> 00:26:53,407
face-based prediction of the machine
learning model here. And you can see that
322
00:26:53,407 --> 00:26:57,962
the color trends, they correspond quite
well to each other. Like you can, for
323
00:26:57,962 --> 00:27:03,130
instance, see the smaller numbers or
larger parked numbers in the regime of
324
00:27:03,130 --> 00:27:07,670
small temperature and also from a
quantitative perspective, the prediction
325
00:27:07,670 --> 00:27:12,050
is quite decent as the square root of the
mean squared error corresponds to a
326
00:27:12,050 --> 00:27:15,685
roughly a tenth of the average value of
the parked bikes.
327
00:27:15,685 --> 00:27:22,537
Which, again in this context is quite a
decent prediction performance,
328
00:27:22,537 --> 00:27:26,577
given how naive the
approach was in general.
329
00:27:26,577 --> 00:27:31,340
OK, I did a bit more on machine learning,
but I'm not showing that here.
330
00:27:31,340 --> 00:27:37,053
I calculated the Markov steady state
for the same data essentially.
331
00:27:37,053 --> 00:27:42,532
And if you're interested in that, well,
feel free to check out this link here.
332
00:27:44,266 --> 00:27:47,110
OK, last but not least, I would,
of course, like to come to
333
00:27:47,110 --> 00:27:50,575
the summary for Anna, me,
and maybe other students.
334
00:27:50,575 --> 00:27:57,135
So first of all, what I did was to scrape
Nextbike data in Marburg in order to find,
335
00:27:59,337 --> 00:28:03,569
which stations to potentially avoid when
you're in desperate need for a Nextbike.
336
00:28:03,569 --> 00:28:09,342
And for that, I calculated
the probabilities of empty stations
337
00:28:09,342 --> 00:28:13,848
and found that the larger the station,
the less likely it is to run out of bikes.
338
00:28:13,848 --> 00:28:17,371
So the general recommendation
from my side would be:
339
00:28:17,371 --> 00:28:20,793
try to find larger stations if you're
in desperate need for an Nextbike.
340
00:28:20,793 --> 00:28:25,848
And feel free to go back to
the interactive map to see the
341
00:28:25,848 --> 00:28:30,629
the locations of these stations, which is
quite interesting in itself, I would say.
342
00:28:30,629 --> 00:28:34,202
And then I turned towards
the perspective of a city, and
343
00:28:34,202 --> 00:28:39,721
investigated a bit the usage patterns
of Nextbikes and therefore representative
344
00:28:39,721 --> 00:28:44,517
most likely also cycling in Marburg, where
I calculated the day-hour usage.
345
00:28:44,517 --> 00:28:49,400
So when is the system quite busy
and generally the most popular routes,
346
00:28:49,400 --> 00:28:56,190
which might be of use for city planning
and also social, economical, and
347
00:28:56,190 --> 00:28:59,095
ecological benefits of the whole system.
348
00:28:59,916 --> 00:29:01,547
Last but not least, I showed that
349
00:29:01,547 --> 00:29:05,660
more precise predictions are possible when
maybe a statistical statement is not
350
00:29:05,660 --> 00:29:09,347
enough and you would like
to do per case predictions.
351
00:29:10,150 --> 00:29:14,488
Last but not least, I was fortunate
enough to work with AstA Marburg.
352
00:29:14,488 --> 00:29:19,627
In particular, Lucas and David,
thank you very much for your trust
353
00:29:19,627 --> 00:29:24,892
in that project where we try to optimize
the placement of the bikes in the future.
354
00:29:26,472 --> 00:29:28,670
The take home messages are now,
first of all:
355
00:29:28,670 --> 00:29:32,391
Bikes are amazing! And not only are they
amazing for you and the environment,
356
00:29:32,391 --> 00:29:37,616
but also for your wallet.
So you save essentially money on gas.
357
00:29:38,346 --> 00:29:41,092
And also, I would like to,
358
00:29:41,622 --> 00:29:45,116
well, highlight that those data-driven
optimizations of public transport
359
00:29:45,116 --> 00:29:49,640
have the potential to, well,
increase the life, the quality of life of
360
00:29:49,640 --> 00:29:54,521
many of us at moderate cost. So again, I
would like to come back to a case where
361
00:29:54,521 --> 00:29:56,975
maybe a city would like to
improve bike infrastructure
362
00:29:56,975 --> 00:29:59,909
that doesn't have enough
money to do it in one go.
363
00:29:59,909 --> 00:30:04,476
So then it might be interesting
to first find–in a data-driven way–which
364
00:30:04,476 --> 00:30:12,720
combinations of, now in Nextbike terms,
maybe stations or in general streets
365
00:30:12,720 --> 00:30:17,076
are popular, and then these might be worth
being fixed first with a limited budget.
366
00:30:18,353 --> 00:30:23,237
OK, if you're interested in more, I was
very fortunate to be able to speak at the
367
00:30:23,237 --> 00:30:28,607
last rC3 already about data in Marburg,
but last year I spoke about parking
368
00:30:28,607 --> 00:30:32,993
in Marburg. If you like to, well, read the
blog articles corresponding to that
369
00:30:32,993 --> 00:30:39,065
or just see the official CCC video,
just follow these links shown here.
370
00:30:39,383 --> 00:30:41,368
Thank you very much for your attention.
371
00:30:41,368 --> 00:30:45,755
If you have anything to get in contact
with me, reach out to my e-mail address.
372
00:30:45,755 --> 00:30:49,701
Maybe some ideas on how to improve
a talk or what else to evaluate.
373
00:30:49,701 --> 00:30:52,980
And then all the supplementary
materials that I mentioned,
374
00:30:52,980 --> 00:30:56,570
and what I've shown here,
can be found again on this link here.
375
00:30:56,570 --> 00:30:59,750
In particular, thank you very much
to all the people who reached out to me
376
00:30:59,750 --> 00:31:03,427
based on my last year's talk. I haven't
come about to respond properly, but
377
00:31:03,427 --> 00:31:06,875
I'm 100 percent certain that I will do so.
378
00:31:06,875 --> 00:31:10,973
Thank you very much for your attention,
and have a good year.
379
00:31:15,970 --> 00:31:21,490
Herald: Alright, welcome back. It's time
for the Q&A now. You probably know the
380
00:31:21,490 --> 00:31:26,110
drill, but I repeat it anyway. If you're
on Twitter, on Mastodon or on the
381
00:31:26,110 --> 00:31:32,951
Fediverse in general, the hashtag is
#rc3cwtv to ask any questions. And if
382
00:31:32,951 --> 00:31:37,600
you're in the hackint IRC, the channel
name is the same except there's a dash in
383
00:31:37,600 --> 00:31:43,450
between the rc3 and the cwtv. And we
apparently already have some questions, so
384
00:31:43,450 --> 00:31:46,412
I'll just get started now.
385
00:31:46,412 --> 00:31:49,951
First question:
Is the Nextbike API free to use?
386
00:31:49,951 --> 00:31:53,900
Does Nextbike even know
that you did this scraping?
387
00:31:53,900 --> 00:32:00,020
Martin: Yes, so as far as I know, the
Nextbike API has been reverse engineered
388
00:32:00,020 --> 00:32:05,553
from the iOS app and there's a Github repo
by ubahnverleih and he documents lots of
389
00:32:05,553 --> 00:32:16,160
APIs of public transport companies like
Nextbike or some companies that also
390
00:32:16,160 --> 00:32:25,060
produce the scooters. And since it's the
public, since it's the official iOS API,
391
00:32:25,060 --> 00:32:29,805
it's more or less public, so to say,
it's free and it's pretty much quota unlimited
392
00:32:29,805 --> 00:32:33,603
because normally all the iPhones
access it. But again, I can only recommend
393
00:32:33,603 --> 00:32:37,077
the ubahnverleih repository
on that on Github.
394
00:32:37,077 --> 00:32:39,826
Herald: And you don't need
any credentials to access it?
395
00:32:39,826 --> 00:32:45,980
Martin: No. Actually, you can, as far as
I checked, you can pretty much access the
396
00:32:45,980 --> 00:32:53,185
whole world. So you can access stations
in Poland in, well, all of Germany now.
397
00:32:54,145 --> 00:32:58,682
Herald: That's cool. It's probably
accidental, but it's quite cool anyway.
398
00:32:58,682 --> 00:33:00,400
Martin: laughs Yeah.
399
00:33:00,400 --> 00:33:03,890
Herald: Ok. What software did you use for
the machine learning stuff?
400
00:33:04,124 --> 00:33:07,209
Martin: The machine learning stuff
has been done with Python,
401
00:33:07,209 --> 00:33:11,796
and then specifically with sklearn,
which is a quite popular machine learning
402
00:33:11,796 --> 00:33:15,964
framework for Python.
403
00:33:16,565 --> 00:33:20,443
Herald: The working horse of the machine
learning community, I would say.
404
00:33:20,443 --> 00:33:22,380
Martin: Yes, exactly yeah.
405
00:33:22,380 --> 00:33:26,907
Herald: Do you know if the Nextbike adds
or removes bikes from the stations?
406
00:33:26,907 --> 00:33:31,442
Or do they relocate the bikes?
Or do… I mean, do they do that?
407
00:33:31,442 --> 00:33:34,872
Or does it just happen
as an emergent behavior?
408
00:33:35,801 --> 00:33:40,510
Martin: I would say that…
So, I had the chance to speak
409
00:33:40,510 --> 00:33:46,159
with a person of Nextbike while
I was working for the Marburg-ASTA
410
00:33:46,159 --> 00:33:51,310
and he said that first of all, it's not
not very technical yet. Well, not very
411
00:33:51,310 --> 00:33:57,610
digitalized yet, and they essentially
drive around. So I'm pretty sure that they
412
00:33:57,610 --> 00:34:01,300
certainly collect bikes that need
maintenance, but then logically,
413
00:34:01,300 --> 00:34:03,937
logically, probably also
relocate them where necessary.
414
00:34:05,690 --> 00:34:11,409
Herald: All right. OK, someone wants to
know if the scripts that you use would be
415
00:34:11,409 --> 00:34:16,649
public? I assume the main part with the
API is already answered if you gave the
416
00:34:16,649 --> 00:34:20,079
Github repo. But are you planning to open
source anything else?
417
00:34:21,058 --> 00:34:26,204
Martin: Potentially so I have no plans on
doing so just because it's additional
418
00:34:26,204 --> 00:34:33,129
work, to be honest. If you're… well, I
can just do the same, well offer the same
419
00:34:33,129 --> 00:34:37,720
same thing as last year: Just write me an
email and if there's enough people who are
420
00:34:37,720 --> 00:34:43,820
interested, I probably strip down to my
internal repository. But since in the
421
00:34:43,820 --> 00:34:48,909
internal repository there are a few
private notes, that one is not published
422
00:34:48,909 --> 00:34:49,849
for sure right now.
423
00:34:51,746 --> 00:34:54,400
Herald: All right. Anything else?
424
00:34:55,401 --> 00:34:59,144
Dear listeners,
you have maybe 30 seconds to comply.
425
00:35:00,102 --> 00:35:04,203
So there's one question, about
the time period of data that you have,
426
00:35:04,203 --> 00:35:06,430
but I think you answered it in the talk.
Right?
427
00:35:06,430 --> 00:35:14,063
Martin: Yes, it's more or less whole 2020
and 1/2 to 2/3 of 2021 that I collected.
428
00:35:14,063 --> 00:35:17,926
Herald: OK, so you're probably mostly has
like a pandemic situation?
429
00:35:17,926 --> 00:35:20,448
Martin: Yes, exclusively.
Pretty much, yeah
430
00:35:20,913 --> 00:35:25,429
Herald: I wonder if that's more or less
usage than usual. I mean, it's less people
431
00:35:25,429 --> 00:35:28,880
having to go places, but more people
wanting to not use public transport.
432
00:35:28,880 --> 00:35:31,793
Martin: Yes, so based on my data,
I can see that it's
433
00:35:31,793 --> 00:35:36,440
the number of parked bikes and
therefore the usage is going down, so
434
00:35:36,440 --> 00:35:40,300
the number of parked bikes is going up.
Therefore, the usage is going down and
435
00:35:40,300 --> 00:35:45,841
that was also confirmed internally by some
Nextbike people. Now, one more thing, so
436
00:35:45,841 --> 00:35:51,750
regarding the people who are interested in
the code, regardless of if I am going to
437
00:35:51,750 --> 00:35:56,580
publish it or not, they if you have
questions, just drop me an email. I mean,
438
00:35:56,580 --> 00:36:02,050
the writing, the scraper in particular,
it's it's absolutely trivial. And if it's
439
00:36:02,050 --> 00:36:06,972
not trivial for you, then the code
wouldn't be of of value to you anyway.
440
00:36:07,854 --> 00:36:14,125
Herald: All right. How does your data
interpret broken / unavailable bikes at
441
00:36:14,125 --> 00:36:18,508
the station? I mean, can you see that?
Or do you take it into account?
442
00:36:19,031 --> 00:36:21,780
Martin: Yes, so I don't see directly.
443
00:36:21,780 --> 00:36:28,077
I mean, I have a list of of all the bikes
and if I would dig a little bit deeper,
444
00:36:28,077 --> 00:36:33,320
I could probably, you know, compile a list
where I see where the bike, where a
445
00:36:33,320 --> 00:36:37,535
particular bike is standing at the moment.
And if that bike would be, for instance,
446
00:36:37,535 --> 00:36:42,170
absent for a for a longer time, I could
conclude that it's maybe broken,
447
00:36:42,170 --> 00:36:46,880
maintenance, maintained or something like
that. But there's no direct data on that.
448
00:36:46,880 --> 00:36:53,240
Herald: All right. Do you do you think
that Nextbike moving the bikes has somehow
449
00:36:53,240 --> 00:36:56,990
biased your data.
Like if basically relocate them?
450
00:36:56,990 --> 00:37:00,330
Martin: That's a good question. I have
absolutely no idea. So I mean, what I what
451
00:37:00,330 --> 00:37:07,659
I did calculate was that, so I defined a
term that I, a term of activity,
452
00:37:07,659 --> 00:37:13,180
I defined it as the number of bikes coming
in, divided by the number of bikes going
453
00:37:13,180 --> 00:37:17,070
out, plus the number of bikes going in. So
it's so to say the activity and when
454
00:37:17,070 --> 00:37:22,180
that number - it's obviously between zero
and one - and if it's far from zero point
455
00:37:22,180 --> 00:37:26,820
five, that would mean that the station
runs empty essentially or overfills at
456
00:37:26,820 --> 00:37:32,150
some point and there are a few stations
where it's a bit above zero point five.
457
00:37:32,150 --> 00:37:38,781
But of course, that's only this well, the
the data that I used has all only the
458
00:37:38,781 --> 00:37:43,700
moved bikes incorporated already. So it's
not really something that could be used
459
00:37:43,700 --> 00:37:46,695
for really trying to find it.
460
00:37:47,505 --> 00:37:51,597
Herald: Do you, I mean, is this just kind
of data also available for,
461
00:37:51,597 --> 00:37:55,902
for bike sharing services
that don't have docking?
462
00:37:55,902 --> 00:37:59,216
If they even exist still in Germany?
I kind of lost track.
463
00:37:59,216 --> 00:38:01,704
I think maybe they
all went bankrupt, but of course…
464
00:38:01,704 --> 00:38:03,591
Martin: What do you mean by docking?
465
00:38:03,591 --> 00:38:07,100
Herald: By, you know, they don't have
fixed stations, but they are floating.
466
00:38:07,100 --> 00:38:12,910
Martin: So I mean, all that I did was to
look at the stations, but actually there
467
00:38:12,910 --> 00:38:16,560
are a few free standing ones also in
Marburg, and these people are typically
468
00:38:16,560 --> 00:38:23,200
penalized, penalized by money, so they
have to pay, pay a fee. I didn't analyze
469
00:38:23,200 --> 00:38:26,900
it at all. Would be interesting for sure.
And as far as I know, there are cities
470
00:38:26,900 --> 00:38:32,805
where it's completely, well, there are
no stations for Nextbike,
471
00:38:32,805 --> 00:38:36,070
where people can drop it off
wherever they like.
472
00:38:36,070 --> 00:38:39,193
Don't quote me on that, it's
just something that I've heard.
473
00:38:39,193 --> 00:38:43,040
Most likely in the large cities.
So maybe in Berlin could be.
474
00:38:43,040 --> 00:38:47,674
Herald: Yeah, I think here there are like
some locations where you have to drop the
475
00:38:47,674 --> 00:38:50,390
bikes, but that's,
I'm not sure if that's Nextbike.
476
00:38:50,390 --> 00:38:54,640
I can never remember which ones
laughs I actually end up using.
477
00:38:55,550 --> 00:39:01,650
All right, everybody. Now is your last
chance to ask more questions.
478
00:39:01,650 --> 00:39:07,210
I feel like at Teleshopping, like the rC3
Teleshopping, which I highly recommend if
479
00:39:07,210 --> 00:39:12,170
you haven't checked it out. It's probably
the peak experience at the remote Congress
480
00:39:12,170 --> 00:39:16,790
is the Teleshopping channel.
And you should all have a look.
481
00:39:16,790 --> 00:39:22,140
And maybe buy some…
some extremely useful items that they sell
482
00:39:27,295 --> 00:39:31,880
Herald: OK, so the chat confirms that
Nextbike does have cities without stations
483
00:39:31,880 --> 00:39:33,432
Martin: Ah ja ja, very good.
484
00:39:34,408 --> 00:39:36,445
Yet, I mean, I can only…
485
00:39:36,445 --> 00:39:41,612
if you're remotely interested in all
these public transport data studies,
486
00:39:41,612 --> 00:39:45,749
definitely check out the
ubahnverleih Github repository.
487
00:39:45,749 --> 00:39:49,382
There's a large number
of systems documented there.
488
00:39:49,655 --> 00:39:54,610
Herald: OK, and that's just ubahnverleih,
just as you would write it.
489
00:39:54,610 --> 00:39:58,130
Martin: Yes, let me look it up
very quickly, Ubahn…
490
00:40:02,579 --> 00:40:07,710
Well, the person is from Ulm,
and he also contributed to the
491
00:40:07,710 --> 00:40:13,993
CCC infrastructure. His name is
Constantine and yes, it's ubahnverleih.
492
00:40:13,993 --> 00:40:18,260
And I think it's like, I think the repo
name name is WoBike, as far as I know,
493
00:40:18,260 --> 00:40:20,440
Herald: All right. Good. Thank you.
494
00:40:22,880 --> 00:40:29,000
Alright. I think we've managed to exhaust
the internet. So, people, where can they
495
00:40:29,000 --> 00:40:33,220
find you have to have any further
questions? Are you going to be wandering
496
00:40:33,220 --> 00:40:36,760
the remote, the world or what it's called?
You know the…
497
00:40:36,760 --> 00:40:41,040
Martin: Well, that's a good idea. I
haven't planned, but I can. So I've no
498
00:40:41,040 --> 00:40:46,140
idea how it works, but I'm sure I can
figure it out. So I mean, in general, drop
499
00:40:46,140 --> 00:40:52,860
me an email and you can find my email on
lellep dot xyz. It's my website.
500
00:40:54,903 --> 00:40:59,220
Other than that, I could be online
in the 2D world adventure now,
501
00:40:59,220 --> 00:41:01,800
if that's of of value to anybody.
502
00:41:01,800 --> 00:41:05,287
Herald: People can maybe hunt you
down if they really need to, you need to.
503
00:41:05,287 --> 00:41:07,560
Martin: definitely ja.
504
00:41:07,560 --> 00:41:12,024
Herald: OK, wonderful. Well, thank you for
your talk and for answering the questions.
505
00:41:12,024 --> 00:41:16,617
And thanks everyone for tuning in.
Have a good remainder of Congress.
506
00:41:17,191 --> 00:41:20,979
I think you should be able to at some
point rate talks in the Fahrplan,
507
00:41:20,979 --> 00:41:24,853
if that feature still exists, so if you
want to see more of this kind of stuff,
508
00:41:24,853 --> 00:41:27,444
maybe leave some feedback.
509
00:41:27,798 --> 00:41:29,098
Bye bye.
510
00:41:29,588 --> 00:41:30,585
Martin: Bye.
511
00:41:30,724 --> 00:41:44,448
rC3 postroll music
512
00:41:44,448 --> 00:41:52,239
Subtitles created by c3subtitles.de
in the year 2022. Join, and help us!