<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Adnan Arnautović</title>
    <description>The latest articles on Forem by Adnan Arnautović (@ekvinto).</description>
    <link>https://forem.com/ekvinto</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F653805%2Fd2648098-f939-4e32-b38d-d5c6f094c169.jpeg</url>
      <title>Forem: Adnan Arnautović</title>
      <link>https://forem.com/ekvinto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ekvinto"/>
    <language>en</language>
    <item>
      <title>Infobip WebRTC - A Quick Setup &amp; Test Guide</title>
      <dc:creator>Adnan Arnautović</dc:creator>
      <pubDate>Wed, 10 Nov 2021 08:07:52 +0000</pubDate>
      <link>https://forem.com/infobipdev/infobip-webrtc-a-quick-setup-test-guide-54e3</link>
      <guid>https://forem.com/infobipdev/infobip-webrtc-a-quick-setup-test-guide-54e3</guid>
      <description>&lt;p&gt;You know the usual developer drill - you sit down, ideas come and go, you filter the ones that work and write it all in a single go? Erm, not really!&lt;/p&gt;

&lt;p&gt;When we start writing new software, there is always the stage of planning and deliberating about which technologies to use and which dependencies can help us make the best software for our use-cases and potential clients. This is where having the right tool is crucial for making the best decisions. If you are looking to integrate real-time communications into your application, we already have one of those tools in mind for you.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why integrate RTC into your application in the first place?
&lt;/h1&gt;

&lt;p&gt;You might ask yourself "Why would I use WebRTC anyway? Can't I just call someone over the phone?". Sure you can, but think about the different scenarios that could happen and the platform that could address them all. For instance, if you want to show someone a certain product or let them check something from a distance, you can use video calls over WebRTC to provide this service. Or let's say you're out on the road and you've just had an accident which you need to report to your supervisor. With WebRTC this could be as easy as having a two-minute video call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Communicate across devices with multiple participants
&lt;/h2&gt;

&lt;p&gt;By using WebRTC you can also employ many other devices, not just mobile phones, for your communication needs. If there is an office employee contacting multiple colleagues that work on the terrain, he or she can sit at their computer and still talk to the colleagues using their phones. If there's a need to talk to multiple people at once, WebRTC will make it happen quick and easy via the conferencing feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Record calls and keep track of communications
&lt;/h2&gt;

&lt;p&gt;Recording calls, be it 1-on-1 or conference, is something not only useful, but also sometimes required by regulatory measures. With WebRTC you can choose to record your calls whenever you want and keep track of your communications when needed.&lt;/p&gt;

&lt;p&gt;All of the above shows that with WebRTC you can harness the true power of your communications, implement more communication channels, and make the life of your clients and employees easier. If you want to test it out yourself, we've prepared a detailed setup guide. To be able to follow this showcase setup, please login to &lt;a href="https://portal.infobip.com/" rel="noopener noreferrer"&gt;Infobip Portal&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Infobip RTC Showcase?
&lt;/h1&gt;

&lt;p&gt;The Infobip RTC Showcase is a collection of simple apps implementing our Web and In-app Calls communication channel using WebRTC. These apps enable you to setup a simple WebRTC app and test its features out on your own, even change the code and experiment.&lt;/p&gt;

&lt;p&gt;The following app examples are present in our showcase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kotlin&lt;/li&gt;
&lt;li&gt;Swift&lt;/li&gt;
&lt;li&gt;React Native&lt;/li&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;li&gt;jQuery&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Considering the main purpose of this app, you will also notice that the user interface is basic. This enables everyone to easily change the code in a matter of minutes and test out new things if they are interested.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feo1ra5i89lm052jnsnvc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feo1ra5i89lm052jnsnvc.png" alt="Infobip RTC simple user interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, if you are going to use the RTC Showcase and integrate WebRTC into your own app in the future, you will need to fulfil some prerequisites.&lt;/p&gt;

&lt;h1&gt;
  
  
  What to Know Before You Start?
