<?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: eric-foertsch</title>
    <description>The latest articles on Forem by eric-foertsch (@ericfoertsch).</description>
    <link>https://forem.com/ericfoertsch</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%2F159351%2Ffffd1736-4587-42da-8c56-ce28cc9606b5.png</url>
      <title>Forem: eric-foertsch</title>
      <link>https://forem.com/ericfoertsch</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ericfoertsch"/>
    <language>en</language>
    <item>
      <title>Can You Be Productive AND Have Fun at Work?</title>
      <dc:creator>eric-foertsch</dc:creator>
      <pubDate>Fri, 06 Dec 2019 19:22:40 +0000</pubDate>
      <link>https://forem.com/dealeron/can-you-be-productive-and-have-fun-at-work-4go2</link>
      <guid>https://forem.com/dealeron/can-you-be-productive-and-have-fun-at-work-4go2</guid>
      <description>&lt;p&gt;The workplace has always been the last place you expect to have fun. You are expected to do a job, make the company money, go home, then come back the next day and do it all over again. Sounds pretty bleak, but it doesn’t have to be that way. The modern workplace has evolved a lot over the years, particularly in the tech industry. Open and fluid work-spaces, flexible schedules, employees in all parts of the world with just the internet to link it all together. Despite being attractive to many, separation makes daily interaction with co-workers more difficult. To remedy this, effort must be put in to building a work culture that embraces collaboration and work-ethic but also promotes positivity and fun.&lt;/p&gt;

&lt;p&gt;The first point of emphasis is communication. Effective communication is critical in sustaining and growing a business in today’s high-tech world. Strong interpersonal communication between employees, teams, departments and management is the lifeblood of any company. Virtual meeting spaces and chat programs are very effective at allowing in-office and remote employees to interact daily. Even if some or all the employees are remote, face to face interaction helps to build a sense of unity. What better way to foster this unity than with modern day chat applications? The shape that your chat application takes should be nurtured and allowed to grow.&lt;/p&gt;

&lt;p&gt;There are many different styles of popular chat applications with similar features, but by far the most popular is Slack. While not offering any unique features, it does have the ability to create custom channels and emoji for any business or personal interest. This customization allows for business related terms to be quickly referenced at a glance. Slack also allows for custom channel integrations for business applications. These customizations allow for personal touches like in company jokes or embarrassing company history that new employees will have to learn. That learning process helps to ingrain into and contribute to the company work culture.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Flanz81rojy5me5ynau43.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Flanz81rojy5me5ynau43.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Competition is another great way of fostering indirect communication between individuals with a shared competing goal. Consider attending events held outside of work. These events offer a unique perspective of your fellow co-workers, perhaps finding shared interests. These real-world interactions are very important for building a solid work culture. There are also plenty of activities during the work day that can bring excitement. Activities such as Foosball, ping pong, darts, quick board games or a match or two of competitive video games. These events should always be optional and subject to managerial discretion: you should not let them affect your productivity during the work day. There are numerous benefits to both competitive and cooperative events. Consider a Foosball tournament or a game of ping pong (with stakes) to relieve stress and build healthy competitive relationships between departments.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Frhmczp84miwgcxsccraw.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Frhmczp84miwgcxsccraw.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every office is unique, built by everyone big and small. The more everyone communicates and understands each other the easier it will be for everyone involved. Modern workplaces require more than a bunch of warm bodies showing up daily. Strive to make an impression. Companies like employee engagement as it leads to stronger and more robust teams. Employees enjoy having something to look forward to during their work days. It is a win-win for everyone.&lt;/p&gt;

</description>
      <category>work</category>
      <category>communication</category>
      <category>tech</category>
      <category>slack</category>
    </item>
    <item>
      <title>So, You Want to Make a Reporting Application</title>
      <dc:creator>eric-foertsch</dc:creator>
      <pubDate>Wed, 14 Aug 2019 13:35:10 +0000</pubDate>
      <link>https://forem.com/dealeron/so-you-want-to-make-a-reporting-application-f2m</link>
      <guid>https://forem.com/dealeron/so-you-want-to-make-a-reporting-application-f2m</guid>
      <description>&lt;p&gt;Say you’re a prospective new business owner and you are ready to open a brand-new customer facing business. You get everything perfect on opening day, but no one shows up. You are missing a crucial part of any business, &lt;strong&gt;advertising&lt;/strong&gt;. Modern businesses need to have a presence both locally and more importantly online. Google, Bing and Facebook are some of the big companies who offer services to help businesses such as yours accomplish this task. &lt;/p&gt;

