<?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>DEV Community: Julia</title>
    <description>The latest articles on DEV Community by Julia (@sciencebae).</description>
    <link>https://dev.to/sciencebae</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%2F292773%2F4f40a694-ebac-4f91-a3cf-d92cfd3d8935.jpeg</url>
      <title>DEV Community: Julia</title>
      <link>https://dev.to/sciencebae</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sciencebae"/>
    <language>en</language>
    <item>
      <title>A Glimpse into a Virtual Job Fair</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 23 Mar 2020 01:42:00 +0000</pubDate>
      <link>https://dev.to/sciencebae/a-glimpse-into-a-virtual-job-fair-19ed</link>
      <guid>https://dev.to/sciencebae/a-glimpse-into-a-virtual-job-fair-19ed</guid>
      <description>&lt;p&gt;A few months ago I signed up for 4 job fairs, two of which were for veterans, one for students of the university I attended, and one virtual job fair. The three in-person job fairs were supposed to happen this month, however, because of coronavirus, all of these were moved online. &lt;/p&gt;

&lt;p&gt;If anyone ever wondered how these virtual job fairs work, I am sharing my personal experience with one of RecruitMilitary job fairs and their interface. But I have also previously done a virtual job fair that looks closer to real life: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ff6tmtivmogrcv01bjcj4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ff6tmtivmogrcv01bjcj4.jpg" alt="Alt Text" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overall, a virtual job fair works very similar to a traditional job fair. So, imagine, if you walk into a room full of booths and tables, you can pretty much see all of the companies participating and you can come up to any the tables of the companies that interest you. In a similar way during a virtual job fair, after you log in, you end up in a lobby where you can see the list of all of the companies and (sometimes) schools participating. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Firosso45vunt37v7hag4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Firosso45vunt37v7hag4.png" alt="Alt Text" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The RecruitMilitary interface offers an ability to only see "employer rooms", or "school rooms". The "school rooms" contain a list of schools that offer educational opportunities to veterans. I won't concentrate on schools in this post. &lt;/p&gt;

&lt;p&gt;Once you enter an employer of interest room, it looks like this (I am purposefully blurring the messages and names of all participants for privacy): &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqsx2j3pex4zgwkugqhc7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqsx2j3pex4zgwkugqhc7.png" alt="Alt Text" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the left side of the screen you can see the profile of the company, within which you can find information about the company, open positions, and links to their about and career pages. Under the profile there is a list of all participating and available recruiters and a list of participants. You can sent private messages to recruiters, but you cannot send messages to participants. &lt;/p&gt;

&lt;p&gt;Then there is the open chat space. Many people prefer to introduce themselves in the open chat and recruiters also respond in open chat, however, there is an option to message a recruiter privately, which I did for the most part. Here is what private messaging looks like: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbpyrhkscg51738jxzwuo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbpyrhkscg51738jxzwuo.png" alt="Alt Text" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, you get a little P badge next to a recruiter's name. You also get a notification when they respond to you. &lt;/p&gt;

&lt;p&gt;The website also supports the ability of being in several rooms at the same time, which is awesome, because you can talk to several recruiters at the same time without wasting time. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhx028p0662mv0qw8mkzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhx028p0662mv0qw8mkzq.png" alt="Alt Text" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overall I had a great experience with the RecruitMilitary platform. It was easy to navigate, required minimal effort, and pretty self-explanatory. The rest was up to the human factor. Most recruiters I spoke to were extremely nice, proficient, and responded in a timely matter. On a few occasions I did get a few responses that made me raise my eyebrow.&lt;/p&gt;

&lt;p&gt;One recruiter asked me what a BS in CS was. I mean, I probably should have spelled out "Computer Science", but shouldn't a recruiter from a company that has a tech department know abbreviations of majors. Let me know in the comments below if you think computer scientists should spell out their major to recruiters! 😂&lt;/p&gt;

&lt;p&gt;There was another occasion when, after searching for open dev positions at a company and not finding anything suitable, I privately messaged a recruiter with a proper introduction and an inquiry about possible future dev positions. The response I got was very weird: the recruiter said to check the about section on their website to learn about what they do. 😳🤨 &lt;/p&gt;

&lt;p&gt;In my opinion, while virtual job fairs can never replace that human connection you get at a traditional job fairs, they're just as efficient, as long as you follow up with everyone you made contact with. 😉&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>career</category>
      <category>work</category>
      <category>remote</category>
    </item>
    <item>
      <title>Social Distancing and What am I Doing with More Free Time.</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 16 Mar 2020 00:34:35 +0000</pubDate>
      <link>https://dev.to/sciencebae/social-distancing-as-a-job-seeker-4c4c</link>
      <guid>https://dev.to/sciencebae/social-distancing-as-a-job-seeker-4c4c</guid>
      <description>&lt;p&gt;It's pandemic time! I am not going to lie, as a former CBRN (Chemical, Biological, Radiological, Nuclear) specialist in the US Army, whatever is going on in the world fascinates me 😅. However, I am a software developer now, and my crazy days as a soldier are in the past, even though my training kicks in once in a while. &lt;/p&gt;

&lt;p&gt;Pandemic hit at the worst time of the year for me, though: I am in search of a job. All of the career fairs for veterans I was going to go were moved online, which makes it super impersonal, and all the interviews are held over the internet and phone. It is what it is 🤷🏻‍♀️. &lt;/p&gt;

&lt;p&gt;However, there is a positive side to the situation! Since I don't have to commute into New York City for fairs or interviews, I am saving a ton of time. This gives me an opportunity to work on my skills, learn new things, finish old projects, and collaborate with others on new ones. &lt;/p&gt;

