📜 ⬆️ ⬇️

Is there any powder in the old dog? Hackathon Radio Canada 2018 (Part two - combat readiness)

This is the second part of my story (sincerely thought that the last).

The first part is here .
The third part


image
')
So, formally the team is formed. Although no one else knows. The purpose of the project is not defined. Radio Canada promises to provide an API a week before the event, so that participants have some time to get acquainted.

As a person with a certain experience in various projects, I understood from the very beginning that writing any working prototype in a couple of days is not an easy task. Considering that the team consists of participants with uncertain skills and experience in various languages ​​and systems and who have never worked together before, I understood that the probability of creating anything working at all is not very real.

During my attempts to organize a meeting of the whole team before the hackathon began, I talked first with Asterisk, and then with Plato, about what I had and, as it turned out, they had absolutely reasonable doubts about the success of the event.

At this stage, we agreed that our goal is not victory, but participation is time.
We want to get a working prototype that will not be ashamed to show each other, well, or Zvezdochka with Mercury in college is two.

To achieve point two, we need to create something minimally satisfying the conditions of the hackathon.

And the conditions, if you remember the following:


Idea for the project
I do not know what ideas arise in your head. But I have always had a chain: a lot of content — received — sent to AI for analysis — received analysis results — visualized. I twisted it this way and that. More so than that, since the main task is just to do something that will work, and not create something impressive, excuse me. Total it turned out that we will have some content analyzed by AI, which for some reason we must somehow visualize.

It is worth noting that by going to one of the main pages of Radio Canada, we discovered one remarkable fact - they do not have a Search Line!

image

From now on, it all came together. All agreed that we would do some kind of search string.

And everything would be great if we didn’t have to stick the AI ​​somewhere, which we don’t really need for the search. We agreed that we would take some kind of audio (perhaps pick it out from the video) - send it for recognition in the AI, we will add the result to the database, and only then do a search on the database by text (which was recognized by the AI? ;-) ), which will allow us to talk about meeting the requirements of the hackathon.

Training
The asterisk directly stated that by and large, the fact that she signed up for this was a big step. Let not a favor, but, let's say, definitely an adventure. On the one hand, she will do her best during the hackathon, if she is more or less clear what to do. But, on the other hand, it does not promise that she will have time to learn what clouds, Azure, AI, and other things are good to know before getting involved in a fight.

She also conveyed from Mercury that everything is normal, but there is no time. So - let's meet at the hackathon!

Phaeton on the link with Asterisk did not come out regularly, constantly promising something indistinctly, but in fact it was also clear that the person is busy with his own business and God forbid that he be freed to the hackathon.

Plato also said that he did not have much time. But he, like me, understood how important it was to approach the event as prepared as possible. So we both signed up for Azure to play around a bit. I have had some experience with AWS , but the keyword is “small.” I'm just more familiar with AWS terminology, I understand that there is EC2, S3, Route53, Lambda, etc. Plus, there is a security system with roles, keys, groups, subnets and other buns. So, when I entered Azure Dashboard, it seemed to me to be quite simple and straightforward (but it was worth exploring deeper and longer anyway).

As I understand it, Plato, for his part, did his "homework" by 5 points. He was primarily interested in Azure Cognitive Services and the ability to create and train his neural network ( Machine Learning Studio ).

Total a week before the event, we met with Plato only once, just for a couple of hours. He tried to send a curl (REST API) request to an Azure Speech-to-text service using Python. He encountered several obstacles: the REST API accepts audio chunks of not more than 15 seconds, with the wrong combination of parameters (Recognition mode, Language, Output format) does not return any error, but returns HTML either from 4xx or 5xx status. But by the end of the evening, Plato already had a script for cutting audio into pieces for 15 seconds and successfully sent them to the API and received some intelligible text in French. What certainly pleased us as researchers.

I spent some hours stupidly trying to build some kind of backend JavaScript server from scratch. I took the naked Debian 8 Jessie machine as a basis and, using Google, tried to raise Node.js and tie the library to it, but somehow it was falling apart. Some libraries were not installed, something was wrong. The point was that I wanted to check the same Speech-to-text service, but in the client library mode, which, for example, has no 15-second limit. Javascript was chosen as far as C # and Java in my understanding are many times more difficult in terms of deployment (I can be very wrong) and require some knowledge of how to call the execution environment (JVM? CLR?). Since I have no real experience on this or the other, I thought that I would be able to master JS in the microvolume necessary for connecting the necessary library. There was no time for a full study of the issue.