&lt;p&gt;With intuitive online interfaces and support, an advertiser would be able to grow their online presence and its impact on their business. For the more technically savvy there exists other avenues to build custom tools, dashboards and more. These avenues are called &lt;strong&gt;API’s&lt;/strong&gt; or &lt;strong&gt;Application Program Interfaces&lt;/strong&gt; and they can be very powerful tools to get the most out of your business. In this article, lets focus on one of the three big advertising companies and its unique API platform.&lt;/p&gt;

&lt;p&gt;Most advertising reporting API’s follow a basic set of standards. Before getting your feet wet let’s lay down some standards in which Google (and other online platforms) operate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Documentation is a powerful tool, use it.&lt;/strong&gt; There is a lot to unpack when trying to get data out of an API. Questions like Finding out how a report is segmented or how to access the desired fields of a report or the type of data contained within.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data received by the user is usually report based.&lt;/strong&gt; There are numerous correlations, rules and first party knowledge that goes into how numbers are displayed to the user. It can simplify the logic a bit when running basic reports but can make it difficult to do custom calculations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data is the freshest at certain times of the day.&lt;/strong&gt; Some data is not and cannot be live. Platforms typically have a set time of day they can guarantee data will be fresh. It is imperative to know and plan around these times if highly accurate results are required.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Connecting to and authenticating can be tricky.&lt;/strong&gt; APIs are open to the public and data needs to be protected. To connect to them, multiple steps need to be done to ensure privacy. Typically, these protections include using OAuth2, Bearer tokens and a lot of generated keys.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data will not always be in the format you can use.&lt;/strong&gt; Data can be transferred in numerous different ways online. JSON is a very simple yet powerful format that is used by API’s to deliver data back to you. Sometimes data needs to be coaxed out of an excel document or some proprietary data structure.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Documentation
&lt;/h2&gt;

&lt;p&gt;The first step in working with any new technology is reading any documentation available. API’s can be highly complex, and developers rely on it to know what and how to request. It is like night and day when working with an API that doesn’t have good documentation versus one that has great documentation. Google Ads thankfully falls on the “day” end of that spectrum: clean documentation that not only specifies how the data is segmented, but what fields can be requested on the report and even the data type and property name to look for in the return file.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fi7989h5uyifb5ovgkp3w.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fi7989h5uyifb5ovgkp3w.png" alt="Clean definition of attributes, segments and metrics on the Google Ads Campaign Performance Report"&gt;&lt;/a&gt;&lt;/p&gt;
Clean definition of attributes, segments and metrics on the Google Ads Campaign Performance Report



&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ffcytf2ed0i6uczwvr29p.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ffcytf2ed0i6uczwvr29p.png" alt="Very informative breakdown of the AverageCost field on the Campaign Performance Report"&gt;&lt;/a&gt;&lt;/p&gt;
Very informative breakdown of the AverageCost field on the Campaign Performance Report



&lt;h2&gt;
  
  
  Report Based Data
&lt;/h2&gt;

&lt;p&gt;Google Ads combines Google Search engine results, YouTube video metrics and Google AdSense into a feature rich web app and API. The sheer amount of data available can be overwhelming. It can be even more overwhelming to developers who are just getting started developing on the platform. Google Ads solves this issue by offering a host of reports out of the box.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8lj25q3o3p5zewjghtrl.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8lj25q3o3p5zewjghtrl.png" alt="A list of the reports offered by Google Ads"&gt;&lt;/a&gt;&lt;/p&gt;
A list of the reports offered by Google Ads



&lt;p&gt;So, the next question is “How do I get these reports into my code?” Thankfully the answer is straight forward. Normally, to start downloading these reports would require a fair amount of boilerplate code. Google has simplified this step a lot by creating and distributing packages tailored to the Google Ads platform.&lt;/p&gt;