&lt;p&gt;My plan is as follows: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finish an old project (soooo overdue)&lt;/li&gt;
&lt;li&gt;Practice algorithms and data structures (can never stop practicing basics)&lt;/li&gt;
&lt;li&gt;Do some fun 100 days of code challenges &lt;/li&gt;
&lt;li&gt;Start learning C++ (which will come in handy for my masters program I am starting in the fall)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this said... What are some of your favorite code challenges? What are some really cool and creative tutorials you've ever written or came across? I will take all of the recommendations for super out of the box thinking creative and funky stuff 😅. Let me know in the comments! &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>wecoded</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Nevertheless...</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 09 Mar 2020 01:54:12 +0000</pubDate>
      <link>https://dev.to/sciencebae/nevertheless-59cj</link>
      <guid>https://dev.to/sciencebae/nevertheless-59cj</guid>
      <description>&lt;p&gt;Today is March 8th, International Women's Day. An event that was born in New York City in February 1909. In 1917 it was picked up by Soviet Russia and celebrated on March 8, and soon after the rest of the socialist and communist countries followed. The US started celebrating International Women's Day in 1977, about a decade after it was picked up by a feminist movement. &lt;/p&gt;

&lt;p&gt;Yes, March 8 is a feminist holiday that was born in the United States.&lt;/p&gt;

&lt;p&gt;Yet, on this day I came across a post on twitter:&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1236088204672942080-827" src="https://platform.twitter.com/embed/Tweet.html?id=1236088204672942080"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1236088204672942080-827');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1236088204672942080&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Now, full disclosure: I have a degree in computer science, however, I also attended a coding boot camp, because, well, I wanted to 💁🏻‍♀️. So, according to this post I am a "pretend programmer" 🤣, I guess?&lt;/p&gt;

&lt;p&gt;When I first read the message, I was dumbfounded and didn't even know how to feel exactly. But then I got it! It seems to me, that the person who posted the message bashing on "women in coding" is threatened by us, women. But, women getting into tech is natural, and there will only be more of us in STEM. Better get used to it! &lt;/p&gt;

&lt;p&gt;Anyway, in my experience, people who are confident in their skills and knowledge, regardless of sex, gender, occupation, industry, and do on, won't discriminate. Instead, they'd be happy to help, show around, and create connections. &lt;/p&gt;

&lt;p&gt;March is Women's History Month, and the message linked in my post is disrespectful, regardless of the date it was originally posted. Even the last paragraph doesn't help the author. We see you, buddy! &lt;/p&gt;