In general, nothing good from my experiments did not work. The only useful conclusion I made for myself is that on the hackathon I will not try to use some new language for myself, but I will work with PHP which I seem to know and, at least, I understand when, what, who and why is not enough.

In the week preceding the hackathon, approximately March 13, we received by mail an invitation to fill out an online form.

Questionnaire and a couple of comments about it

Profile


  • First Name, Last Name, Email, Phone Number
  • Team name
  • Will you be present at the House of Radio (la Maison de Radio-Canada) on March 19 at 18.00.
    Variants of answers: “Yes, I will attend”, “No, but I will attend and participate in a live broadcast on YouTube”, “No, but I will get acquainted with the recording of the broadcast later on YouTube”
  • Will you be present at the House of Radio (la Maison de Radio-Canada) on March 23-25 ​​during the hackathon?
    Variants of answers: “Yes, I will be present”, “No, I would like to work remotely.”
  • Presentation of the prototype. If you have chosen the “remote” participation mode, then you can choose any place at your discretion to present your prototype, or you can use one of the regional offices of Radio Canada.
    Variants of answers: “At my discretion”, “Take advantage of the regional representation”
  • Do you need a "children's room". If you need to provide care for a child / children (6 months - 11 years), then on request this service will be provided to the participants: Saturday, 8:45 - 22:00 and Sunday, 8:45 - 19:00.
    Variants of answers: “Yes”, “No”
  • How did you hear about us?
    Variants of answers: “Website”, “Friends”, “Newsletter”, “Announcement”, “Other” (field)
  • Questions or comments?
    Answer options: (field to fill in)

Thinking out loud


I don’t really understand why Agorize or Radio Canada reassembled names, phone numbers, postal addresses, and team names. We already provided all this information when we registered our team and, as you remember, we even uploaded the presentation.

Information about the preliminary meeting with the participants on March 19 was good news. It remained only to find time to get on it.

Information about the possibility of participation of teams in the remote mode, gave a certain scale to the upcoming event. And, even to admit, I was slightly afraid of the possibility of the emergence of some AI gurus from somewhere in the United States or Europe, against which we would be ashamed to show our project, if any, come to light. On the other hand, it was reassuring that absolutely all correspondence and information about this hackathon was in French. This factor sharply narrowed the potential range of international participants. (The idea of ​​an international scale came to me after the first visit to the Agorize site, since hackathons from different countries were published there.)

Children's room - this is in our Canadian. As well as the WCAG 2.0 AA standard mentioned in the requirements, the “extension” for children illustrates the permanent desire of Canadian society to equalize the rights, and most importantly the capabilities of all members of society. So that no circumstances could cause discrimination in any form.

Day 0 - Monday, March 19th. On your marks!


image

On Monday afternoon, we received a letter from the organizers through the Agorize system with a login and password to a specially created Azure account for our team. This made us a little agitated, but since Monday is a hard day, and we, as I have repeatedly repeated, busy people, we didn’t have a chance to rummage and “touch” this account. In addition, Plato and I have already become familiar with Azure and at that time we were more interested in accessing the API of Radio Canada, since much depended on it too and this part was a kind of “white spot” in our architecture.

In the meantime, by 6 pm, I had to get to the presentation. I left work a little earlier, thank God for Radio House I have to go from work 30 minutes, well 40 maximum, or 10-15 minutes by bus. The asterisk also promised to be by 5:45 pm. Plato said that also fit. According to the results, Plato was a little late for the beginning of the presentation and was not in place somewhere at 6:35 pm.

I was there by 17:50. There were quite a few people in the hall. The asterisk introduced me and Mercury to each other. Mercury came up a bit earlier and already had time to talk with some future participants. The asterisk with Mercury was rather positive about our chances of winning. Mercury spoke about the fact that many people in the room are not experienced developers, but simply designers, or students, like them with Asterisk or even just business students who may have good business ideas, but this is not great advantage for hackathon. We sincerely believed: there is no prototype - there is no victory.

I want to note that at the time of our registration I expected that there would be a maximum of 4 to 10 teams competing. Since there were very few teams that passed the "full" registration. At the time of March 19, I already knew that the number of teams was definitely more than 10. But I didn’t do the calculations, there was no time for that, and what does this change in the end?

The presentation began a little late, at about 18:10.

You can watch it on YouTube in full.

At first, introductory remarks were given by Maxime St-Pierre - Executive Director, Head of Digital, Radio Canada. He greeted those present and said, in particular, that the reason for this hackathon, as well as the previous year, was a rapidly developing world of technology, which should be followed. That the first hackathon brought good results and practical results. Therefore, Radio Canada is optimistic about such events.

