Telegram Bot For Navigation
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 637 | |
Author | ||
Contributors | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/52536 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 202159 / 637
1
2
7
8
10
11
12
17
29
33
35
38
40
44
48
50
54
59
63
65
85
87
91
95
97
105
108
114
115
119
120
122
126
127
129
130
133
137
140
142
143
147
149
151
156
159
160
161
168
169
170
175
176
177
178
179
182
183
184
187
189
191
193
197
198
204
206
209
212
220
222
224
227
230
233
235
238
242
243
245
247
252
253
255
258
260
261
262
263
264
265
272
273
278
281
282
285
286
287
288
289
294
295
296
302
304
305
308
310
316
320
323
324
328
330
332
335
338
342
343
347
348
349
350
351
360
361
365
368
370
372
374
377
378
380
381
382
383
386
390
392
395
398
402
405
407
408
409
414
419
420
422
425
427
430
439
451
452
453
458
460
461
464
468
470
471
472
473
475
478
485
486
487
491
492
493
495
496
498
509
510
511
512
516
532
534
538
543
548
550
551
554
556
557
559
563
568
570
572
574
575
577
583
585
588
591
593
595
597
601
602
603
604
605
606
607
610
611
617
627
633
634
00:00
Neighbourhood (graph theory)AreaHill differential equationAreaTerm (mathematics)BuildingNatural numberAmenable groupSpacetimeDialectInternet forumData storage device40 (number)Machine visionInformation securityPolarization (waves)Raw image formatChainComputer animation
01:43
Archaeological field surveyLevel (video gaming)Amenable groupSinc functionShared memoryOffice suiteForcing (mathematics)Row (database)
02:05
Text editorAreaProcess (computing)PlastikkarteDigital photographyLevel (video gaming)Revision controlMappingWhiteboardAreaDirectory serviceRobotString (computer science)Heegaard splittingTesselationSatelliteGroup actionOnline helpWeb 2.0Computer configurationPlastikkarteMobile appInteractive televisionUser interfaceOpen setComputer iconAmenable groupBitReverse engineeringLink (knot theory)DialectAddress spaceMedical imagingWebsiteSet (mathematics)Process (computing)outputType theoryInterface (computing)TunisError messageBit rateCASE <Informatik>TorusOffice suiteDressing (medical)Inheritance (object-oriented programming)Figurate numberGoodness of fitDecision theoryBoss CorporationRule of inferenceOrder (biology)Series (mathematics)Android (robot)Software testingNatural languageFlow separationForcing (mathematics)FrequencyMeeting/Interview
09:10
Attribute grammarEmailDigital filterKey (cryptography)Point (geometry)Text editorGame theorySpacetimeFile formatMiniDiscGreen's functionDigital photographyLink (knot theory)AreaCASE <Informatik>Descriptive statisticsInstance (computer science)Raw image formatGraph coloringMessage passingForcing (mathematics)WordNatural numberState of matterSurgeryGroup actionWhiteboardProcess (computing)Boss CorporationOrder (biology)Perturbation theoryForm (programming)Physical lawForestQuicksortPurchasingWeightGame controllerShared memoryMathematicsOpen sourcePoint (geometry)Level (video gaming)Amenable groupText editorAttribute grammarNear-ringRobotOpen setType theoryUniform resource locatorBuildingInformationPopulation densityElectronic mailing listComputer animation
13:23
DatabaseDigital photographyTexture mappingDew pointVirtual machineArchaeological field surveyOpen setCodeFacebookInfinityAreaGame theoryNetwork topologyForcing (mathematics)Food energyMeasurementDatabaseFehlererkennungDecision theoryAddress spaceAverageRow (database)CASE <Informatik>Civil engineeringMonster groupProcess (computing)Multiplication signEqualiser (mathematics)Shared memoryRight angleResultant1 (number)Source codeOffice suiteAdditionQuicksortRobotBlock (periodic table)Open sourceOnline helpCore dumpRevision controlGroup actionHypermediaMappingAmenable groupInterface (computing)Virtual machineInternet forumMereologyDialectPower (physics)Menu (computing)WritingDigital photographyInformationBuildingArchaeological field surveyAuthorizationMedical imagingFacebookCirclePlanningClosed setMeeting/Interview
20:30
SoftwareCodeInformationRobotComputer iconMultiplication signShape (magazine)Area
21:25
Element (mathematics)Order (biology)CuboidRing (mathematics)Goodness of fitComputer animationMeeting/Interview
22:22
DatabaseFile formatWhiteboardExpert systemInformationMeeting/Interview
23:10
InformationUser interfaceMeeting/Interview
23:33
User interfaceAreaMobile appMeeting/Interview
23:56
Element (mathematics)Computer animation
Transcript: English(auto-generated)
00:07
Hello, I'm Yasveev from LID. I'm not very far from my area, which is Russian term for residential area that is usually separated from other regions with wide roads or natural features like parks and rivers, which is very small.
00:31
You could walk across in like 10 minutes, and very densely built up, because my residential area has around 40 buildings, apartment buildings, 10 to 25 stores high.
00:49
So having this dense area is pretty interesting community wise, but it's also interesting in terms of commercial activities, because almost every building here has a separate floor dedicated to commercial spaces.
01:11
And there are three or four shopping centers in the area. So when I started living here, and even
01:21
after two years of living in the area, I still didn't know half of the shops here in the world. And that was frustrating, because I'm a mapper, so my urge is just to map everything, to help other people find, discover new shops and amenities.
01:47
But I didn't know how. Like, since I'm from Opel Stichna, I could survey these shops and amenities in Opel Stichna, so people would, for example, map me and find these shops.
02:07
It's not a perfect solution, because there are so many shops, they will just overlap on another, so you won't discover anything. And mapping Opel Stichna, well, Opel Stichna has been around for 16 years, but it goes to making a map, creating a map.
02:28
Adding new venues is very simple, straightforward, but keeping the map up to date, that is still virtually impossible. I could make an interactive web map, somewhere on the web, with markers,
02:44
with some discovery features, with maybe editor, that might be better, but no. Because people know my website, people wouldn't know my website. I would somehow make it known. And when you need to use it, you will have to not forget it.
03:07
And also, when you need it, it's not usually at home, on the desktop. All that you will have with you is a mobile phone, so you will need to open it on a phone, and it will need to be comfortable to use.
03:24
So many ifs, none of the options are great, so I didn't know how to map everything, so I didn't. Until last December, when in one of the Telegram groups for my area, I
03:47
noticed a link to Telegram bot, which was basically a directory of shops and amenities. You, for example, clicked shops, and then clothes, and you got all the clothes shops in your area.
04:07
Well, not much, because the bot had very few data, little data, and it was very rough, basically a draft version. But when I saw it, it was a major breakthrough for me. I suddenly understood that what I wanted could have been done.
04:32
I suddenly understood the whole process that I needed to do, how my map for an area would look, how it would be kept up to date, everything.
04:48
I suddenly knew I had to make a Telegram bot. Basically, what I learned is that to make some public tool, you need to use the same medium as public uses.
05:03
If everyone in your area are in Telegram, then you make your app inside Telegram. You do not make them install anything or remember anything. It's right up there. So, a Telegram bot. It's a very peculiar user interface. Basically, all you can do is send some words, receive some
05:32
words, send pictures, receive pictures, and for a Telegram bot, you also can make some buttons to use it to click on.
05:41
And that's all. There is nothing you can drag, no markers, no JavaScript, nothing. Just sending and receiving text and images. So, how do you make a mapper there? Well, given the input box, the obvious thought is to make it search for things.
06:05
Like, you enter pharmacy, and you get a list of pharmacies. Basically, what I made was a geocoder. Which is a bit funny, because last year it was when I was talking about reverse geocoder, and now I've got the forward one.
06:21
So, we got all the keyboards, we got a list of pharmacies, you click on one, and you get a card for the pharmacy with all the data, like open hours, phones, comments maybe. I couldn't help but stitch some map tiles together and place a marker, but most people actually do not understand maps.
06:47
So, how do you work with it? Well, I also add two photos. One how the venue looks from the street, so you're not lost, and one how it looks inside, so you show you are inside the venue.
07:05
And the buttons. Making a telly on board has made me reconsider emoji. I didn't think they were useful. They don't look serious, but when in your interface all you have is text, then emojis are a great replacement for icons.
07:31
Basically, emoji are a set of icons everybody can use in text. If you have buttons with a string, you have buttons with an icon in the string. It's great. Emojis are great.
07:46
On the street, I often am asked where is some building, because with this dense built-up area, addressing is not obvious. We have a street splitting two different regions.
08:05
So, to remedy that, I took a piece of satellite imagery, drawn addresses and labels on top of it, and added it to Telegram bot. So, with just one click, you have a map of every app which you can use for navigation. And
08:28
also, which is the thing I'm most proud of, I believe, is I surveyed every entrance in the area. And with my bot, now you can type an address and type in a parking number, and it will not only show the entrance
08:50
you need to use with its photo and location, but also it will tell you which floor you need to go on the elevator. So, yeah, this is a pretty great bot. It just needs one thing to function which I didn't have. And that is data. When do you get data in that amount?
09:14
OpenSeedMap had like a couple dozen subjects at the time, and there is no other source. You have to survey it by yourself.
09:26
And to start, maybe you need to drop some points on the map for buildings, for entrances, and to do that, I used, oh, not your solution, one of the open source map users, U-Map, mainly.
09:41
And in there, it seems pretty simple. You just click every marker, you place it on the map, you type some name, you type some attributes, save, add next marker, and so on. And so on, so on, and I got so tired of it just after a couple of dozen points. Because clicking, clicking, clicking, moving your mouse around, it's not very comfortable.
10:10
And with the density of points, just everything overlaps anything. And it's not just specific to your map. Every point editor on the
10:22
web or on the desktop, like QGIS, like GeoJSON.io, they're all complex, hard to use, when you need just one simple thing. But since I was already coding, why not make other two? So I made a GeoJSON point editor. And with that, adding points becomes fun.
10:47
Just open it, double click to add a point, click a button to delete it, to add attributes to just use a text area. Where you can write a plain text, name, space, something. And you can use it to copy
11:02
and paste attributes from one point to another. And basically, that's all. And I exported it to GeoJSON. It's very fun using this simple editor with great user experience. And I used it to add all buildings, all 73, I believe, entrances in my
11:25
area, and around 100 shops and amenities that I took photos. That was a great start. But then, you cannot get much info on shops and amenities around you without actually going out and surveying them.
11:47
So the next step is surveying. Going outside. And I cannot take my amazing point editor outside. All I have on the street is my phone. And what's else on my phone? My telegram bot. So I added, obviously, an editor to the telegram bot.
12:11
It sounds simple. Just there is a button, add new amenity. When I'm near one, I just type it, type its name, send its location.
12:23
Because in telegram you can send location to the bot. And I was pleasantly surprised that Android phones determine your locations and buildings pretty accurately. It was very handy when surveying shopping centers.
12:42
So yeah, you invent some keywords and fill the long list of attributes for a menu. Starting from description, comments, open hours, links, phones, its address, its floor, and so on and so on.
13:19
And on the phone, it's pretty fun. You just type, type, type, type, type, then open
13:24
a camera, make a photo, make a photo, go outside from inside, send it to the bot. Click save. And the menu is already in the database. You can forget about it because it's already there. And this is very important. Because when you have two step process, you basically make a photo of everything, then you have a thousand photos.
13:52
And you come home and these amount of photos waits on you until you sit down and process it one by one.
14:02
And it will be very tiring because of the sheer amount of photos, sheer amount of work. So if you can reduce two step process to one step, do it. It is very, very important. Otherwise, you get tired. And just looking around, surveying is fun. Just why there are so many mappers and opposite mappers and mapping is fun.
14:27
And processing data is not. So I surveyed 60 to 100 shops and amenities a day. Why so many? Because every day I came back
14:44
and I looked at my notes done during surveying and improved all the little things that bother me when editing. For example, entering HTTPS colon slash slash on a phone is hard. So I can make a machine do it.
15:04
Or instead of entering an address, I could just choose from a few options. So I polished every small thing. So the next day I collected things faster and faster. Because never make a human do things that a machine can do. Always think how you can improve user experience.
15:27
Because it can take five minutes of coding, but it can slash half an hour. Sorry. In the past week I have surveyed roughly 400 shops and amenities. And that's a lot.
15:45
If I knew there were so many at the start, I'm not sure I would have started this mode. But now the work is almost done. I have left roughly 100 in one of the shopping centers. And that's my plan for the next week. It will take a day, maybe two, I hope.
16:06
And the bot is virtually done. And it enjoys removing ten users a day. Ten. Because, why is that? It's public too. Meant to be used by everybody in the area and guests from other regions.
16:28
The issue is with marketing. Writing a bot is not enough. Or writing documentation, surveying the area. Again, not enough. Because people need to know about your software if you're making it not for a close circle of people who know each other, but for everybody.
16:49
You have to market it. Right now I've published info about the bot only in a couple of telegram groups. So roughly 300 people know about it.
17:01
And I plan more. I plan to contact major media in Belarus so that I get more people. And maybe distributing spreads of flyers around the area. Because I need users. Because having users means more eyes.
17:23
You may then find some core moderators to keep their database up to date. Because there's no sense in having an up-to-date database if people are not using it.
17:42
So, first step is about open source. And with that comes the question. In this thing, open source, can I install it for my built-up area? And of course, yes, you can. Everything I was talking about is open source.
18:03
There's just one small thing to overcome. The bot, all the strings, and all the documentation. There are lots of documentation I spent nearly a week on writing. They are all in Russian. So you either understand Russian, or you work with me. Like, write me.
18:23
To maybe speed up its utilization and speed up its installation. While you're surveying your area, I will be translating this. But yeah, it's open source. Open source is great.
18:40
Because right now, all you need to have are an idea and time. When you have a bot, everything else is simple. Like, all the building blocks are there. There was this great Telegram bot library, iOgram, thanks to the authors.
19:02
There was a pillow for image processing, there was a SQLite, which is a great database, the version that it looks like. And I just had to pull these blocks together, and I got my Telegram bot. That is awesome. And if you have ideas, and or if you have time, help make more great things. Just code.
19:32
So, to reiterate the ideas of this talk. First, and most important, when making a public tool, use the same medium as your target audience uses.
19:46
It's better to sell ice cream on a beach than at a museum. If everybody is on telegram, do it in telegram. If everybody is on Facebook, Facebook bot it is.
20:01
Then, don't make human do things that the machine can do. If you can pass part of the load from human to backend or frontend, do it. Because human resources are limited, machine power is infinite.
20:22
Emoji are great for user interface, because, well, for textual interfaces they replace icons. That's very important, because after a time people won't read your words, they will just look at icons. And coding is much less than half of a job.
20:43
You also have to collect data to write documentation to market your software. And that will take a lot more time. But the great thing about it is it can be parallelized and it can be postponed. So, yeah.
21:02
So, do great things and thank you for listening. I'm Ilya, I'll leave it right now if you want the same bot. Goodbye.
21:41
How many questions? Yeah, yeah, yeah, yeah. I hit the five star hand. Oh, yeah. Good. So, yeah. Because it's fascinating. Yeah, a lot of people are interested and are so much happy about your presentation.
22:03
Very nice. Thank you very much. Yeah, issues from UMAP and other stuff. Yeah, just a quick question. That is, where does the data go? Can you tell us something about the data?
22:21
Yeah, where does the data go? So, right now it's all contained. There's nothing related to OpenStreetMap or anything. But the format is compatible to OpenStreetMap. So, it is possible to import the data from OSM and to upload it back.
22:40
It just, I haven't developed any, like, finished tools to do that. But you can use OSM conflator and overpass for importing and exporting. But, yeah, so technically it is possible. It is all compatible to OpenStreetMap.
23:00
But right now this board is made for serving by yourself and storing your data in your own database. Yeah, you told us about your motivation. But I still want to ask you what pushed you to actually do this. Because you are putting a lot of information in the community and for yourself and for everyone.
23:22
Why did you decide to choose Telegram? Of course, yeah, maybe the people in your community use Telegram most. Because that is why so. But you can just tell us something again. Well, as I said in the talk, when you make something for the public, use the medium that public uses. And virtually everybody in my area is using Telegram.
23:44
So, Telegram is great not because it has great user interface or anything. But when you make your app inside it, that means people...