&lt;p&gt;What does the community think about this one? 🤔&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>womenintech</category>
      <category>inclusion</category>
      <category>wecoded</category>
    </item>
    <item>
      <title>Java Main Method: Why so Many Words?</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 02 Mar 2020 02:58:59 +0000</pubDate>
      <link>https://dev.to/sciencebae/java-main-method-why-so-many-words-3dpk</link>
      <guid>https://dev.to/sciencebae/java-main-method-why-so-many-words-3dpk</guid>
      <description>&lt;p&gt;&lt;code&gt;public static void main(String[] args){&lt;/code&gt;&lt;br&gt;
&lt;code&gt;// code&lt;/code&gt;&lt;br&gt;
&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zYoKm-Hl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t2og55ikvp4uaxo956ck.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zYoKm-Hl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t2og55ikvp4uaxo956ck.gif" alt="ugh"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Seriously? I have to type this every time i write a program? That is a lot and I miss JavaScript! 😭" These were always my thoughts when I was in college just starting with Java after learning JavaScript for a bit. &lt;/p&gt;

&lt;p&gt;What we see above is the main method in Java. Let's break it down and talk about each word in this line of code. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Public&lt;/em&gt; in Java is an access modifier. Access modifiers specify the accessibility or scope of a method, constructor, or a class. There are four access modifiers: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Private: the access level of this modifier is only within the class and cannot be accessed from outside of the class. &lt;/li&gt;
&lt;li&gt;Public: the access level of this modifier is everywhere and can be accessed within the class, outside the class, within the package and outside the package.&lt;/li&gt;
&lt;li&gt;Protected: the access level of this modifier is within the package and outside the package through child classes, without which it cannot be accessed from outside. &lt;/li&gt;
&lt;li&gt;Default: the access level of this modifier is only within the package, and cannot be accessed from outside the package. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The main method has to be &lt;em&gt;public&lt;/em&gt; because we want access to it. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Static&lt;/strong&gt;&lt;br&gt;
In Java, a &lt;em&gt;static&lt;/em&gt; member of a class is a member that isn't associated with an instance of a class. This member belongs to the class itself and can be accessed without first creating a class instance. A method that is declared with the &lt;em&gt;static&lt;/em&gt; keyword is associated with the class itself, and therefore we don't have to create an object from a class before using &lt;em&gt;static&lt;/em&gt; methods defined by the class. &lt;/p&gt;

&lt;p&gt;If the &lt;code&gt;main&lt;/code&gt; method is not static, JVM wouldn't be able to call it because there is no class object present. That's why the &lt;code&gt;main&lt;/code&gt; method must be &lt;em&gt;static&lt;/em&gt; so that JVM can call the &lt;code&gt;main&lt;/code&gt; method which is not associated with an instance of a class. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Void&lt;/strong&gt;&lt;br&gt;
This one is simple. The keyword &lt;em&gt;void&lt;/em&gt; is used at method declaration to indicate that the method should not have a return value, and this is why &lt;code&gt;main&lt;/code&gt; method is &lt;em&gt;void&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Main&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Main&lt;/em&gt; is just a name for the method, and when we run a Java program, it looks for the name. &lt;/p&gt;

&lt;p&gt;Below is a simple program that calculates the Fibonacci of n recursively and prints out the result.&lt;/p&gt;


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


</description>
      <category>java</category>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Cloud: Fog Computing Applications - Video Use Cases</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 24 Feb 2020 03:21:20 +0000</pubDate>
      <link>https://dev.to/sciencebae/cloud-fog-computing-applications-video-use-cases-458i</link>
      <guid>https://dev.to/sciencebae/cloud-fog-computing-applications-video-use-cases-458i</guid>
      <description>&lt;p&gt;As a continuation to one of my previous &lt;a href="https://dev.to/sciencebae/cloud-fog-computing-applications-video-3742"&gt;posts&lt;/a&gt;, here I am going to discuss some specific use cases. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vehicular Fog Computing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the growing adoption of dash cameras, we are seeing great potential for innovation by analyzing the video collected from vehicles. As we previously agreed, transmitting and analyzing large amounts of video requires a lot of communications and computing resources. However, vehicular fog computing for real-time analytics can be applied to mitigate this issue. This can also be applied to smarter vehicles that are equipped with onboard sensors and cameras. &lt;/p&gt;

&lt;p&gt;Vehicular crowd sourcing is the process of video crowd sourcing in vehicular fog computing. The whole process consists for four operations: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Discovering fog nodes: a vehicle needs to figure out which vehicular fog nodes are located within its communication range.&lt;/li&gt;
&lt;li&gt; Sending requests: after discovering fog candidates, the client sends a request to the zone head over using LTE. &lt;/li&gt;
&lt;li&gt; Collecting dash camera video: the description of the generated dash camera video, such as length and supported video resolutions. &lt;/li&gt;
&lt;li&gt; Conducting vehicular application service: after collection of the dash camera video, specific vehicular application service would be conducted in the fog nodes. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here are some examples of such applications: &lt;/p&gt;

&lt;p&gt;• Driving assistance. This can include driving situational awareness, such as cooperative lane changing, and see-through for passing. &lt;br&gt;
• Local 3D map generation. Autonomous rely extensively on high-definition 3D maps to navigate. Crowdsourced dash camera video can be utilized in construction of such maps, as well as their updates.&lt;br&gt;
• Crime Scene Reconstruction. Reconstruction of a crime on the basis of evidence is very important for law enforcement. However, criminals like to destroy or obstruct local CCTV security cameras. In such case, a dash camera approach can provide necessary resources for crime scene reconstructions. &lt;/p&gt;

&lt;p&gt;Some other applications include parking navigation, road construction detection, infrastructure improvement recommendation and many other.&lt;/p&gt;

&lt;p&gt;To manage the increased volume of data from connected and autonomous car appliances that often generate more upstream data than downstream, reverse Content Distribution Network (rCDN) concept is applied. The key features of rCDN are: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Dynamic video splicing. Each rCDN node receives multiple video streams from multiple cameras or downstream rCDN nodes and splices them together based on relative likeness of scenes. &lt;/li&gt;
&lt;li&gt; Dynamic and adaptive transcoding to match IoT service needs and rCDN node capacity. Service-aware and server-aware video management mechanisms through dynamic and adaptive video transcoding pre-caching and post-caching. This requires the video analytics to examine the video chunk size and the associated meta data. &lt;/li&gt;
&lt;li&gt; Video content upstream distribution. Each rCDN node can obtain information from upstream rCDN nodes on their locations, remaining caching space, and type of video chunks cached.&lt;/li&gt;
&lt;li&gt; Dynamic retention policies to match IoT service needs. rCDN nodes periodically examine the lifetime of each cached video chunk, its size and associated metadata and determines the retention priority and policy, which may include data migration. &lt;/li&gt;
&lt;li&gt; Multiple caching realms creation. Creating multiple caching regions within each rCDN node allows for faster cache hits, parallel and multiple kinds of access by different service to the same rCDN node. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Surveillance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Urban surveillance is an essential part of situational awareness for better urban management and planning, deals with heterogeneous data from a layered sensors environment. Efficient extracting, analyzing and understanding the large-scale data set from heterogeneous smart devices in a real-time manner are essential for critical and emergency situations. However, there is still a huge performance gap between the amount of data generated and the lack of adequate resources to process it. &lt;/p&gt;

&lt;p&gt;For urban surveillance tasks requiring complex data fusion, cloud computing has been widely recognized. However, cloud computing does not work for all kinds of applications. The extra round-trip delays and possible network congestions are not tolerable. In this case, fog computing can be a promising solution. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Crowd-monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Smarter cities utilizing IoT technologies are required to provide a sustainable environment to accommodate the needs of the increasing urban population. A s mart city goal is to improve quality of life for its citizens. This objective can be achieved by deploying sensors, such as cameras, across the city to analyze public area crowds in order to improve city management.&lt;/p&gt;

&lt;p&gt;Because cities are big with large public areas, it means that there is a challenge to manage the quantity and variety of potential sensor data, including video. The tree major issues for such a case are: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Optimizing network bandwidth&lt;/li&gt;
&lt;li&gt; Real-time responsiveness&lt;/li&gt;
&lt;li&gt; Personal data privacy preservation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Just like in surveillance case, cloud computing might not be the best model to manage and process all the data. This is where implementation of fog computing can solve multiple issues. Highly congested areas of large cities present many challenges for city planners. Monitoring crowd movement can help understand crowd patterns to avoid congested areas and ensure that people move safely, securely, and in predictable manner. This has the potential to improve quality of experience and safety. &lt;/p&gt;

&lt;p&gt;Crowd monitoring uses image processing. Data captured by the video cameras is highly sensitive, and therefore outsourcing to cloud computing for processing is not suitable. However, the image itself doesn’t matter, but the aspects of metadata like crowd density, activity, or the number of people present matter. Because of this, video processing in fog computing improve responsiveness while ensuring data privacy. &lt;/p&gt;

</description>
      <category>cloud</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Discussion: What is The Best Hosting Out There? And What is Your Favorite?</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 17 Feb 2020 01:55:11 +0000</pubDate>
      <link>https://dev.to/sciencebae/discussion-what-is-the-best-hosting-out-there-and-what-is-your-favorite-4lpk</link>
      <guid>https://dev.to/sciencebae/discussion-what-is-the-best-hosting-out-there-and-what-is-your-favorite-4lpk</guid>
      <description>&lt;p&gt;I am finally getting to working on my website where I can talk about my experience with astrophotography. I have been putting it off for a while for a few reasons, and the main reason being that living in the northeastern US you don't always get nice weather in winter and I don't think I am up for spending nights outside in the cold taking multiples of long exposures of the night sky... 🪐&lt;/p&gt;

&lt;p&gt;So, today I created a simple coming soon page and for now I am hosting it on Heroku. Once I am done with my web app, I am going to host it, so I can show off my photography and bring astrophotographers like myself together. &lt;/p&gt;

&lt;p&gt;But... my question is, what is the best hosting out there? What is your favorite and why? &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>beginners</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Basic Text to Speech (TTS)</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 10 Feb 2020 03:14:41 +0000</pubDate>
      <link>https://dev.to/sciencebae/basic-text-to-speech-tts-2dk5</link>
      <guid>https://dev.to/sciencebae/basic-text-to-speech-tts-2dk5</guid>
      <description>&lt;p&gt;This a super impromptu post, but as it turns out the &lt;code&gt;window&lt;/code&gt; has a lot of secrets! 😱 Just kidding. They're just really cool features, and one of them is text to speech, which I tried today! &lt;/p&gt;

&lt;p&gt;How did that happen? Well, I started working on one of pretty common interview questions that one of my friends showed to me. The problem goes like this: you put in a number into an input field and it gets translated into... words? English? So if you were to input 123 you'd get "one hundred and twenty three". &lt;/p&gt;

&lt;p&gt;While I should have probably finished the solution to this problem, I got distracted and instead tried the text to speech feature. I am not going to talk much about the numbers problem, but there are a few nuances I want to mention. &lt;/p&gt;

&lt;p&gt;For now, my problem only converts integers between 1 and 20 into words (I know, I know... I will finish it). If there is no number, it returns blank. If anything else is entered but numbers 1-20, you get a message saying "undefined" and the browser tells you (with voice) to ented an integer between 1 and 20. &lt;/p&gt;

&lt;p&gt;Now that we got that lazy embarrassing stuff out of the way 🧐, how do we make the browser speak? &lt;/p&gt;

&lt;p&gt;First, we need to define a few things: &lt;br&gt;
   • &lt;code&gt;const synth = window.speechSynthesis&lt;/code&gt; - the actual synthesizer &lt;br&gt;
   • &lt;code&gt;const voiceList = document.getElementById('voice-list')&lt;/code&gt; - the selector list for all of the voices your system comes with&lt;br&gt;
   • &lt;code&gt;const btnSpeak = document.getElementById('button-speak')&lt;/code&gt; - the button that we click when need a word spoken&lt;br&gt;
   • &lt;code&gt;let voices = []&lt;/code&gt; - the array that we will populate with all of the voices your system comes with &lt;/p&gt;

&lt;p&gt;Next, we will populate the selector list with all the voices: &lt;/p&gt;


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


&lt;p&gt;After that simply call the function: &lt;code&gt;populateVoices()&lt;/code&gt; and then do this: &lt;code&gt;if (speechSynthesis.onvoiceschanged !== undefined) {&lt;br&gt;
speechSynthesis.onvoiceschanged = populateVoices; }&lt;/code&gt;. Firefox doesn't support &lt;code&gt;SpeechSynthesis.onvoiceschanged&lt;/code&gt; and will return a list of voices when &lt;code&gt;SpeechSynthesis.getVoices()&lt;/code&gt; runs. With Chrome we have to wait for the event to fire before populating the list. &lt;/p&gt;

&lt;p&gt;Now all we need is to create an event listener for the button, so once we click on it, we hear speech: &lt;/p&gt;


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


&lt;p&gt;Because we are not trying to make it speak whatever is in the input field, but the number converted into words, we have to define a variable that holds the &lt;code&gt;.innerHTML&lt;/code&gt; of the converted word &lt;code&gt;let numberWord = document.getElementById('words').innerHTML&lt;/code&gt; and pass it into &lt;code&gt;SpeechSynthesisUtterance(numberWord)&lt;/code&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%2Fi%2Ft8kweqc0sh2pnr2465e7.jpg" 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%2Fi%2Ft8kweqc0sh2pnr2465e7.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, if the input is not an integer and is &lt;code&gt;undefined&lt;/code&gt;, if will speak angrily and ask to enter an integer between 1 and 20 😈. It will only speak English in my case (or your native language you're translating digits to words), since it is not reading the numbers in the input field, but the converted words.  &lt;/p&gt;

&lt;p&gt;The complete API documentation on speech recognition and synthesis is &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API" rel="noopener noreferrer"&gt;here&lt;/a&gt;, and while you're checking that out, I am off to finish the number to words conversion problem 😴... &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>tutorial</category>
      <category>basecs</category>
    </item>
    <item>
      <title>How am I preparing for a Technical Interview?</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 03 Feb 2020 00:22:10 +0000</pubDate>
      <link>https://dev.to/sciencebae/how-am-i-preparing-for-a-technical-interview-3j6o</link>
      <guid>https://dev.to/sciencebae/how-am-i-preparing-for-a-technical-interview-3j6o</guid>
      <description>&lt;p&gt;As some may or may not know, I am just at the very beginning of my technical career. I graduated from a university with a CS undergraduate degree in May 2019 and 2 months after that I enrolled into a coding bootcamp, which I graduated 15 week later. I officially started my job search in mid-December last year. &lt;/p&gt;

&lt;p&gt;Finding that one company that has their views aligned with yours is definitely a process. However, when you find that company you really want to work for you have to bring your A-game. So how have I been preparing for my technical interviews for a junior developer position? Here I will list a few sources that I have been using. &lt;/p&gt;

&lt;p&gt;All of the mentioned below is only a part of what you’d need to land a job, but I think that this is a very &lt;strong&gt;good place to start.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Reading.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=sr_1_2?crid=2H9V0KIECOYL0&amp;amp;keywords=cracking+the+coding+interview&amp;amp;qid=1580688536&amp;amp;sprefix=cracking+the+%2Caps%2C143&amp;amp;sr=8-2"&gt;Cracking the Coding Interview: 189 Programming Questions and Solutions by Gayle Laakman McDowell.&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This is a book that contains 189 programming questions, ranging from simplest to not-so-simple algorithm problems. It covers everything from data structures, algorithms, and big-O problems. The solutions to problems are written in Java, however, they’re easy to read and can be translated into pseudocode or even other languages. The book also contains some tips and advices for soft-skill side of the interview process. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Competitive programming.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;HackerRank&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hackerrank.com/"&gt;HackerRank&lt;/a&gt; is a technology company that focuses on competitive programming challenges. HackerRank is also a system that many hiring companies use to create code challenges for their candidates. Recently, it’s also been used by some universities to evaluate students’ preparedness. HackerRank coding challenges can consist of both multiple-choice questions and programming questions. Usually, hiring companies tailor their challenges to their technologies that they use on a daily basis. HackerRank also provides a variety of programming problems for practice. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;LeetCode&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://leetcode.com/"&gt;LeetCode&lt;/a&gt; is another competitive programming website that is similar to HackerRank. LeetCode, however, does give you access to solutions from other people, but for a price of $35 a month. However, because dev community is amazing and caring, many people have been posting their solutions in the discussion section of a problem to compare with others and learn from one another. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;CodeWars&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.codewars.com/"&gt;CodeWars&lt;/a&gt; poses itself as an educational community of computer programming, however, not without that competitive spirit sprinkled all over it. What I love about CodeWars is the ranking system they use. It borrows a Japanese karate ranking system to help you advance with your programming and problem-solving skills. There are 8 kyu all together, and you start with 8. After you solve a certain amount of problems at your kyu, you advance to the next level. CodeWars problem pool is very impressive ranging from basic concepts to super interesting problems like BrainFuck Transpiler. CodeWars is free to use, and they give access to solutions after your own solution was submitted. However, they do offer some advances features for $5 a month. The features include enhanced statistics, realtime output streaming, head-to-head comparison and others. For most people that just want practice solving problems those features are not really needed. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Research.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are also quite a few sources where people post reviews of their experiences at technical and cultural interviews at various companies. A lot of times such reviews also include interview tips and tricks for those who are about to interview. These sources can also include range of salaries and the average rating of the culture of a company you’re looking to interview with, pros and cons of working at a particular company, and CEO approval. &lt;/p&gt;

&lt;p&gt;Such websites include: &lt;br&gt;
&lt;a href="https://www.glassdoor.com/"&gt;Glassdoor&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.greatplacetowork.com/"&gt;Great Place to Work&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.indeed.com/"&gt;Indeed&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.comparably.com/"&gt;Comparably&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.careerbliss.com/"&gt;Career Bliss&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>java</category>
    </item>
    <item>
      <title>Tutorial: Create a Simple ISS Tracker with React</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 27 Jan 2020 02:27:07 +0000</pubDate>
      <link>https://dev.to/sciencebae/tutorial-crate-a-simple-iss-tracker-with-reactjs-48h4</link>
      <guid>https://dev.to/sciencebae/tutorial-crate-a-simple-iss-tracker-with-reactjs-48h4</guid>
      <description>&lt;p&gt;So, you’re into space and technology, like myself, and you decided to write an International Space Station (ISS) tracker. How would you do that, and what would you have to keep in mind? In this post I will guide you through and teach you how to write a very simple ISS tracker using Google Maps. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's look at what we have so far: the &lt;a href="http://api.open-notify.org/iss-now.json"&gt;ISS coordinates API&lt;/a&gt;, and a &lt;a href="https://cloud.google.com/maps-platform/"&gt;Google Maps key&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The Google Maps key is easy to obtain, and Google gives you $300 worth of credits which is definitely more than enough to play with this project. &lt;/p&gt;

&lt;p&gt;Now, there is something interesting about the ISS coordinates API. It gives us “iss_position”, which is latitude and longitude, but the values don’t change unless we refresh the browser page. Keep on reading to learn how to go about this. &lt;/p&gt;

&lt;p&gt;As always, let’s start with creating a new React app: &lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create-react-app iss-tracker
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And once the app is created, then let’s run&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm start
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now would be a good idea to remove all of the fluff-stuff the app comes with, like the spinning ReactJS logo and useless text. Basically, what your page should currently have is a title, if one is desired, and the App.js file should look like is this: &lt;/p&gt;


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



&lt;p&gt;We need to start thinking about how to add a map to our page. First, let’s create a component for the map (create a new .js file and call it Map.js) and add &lt;code&gt;&amp;lt;Map/&amp;gt;&lt;/code&gt; component to our App.js, which now should look like this:&lt;/p&gt;


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


&lt;p&gt;We are now done with App.js file and will be only working with Map.js from now on. Map should be a class, as we will need state to save latitude and longitude, and the set-up should be the following: &lt;/p&gt;


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


&lt;p&gt;To make things extremely easy for this tutorial, we will be using a Google Map React npm package. It is a component that was written over a small set of Google Maps API, and is perfect for our little project. Head over &lt;a href="https://github.com/google-map-react/google-map-react"&gt;here&lt;/a&gt;&lt;br&gt;
to read the documentation and learn more about the usage of this package.&lt;/p&gt;

&lt;p&gt;Let’s go ahead and install Google Map React by running the following command in your terminal: &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save google-map-react
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The next thing you have to do is import it in your Map.js file, like so:&lt;/p&gt;


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


&lt;p&gt;This package is very easy to use, and most of it is copy-paste, so I suggest you structure your state exactly the same way as in the documentation, as this is how this Google Maps component requires it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Coordinates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that we have everything set up, let’s go back to our issue of getting coordinates. First, let’s write a function to fetch latitude and longitude and save them into state. I like to define my constant variables for URLs at the top of the file, and then using variable names in fetch instead of having the whole URL there: &lt;/p&gt;


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


&lt;p&gt;As we were taught, we fetch in &lt;code&gt;componentDidMount()&lt;/code&gt;:&lt;/p&gt;


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


&lt;p&gt;By printing out &lt;code&gt;data&lt;/code&gt; in the console, we can see that we are getting all of the necessary information that we need, so let’s save the latitude and longitude in the state. &lt;/p&gt;


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


&lt;p&gt;We are successfully saving coordinates into the state, but what should we do to get new coordinates every certain amount of time? You may have already guessed it, but &lt;code&gt;setInterval()&lt;/code&gt; is the perfect guy for this job! Let’s see it in action. While we are at it, we can also refactor and restructure the code a little bit, as we will have to use &lt;code&gt;componentWillUnmount()&lt;/code&gt; to clear the interval.&lt;/p&gt;


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

&lt;p&gt;By printing out latitude and longitude in the console we can observe a beautiful stream of coordinates that are printed every 3 seconds. Of course, we can adjust how often we get new data by changing the milliseconds number in &lt;code&gt;setInterval()&lt;/code&gt; function. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8dBAhhBh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e1nsq3ytvsgfvtgeuv1w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8dBAhhBh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e1nsq3ytvsgfvtgeuv1w.png" alt="ISS coordinates pulled every 3 seconds"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show It Off!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, the fun part! We can finally put the map on the page and see the tracker move along the path of ISS in real time. Isn’t this exciting? As previously mentioned, this npm package is very easy to use, so let’s go ahead and add the map. Prior to this you should have already obtained a Google Maps key; and &lt;strong&gt;always&lt;/strong&gt; remember to hide your keys in the &lt;code&gt;.env&lt;/code&gt; file and add the file to &lt;code&gt;.gitignore&lt;/code&gt; so no one else can use it. &lt;/p&gt;


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


&lt;p&gt;All we have left to do is add our little ISS symbol and see it move! Just like in the documentation, let’s create a small component that is our icon and define it on top of the file; as well as define a variable &lt;code&gt;img&lt;/code&gt; that is our ISS icon. The icon can be downloaded &lt;a href="https://gofile.io/?c=wq147r"&gt;here&lt;/a&gt;.&lt;/p&gt;


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


&lt;p&gt;Finally, let’s add the SpaceStation component to the map! For fun we can also add latitude and longitude on top of the page to see the numbers change as the ISS travels:&lt;/p&gt;


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


&lt;p&gt;And we are done! &lt;br&gt;
To see the code for this tutorial, click &lt;a href="https://github.com/yulineko/iss-tracker-tutorial"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DYTczDE5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/9p3m7l8lk81u27fqibl4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DYTczDE5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/9p3m7l8lk81u27fqibl4.png" alt="ISS Tracker screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>tutorial</category>
      <category>javascript</category>
      <category>todayilearned</category>
    </item>
    <item>
      <title>Cloud: Fog Computing Applications - Video</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Sun, 19 Jan 2020 21:43:19 +0000</pubDate>
      <link>https://dev.to/sciencebae/cloud-fog-computing-applications-video-3742</link>
      <guid>https://dev.to/sciencebae/cloud-fog-computing-applications-video-3742</guid>
      <description>&lt;p&gt;&lt;strong&gt;Video Analytics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Video analytics is best described through the example of physical security camera usage. Security cameras are widely deployed across many industries. These cameras place a high demand on computing resources and are capable of detecting and collecting the status of many environmental parameters. &lt;/p&gt;

&lt;p&gt;Video streams from cameras in a branch location are rarely directly streamed to a central data center because of the bandwidth requirements for transporting video from multiple cameras is higher than what is normally available in terms of bandwidth connectivity. Video recorders are often located on premises where the cameras are connected through high speed LAN. Another way is to completely eliminate recorders and record the video in the cameras themselves, using the onboard storage.  In both cases, there is a need to archive important video back to the central site. &lt;/p&gt;

&lt;p&gt;Another important usage model related to video analytics is to convert video into usable data at the branch and transmit only the data to the cloud. Once video is converted into usable data, operations such as searching and others, can be performed at the cloud level across multiple cameras. The use of fog computing achieves the following important objectives: &lt;br&gt;
• Bandwidth scalability&lt;br&gt;
• Compute scalability&lt;br&gt;
• Storage scalability&lt;br&gt;
• Relevance scalability&lt;br&gt;
• Application scalability&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video Caching&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In practice, cache has finite storage. To efficiently manage cache, a piece of a vide that has not been requested for some time must be deleted. However, caching can be done more efficiently by prolonging duration that a recently requested video is accessible within the local network, allowing nodes belonging to the same network to share recently requested video objects, and by not transporting the video object across the network. These behaviors can be accomplished by designing a distributed caching system that applies the theory of network coding for distributed storage. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intelligent Proxy for Live Video Streaming&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While providing extra storage can resources in fog nodes can provide improved delivery of on-demand video streaming, improving computational resources can enhance performance of video streaming. In live streaming multiple clients are interested in watching the same content at the same time, and in this case, it is wasteful to stream multiple copies of the same content to users in the local network. Only the highest quality version of the video needs to be transferred to the fog node at the edge of each local network. The fog node, in turn, will transcode the stream down to various quality versions that match the link rates and device capabilities. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video Streaming Processing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Video streaming processing can be greatly improved by utilizing fog computing environment, which can reduce latency and network congestion for interactive applications which is achieved by using weighted round robin (WRR) algorithm for scheduling the streaming operation into the fog node. WRR is commonly used because of its plainness and lower computational overhead. WRR extends round robin (RR) algorithm by a potential to give different weights to queues. When using fog computing to process the video stream the latency reduces with the varying bandwidth. &lt;/p&gt;

</description>
      <category>cloud</category>
      <category>cloudcomputing</category>
      <category>aws</category>
      <category>azure</category>
    </item>
    <item>
      <title>Cloud: Multi-Tenant Architecture and it’s Issues</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Mon, 13 Jan 2020 01:21:08 +0000</pubDate>
      <link>https://dev.to/sciencebae/multi-tenant-architecture-and-it-s-issues-h06</link>
      <guid>https://dev.to/sciencebae/multi-tenant-architecture-and-it-s-issues-h06</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is multi-tenant architecture?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Virtualization + Recource Sharing = Multi-Tenancy&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Multitenancy is a type of computer architecture in which one or more software instances are created and executed on top of primary software. Multitenancy allows multiple users (tenants) to work in the same software environments at the same time at their own user interfaces.&lt;br&gt;
Multitenancy in cloud computing is basically resource sharing; it is a “natural result of trying to achieve economic gain in Cloud Computing by utilizing virtualization” (“Multi-Tenancy inCLoud Computing”, p. 345). &lt;/p&gt;

&lt;p&gt;Some of the types of cloud computing services that exist are: &lt;br&gt;
• SaaS/AaaS: Software-as-a-Service&lt;br&gt;
• PaaS: Platform-as-a-Service&lt;br&gt;
• IaaS: Infrastructure-as-a-Service [hardware and software available for service]&lt;/p&gt;

&lt;p&gt;SaaS uses a highly multi-tenant architecture and the user contexts are separated from one another logically at both runtime and rest. SaaS/AaaS is defined as a software model where both the application and the data are hosted on a cloud by independent developers, which enables a user to access the software when needed from any location. An example of such software would be Microsoft Business Productivity Online Suite, Dropbox, Google Apps, etc. SaaS, in essence, is a software delivery model where a provider or a third party hosts an application and makes it available to customers on a subscription basis where they would not have to commit to long-term contracts and can quit at any given moment when the services are no longer required. In SaaS customers cannot monitor or control the underlying infrastructure. &lt;/p&gt;

&lt;p&gt;SaaS also has two models: simple multi-tenancy and fine-grained multi-tenancy. The simple multi-tenancy means that every user has their own resources that are different from other users. In fine-grained multi-tenancy all resources are shared between users except customer-related data. &lt;/p&gt;

&lt;p&gt;Some advantages of multi-tenancy are: &lt;br&gt;
• Same software version is available to all customers&lt;br&gt;
• Global accessibility&lt;br&gt;
• Software development and maintenance are done by the provider&lt;br&gt;
• Provider hosted software is centrally located to be made easily accessible through the web&lt;br&gt;
• APIs allow for integration between different pieces of software&lt;/p&gt;




&lt;p&gt;SaaS and multi-tenancy, while being a powerful business model with many advantages, also has issues and challenges. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Security&lt;/em&gt;. Putting your data into someone else’s hands and running your software using someone else’s CPU is a great risk and requires a tremendous amount of trust. Some of the well-known cloud security issues are data loss, hacks, and some others. The multi-tenancy model introduced new security challenges and vulnerabilities that require new techniques to deal with. The examples could be the following: one tenant gaining access to the neighbor’s data, data is accidentally returned to the wrong tenant, or one tenant negatively affecting another in terms of resource sharing. These vulnerabilities can be exploited for personal gain. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Performance&lt;/em&gt;. Because SaaS applications reside in different locations, the response time in accessing the may vary from time to time. While cloud infrastructure focuses on enhancing the overall system performance as a whole, it is impossible to predict the response time of a specific application, and in general SaaS applications run at slightly lower speeds than server applications. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Interoperability&lt;/em&gt;. Each cloud provider has its own way of how clients, applications and users interact with the cloud. This undermines the development of cloud ecosystems by forcing the clients to be locked in with a particular provider. This prohibits the users to choose from alternative vendors and providers in order to optimize the performance within their company/organization. Proprietary cloud APIs make it extremely difficult to integrate cloud services with an organization’s own existing system, such as an on-premises data center. The goal of interoperability is to create seamless fluid data across clouds and between cloud and local applications. &lt;/p&gt;

</description>
      <category>cloud</category>
      <category>azure</category>
      <category>cloudcomputing</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Cloud: Fog or Edge Computing</title>
      <dc:creator>Julia</dc:creator>
      <pubDate>Sun, 05 Jan 2020 21:35:09 +0000</pubDate>
      <link>https://dev.to/sciencebae/cloud-fog-or-edge-computing-1apn</link>
      <guid>https://dev.to/sciencebae/cloud-fog-or-edge-computing-1apn</guid>
      <description>&lt;p&gt;&lt;strong&gt;WHAT IS FOG COMPUTING?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As we learned, cloud computing, as a concept, has been around since 1960’s. However, in recent years a new technology has emerged, called &lt;em&gt;edge&lt;/em&gt; or &lt;em&gt;fog&lt;/em&gt; computing. In the cloud computing, web applications and information processing are centralized at data centers that are situated in limited locations. This model has numerous technological and cost advantages, however, not all applications are suitable to be migrated to the cloud. For example, some applications require nodes in the vicinity to meet their delay requirements, and therefore they demand a tight control of the locations of the hardware. In addition, a wide deployment of IoT (Internet of Things) devices require mobility support and geo-distribution in addition to the location control.&lt;/p&gt;

&lt;p&gt;As per IoT Agenda, TechRadar’s &lt;a href="https://internetofthingsagenda.techtarget.com/definition/fog-computing-fogging"&gt;blog post&lt;/a&gt;, we can define fog computing as a decentralized computing infrastructure in which data, compute, storage and applications are located somewhere between the data source and the cloud. Fog computing brings the advantages and power of the cloud closer to where data is created and acted upon. Fog computing is envisioned as a highly distributed instantiation of cloud computing. The goal of fog computing is to add the existing value to of cloud computing with advantages such as improved power efficiency, reduced latency, enhanced security, and a much higher scalability for mobile and distributed devices. Below is the list of features that illustrate the contrast between cloud and fog computing:&lt;/p&gt;

&lt;p&gt;• Edge location, location awareness, and low latency. Wireless access points and cellular mobile gateways are examples of fog network nodes. &lt;br&gt;
• Support for online analytics and real-time interactions. The fog plays a significant role in the data processing close to the source. &lt;br&gt;
• Geographical distribution. The fog is suited for applications and services that involve widely distributed deployments.&lt;br&gt;
• Support for mobility. It is essential for fog applications to communicate directly with mobile devices. &lt;br&gt;
• Scalability. The fog plays an important role in scaling up Internet services by several orders of magnitude. &lt;br&gt;
• Heterogeneity. Fog nodes come in different form factors and are built upon heterogeneous platform. &lt;br&gt;
• Interoperability and federation. Seamless support of certain services, such as video streaming, requires cooperation of different providers. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CHALLENGES&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While fog computing may seem like an ideal solution for many computing problems, it also comes with its own challenges. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fog Networking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As we previously stated, fog network is heterogeneous. The responsibility of fog network is to connect every component of fog. However, managing such a network and maintaining connectivity and providing services is not easy. There are two techniques that were proposed to create flexible and easily maintainable fog environment. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;em&gt;SDN (Software Defined Networking)&lt;/em&gt;. In the fog each node should be able to act as a router for nearby nodes, and it should be resilient to node mobility. The challenges of integrating SDN into fog is to accommodate dynamic conditions. Proposed designs of SDN-based mobile architectures show the feasibility by achieving high packet delivery ration with overhead. It accepts the changes from wired ports to heterogeneous wireless interfaces to support applications. &lt;/li&gt;
&lt;li&gt; &lt;em&gt;NFV (Network Function Virtualization)&lt;/em&gt;. NFV replaces the network functions with virtual machine instances. It benefits fog computing in many aspects by virtualizing gateways, switches, load balancers, firewall and intrusion detection devices and placing those instances on fog nodes. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Quality of Service (QoS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;QoS is an important metric for fog computing and can be divided into four categories: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;em&gt;Connectivity&lt;/em&gt;. Fog computing provides new opportunities in cost reduction by network relaying, partitioning and clustering. However, selection of fog nodes from end user can drastically impact the performance. &lt;/li&gt;
&lt;li&gt; &lt;em&gt;Reliability&lt;/em&gt;. Normally, reliability can be improved through periodical check-pointing to resume after failure, rescheduling of failed tasks, or replication to exploit executing in parallel. But these methods may not be suited for fog computing because it is highly dynamic, since there is latency, and it cannot adapt to changes.&lt;/li&gt;
&lt;li&gt; &lt;em&gt;Capacity&lt;/em&gt;. Capacity has two folds: network bandwidth and storage capacity. In order to achieve high bandwidth and efficient storage use, it is important to know how data is placed in fog network. This problem brings new challenges to fog computing, such as inability to compute data that is spread throughout several nodes. Another challenges come from design interplay between fog and clout to accommodate different workloads.&lt;/li&gt;
&lt;li&gt; &lt;em&gt;Delay&lt;/em&gt;. Latency-sensitive applications, such as streaming, have their own challenges. To avoid delay, a few solutions have been proposed. One of them is to provide real-time streaming processing rather than batch-processing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Resource Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud provisioning and resource management are still interesting topics in fog computing environment. &lt;/p&gt;

&lt;p&gt;• Application-aware provisioning plans operator migration ahead, ensuring end-to-end latency restrictions and reduction in network utilization. &lt;br&gt;
• Resource discovery and sharing is critical for application performance in fog. It dynamically selects centralized and flooding strategies to save energy in heterogeneous networks. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security and Privacy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are several issues of security and privacy, and quite a few works have been published on the topic. There are four topics that have been extensively studied: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;em&gt;Authentication&lt;/em&gt;. With the emergence of biometric authentication in mobile and cloud computing, applying biometric authentication to fog computing will be beneficial. &lt;/li&gt;
&lt;li&gt; &lt;em&gt;Access control&lt;/em&gt;. This has been a reliable tool on smart devices and cloud, ensuring the security of the system. Expansion of control of data owner into the fog can be achieved exploiting techniques of several encryption schemes together to build an efficient fine-grained data access control. &lt;/li&gt;
&lt;li&gt; &lt;em&gt;Intrusion detection&lt;/em&gt;. Intrusion detection techniques have been applied to cloud infrastructures to mitigate attacks such as insider attacks, flooding attacks, port scanning, and attacks on VM or hypervisor. These detection systems are deployed on either host machine, VM, or hypervisor. They can also be deployed at network side to detect malicious activity. In fog, this provides new opportunities to investigate how fog computing can help with intrusion detection. &lt;/li&gt;
&lt;li&gt; &lt;em&gt;Privacy&lt;/em&gt;. Users are concerned about the risk of privacy leaks, such as data, location, or usage leaks on the Internet. In the fog network, privacy-preserving algorithms can be run in between the fog and cloud since computation and storage are sufficient for both sides while those algorithms are usually resource-prohibited at the end device. &lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>cloud</category>
      <category>fog</category>
      <category>edge</category>
      <category>azure</category>
    </item>
  </channel>
</rss>