&lt;p&gt;Once the packages are installed a developer can generate a request specifying the report type, columns, date range, returned file type and other specific request information. Once sent, the Google Ads API will send back a file in the format requested for consumption. Having this level of flexibility offers developers a solid foundation in which to power their reports.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7afp3xxkse7f4z9baw7k.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7afp3xxkse7f4z9baw7k.png" alt="Basic C# report request definition"&gt;&lt;/a&gt;&lt;/p&gt;
Basic C# report request definition



&lt;h2&gt;
  
  
  Fresh Data
&lt;/h2&gt;

&lt;p&gt;A common aspect of working with live advertising data is how &lt;strong&gt;fresh&lt;/strong&gt; the data is. The concept of fresh data is not unknown to developers who work in and around databases. Data is considered “Fresh” if it is the most recent, up to date data available. The further from the time the data was released, the more stale the data becomes. It is important to know what type of data you are pulling and when it was pulled to get the most accurate picture possible.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnwsib9v1pdvzsro3gb5m.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnwsib9v1pdvzsro3gb5m.png"&gt;&lt;/a&gt;&lt;/p&gt;
For more information about Google Ad metrics, visit https://support.google.com/google-ads/answer/2544985?hl=en



&lt;h2&gt;
  
  
  Authentication
&lt;/h2&gt;

&lt;p&gt;Security is huge concern when working with anyone or anything online and API’s are no different. Google Ads requires four pieces of information before allowing data to be queried in the API. The first is a &lt;em&gt;developer token&lt;/em&gt;. This is tied to a developer account and is used by Google to track who the developer is and what level of access they have. New developers start out with basic developer access and must send an application to Google for full developer access. The next two pieces of information, the &lt;strong&gt;client id&lt;/strong&gt; and &lt;strong&gt;client secret&lt;/strong&gt;, are a pair of ids that specify which account the data is drawn from. The id is easy enough to find, but the secret must be generated for that account. Finally, the &lt;em&gt;refresh token&lt;/em&gt;* is another generated token that has a limited life and must be regenerated regularly. Once all these tokens are assembled, data can be requested successfully from the API. A step by step walk-through can be found by clicking &lt;a href="https://developers.google.com/adwords/api/docs/guides/first-api-call" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When working with authorization tokens you never want to store them in the code itself. Anyone who has access to your code base has access to your tokens. So where can you store these tokens so that you can still access them in your code? A product such as Azure KeyVault or other cloud-based platform is a great solution to this problem. When it comes time to renew your refresh token, simply swapping it out in the cloud is very fast and simple.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fncrbsz9i82ia8wfmrblp.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fncrbsz9i82ia8wfmrblp.png"&gt;&lt;/a&gt;&lt;/p&gt;
For more information about Azure KeyVault, visit https://azure.microsoft.com/en-us/services/key-vault/



&lt;h2&gt;
  
  
  Data Formats
&lt;/h2&gt;

&lt;p&gt;There are multiple ways to transfer data online. JSON, CSV, tab spaced are just some of the common formats employed by modern API’s to respond to data requests. Google Ads give you the option to specify how you would like your data returned. However, the data is returned the key is to get it in a consistent format for your code to consume and process. For example, if you want to store data from a campaign report into your database you might want to request data as a CSV, then convert that data to a database object and save it to the database.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ftnqotgdk494yw5econop.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ftnqotgdk494yw5econop.png" alt="Sample code for reading a gZip file from the Google Ads API"&gt;&lt;/a&gt;&lt;/p&gt;
Sample code for reading a gZip file from the Google Ads API



&lt;h2&gt;
  
  
  Only the Beginning
&lt;/h2&gt;

&lt;p&gt;Taking these standards into account is only the jumping off point into the world of internet advertising API platforms. Any major customer facing business worth its salt has a vested interest in data pulled from these platforms and how it can help to grow their business. As a developer knowing how to interact with these API’s, understanding their quirks can be a great boon to any developer.&lt;/p&gt;

</description>
      <category>business</category>
      <category>advertising</category>
      <category>programming</category>
      <category>analytics</category>
    </item>
  </channel>
</rss>
