{"id":4827,"date":"2023-03-31T13:28:45","date_gmt":"2023-03-31T10:28:45","guid":{"rendered":"https:\/\/internetborders.net\/prague\/?page_id=4827"},"modified":"2023-04-02T18:18:58","modified_gmt":"2023-04-02T15:18:58","slug":"coding-challenges-en","status":"publish","type":"page","link":"https:\/\/internetborders.net\/prague\/coding-challenges-en\/","title":{"rendered":"Challenges for Coders and Developers"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">1. Telegram Channel Scrapper<\/h2>\n\n\n\n<p>Lantern\u2019s Discover feature scraps content from a lot of sources so it\u2019ll always be available for usage uncensored and to have a backup in case of a takedown.<\/p>\n\n\n\n<p>Make a Telegram channel scraper that either saves the content locally or returns a JSON blob that another service can consume to download the content.<\/p>\n\n\n\n<p>The content in this case are the videos and images for that channel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prize (TBA)<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">2. Twitter Scraper<\/h2>\n\n\n\n<p>In the same spirit as the last challenge, make a scraper for Twitter feeds that, when invoked, makes a PDF of the last 100 tweets from that user. You can also make this an API web service that can be consumed by our backend to easily download the content.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prize (TBA)<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">3. Develop Docker container with jitsi preinstalled<\/h2>\n\n\n\n<p><a href=\"https:\/\/ru.amnezia.org\/\">AmneziaVPN<\/a> is a free service for creating a personal VPN on your server. Helps to access blocked content without exposing privacy even to VPN providers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deliverable<\/h3>\n\n\n\n<p>Develop a Docker container with pre-installed <a href=\"https:\/\/jitsi.org\/\">jitsi<\/a>, and integrate the container into <a href=\"https:\/\/ru.amnezia.org\/\">AmneziaVPN<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prize (TBA)<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"VPNfunction\">4. Implement the VPN function for the selected application\u00a0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Deliverable<\/h3>\n\n\n\n<p>Implement the VPN function for the selected application, for the AmneziaVPN application for Android or iOS. This task assumes knowledge of the Java\/Kotlin stack for Android, or ObjectiveC\/Swift for iOS, as well as basic knowledge of c++\/Qt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prize $1000*<\/h3>\n\n\n\n<p>*for each OS \u2014 Android and iOS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cenoextension\">5. Create a browser extension<\/h2>\n\n\n\n<p>Create a browser extension (or integrate as an opt-in feature to the CENO extension) that keeps track of the \u00ablifetime\u00bb cache size shared, # of peers you\u2019ve shared to, and amount of shared groups.<\/p>\n\n\n\n<ul>\n<li>Create a \u00abshare\u00bb toolbar button that pops up to reveal a short, pre-populated yet customizable, social media friendly call-to-action message that an end user can easily copy &#038; paste and brag via social media.\n<ul>\n<li>Something like: \u00abI\u2019ve shared XXX pages and XXX GB of content using CENO for &lt;some motivating reason here&gt;, &lt;to help with..&gt;, &lt;something else?&gt;, visit &lt;some site like sharethewebwithceno.com&gt; and join me.\u00bb<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Requirements: ++ (C++, Javascript, HTML)<\/li>\n\n\n\n<li>Deliverable: A configurable option in Ouinet client that enables persistent count of lifetime cache size and shared groups. A web API to access this feature. A method for controlling and viewing the feature in the CENO Extension.<\/li>\n\n\n\n<li>Acceptance: Demonstrate that the Ouinet client can keep track of the lifetime cache size and number of shared groups, even after the cache is purged.<\/li>\n\n\n\n<li>Ideal team size: 2-3<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Prize $1000<\/h3>\n\n\n\n<p>Option: This big task can also be cut into smaller tasks with smaller prizes for each:&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Task #1:<\/h3>\n\n\n\n<p>create a Ouinet client feature that keeps track of lifetime cache persistently ($500).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Task #2:<\/h3>\n\n\n\n<p>add to the web API of the Ouinet client so this feature can be controlled and observed ($250)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Task #3:<\/h3>\n\n\n\n<p>use the web API in the CENO Extension to control the feature and display it ($250)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Develop a telegram Q&amp;A bot<\/h2>\n\n\n\n<p><a href=\"https:\/\/nasvyazi.org\/\">\u041d\u0430 \u0421\u0432\u044f\u0437\u0438<\/a> (On Connection) is a non-profit organization, a team of IT professionals who believe that the Internet should be free and safe. We help solve any digital security issues, from connecting a VPN to protecting your site from attacks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deliverable<\/h3>\n\n\n\n<p>Develop a telegram bot that offers to select a question from the directory and sends an answer to it, and, if necessary, can call a person (send a ticket to the service desk).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prize $600<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">7. Telegram bot for verification of volunteers<\/h2>\n\n\n\n<p>Problem: We are currently verifying people who want to take part in the activities of the movement. Verification is important for our security. Those who wish to contact us in Telegram, we ask them to leave their personal data through the form in the cryptopad. After verification, we write to the applicant in Telegram. However, as a result, Telegram bans our accounts because we send out a lot of the same messages.<\/p>\n\n\n\n<p>Solution: Telegram bot<\/p>\n\n\n\n<p>Functional:<\/p>\n\n\n\n<ul>\n<li>the person who wishes writes to the bot, clicks on the button &#8220;I want to become an activist&#8221;\/&#8221;I want to become a volunteer&#8221;<\/li>\n<\/ul>\n\n\n\n<p>\u2014 depending on the answer, the bot sends a link to the form in the cryptopad<\/p>\n\n\n\n<ul>\n<li>the person who wants to fill it out<\/li>\n\n\n\n<li>the bot remembers the tg ID of the person who wishes<\/li>\n\n\n\n<li>need integration with a panel through which you can approve a person \/ several people at once (and send a mass message with a link to the invitation to the chat in the element)<\/li>\n\n\n\n<li>it is necessary to provide an opportunity to clarify the missing information<\/li>\n<\/ul>\n\n\n\n<ul>\n<li>it would be nice to make a pair of tg cryptopad ID-links on the server. for security, the ID can be encrypted, and the link can be in the form \u201caccessible only to the team\u201d. maybe it&#8217;s better to generate the same form in cryptopad for every person who wrote to the bot<\/li>\n\n\n\n<li>the result must pass a security audit<\/li>\n\n\n\n<li>Djnago admin panel, plus integration with tg python library<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Prize $500<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">Where to see other challenges<\/h2>\n\n\n\n<p>Challenges are clustered into 4 groups by skills required for their implementation.\u00a0<a href=\"https:\/\/internetborders.net\/prague\/en\/challenges-for-hackaton\/\">Choose<\/a>\u00a0a challenge, register and come to the hackathon<\/p>\n\n\n<div class=\"knd-block knd-block-cta alignfull\" style=\"\">\r\n\t\t<div class=\"knd-container\">\r\n\t\t\t<div class=\"knd-block-cta__inner\">\r\n\t\t\t\t\r\n\t\t\t\t<div class=\"knd-block-cta__content\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t<h2 class=\"knd-block-cta__text\">Choose a challenge, register and come to the hackathon!<\/h2>\r\n\t\t\t\t\t<div class=\"knd-block-cta__action\">\r\n\t\t\t\t<a  class=\"knd-button knd-button-lg\" role=\"button\">register<\/a>\r\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>","protected":false},"excerpt":{"rendered":"<p>1. Telegram Channel Scrapper Lantern\u2019s Discover feature scraps content from a lot of sources so it\u2019ll always be available for usage uncensored and to have a backup in case of&hellip;&nbsp;<a href=\"https:\/\/internetborders.net\/prague\/coding-challenges-en\/\"><span class=\"meta-nav\">\u0415\u0449\u0435&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":122,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_knd_is_page_title":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Challenges for Coders and Developers - \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/internetborders.net\/prague\/coding-challenges-en\/\" \/>\n<meta property=\"og:locale\" content=\"ru_RU\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Challenges for Coders and Developers - \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague\" \/>\n<meta property=\"og:description\" content=\"1. Telegram Channel Scrapper Lantern\u2019s Discover feature scraps content from a lot of sources so it\u2019ll always be available for usage uncensored and to have a backup in case of&hellip;&nbsp;\u0415\u0449\u0435&nbsp;&raquo;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/internetborders.net\/prague\/coding-challenges-en\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-02T15:18:58+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 \u043c\u0438\u043d\u0443\u0442\u044b\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/internetborders.net\/prague\/coding-challenges-en\/\",\"url\":\"https:\/\/internetborders.net\/prague\/coding-challenges-en\/\",\"name\":\"Challenges for Coders and Developers - \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague\",\"isPartOf\":{\"@id\":\"https:\/\/internetborders.net\/prague\/#website\"},\"datePublished\":\"2023-03-31T10:28:45+00:00\",\"dateModified\":\"2023-04-02T15:18:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/internetborders.net\/prague\/coding-challenges-en\/#breadcrumb\"},\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/internetborders.net\/prague\/coding-challenges-en\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/internetborders.net\/prague\/coding-challenges-en\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f\",\"item\":\"https:\/\/internetborders.net\/prague\/ru\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Challenges for Coders and Developers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/internetborders.net\/prague\/#website\",\"url\":\"https:\/\/internetborders.net\/prague\/\",\"name\":\"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague\",\"description\":\"\u041a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f \u0438 \u0445\u0430\u043a\u0430\u0442\u043e\u043d \u043f\u0440\u043e\u0442\u0438\u0432 \u0432\u043e\u0439\u043d\u044b, \u0446\u0435\u043d\u0437\u0443\u0440\u044b \u0438 \u043f\u0440\u043e\u043f\u0430\u0433\u0430\u043d\u0434\u044b\",\"publisher\":{\"@id\":\"https:\/\/internetborders.net\/prague\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/internetborders.net\/prague\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"ru-RU\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/internetborders.net\/prague\/#organization\",\"name\":\"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague\",\"url\":\"https:\/\/internetborders.net\/prague\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/internetborders.net\/prague\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/internetborders.net\/prague\/wp-content\/uploads\/sites\/5\/2023\/03\/cropped-1_no_BG_small.png\",\"contentUrl\":\"https:\/\/internetborders.net\/prague\/wp-content\/uploads\/sites\/5\/2023\/03\/cropped-1_no_BG_small.png\",\"width\":1000,\"height\":970,\"caption\":\"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague\"},\"image\":{\"@id\":\"https:\/\/internetborders.net\/prague\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Challenges for Coders and Developers - \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/internetborders.net\/prague\/coding-challenges-en\/","og_locale":"ru_RU","og_type":"article","og_title":"Challenges for Coders and Developers - \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague","og_description":"1. Telegram Channel Scrapper Lantern\u2019s Discover feature scraps content from a lot of sources so it\u2019ll always be available for usage uncensored and to have a backup in case of&hellip;&nbsp;\u0415\u0449\u0435&nbsp;&raquo;","og_url":"https:\/\/internetborders.net\/prague\/coding-challenges-en\/","og_site_name":"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague","article_modified_time":"2023-04-02T15:18:58+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f":"4 \u043c\u0438\u043d\u0443\u0442\u044b"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/internetborders.net\/prague\/coding-challenges-en\/","url":"https:\/\/internetborders.net\/prague\/coding-challenges-en\/","name":"Challenges for Coders and Developers - \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague","isPartOf":{"@id":"https:\/\/internetborders.net\/prague\/#website"},"datePublished":"2023-03-31T10:28:45+00:00","dateModified":"2023-04-02T15:18:58+00:00","breadcrumb":{"@id":"https:\/\/internetborders.net\/prague\/coding-challenges-en\/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/internetborders.net\/prague\/coding-challenges-en\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/internetborders.net\/prague\/coding-challenges-en\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f","item":"https:\/\/internetborders.net\/prague\/ru\/"},{"@type":"ListItem","position":2,"name":"Challenges for Coders and Developers"}]},{"@type":"WebSite","@id":"https:\/\/internetborders.net\/prague\/#website","url":"https:\/\/internetborders.net\/prague\/","name":"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague","description":"\u041a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f \u0438 \u0445\u0430\u043a\u0430\u0442\u043e\u043d \u043f\u0440\u043e\u0442\u0438\u0432 \u0432\u043e\u0439\u043d\u044b, \u0446\u0435\u043d\u0437\u0443\u0440\u044b \u0438 \u043f\u0440\u043e\u043f\u0430\u0433\u0430\u043d\u0434\u044b","publisher":{"@id":"https:\/\/internetborders.net\/prague\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/internetborders.net\/prague\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"ru-RU"},{"@type":"Organization","@id":"https:\/\/internetborders.net\/prague\/#organization","name":"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague","url":"https:\/\/internetborders.net\/prague\/","logo":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/internetborders.net\/prague\/#\/schema\/logo\/image\/","url":"https:\/\/internetborders.net\/prague\/wp-content\/uploads\/sites\/5\/2023\/03\/cropped-1_no_BG_small.png","contentUrl":"https:\/\/internetborders.net\/prague\/wp-content\/uploads\/sites\/5\/2023\/03\/cropped-1_no_BG_small.png","width":1000,"height":970,"caption":"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0433\u0440\u0430\u043d\u0438\u0446, Prague"},"image":{"@id":"https:\/\/internetborders.net\/prague\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/internetborders.net\/prague\/wp-json\/wp\/v2\/pages\/4827"}],"collection":[{"href":"https:\/\/internetborders.net\/prague\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/internetborders.net\/prague\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/internetborders.net\/prague\/wp-json\/wp\/v2\/users\/122"}],"replies":[{"embeddable":true,"href":"https:\/\/internetborders.net\/prague\/wp-json\/wp\/v2\/comments?post=4827"}],"version-history":[{"count":4,"href":"https:\/\/internetborders.net\/prague\/wp-json\/wp\/v2\/pages\/4827\/revisions"}],"predecessor-version":[{"id":5317,"href":"https:\/\/internetborders.net\/prague\/wp-json\/wp\/v2\/pages\/4827\/revisions\/5317"}],"wp:attachment":[{"href":"https:\/\/internetborders.net\/prague\/wp-json\/wp\/v2\/media?parent=4827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}