&lt;/h1&gt;

&lt;p&gt;To be able to use Infobip RTC Showcase, you first need to have certain things installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Java, version 12&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, you will have to set up the token application for the showcase applications. The token application is used to fetch the Infobip token you need for authenticating your identity when accessing Infobip's backend. Here you have two options, depending on the technology you want to test out with the showcase.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript Token Application
&lt;/h2&gt;

&lt;p&gt;To be able to run the JavaScript-based token application, you will need to add a &lt;strong&gt;config.json&lt;/strong&gt; file to the &lt;strong&gt;token/node&lt;/strong&gt; folder with the following structure:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;The &lt;strong&gt;HTTP_PORT&lt;/strong&gt;, &lt;strong&gt;INFOBIP_API_HOST&lt;/strong&gt;, and &lt;strong&gt;INFOBIP_RTC_TOKEN_PATH&lt;/strong&gt; parameters are used to set the port on which your token app will run, and the host and path from which your token will be fetched. These values will be the same for everyone using our RTC showcase, although you can freely change the &lt;strong&gt;HTTP_PORT&lt;/strong&gt; if the predefined port is taken. To be able to use the new port for the token application, do not forget to change the port in every respective application to the new one.&lt;/p&gt;

&lt;p&gt;The more important parts of this config file are &lt;strong&gt;INFOBIP_API_KEY&lt;/strong&gt; and &lt;strong&gt;INFOBIP_APP_ID&lt;/strong&gt;. You can get both values from the &lt;a href="https://portal.infobip.com/" rel="noopener noreferrer"&gt;Infobip Portal&lt;/a&gt; after you have logged in into your account.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To get &lt;strong&gt;INFOBIP_API_KEY&lt;/strong&gt; you will need to access the "Manage API keys" site from the Portal dashboard (&lt;a href="https://portal.infobip.com/settings/accounts/api-keys" rel="noopener noreferrer"&gt;Manage API keys&lt;/a&gt;) and copy your chosen API key into the config.json file&lt;/li&gt;
&lt;li&gt;To get &lt;strong&gt;INFOBIP_APP_ID&lt;/strong&gt; you will need to access the "Apps &amp;gt; Web and In-App Calls &amp;gt; Applications" site (&lt;a href="https://portal.infobip.com/apps/webrtc/" rel="noopener noreferrer"&gt;My Applications&lt;/a&gt;) and copy your chosen APP ID into the config.json file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you have filled out the required information in the config.json file, you will need to do two more steps with the token application before you are ready to go onto the showcase applications. First go to the &lt;strong&gt;token/node&lt;/strong&gt; folder through your terminal/command prompt and then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;strong&gt;npm install&lt;/strong&gt;, which will install the packages needed for the token application&lt;/li&gt;
&lt;li&gt;Run &lt;strong&gt;npm start&lt;/strong&gt;, which will start the application on &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt; (If you have not changed the port in the config.json file)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you can start running and experimenting with the showcase applications that can be found in the &lt;strong&gt;js/&lt;/strong&gt; folder, but if you want to be sure that the token application is running, you can run&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;If your token application is running, this will return a JSON object like the following&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  Java Token Application
&lt;/h2&gt;

&lt;p&gt;To be able to run the Java-based token application, you will need to add two environment variables with the values for &lt;strong&gt;INFOBIP_API_KEY&lt;/strong&gt; and &lt;strong&gt;INFOBIP_APP_ID&lt;/strong&gt;. You can add the environment variables in several ways depending on the operating system you are using, and which approach you prefer. To set the environment variables through the terminal/command prompt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Unix-like operating systems (Mac OS and GNU+Linux)
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;For Windows operating systems
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If we look at &lt;strong&gt;token/java/src/main/resources/application.yml&lt;/strong&gt;, where you will find the following code&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;We will see that we can also easily change the &lt;strong&gt;HTTP_PORT&lt;/strong&gt; value if needed. We just need to set the &lt;strong&gt;HTTP_PORT&lt;/strong&gt; environment variable on our system, and our token application will prioritize that value.&lt;/p&gt;