Then the word was taken over by the host of this evening, Dominique Gagné.
- Directrice, Intelligence d'affaires numériques, Médias numériques, Radio Canada. She once again went through the hackathon schedule for the upcoming weekend.

Microsoft Azure Session
The next issue was David Chapdelaine - Technology Solutions Professional (Azure) at Microsoft. At the very beginning of his speech, he asked everyone to tweet something with the #hackathonRC tag for later analysis at the end of his speech. In general, the presentation was devoted to the fact that using Azure, we can do anything, faster and more convenient than before. He then turned to a small presentation on the Azure Dashboard. For me it could not be useful from a practical point of view. Those who understood what he was talking about, they already knew it. And those who saw it for the first time, still could not remember or understand, as with any instrument of this kind. It's just like trying to explain how to work with MS Word or MS Excel for 5 minutes to someone who has never seen it, and even in the presentation mode.

From David, Jean-Francois Gamache - Cloud Solution Architect at Microsoft took the baton. Jean told about serverless architecture ( Serverless ) which can be implemented on the basis of Azure. And also went through the list of AI services available through the Azure platform.

Then Jean showed a touching video about how AI is changing people's lives. Please take a few minutes of your time and watch this fragment .



I personally are inspired by such things. I like our age of technology. I like when technology brings real benefits to people. I like to feel part of this change. I like the fact that what the science fiction writers wrote about a couple of decades ago is being implemented right before our eyes. Perhaps these feelings and push me not to stop and learn new things again and again.

Next, Jean demonstrated several projects related to AI, taken from the Microsoft public repository on GitHub and a bit from here .

After that, Jean went to the prototype server of the application, which pulls all the tweets on a specific hashtag in real time (apparently via the Twitter API). Then sends the content of the tweet for analysis to the Text Analytics API. As a result of the analysis, a text score from 0 to 1 is returned, where 0 is a sharply negative content, and 1 is an absolutely positive text. Further, depending on the assessment, the following action is selected. So for negative tweets, an email is generated, and positive ones are sent to the Slack chat channel. And also, regardless of the result of the analysis, all assessment results are sent to some kind of monitoring and visualization utility. Jean repeated several times that such a server solution could be created in 10-15 minutes using Azure. The demonstration included the same hashtag #hackathonRC, which we were asked to tweet at the very beginning. This apparently should have confirmed that the application is running in real time. The asterisk even managed to notice her tweet flashed somewhere on the screen.

Concluding the Azure part, Jean and David answered a few questions from the audience.

After this, a 10-minute break was announced to go to the toilet and / or snack.

We took a break to get to know each other again. We exchanged impressions of the presentation. The whole team agreed that the flow is quite lively and interesting.

Once again, we spoke the idea for our prototype. And assigned roles:
Plato - working with the Radio Canada API - pulls data (which is not yet known) - sends them for processing to the Azure API (which is not yet known) - receives the analysis result and adds them to the database.

I - get data from the database - send the results in the form of a certain search microservice to the frontend.

Asterisk and Mercury - create HTML for visualizing search results and JS functionality for dynamic search (as you type each character) for a nicer effect on the presentation.

Phaeton, as it constantly disappears, the role is not defined. But in the case of the initiative should help the guys with the front-end.

All team members were satisfied with their roles. Everyone felt that the set part was within their power, although many questions were in the air, but until we start doing something with our hands, there is no point in asking them.

So, after the break, it was the turn for Radio Canada.

