[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:20.31,Default,,0000,0000,0000,,{\i1}36c3 preroll music{\i0} Dialogue: 0,0:00:20.31,0:00:27.66,Default,,0000,0000,0000,,Herald: So, hey, we're finally ready to\Nstart, we have Volker Krause here with a Dialogue: 0,0:00:27.66,0:00:32.21,Default,,0000,0000,0000,,privacy by design travel assistant and\Nit's going to be about building Open Dialogue: 0,0:00:32.21,0:00:38.45,Default,,0000,0000,0000,,Source travel assistants, I think, and\Nthis talk will be in English. And if you Dialogue: 0,0:00:38.45,0:00:43.60,Default,,0000,0000,0000,,want translations, wenn ihr eine deutsche\NÜbersetzung haben wollt, haben wir hier Dialogue: 0,0:00:43.60,0:00:48.75,Default,,0000,0000,0000,,hinten auch ganz tolle Übersetzer in\Nunserer Kabine, da könnt ihr auf Dialogue: 0,0:00:48.75,0:00:54.33,Default,,0000,0000,0000,,c3lingo.org mal reinhören, wie die alles\Nlive mitreden. Genau. Now. Let's have Dialogue: 0,0:00:54.33,0:00:58.27,Default,,0000,0000,0000,,a warm welcome for Volker here and have\Nfun with his talk. Dialogue: 0,0:00:58.27,0:01:00.48,Default,,0000,0000,0000,,{\i1}Applause{\i0} Dialogue: 0,0:01:00.48,0:01:06.40,Default,,0000,0000,0000,,Volker Krause: Thank you. OK, so what is\Nthis about? You probably know those Dialogue: 0,0:01:06.40,0:01:13.73,Default,,0000,0000,0000,,features in, most prominently Google\NMail, but I think TripIt was the one that Dialogue: 0,0:01:13.73,0:01:21.13,Default,,0000,0000,0000,,pioneered this. So GMail reads your\Nemail and then detects any kind of booking Dialogue: 0,0:01:21.13,0:01:27.43,Default,,0000,0000,0000,,information in there, like your boarding\Npasses, your train tickets, your hotel Dialogue: 0,0:01:27.43,0:01:34.61,Default,,0000,0000,0000,,bookings and so on. And it can integrate\Nthat into your calendar and can present Dialogue: 0,0:01:34.61,0:01:44.31,Default,,0000,0000,0000,,you a unified itinerary for your entire\Ntrip and monitor that for changes. And Dialogue: 0,0:01:44.31,0:01:51.53,Default,,0000,0000,0000,,all of that doesn't cost you anything.\NMaybe apart from a bit of your privacy. Dialogue: 0,0:01:51.53,0:01:58.85,Default,,0000,0000,0000,,Well, not too bad, you might think. But if\Nyou look at what kind of data is actually Dialogue: 0,0:01:58.85,0:02:06.28,Default,,0000,0000,0000,,involved in just your travel. Right. \NThe obvious things that come to Dialogue: 0,0:02:06.28,0:02:12.44,Default,,0000,0000,0000,,mind, your name, your birthday, your\Ncredit card number, your passport number, Dialogue: 0,0:02:12.44,0:02:21.62,Default,,0000,0000,0000,,that kind of information. Right. But that\Nisn't even the worst part on this, Dialogue: 0,0:02:21.62,0:02:27.59,Default,,0000,0000,0000,,because those operators don't just get to\Nsee your specific data for one trip, Dialogue: 0,0:02:27.59,0:02:33.10,Default,,0000,0000,0000,,right? They get to see every… everyone's\Ntrip. And now if you combine that Dialogue: 0,0:02:33.10,0:02:39.98,Default,,0000,0000,0000,,information, that actually uncovers a lot\Nof information about... relations Dialogue: 0,0:02:39.98,0:02:45.03,Default,,0000,0000,0000,,between people, your interests, who\Nyou work for, where you live and all of Dialogue: 0,0:02:45.03,0:02:52.34,Default,,0000,0000,0000,,that. Right. So pretty much everyone here\Ntraveled to Leipzig for the last four days Dialogue: 0,0:02:52.34,0:03:00.10,Default,,0000,0000,0000,,in the year. If that happens for\Ntwo of us, once, right, that might be Dialogue: 0,0:03:00.10,0:03:05.58,Default,,0000,0000,0000,,coincidence. If that happens two or three\Nyears in a row, that is some kind of Dialogue: 0,0:03:05.58,0:03:13.26,Default,,0000,0000,0000,,information. But yeah, what to do\Nabout that, right? The easy solution Dialogue: 0,0:03:13.26,0:03:22.45,Default,,0000,0000,0000,,is, just not use those services. It's like\Nfirst world luxury stuff anyway. That Dialogue: 0,0:03:22.45,0:03:26.20,Default,,0000,0000,0000,,works until you end up in a foreign\Ncountry where you don't speak any of the Dialogue: 0,0:03:26.20,0:03:31.94,Default,,0000,0000,0000,,local languages and then get introduced to\Ntheir counterpart of Schienenersatzverkehr Dialogue: 0,0:03:31.94,0:03:39.20,Default,,0000,0000,0000,,or Tarifzonenrandgebiet. And at that\Npoint, you might be interested in actually Dialogue: 0,0:03:39.20,0:03:46.02,Default,,0000,0000,0000,,understanding what's happening on your\Nyour trip in in some form that you Dialogue: 0,0:03:46.02,0:03:50.33,Default,,0000,0000,0000,,actually understand and that you are\Nfamiliar with, ideally without installing Dialogue: 0,0:03:50.33,0:03:54.65,Default,,0000,0000,0000,,15 different vendor applications for\Nwhatever you actually might be Dialogue: 0,0:03:54.65,0:04:02.78,Default,,0000,0000,0000,,traveling, right? So we need something\Nbetter. And that obviously leads us to, Dialogue: 0,0:04:02.78,0:04:10.68,Default,,0000,0000,0000,,let's do it ourselves. Then, we can at\Nleast design this for privacy right from Dialogue: 0,0:04:10.68,0:04:16.30,Default,,0000,0000,0000,,the start. Build it on top of Free\NSoftware and Open Data. Well, of course, Dialogue: 0,0:04:16.30,0:04:23.78,Default,,0000,0000,0000,,we need to... at least it's not entirely\Nobvious that this will actually work, Dialogue: 0,0:04:23.78,0:04:30.45,Default,,0000,0000,0000,,right? The Google and Apple, they have a\Ntotal different amount of resources Dialogue: 0,0:04:30.45,0:04:37.32,Default,,0000,0000,0000,,available for this. So, can we actually\Nbuild this ourselves? So let's have a look Dialogue: 0,0:04:37.32,0:04:46.36,Default,,0000,0000,0000,,at what those services actually need to\Nfunction. And it turns out it's primarily Dialogue: 0,0:04:46.36,0:04:54.20,Default,,0000,0000,0000,,about data, not so much about code.\NThere are some difficult parts Dialogue: 0,0:04:54.20,0:04:58.85,Default,,0000,0000,0000,,in terms of code involved as well, like\Nthe image processing and a PDF to detect a Dialogue: 0,0:04:58.85,0:05:03.31,Default,,0000,0000,0000,,barcode in your boarding pass. But all of\Nthat exists as ready-made building blocks. Dialogue: 0,0:05:03.31,0:05:11.16,Default,,0000,0000,0000,,So you basically just need to put this\Nnicely together. So let's look at the Dialogue: 0,0:05:11.16,0:05:16.86,Default,,0000,0000,0000,,data. That's the more interesting part.\NAnd in general, that breaks down to Dialogue: 0,0:05:16.86,0:05:22.56,Default,,0000,0000,0000,,three different categories. The first one\Nis what I call personal data here. So Dialogue: 0,0:05:22.56,0:05:29.53,Default,,0000,0000,0000,,that's basically booking information,\Ndocuments or tickets, boarding passes, Dialogue: 0,0:05:29.53,0:05:33.35,Default,,0000,0000,0000,,specific for you. So there at least you\Ndon't have a problem with access because Dialogue: 0,0:05:33.35,0:05:40.39,Default,,0000,0000,0000,,that is sent to you and you need to have\Naccess to that. But it comes in all kinds Dialogue: 0,0:05:40.39,0:05:47.80,Default,,0000,0000,0000,,of forms and shapes. So there are the\Nchallenges to actually extract that . The Dialogue: 0,0:05:47.80,0:05:55.42,Default,,0000,0000,0000,,second kind of data is what I would call\Nstatic data. So, for example, the location Dialogue: 0,0:05:55.42,0:06:02.30,Default,,0000,0000,0000,,of an airport. Now, you could argue that\Nthat could change and there is rumors Dialogue: 0,0:06:02.30,0:06:07.31,Default,,0000,0000,0000,,that some people apparently managed to\Nbuild new airports. I live in Berlin, so I Dialogue: 0,0:06:07.31,0:06:15.63,Default,,0000,0000,0000,,don't believe this. Jokes aside, so,\N"static" refers to within, static within Dialogue: 0,0:06:15.63,0:06:22.36,Default,,0000,0000,0000,,the release cycle of the software. So\Nseveral weeks or a few months. So this is Dialogue: 0,0:06:22.36,0:06:26.88,Default,,0000,0000,0000,,stuff that we can ship as offline\Ndatabases. And offline, of course, helps Dialogue: 0,0:06:26.88,0:06:32.44,Default,,0000,0000,0000,,us with privacy because then you're not\Nobservable from the outside. And the third Dialogue: 0,0:06:32.44,0:06:41.57,Default,,0000,0000,0000,,category is dynamic data. So stuff that is\Nvery, very short lived, such as delay Dialogue: 0,0:06:41.57,0:06:46.41,Default,,0000,0000,0000,,information. There is no way we can do\Nthat offline. If we want that kind of Dialogue: 0,0:06:46.41,0:06:54.53,Default,,0000,0000,0000,,information, we will always need some kind\Nof online querying. Then let's look Dialogue: 0,0:06:54.53,0:07:02.96,Default,,0000,0000,0000,,through those three categories in a bit\Nmore detail. For the booking data, google Dialogue: 0,0:07:02.96,0:07:08.38,Default,,0000,0000,0000,,was faced with the same problem, so they\Nused their monopoly and defined a standard Dialogue: 0,0:07:08.38,0:07:16.36,Default,,0000,0000,0000,,in which operators should ideally have\Nmachine readable annotations on their Dialogue: 0,0:07:16.36,0:07:21.33,Default,,0000,0000,0000,,booking information. And that's awesome,\Nbecause we can just use the same, the same Dialogue: 0,0:07:21.33,0:07:26.84,Default,,0000,0000,0000,,system. That's what nowadays became\Nschema.org, which I think Lucas mentioned Dialogue: 0,0:07:26.84,0:07:33.91,Default,,0000,0000,0000,,in the morning as well. At least in\Nthe US and Europe, you'll find Dialogue: 0,0:07:33.91,0:07:41.86,Default,,0000,0000,0000,,that in about 30 to 50% of booking emails\Nyou get from hotels, airlines or event Dialogue: 0,0:07:41.86,0:07:49.60,Default,,0000,0000,0000,,brokers. So that's a good start. But then\Nthere's the rest, which is basically Dialogue: 0,0:07:49.60,0:07:57.15,Default,,0000,0000,0000,,unstructured data, random PDF files or\NHTML emails we have to work with. There's Dialogue: 0,0:07:57.15,0:08:03.61,Default,,0000,0000,0000,,Apple wallet boarding passes. They are\Nsomewhat semi structured and most Dialogue: 0,0:08:03.61,0:08:16.34,Default,,0000,0000,0000,,widespread for flight tickets. Well,\Nthat's somewhat usable. And barcodes, so Dialogue: 0,0:08:16.34,0:08:23.03,Default,,0000,0000,0000,,that's what you, again, see on boarding\Npasses or train tickets. I could Dialogue: 0,0:08:23.03,0:08:29.42,Default,,0000,0000,0000,,probably fill an entire talk just with the\Nvarious details on the different Dialogue: 0,0:08:29.42,0:08:35.12,Default,,0000,0000,0000,,barcode systems, the one for boarding\Npasses, I think, Karsten Nohl had to talk Dialogue: 0,0:08:35.12,0:08:40.97,Default,,0000,0000,0000,,at Congress a few years back, where he\Nshowed how they work and what you can do Dialogue: 0,0:08:40.97,0:08:50.28,Default,,0000,0000,0000,,with them. Instagram #boardingpass is a\Nvery nice source of test data. The one Dialogue: 0,0:08:50.28,0:08:54.67,Default,,0000,0000,0000,,that you find on, on German railway\Ntickets is also pretty much researched Dialogue: 0,0:08:54.67,0:09:00.45,Default,,0000,0000,0000,,already. The ones we actually had to\Nbreak ourselves were the one for Italy. I Dialogue: 0,0:09:00.45,0:09:04.68,Default,,0000,0000,0000,,think to my knowledge, we are the first\Nones to publish the content of those Dialogue: 0,0:09:04.68,0:09:13.07,Default,,0000,0000,0000,,binary barcodes. And we are currently\Nworking on the VDV Kernapplikation Dialogue: 0,0:09:13.07,0:09:18.45,Default,,0000,0000,0000,,E-Ticket, which is the standard for German\Nlocal transportation tickets. That Dialogue: 0,0:09:18.45,0:09:24.17,Default,,0000,0000,0000,,actually has some crypto that you need to\Nget around to actually see the content. So Dialogue: 0,0:09:24.17,0:09:30.55,Default,,0000,0000,0000,,there is, if you're interested in that\Nkind of stuff, there is quite some Dialogue: 0,0:09:30.55,0:09:39.18,Default,,0000,0000,0000,,interesting detail to be found in this.\NBut let's continue with the Dialogue: 0,0:09:39.18,0:09:47.66,Default,,0000,0000,0000,,static data. There, of course, we have\NWikidata. That has almost everything we Dialogue: 0,0:09:47.66,0:09:54.60,Default,,0000,0000,0000,,need. And we are making heavy use of that.\NAnd that's also why I'm here today on the Dialogue: 0,0:09:54.60,0:10:07.36,Default,,0000,0000,0000,,Wikimedia stage. One thing that\NWikidata doesn't do perfectly is timezone Dialogue: 0,0:10:07.36,0:10:15.64,Default,,0000,0000,0000,,information. That's why we're using the\Nopen street map data for this. There's in Dialogue: 0,0:10:15.64,0:10:23.09,Default,,0000,0000,0000,,Wikidata, three different time zone… or\Nways of specifying the time zone. UTC Dialogue: 0,0:10:23.09,0:10:29.52,Default,,0000,0000,0000,,offsets, some kind, of coarse, human\Nreadable naming like Central European Dialogue: 0,0:10:29.52,0:10:37.89,Default,,0000,0000,0000,,Summer Time, and then the actual IANA time\Nzone specifications like Europe/Berlin. Dialogue: 0,0:10:37.89,0:10:42.20,Default,,0000,0000,0000,,And that's the one we actually need\Nbecause they contain daylight saving time Dialogue: 0,0:10:42.20,0:10:47.27,Default,,0000,0000,0000,,transitions. And that is actually crucial\Nfor travel assistance, because you Dialogue: 0,0:10:47.27,0:10:52.81,Default,,0000,0000,0000,,can have a flight from, say, the US to\NEurope, at the night where there is Dialogue: 0,0:10:52.81,0:10:57.72,Default,,0000,0000,0000,,daylight saving time transition on one\Nend. And if we get that wrong, right, we Dialogue: 0,0:10:57.72,0:11:01.26,Default,,0000,0000,0000,,are off by one hour. And that could mean\Nyou miss your flight. So that we Dialogue: 0,0:11:01.26,0:11:07.12,Default,,0000,0000,0000,,need to get absolutely right. And\NWikidata there mixes the three timezone Dialogue: 0,0:11:07.12,0:11:16.86,Default,,0000,0000,0000,,variations. So that's why we fall back to\NOpenStreetMap there. Another area Dialogue: 0,0:11:16.86,0:11:23.42,Default,,0000,0000,0000,,that still needs work is vendor specific\Nstation identifiers. So there's a number Dialogue: 0,0:11:23.42,0:11:28.85,Default,,0000,0000,0000,,of train companies that have their own\Nnumeric identifier, or alphanumeric Dialogue: 0,0:11:28.85,0:11:34.87,Default,,0000,0000,0000,,identifiers, which you find, for example,\Nin barcodes of tickets. So that's our Dialogue: 0,0:11:34.87,0:11:39.28,Default,,0000,0000,0000,,way to actually find out where people are\Ntraveling. So that's something we are Dialogue: 0,0:11:39.28,0:11:47.43,Default,,0000,0000,0000,,trying to feed into Wikidata as we get our\Nhands on those identifiers. For airports, Dialogue: 0,0:11:47.43,0:11:51.42,Default,,0000,0000,0000,,that's easy because they are\Ninternationally standardized. For train Dialogue: 0,0:11:51.42,0:11:59.22,Default,,0000,0000,0000,,stations, that's a bit more messy. And\Nfinally, the dynamic data. That's again, Dialogue: 0,0:11:59.22,0:12:08.41,Default,,0000,0000,0000,,an area where we benefit from Google using\Ntheir monopoly. They wanted to have local Dialogue: 0,0:12:08.41,0:12:15.43,Default,,0000,0000,0000,,public transportation information in\NGoogle Maps. So they defined the GTFS Dialogue: 0,0:12:15.43,0:12:25.82,Default,,0000,0000,0000,,format, which is a way for local transport\Noperators to send their schedules to Dialogue: 0,0:12:25.82,0:12:31.33,Default,,0000,0000,0000,,Google. But most of the time, that is done\Nin a way that they basically publish this Dialogue: 0,0:12:31.33,0:12:40.30,Default,,0000,0000,0000,,as Open Data. And that way, all of us get\Naccess to it. And then there's Navitia, Dialogue: 0,0:12:40.30,0:12:46.17,Default,,0000,0000,0000,,which is a Free Software implementation of\Nlike a routing and journey query service Dialogue: 0,0:12:46.17,0:12:51.27,Default,,0000,0000,0000,,that consumes all of those Open Data\Nschedule information. And that then in Dialogue: 0,0:12:51.27,0:13:00.27,Default,,0000,0000,0000,,turn, we can use again to, yeah, find our\Ndeparture schedules, delays and that Dialogue: 0,0:13:00.27,0:13:06.76,Default,,0000,0000,0000,,kind of live information. Apple Wallet\Nalso has some kind of live updating Dialogue: 0,0:13:06.76,0:13:15.06,Default,,0000,0000,0000,,polling mechanism. But that is somewhat\Ndangerous because it leaks personal Dialogue: 0,0:13:15.06,0:13:21.50,Default,,0000,0000,0000,,identifiable information. So the,\Nbasically, a unique identifier for your Dialogue: 0,0:13:21.50,0:13:28.24,Default,,0000,0000,0000,,pass is sent out with the API request to\Nto pull an update. So that is basically Dialogue: 0,0:13:28.24,0:13:34.13,Default,,0000,0000,0000,,just a last resort mechanism if you have\Nnothing else. And then there's a bunch of Dialogue: 0,0:13:34.13,0:13:40.41,Default,,0000,0000,0000,,vendor specific, more or less proprietary\NAPIs that we could use. They are Dialogue: 0,0:13:40.41,0:13:46.01,Default,,0000,0000,0000,,unfortunately not often compatible with\NFree Software and Open Source, because, Dialogue: 0,0:13:46.01,0:13:50.52,Default,,0000,0000,0000,,they might require API keys that you're\Nnot allowed to share, or they have terms Dialogue: 0,0:13:50.52,0:13:54.54,Default,,0000,0000,0000,,and conditions that are simply\Nincompatible with what we are trying to Dialogue: 0,0:13:54.54,0:14:03.61,Default,,0000,0000,0000,,do. So for some, this works, but there's\Nstill some room for improvement in those Dialogue: 0,0:14:03.61,0:14:12.09,Default,,0000,0000,0000,,vendors' understanding the value of proper\NOpen Data access. OK, so that's the Dialogue: 0,0:14:12.09,0:14:23.48,Default,,0000,0000,0000,,theory, let's have a look at what we have\Nactually built for this. So there's two, Dialogue: 0,0:14:23.48,0:14:32.12,Default,,0000,0000,0000,,ya, backend components, so to say there is\Nthe extraction library that implements the Dialogue: 0,0:14:32.12,0:14:38.02,Default,,0000,0000,0000,,schema.org data model for flights,\Nfor trains, for hotels, for restaurants Dialogue: 0,0:14:38.02,0:14:49.23,Default,,0000,0000,0000,,and for events. It can do the structured\Ndata extraction. That might sound easy at Dialogue: 0,0:14:49.23,0:14:56.04,Default,,0000,0000,0000,,first, but it turns out that for some of\Nthe operators, doing proper JSON array Dialogue: 0,0:14:56.04,0:15:01.35,Default,,0000,0000,0000,,encoding is somewhat hard. So, I mean, you\Nneed to do a... need to have a comma in Dialogue: 0,0:15:01.35,0:15:09.02,Default,,0000,0000,0000,,between two objects and brackets around\Nit. Some of them struggle with that. So we Dialogue: 0,0:15:09.02,0:15:18.29,Default,,0000,0000,0000,,have to have lots of workarounds in, in\Nparsing the data we receive. Then we have Dialogue: 0,0:15:18.29,0:15:26.24,Default,,0000,0000,0000,,an unstructured extraction system that's\Nbasically small scripts per provider Dialogue: 0,0:15:26.24,0:15:33.47,Default,,0000,0000,0000,,or per operator that then, yeah, use\Nregular expressions or XPATH queries Dialogue: 0,0:15:33.47,0:15:40.12,Default,,0000,0000,0000,,depending on the input and turn that into\Nour data model. We currently, I think, Dialogue: 0,0:15:40.12,0:15:46.01,Default,,0000,0000,0000,,have 50, slightly more than 50 of those. I\Nknow that Apple has about 600, so that is Dialogue: 0,0:15:46.01,0:15:56.90,Default,,0000,0000,0000,,still one order of magnitude more. But\Nit's not impossible. Right. So I think we, Dialogue: 0,0:15:56.90,0:16:03.90,Default,,0000,0000,0000,,we have the means there with Free Software\Nto come to a similar result than Dialogue: 0,0:16:03.90,0:16:10.14,Default,,0000,0000,0000,,people that have an Apple or Google scale\Nbudget for this. The service coverage is Dialogue: 0,0:16:10.14,0:16:14.73,Default,,0000,0000,0000,,actually quite different. So, for Apple,\NI've seen their custom extractor. Dialogue: 0,0:16:14.73,0:16:20.84,Default,,0000,0000,0000,,So they have a lot of like US car rental\Nservices. We have somewhat more important Dialogue: 0,0:16:20.84,0:16:26.55,Default,,0000,0000,0000,,stuff like CCC tickets. So the Congress\Nticket is actually recognized and I Dialogue: 0,0:16:26.55,0:16:32.60,Default,,0000,0000,0000,,managed to get in with the app. What\Nthe expection engine also does is it Dialogue: 0,0:16:32.60,0:16:37.28,Default,,0000,0000,0000,,augments whatever we find in the input\Ndocuments by information we have on Dialogue: 0,0:16:37.28,0:16:43.64,Default,,0000,0000,0000,,Wikidata. So we usually have time zones,\Ncountries, geo coordinates, all that Dialogue: 0,0:16:43.64,0:16:51.99,Default,,0000,0000,0000,,useful stuff for then offering assistance\Nfeatures on top. And input formats is Dialogue: 0,0:16:51.99,0:16:58.20,Default,,0000,0000,0000,,basically everything I mentioned. The\Nusual stuff you're getting in an email Dialogue: 0,0:16:58.20,0:17:06.73,Default,,0000,0000,0000,,from a transport operator or any kind\Nof booking document. The second piece on Dialogue: 0,0:17:06.73,0:17:12.21,Default,,0000,0000,0000,,like, on backend components is the public\Ntransportation library. That's basically Dialogue: 0,0:17:12.21,0:17:19.71,Default,,0000,0000,0000,,our client API for Navitia mainly, but\Nalso for some of the proprietary Dialogue: 0,0:17:19.71,0:17:25.82,Default,,0000,0000,0000,,widespread backends like HAFAS. That's the\Nstuff Deutsche Bahn is using. And it can Dialogue: 0,0:17:25.82,0:17:31.45,Default,,0000,0000,0000,,aggregate the results from multiple\Nbackends. And if you're using Open Data in Dialogue: 0,0:17:31.45,0:17:36.64,Default,,0000,0000,0000,,the backend - {\i1}interference noise{\i0} - it\Npropagates the attribution information Dialogue: 0,0:17:36.64,0:17:44.20,Default,,0000,0000,0000,,correctly. So. And just a few days ago, it\Nalso gained support for querying train and Dialogue: 0,0:17:44.20,0:17:52.36,Default,,0000,0000,0000,,platform layouts or "Wagenstandsanzeiger"\Nin German so we can have all of that in Dialogue: 0,0:17:52.36,0:18:03.61,Default,,0000,0000,0000,,the app. And now of course there's the KDE\NItinerary app itself. So it has, oh… it's Dialogue: 0,0:18:03.61,0:18:09.94,Default,,0000,0000,0000,,very hard to read here. It's basically a\Ntimeline with the various booking Dialogue: 0,0:18:09.94,0:18:16.37,Default,,0000,0000,0000,,information you have grouped together by\Ntrip. It can insert the live weather Dialogue: 0,0:18:16.37,0:18:22.06,Default,,0000,0000,0000,,information. Again, that's online access,\Nso it's optional, but yeah, it's kind of Dialogue: 0,0:18:22.06,0:18:29.99,Default,,0000,0000,0000,,useful. And this is… you probably can't\Nread that. But that's my train to Leipzig Dialogue: 0,0:18:29.99,0:18:35.93,Default,,0000,0000,0000,,this morning and that's actually the\NCongress entry ticket. And the box at the Dialogue: 0,0:18:35.93,0:18:47.56,Default,,0000,0000,0000,,top is the collapsible group for my trip\Nto Leipzig for Congress. And it can Dialogue: 0,0:18:47.56,0:18:56.07,Default,,0000,0000,0000,,show the actual tickets and barcodes,\Nincluding Apple Wallet passes. So, if you Dialogue: 0,0:18:56.07,0:19:01.93,Default,,0000,0000,0000,,sometimes have a, like a manual inspection\Nat an airport where they don't scan your Dialogue: 0,0:19:01.93,0:19:07.77,Default,,0000,0000,0000,,boarding pass, but look at it, apparently\Nthat looks reasonable enough that you can Dialogue: 0,0:19:07.77,0:19:15.77,Default,,0000,0000,0000,,board an aircraft with it. At least, I\Nwasn't arrested so far. And then we have Dialogue: 0,0:19:15.77,0:19:22.11,Default,,0000,0000,0000,,one of my favorite features, also powered\Nby Wikidata. It's the power plug Dialogue: 0,0:19:22.11,0:19:27.76,Default,,0000,0000,0000,,incompatibility warning. {\i1}interference\Nnoise{\i0} - So, I mean, if you're traveling Dialogue: 0,0:19:27.76,0:19:32.89,Default,,0000,0000,0000,,to, say, the US, or UK, you're probably\Naware that they have like incompatible Dialogue: 0,0:19:32.89,0:19:38.73,Default,,0000,0000,0000,,power plugs. But there are some\Ncountries where this isn't – at least to Dialogue: 0,0:19:38.73,0:19:44.32,Default,,0000,0000,0000,,me, isn't that obvious, like Switzerland\Nor Italy, where only half of my power Dialogue: 0,0:19:44.32,0:19:49.93,Default,,0000,0000,0000,,plugs work. So this is the Italy example.\NIt tells me that my Schuko plugs won't Dialogue: 0,0:19:49.93,0:20:06.70,Default,,0000,0000,0000,,work, only my Europlugs and. {\i1}interference\Nnoise{\i0} - And the right one is, I Dialogue: 0,0:20:06.70,0:20:13.17,Default,,0000,0000,0000,,think for the U.K., where nothing is\Ncompatible. If you occasionally forget Dialogue: 0,0:20:13.17,0:20:20.81,Default,,0000,0000,0000,,your power plug convertor while traveling,\Nthat is super useful. And then, of course, Dialogue: 0,0:20:20.81,0:20:27.57,Default,,0000,0000,0000,,we have the integration with real\Ntime data. So we can show the delay Dialogue: 0,0:20:27.57,0:20:34.88,Default,,0000,0000,0000,,information and platform changes. The part\Nin the middle is the alternative Dialogue: 0,0:20:34.88,0:20:39.45,Default,,0000,0000,0000,,connection selection for trains. So\Nif you have a, like a train ticket that Dialogue: 0,0:20:39.45,0:20:46.10,Default,,0000,0000,0000,,isn't bound to a specific connection,\Nright, then the app lets you pick the one Dialogue: 0,0:20:46.10,0:20:49.94,Default,,0000,0000,0000,,you actually want to take. Or if you're\Nmissing a connection, you need to move to Dialogue: 0,0:20:49.94,0:20:55.96,Default,,0000,0000,0000,,a different train, you can do that right\Nin the app as well. The screenshot on the Dialogue: 0,0:20:55.96,0:21:02.28,Default,,0000,0000,0000,,right hand side is the, like your overall\Ntravel statistics. So if you're interested Dialogue: 0,0:21:02.28,0:21:08.53,Default,,0000,0000,0000,,in, like, seeing the carbon impact off of\Nall your trips and the year over year Dialogue: 0,0:21:08.53,0:21:15.77,Default,,0000,0000,0000,,changes, right, the app shows that to you.\NAnd I wasn't really successful, but that's Dialogue: 0,0:21:15.77,0:21:20.92,Default,,0000,0000,0000,,largely because the old data is\Nincomplete. So if you're interested in Dialogue: 0,0:21:20.92,0:21:27.04,Default,,0000,0000,0000,,that, right, since we have all the data,\Nthat can help you see if you're Dialogue: 0,0:21:27.04,0:21:34.16,Default,,0000,0000,0000,,actually on the right track there. And\Nthen to get data into that, we also have a Dialogue: 0,0:21:34.16,0:21:41.05,Default,,0000,0000,0000,,plugin for email clients. This one is for\Nfor KMail. So it basically then runs the Dialogue: 0,0:21:41.05,0:21:45.06,Default,,0000,0000,0000,,extraction on the email you're\Ncurrently looking at and it shows you a Dialogue: 0,0:21:45.06,0:21:52.69,Default,,0000,0000,0000,,summary of what's in there. In this case,\Nmy train to Leipzig this morning, Dialogue: 0,0:21:52.69,0:21:57.30,Default,,0000,0000,0000,,including the option to add that to the\Ncalendar or send it to the app on the Dialogue: 0,0:21:57.30,0:22:06.09,Default,,0000,0000,0000,,phone. We also have the browser extension.\NSo this is the website of the yearly KDE Dialogue: 0,0:22:06.09,0:22:10.84,Default,,0000,0000,0000,,conference, which has the schema.org\Nannotations on it. And the browser Dialogue: 0,0:22:10.84,0:22:18.17,Default,,0000,0000,0000,,extension recognizes that. And again,\Noffers me to to add that either to my Dialogue: 0,0:22:18.17,0:22:27.39,Default,,0000,0000,0000,,calendar or to the itinerary app. And that\Nalso works on many restaurant websites or Dialogue: 0,0:22:27.39,0:22:33.76,Default,,0000,0000,0000,,event websites. They have those\Nannotations on the website for the Google Dialogue: 0,0:22:33.76,0:22:41.08,Default,,0000,0000,0000,,search. So again, we benefit a bit from\Nthe, Google {\i1}incomprehensible{\i0}. OK, then Dialogue: 0,0:22:41.08,0:22:47.16,Default,,0000,0000,0000,,we get to the more experimental stuff that\Nbasically just was finished in the last Dialogue: 0,0:22:47.16,0:22:54.85,Default,,0000,0000,0000,,couple of days, that we haven't shown\Nanywhere else publicly yet. The first one Dialogue: 0,0:22:54.85,0:23:03.26,Default,,0000,0000,0000,,is, and that's a bit better to read, at\Nleast, if you saw the timeline earlier, Dialogue: 0,0:23:03.26,0:23:08.13,Default,,0000,0000,0000,,right, it had my train booking to Leipzig\Nand then the Congress ticket. But that Dialogue: 0,0:23:08.13,0:23:14.06,Default,,0000,0000,0000,,still leaves two gaps, right. I need to\Nget from home to the station in Berlin, Dialogue: 0,0:23:14.06,0:23:19.84,Default,,0000,0000,0000,,and I need to get from the station in\NLeipzig to Congress. And what we have now Dialogue: 0,0:23:19.84,0:23:24.100,Default,,0000,0000,0000,,is a way for the app to automatically\Nrecognize those gaps and fill them with Dialogue: 0,0:23:24.100,0:23:31.24,Default,,0000,0000,0000,,suggestions on what kind of local\Ntransport you could take. So here the one Dialogue: 0,0:23:31.24,0:23:41.56,Default,,0000,0000,0000,,for Leipzig to Congress is expanded\Nand shows the tram. That still needs Dialogue: 0,0:23:41.56,0:23:47.77,Default,,0000,0000,0000,,some work to do live tracking so that\Nit accounts for delays and changes your Dialogue: 0,0:23:47.77,0:23:53.40,Default,,0000,0000,0000,,alarm clock in the morning if there's\Ndelays on that trip. But we have Dialogue: 0,0:23:53.40,0:23:59.12,Default,,0000,0000,0000,,all the building blocks to make the\Nwhole thing much more smart in this Dialogue: 0,0:23:59.12,0:24:09.03,Default,,0000,0000,0000,,area now. And that, I think was literally\Ndone yesterday. So that's why the graphics Dialogue: 0,0:24:09.03,0:24:19.86,Default,,0000,0000,0000,,still are very basic. That's the train\Nlayout, coach layout display for Dialogue: 0,0:24:19.86,0:24:26.63,Default,,0000,0000,0000,,your trip. So that you know where your\Nreserved seat on the train can actually be Dialogue: 0,0:24:26.63,0:24:38.44,Default,,0000,0000,0000,,found. Then, I only showed the KMail\Nplugin so far. We also have a work-in- Dialogue: 0,0:24:38.44,0:24:43.41,Default,,0000,0000,0000,,progress Thunderbird integration, which is\Nprobably the much more widespread email Dialogue: 0,0:24:43.41,0:24:51.52,Default,,0000,0000,0000,,client. Featurewise, more or less the same\NI showed for KMail, so it scans the email Dialogue: 0,0:24:51.52,0:24:57.48,Default,,0000,0000,0000,,and displays your summary and offers you\Nto put that into the app or, possibly Dialogue: 0,0:24:57.48,0:25:04.08,Default,,0000,0000,0000,,later on also into the calendar.\NThis one is even more experimental. I can Dialogue: 0,0:25:04.08,0:25:08.77,Default,,0000,0000,0000,,only show you a screenshot of Web\NInspector proving that it managed to Dialogue: 0,0:25:08.77,0:25:17.06,Default,,0000,0000,0000,,extract something. That's the integration\Nwith Nextcloud. I hope we'll have an Dialogue: 0,0:25:17.06,0:25:24.93,Default,,0000,0000,0000,,actual working prototype for this in\NJanuary then. Those two things are, of Dialogue: 0,0:25:24.93,0:25:32.33,Default,,0000,0000,0000,,course, important for you to even get\Nto the data, the booking data, that then Dialogue: 0,0:25:32.33,0:25:45.24,Default,,0000,0000,0000,,the app or other tools you built on top\Ncan consume. OK, so where to get this Dialogue: 0,0:25:45.24,0:25:55.47,Default,,0000,0000,0000,,from? There's the wiki link up there. The\Napp is currently not yet in the Play Store Dialogue: 0,0:25:55.47,0:26:00.92,Default,,0000,0000,0000,,or in the F-Droid master repository. We\Nhave an F-Droid nightly build repository. Dialogue: 0,0:26:00.92,0:26:09.23,Default,,0000,0000,0000,,I hope that within the next month we'll\Nget actual official releases in the easier Dialogue: 0,0:26:09.23,0:26:16.28,Default,,0000,0000,0000,,to reach stores than what we have\Nright now. If you are interested in Dialogue: 0,0:26:16.28,0:26:23.75,Default,,0000,0000,0000,,helping with that, there's some stuff in\NWikidata where improvement on the data Dialogue: 0,0:26:23.75,0:26:33.25,Default,,0000,0000,0000,,directly benefits this work, and that is\Nspecifically around train stations. I Dialogue: 0,0:26:33.25,0:26:36.70,Default,,0000,0000,0000,,think in Germany, last time I checked, we\Nstill had a few hundred train stations Dialogue: 0,0:26:36.70,0:26:45.46,Default,,0000,0000,0000,,that didn't have geo coordinates or even a\Nhuman readable label. So that's something Dialogue: 0,0:26:45.46,0:26:50.68,Default,,0000,0000,0000,,to look at. Vendor-specific or even the\Nmore or less standard train station Dialogue: 0,0:26:50.68,0:26:56.14,Default,,0000,0000,0000,,identifiers is something to look at. So\NUIC or IBNR codes for train stations, Dialogue: 0,0:26:56.14,0:27:03.94,Default,,0000,0000,0000,,that helps a lot. Yeah. And then, we kind\Nof need test data for the extractions. So, Dialogue: 0,0:27:03.94,0:27:11.25,Default,,0000,0000,0000,,forget everything I said about privacy. If\Nyou have any kind of booking documents or Dialogue: 0,0:27:11.25,0:27:17.95,Default,,0000,0000,0000,,emails you want to donate to support this\Nand get the providers you're using Dialogue: 0,0:27:17.95,0:27:23.48,Default,,0000,0000,0000,,supported in in the extraction engine,\Ntalk to me. That would be extremely Dialogue: 0,0:27:23.48,0:27:30.77,Default,,0000,0000,0000,,useful. Yeah, that's it. Thank you. Dialogue: 0,0:27:30.77,0:27:33.17,Default,,0000,0000,0000,,{\i1}Applause{\i0} Dialogue: 0,0:27:33.17,0:27:37.31,Default,,0000,0000,0000,,Herald: Hello, hello? Yeah. That's a very\Nimpressive project, I think, do we have Dialogue: 0,0:27:37.31,0:27:43.87,Default,,0000,0000,0000,,questions then I'll hand you my\Nmicrophone. Yes. Dialogue: 0,0:27:43.87,0:27:51.44,Default,,0000,0000,0000,,Q: Would it be possible to extract\Nplatform lift data for train stations? Dialogue: 0,0:27:51.44,0:27:57.18,Default,,0000,0000,0000,,A: Sorry? Platform….\NQ: Platform lift data. Dialogue: 0,0:27:57.18,0:28:08.30,Default,,0000,0000,0000,,A: Oh, I think Deutsche Bahn has an Open\NData API for the live status of lifts. Dialogue: 0,0:28:08.30,0:28:15.74,Default,,0000,0000,0000,,That would, of course, in theory be\Npossible. What we are trying to do is to Dialogue: 0,0:28:15.74,0:28:21.82,Default,,0000,0000,0000,,be generic enough so that this might not\Nbe applicable in just one country, Dialogue: 0,0:28:21.82,0:28:29.22,Default,,0000,0000,0000,,although it is very European focused\Nbecause most of the team is there. But Dialogue: 0,0:28:29.22,0:28:33.77,Default,,0000,0000,0000,,lifts is something that is easy enough to\Ngeneralize in a data model, right? Its Dialogue: 0,0:28:33.77,0:28:39.14,Default,,0000,0000,0000,,location on the platform, and, are they\Nworking or not? So, yeah, that that would Dialogue: 0,0:28:39.14,0:28:49.06,Default,,0000,0000,0000,,be a nice addition. That goes into the\Nentire direction of, ya, indoor navigation Dialogue: 0,0:28:49.06,0:28:54.53,Default,,0000,0000,0000,,or navigation around larger train stations\Nand airports. So that's probably something Dialogue: 0,0:28:54.53,0:29:00.62,Default,,0000,0000,0000,,where we could use a better overall\Ndisplay with the OpenStreetMap data and Dialogue: 0,0:29:00.62,0:29:07.46,Default,,0000,0000,0000,,then augment that with, like the, where\Nexactly is your train stopping and in Dialogue: 0,0:29:07.46,0:29:11.56,Default,,0000,0000,0000,,which coach is your seat, and then have\Nthe lift data so we can basically guide Dialogue: 0,0:29:11.56,0:29:17.24,Default,,0000,0000,0000,,you to the right place in a better\Nway. Yeah. Dialogue: 0,0:29:17.24,0:29:25.87,Default,,0000,0000,0000,,Herald: Any more questions? Yes.\NQ: It's the mobile app written in Qt as Dialogue: 0,0:29:25.87,0:29:31.08,Default,,0000,0000,0000,,well?\NA: Yes, most of this is C++ code, because Dialogue: 0,0:29:31.08,0:29:39.39,Default,,0000,0000,0000,,that's what we use at KDE. The mobile\Nclient as well. There's a bit of Java for Dialogue: 0,0:29:39.39,0:29:45.90,Default,,0000,0000,0000,,platform integration with android. I don't\Nthink anyone has ever tried to build it on Dialogue: 0,0:29:45.90,0:29:52.88,Default,,0000,0000,0000,,iOS, but of course it works on Linux based\Nmobile platforms as well, thanks to Qt and Dialogue: 0,0:29:52.88,0:29:57.16,Default,,0000,0000,0000,,C++, yeah.\NQ: So you mostly talked about the mobile Dialogue: 0,0:29:57.16,0:30:02.47,Default,,0000,0000,0000,,app so far, which is understandable, but\Nas it's a QML application does it also run Dialogue: 0,0:30:02.47,0:30:08.40,Default,,0000,0000,0000,,on desktop? And, a second question, how\Ndo, how do all the plugins and the Dialogue: 0,0:30:08.40,0:30:14.84,Default,,0000,0000,0000,,different instances of the app share their\Ndata? Dialogue: 0,0:30:14.84,0:30:22.24,Default,,0000,0000,0000,,A: So, yes, the app runs on desktop. I was\Ntrying to see if I can actually start it Dialogue: 0,0:30:22.24,0:30:31.49,Default,,0000,0000,0000,,here. I'm not sure on which screen it will\Nend up. That's where we do most of the Dialogue: 0,0:30:31.49,0:30:42.81,Default,,0000,0000,0000,,development. Let me see if I can move it\Nover. Oh, thank you. And I need to find my Dialogue: 0,0:30:42.81,0:30:56.95,Default,,0000,0000,0000,,mouse cursor on the two screens. Uh. I\Nthink I need to end the presentation Dialogue: 0,0:30:56.95,0:31:10.58,Default,,0000,0000,0000,,first, but, yeah, short answer, of course.\NThere we go. And let me switch to… to… Dialogue: 0,0:31:10.58,0:31:19.43,Default,,0000,0000,0000,,yeah, so that's it, running on\Ndesktop. It has a mobile UI there. That Dialogue: 0,0:31:19.43,0:31:27.61,Default,,0000,0000,0000,,could, of course, be extended to be more\Nuseful on the desktop as well. And in Dialogue: 0,0:31:27.61,0:31:33.54,Default,,0000,0000,0000,,terms of storage, that is currently\Ninternal to the app, there is no second Dialogue: 0,0:31:33.54,0:31:42.03,Default,,0000,0000,0000,,process accessing the actual data storage.\NThat would just unnecessarily complicate Dialogue: 0,0:31:42.03,0:31:47.57,Default,,0000,0000,0000,,it for now. But if there is a use for\Nthat, yeah, we'll need to see. Dialogue: 0,0:31:47.57,0:31:53.70,Default,,0000,0000,0000,,Q: Yeah, but, but, but there was an\Noption, in the e-mail plugin, for example, Dialogue: 0,0:31:53.70,0:31:57.75,Default,,0000,0000,0000,,to send it to the app. Can I then only\Nsend it to my local app and not to the Dialogue: 0,0:31:57.75,0:32:02.74,Default,,0000,0000,0000,,mobile app?\NA: Oh, the central app, that's using Dialogue: 0,0:32:02.74,0:32:08.06,Default,,0000,0000,0000,,KDE Connect. That's an integration\Nsoftware that allows you to remote control Dialogue: 0,0:32:08.06,0:32:11.36,Default,,0000,0000,0000,,your phone from the desktop. So that's\Nbasically bundling up all the information Dialogue: 0,0:32:11.36,0:32:17.05,Default,,0000,0000,0000,,and sends it to the app on the phone. And…\Nor it can import it locally, so. Dialogue: 0,0:32:17.05,0:32:26.82,Default,,0000,0000,0000,,Herald: OK, do we have other questions?\NNo, we don't have time? So then, thank you Dialogue: 0,0:32:26.82,0:32:32.05,Default,,0000,0000,0000,,very much, Volker, maybe you can tell\Npeople where they can find you if they Dialogue: 0,0:32:32.05,0:32:34.24,Default,,0000,0000,0000,,have anything more they want to talk\Nabout. But…. Dialogue: 0,0:32:34.24,0:32:41.22,Default,,0000,0000,0000,,A: Yeah, I mean, there's my email\Naddress and otherwise I'll be around all Dialogue: 0,0:32:41.22,0:32:44.67,Default,,0000,0000,0000,,day, all four days.\NHerald: Around where? Dialogue: 0,0:32:44.67,0:32:48.63,Default,,0000,0000,0000,,Volker Krause: Probably somewhere. So it\Njust is a bit tricky. Dialogue: 0,0:32:48.63,0:32:52.65,Default,,0000,0000,0000,,Herald: …catch him before he runs away,\Nthen! All right. So give a round of Dialogue: 0,0:32:52.65,0:32:55.10,Default,,0000,0000,0000,,applause again and thank you, Volker! Dialogue: 0,0:32:55.10,0:32:58.80,Default,,0000,0000,0000,,{\i1}Applause{\i0} Dialogue: 0,0:32:58.80,0:33:06.56,Default,,0000,0000,0000,,{\i1}postroll music{\i0} Dialogue: 0,0:33:06.56,0:33:26.00,Default,,0000,0000,0000,,Subtitles created by c3subtitles.de\Nin the year 2021. Join, and help us!