&lt;p&gt;After setting up the environment variables, we just need to run the following command from inside the &lt;strong&gt;token/java&lt;/strong&gt; folder:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;This will start the token application which is built with the Java Spring Boot framework. We can check if our token application is up and running by using the same command as the last time&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;If your token application is running, this will also return a JSON object like the last time&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Keep in mind:&lt;/strong&gt; If you want to run both token applications at the same time, you will need to change the &lt;strong&gt;HTTP_PORT&lt;/strong&gt; value for at least one of them.&lt;/p&gt;

&lt;h1&gt;
  
  
  Showcase Applications
&lt;/h1&gt;

&lt;p&gt;Showcase applications will use the token application to authenticate users on Infobip platform, so be sure to set up the token applications correctly before continuing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Change Needed Configurations
&lt;/h2&gt;

&lt;p&gt;If you have changed the &lt;strong&gt;HTTP_PORT&lt;/strong&gt; inside the token application's configuration, you will first need to change the port for the token application inside showcase applications from 8080 to your preferred port.&lt;/p&gt;

&lt;p&gt;Also, if you want to change the ports that the JavaScript-based showcase applications are using, you can do that by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;jQuery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changing the &lt;strong&gt;HTTP_PORT&lt;/strong&gt; value in &lt;strong&gt;js/jquery/app.js&lt;/strong&gt; from 8010 to your preferred port&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changing the &lt;strong&gt;PORT&lt;/strong&gt; value in &lt;strong&gt;js/react/package.json&lt;/strong&gt; from 8020 to your preferred port&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changing the &lt;strong&gt;port&lt;/strong&gt; option in the ng serve command in &lt;strong&gt;js/angular/package.json&lt;/strong&gt; from 8030 to your preferred port&lt;/p&gt;

&lt;h2&gt;
  
  
  Add Google Services to Android Showcase Applications
&lt;/h2&gt;

&lt;p&gt;To be able to receive notifications on incoming calls from Infobip showcase applications, you will need to add a Firebase configuration file to the app (step 3 &lt;a href="https://firebase.google.com/docs/android/setup" rel="noopener noreferrer"&gt;here&lt;/a&gt;) named &lt;strong&gt;google-services.json&lt;/strong&gt; to the app.&lt;/p&gt;

&lt;p&gt;Depending on the project, you will need to add the &lt;strong&gt;google-services.json&lt;/strong&gt; file in a different place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Android Kotlin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add the &lt;strong&gt;google-services.json&lt;/strong&gt; file to &lt;strong&gt;android/kotlin/infobip-rtc-showcase-android&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React Native&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add the &lt;strong&gt;google-services.json&lt;/strong&gt; file to &lt;strong&gt;react_native/android/app&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here you can also make sure that you add the correct path to the Android SDK (Software Development Kit) on your computer on the React Native showcase application. You can set this in &lt;strong&gt;react_native/android/local.properties&lt;/strong&gt; on the &lt;strong&gt;sdk.dir&lt;/strong&gt; property.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running JavaScript-based Showcase Applications
&lt;/h2&gt;

&lt;p&gt;If you have gotten to this step and the token application inside &lt;strong&gt;token/node&lt;/strong&gt; or &lt;strong&gt;token/java&lt;/strong&gt; is running, then the following is straight forward. You just need to navigate to the folder for the chosen technology (be it jQuery, React, or Angular) and run the following&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;This will install and then run the application on the preferred port, which you can then access through your browser. To simply test out the application, you can start up two browser tabs and call the other user from one tab.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep in mind:&lt;/strong&gt; If you are running the React or Angular applications, the page will reload automatically if you make any edits. You will also be able to see any lint errors in the console.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running Mobile Showcase Applications
&lt;/h2&gt;