Session Radio Canada
Quoc-Viet Nguyen - Solutions Architects and R & D at Radio Canada introduced the long-awaited API from Radio Canada. As it turned out, 4 APIs were presented. One of them is public (although I’m not sure how public it is, but let's assume that, firstly, it was said so, secondly, it is available without any authorization, and, thirdly, if Radio Canada feels negative the consequences of the habr effect, they can always close access to it). And three more APIs open only for hakaton members.

  • Neuro - public API used on the news portal ici.radio-canada.ca
  • Validation Media - API only for hakaton members, used to work with media files.
  • Sitesearch - API only for hackathon members, used on two music sites ICI MUSIQUE and CBC MISUC
  • Via Foura - external API only for hackathon members, used to work with comments.

Since most of the APIs do not have detailed documentation, Viet promised to provide all sample requests as a collection for Postman .

Postman - I liked it
Before the hackathon, I saw this program once or twice, but for the most part I used online tools for building and testing the REST API for my own purposes. After I started using Postman, I loved it.

I think this is a handy tool that allows you not only to create requests, but also to collect them in a collection (this allows you to organize the storage of requests by source, purpose, user cases, test cases or whatever you want, and also exchange with your colleagues already prepared and tested queries).

In addition, Postman simply records the history of my requests. This makes it easier to debug queries and not lose successful or unsuccessful attempts, well, a lot more, to which my hands have not yet reached.

Before giving the floor to the next speaker, Viet also answered a few questions from the audience, not only in the hall, but also watching YouTube remotely.

Further, the word was given to a specialist in UI and Web accessibility (sorry, again I can’t google the correct translation for this term into Russian) Olivier Fortin . Olivier drew the attention of the audience that approximately 13.7% of the adult population of Canada has some difficulties for normal perception.

Personal opinion about Persons with disabilities in Canada
In Canada, it is considered bad form to pronounce the word disability. There are no disabled, there are people with disabilities.

I have been living in Canada for 7 years now, but, until now, I can neither agree with this approach nor reject it. On the one hand, I like to use clear terms to express my thoughts. And I love when others also use words for their intended purpose. On the other hand, the word "invalid" does not give us an understanding of what kind of person is behind this term. If to proceed from my narrow-minded perception of the world, it can with equal probability be a person without a hand or a leg and a diabetic, and a lame and oblique.

And if you play the game "association", then blind or deaf, comes to mind is not the first or second, in response to the "disabled". So in this sense, I agree with the Canadians and am ready to ban this word.

Another interesting fact is the perception of the world and words (perhaps I am the only one?). Continuing the game of association with the word ivalid, I do not immediately have the image of an elderly person. But if we take the statistics, then among the elderly there are a lot of people with “disabilities” ;-) I think that Canadian statistics of 13.7% include this category of senior citizens.

For pensioners and the elderly here is a very respectful attitude. They, unlike Russian pensioners, live in many ways even better than the younger and able-bodied population. A decent pension, decent savings and paid mortgages, various benefits and allowances allow pensioners to have a much better balance of income-tax-expenses, compared to working citizens. I'm not talking about 100% of pensioners, just voicing what everyone thinks, knows, and discusses. And, probably, we even strive for precisely this - to a secure and well-fed old age.

If you are in Canada in the summer, pay attention to expensive cabriolets on the roads of the country - in most cases you will find behind the wheel of the elderly. Quite often you can see gray-haired bikers. The first years on arrival, we were still surprised by this, but now we hardly notice it - this has become the norm for our perception.

But on the other hand, “a person with disabilities” sounds, though politically correct, but, in my subjective opinion, also does not reflect something concrete. That is, changing the awl on the soap.

1 . Web accessibility , , .

HTML :

  • alt —
  • legend — ( )
  • .
  • /
  • . ( , . , )
  • // HTML . , .

, , SEO , .

Web accessibility.

  • Wave — Chrome extension
  • aXe — Chrome extension
  • Tota11y — Chrome extension
  • NVDA — - Windows
  • VoiceOver — - MacOS iOS

, Web accessibility ? (, : ?). , , WCAG 2.0 .

« » ( , ): - . , Radio Canada, Microsoft , - . , , .

API YouTube .

They thanked us all, wished us success in the upcoming hackathon and, so to speak, see you on Friday.

Our small team gathered again in the lobby. Exchanged a few words. I must say that despite the fatigue after a hard day and 2 hours in a sitting position, everyone had smiles on their faces. And we were enthusiastic and in anticipation of the upcoming adventure called "hakaton".

While working on this second part of my story, I reviewed the video of March 19 several times, in search of links, names, details, etc. I want to note and would like you to understand that when I went out in the evening after the presentation, I didn’t have the whole picture just described. 2 hours of the presentation, without the possibility to rewind or pause or ask to repeat what I did not hear. This is not the same as having already published video and text that can be re-read and revised. There was porridge in my head. All this had to be reviewed, understood, tried, analyzed. Highlight what can be used quickly and in practice, and that will again fall into a large backlog of what else needs to be learned in the future.

We all live in a wild rhythm. There is no time to stop and study any question that interests us or to comprehend and analyze some information that has appeared.

I do not like the speed with which the river of time carries me, not allowing me to make my own decisions, but only forcing me to follow the course of events.

This is one of the reasons that pushed me to this hackathon. She became the reason for the appearance of this article. I'm just trying to analyze and document what is happening to me. I believe this is important. And I hope that this is interesting to readers.

At this let me put ... "to be continued"

I do not want to lose the interest of those who are waiting for the continuation of the first part. And immediately proceed to writing the third, I think the final part.

UPDATE: The third part

Source: https://habr.com/ru/post/352874/


All Articles