&lt;p&gt;You can run the Android Kotlin and iOS Swift showcase applications as any other application through their respective IDEs (Android Studio and XCode) in the emulator. There is a known issue with receiving push notifications for incoming calls on subsequent runs on the emulator on all three mobile showcase applications (React Native, Kotlin, and Swift). This can be solved by wiping data from the emulator before running it again.&lt;/p&gt;

&lt;p&gt;You can also run the app on a real device, although you will need access to the token application from the device itself. You can enable this by using the &lt;strong&gt;ngrok&lt;/strong&gt; command, which allows you to expose your local port on the whole network. The following command will enable this:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Here you can also choose the preferred port to expose the token application.&lt;/p&gt;

&lt;p&gt;Unlike the Kotlin and Swift showcase applications, the React Native application will require you to do one more step. Run the following inside the &lt;strong&gt;react_native&lt;/strong&gt; directory:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;or you can also use yarn:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;The commands do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install needed dependencies&lt;/li&gt;
&lt;li&gt;Start the application&lt;/li&gt;
&lt;li&gt;Run the application on an Android emulator or your connected phone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Keep in mind:&lt;/strong&gt; You can use either npm or yarn to run this application, but it is advised not to mix package managers to avoid resolution inconsistencies.&lt;/p&gt;

&lt;h1&gt;
  
  
  That's it. You're ready to go!
&lt;/h1&gt;

&lt;p&gt;For now, through the RTC Showcase applications you can look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1-on-1 audio and video calls through WebRTC&lt;/li&gt;
&lt;li&gt;Sharing your screen during the call&lt;/li&gt;
&lt;li&gt;Calling a phone number using WebRTC&lt;/li&gt;
&lt;li&gt;Joining conferences with audio and video&lt;/li&gt;
&lt;li&gt;Sharing your screen during conferences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to learn more about Web and In-Application Calls, you can visit &lt;a href="https://www.infobip.com/docs/voice-and-video/webrtc" rel="noopener noreferrer"&gt;Infobip's Voice and Video documentation for WebRTC&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Check if you already have access to our WebRTC Demo applications and try out the newest features over there:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://webrtc-demo.infobip.com/" rel="noopener noreferrer"&gt;Browser application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.infobip.webrtc.demo.android" rel="noopener noreferrer"&gt;Android application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/us/app/infobip-webrtc/id1469234824" rel="noopener noreferrer"&gt;iOS application&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To enable Web and In-App Calls, contact your dedicated Account Manager or our &lt;a href="https://www.infobip.com/contact" rel="noopener noreferrer"&gt;Sales&lt;/a&gt; team.&lt;/p&gt;

&lt;p&gt;When you are ready to start integrating our SDKs into your own application, you are more than welcome to look at the reference documentation for various SDKs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/infobip/infobip-rtc-js/wiki" rel="noopener noreferrer"&gt;JavaScript SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/infobip/infobip-rtc-android/wiki" rel="noopener noreferrer"&gt;Android SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/infobip/infobip-rtc-ios/wiki" rel="noopener noreferrer"&gt;iOS SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/infobip/infobip-rtc-react-native/wiki" rel="noopener noreferrer"&gt;React Native SDK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have any questions, we'd be happy to hear from You &lt;a href="https://www.infobip.com/contact" rel="noopener noreferrer"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>webrtc</category>
      <category>tutorial</category>
      <category>testing</category>
    </item>
    <item>
      <title>Could technology take away your freedom?</title>
      <dc:creator>Adnan Arnautović</dc:creator>
      <pubDate>Wed, 18 Aug 2021 07:21:26 +0000</pubDate>
      <link>https://forem.com/infobipdev/could-technology-take-away-your-freedom-p7h</link>
      <guid>https://forem.com/infobipdev/could-technology-take-away-your-freedom-p7h</guid>
      <description>&lt;p&gt;Reminiscent of the gold rush of 1800s, the 21st century has been a &lt;br&gt;
tech-rush powered by young and influential billionaires from Silicon Valley. For years we have been put under the impression that technology will solve all of our world's problems and, while some of them can be solved this way, not all can. To make it worse, those that can't are usually root social and political problems that either need a change in ethos or need broader solutions involving many more areas of expertise.&lt;/p&gt;
&lt;h2&gt;
  
  
  ECONOMIC INEQUALITY
&lt;/h2&gt;

&lt;p&gt;First thing that comes to mind is economic inequality within minority groups, which according to a HuffPost article is becoming a problem not only concentrated within minority groups. There is a pervasive thought among people in the "first world" that they can help eradicate inequality and poverty by just building mobile apps for various initiatives. I believe this is not how it should work. I find that it establishes a false sense of accomplishment among people that could be of some help if they just didn't waste their time, knowingly or unknowingly, "helping".&lt;/p&gt;
&lt;h2&gt;
  
  
  FAKE NEWS IS HERE TO STAY
&lt;/h2&gt;

&lt;p&gt;What better way to show this problem than with the 2020 United States elections. Social media has exacerbated the pandemic of misinformation going around. According to NBC News, &lt;a href="https://www.nbcnews.com/health/health-news/fake-news-lies-spread-faster-social-media-truth-does-n854896" rel="noopener noreferrer"&gt;falsehoods are spreading much faster&lt;/a&gt; through social media than truth. Only one or two election cycles ago this would not be possible, and the technology used for electric voting and counting the votes has been a source of many of those fake news. A sad and worrisome fact is that &lt;a href="https://edition.cnn.com/2020/10/25/world/trump-fake-news-legacy-intl/index.html" rel="noopener noreferrer"&gt;fake news is here to stay&lt;/a&gt; and we'll just have to deal with it.&lt;/p&gt;
&lt;h2&gt;
  
  
  A DANGER TO OUR DEMOCRACY
&lt;/h2&gt;

&lt;p&gt;Elections are probably one of the most underestimated problems we face when merging them with digital technology because they have a weird mix of two opposite goals. When a citizen votes, he must be anonymous as not to encourage voter fraud, but his vote also needs to be somehow trusted or verified to discourage that same voter fraud. Therefore, election officials are worried about people taking pictures of their ballots because you should not be able to prove how you voted. Otherwise we could have situations like: "Discount for X voters" or "Vote Y or you'll have problems".&lt;/p&gt;
&lt;h2&gt;
  
  
  A PROBLEM WITH DIGITAL ELECTIONS
&lt;/h2&gt;

&lt;p&gt;Why is digital technology one of the biggest problems when it comes to voting practices ? Isn't physical voting imperfect too? Yes, it is imperfect, but as &lt;a href="https://www.youtube.com/watch?v=LkH2r-sNjQs" rel="noopener noreferrer"&gt;Tom Scott&lt;/a&gt;, a computer scientist of Internet fame, put it, attacks on physical voting don't scale as well as attacks on huge interconnected digital systems with voting machines. Most problems with physical voting have already been experienced and we know how to defend from most of them (like granny voting or Bulgarian trains) and an attacker can get only a few people into the fraud before someone discovers him and his scheme. On the other hand, when an attacker gains access to digital voting systems he can flip a switch and instantly defraud tens of thousands or more voters from their democratic privilege.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/LkH2r-sNjQs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  A MATTER OF TRUST
&lt;/h2&gt;

&lt;p&gt;But can't this be solved with new technologies, passwords, hashes, checksums, open-source software… maybe that buzzword blockchain? Some of these are currently used in many electronic voting systems around the world, from the &lt;a href="https://www.politico.com/story/2019/06/27/paperless-voting-machines-eac-survey-1385307" rel="noopener noreferrer"&gt;United States&lt;/a&gt; to Estonia, but there is a catch. Even if we had the most secure voting systems, voting is a special case where this is just not enough because there needs to be trust in the system the whole population uses to vote. If there is no trust from the wider population then the voter turnout suffers and subsequently even smaller voter fraud can impact the results of an election. People can inherently trust pen and paper because they are familiar with them, but when you start throwing phrases and words at people that they don't understand or have never heard of, they will start to get suspicious. Why would my 80-year-old grandfather trust that glowing hunk of electronics to record his vote correctly and not just show him his vote, but record another one? Not to even mention what would happen if a foreign nation tried to break trust in the elections as we've seen in the last two election cycles in the United States. Currently, this whole idea seems to be understood only by the &lt;a href="https://www.marketplace.org/2020/11/02/estonia-proves-trust-is-at-the-heart-of-online-voting/" rel="noopener noreferrer"&gt;Estonian government&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyiq7btjvk22nipzg869v.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyiq7btjvk22nipzg869v.jpeg" alt="Depiction of a hand putting vote into ballot box"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  STEM IS NOT A MAGIC WAND FOR EDUCATION ISSUES
&lt;/h2&gt;

&lt;p&gt;Although we have only talked about elections up until now, this is not the only problem that occurs when you try to fix things using technology in a reduced sense. I have been personally bombarded by a number of ads, posts, initiatives, and people that believe the holy grail of education is introducing STEM (whatever that means for any of these is almost always different) to our classrooms and giving every child a laptop or tablet. According to prof. Kentaro Toyama from the School of Information at the University of Michigan "Technology doesn't fix broken school systems, so no amount of technology is going to turn around a situation where children aren't learning." We should stop using our schools as places where we cram young people with information and make them shining temples of reason and palaces of creative thinking.&lt;/p&gt;

&lt;h2&gt;
  
  
  SMART CITIES OR "TRACKING" CAPITALS?
&lt;/h2&gt;

&lt;p&gt;Some technologies allow us to live a comfier life, but they create problems of their own. This is the case with the privacy issues around many of the services we use today. A unique part of this story are smart cities, which are advertised as something inherently good. I'd argue that this heavily depends on their final implementation. The recent development with &lt;a href="https://www.bbc.com/news/technology-56168306" rel="noopener noreferrer"&gt;Google-linked Sidewalk Labs&lt;/a&gt; and their smart city project in Portland, where they rejected to implement a smart city solution, has revealed that even Google's own off-shoot companies are worried about personal privacy and implementation of city wide "tracking" solutions. Considering the amount of information Google collects, this has a certain weight to it. This only shows that technology implementations must be preceded by laws and regulations to stop such projects from having a sinister impact on our lives and force them to be utterly transparent with everything they are doing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjo3c835a9zwe7shoxbyq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjo3c835a9zwe7shoxbyq.png" alt="Chinese social credit score system infographic"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A COURIOUS CASE OF PEOPLE'S REPUBLIC OF CHINA
&lt;/h2&gt;

&lt;p&gt;A case where such tracking technology is currently being tested for nefarious purposes is PR China with its social credit score system. This is a national blacklist system acting like a social network which punishes people whose behavior includes negative factors such as playing loud music, eating in rapid transit systems, making reservations at restaurants or hotels and not showing up etc. If you don't have a high enough credit score, you can get rejected for plane or train tickets or even worse. Sounds like an episode of "Black Mirror", doesn't it? This is what happens when advanced enough technology is misused and there is no regulation that can stop it or worse, the regulation itself is made so that technology could be used against the general population.&lt;/p&gt;

&lt;h2&gt;
  
  
  NOT ALL IS LOST
&lt;/h2&gt;

&lt;p&gt;Rarely is any product of science and progress inherently destructive –the way it's being used usually defines it-. Technology is just a tool that we use to make our lives better, but we always need to think about the impacts of such additions to our lives. This requires first principles thinking, empathy, some knowledge of philosophy and history to know how people dealt with new things before and many more skills that one profession like computer science cannot have alone. Our current drive towards highly capable artificial intelligence has been followed along by many more scientific branches than just engineers, like AI ethicists, philosophers, and renowned academics like the late Stephen Hawking. If we build the habit of stopping and thinking more deeply about problems in our lives, maybe we'll get Terminator-like robots one day, but they'll be helping us take care of our old in care homes instead of inflicting pain and suffering on other human beings.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
