<?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: Nikki</title>
    <description>The latest articles on Forem by Nikki (@tarise).</description>
    <link>https://forem.com/tarise</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%2F374021%2F7c9cd9c8-cee1-41a5-8797-da4063cc6af0.jpg</url>
      <title>Forem: Nikki</title>
      <link>https://forem.com/tarise</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tarise"/>
    <language>en</language>
    <item>
      <title>Creating a Team Dashboard with Smashing</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Sat, 16 May 2020 00:30:15 +0000</pubDate>
      <link>https://forem.com/inspiredbynikki/creating-a-team-dashboard-with-smashing-5c3p</link>
      <guid>https://forem.com/inspiredbynikki/creating-a-team-dashboard-with-smashing-5c3p</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3CskTw8D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AcpQYyIvS7KiIPYMVM_J_8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3CskTw8D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AcpQYyIvS7KiIPYMVM_J_8w.png" alt=""&gt;&lt;/a&gt;Date Trends Illustration from &lt;a href="https://dev.to/scottw/-undraw-10ge-temp-slug-8229813"&gt;unDraw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every now and then, I chose to work on a side project that could benefit our Development team or Hanley Wood in some way. I decided to create a team dashboard for Hanley Wood employees to see what the Business Media Development team is up to and learn about who we are. We used to have a dashboard that displayed on our TV monitors years ago, so the idea initially stemmed from that concept.&lt;/p&gt;

&lt;p&gt;I started on this back in 2017, took a break from it, and then finally completed it just a few months ago. Many of the widgets created for the &lt;a href="https://github.com/Smashing/smashing"&gt;Smashing&lt;/a&gt; framework were outdated, so I had to read up on quite a few APIs to update the code. For the UI design, I decided to use &lt;a href="http://tachyons.io/"&gt;Tachyons&lt;/a&gt; and &lt;a href="https://fontawesome.com/"&gt;Font Awesome&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p4Y3ymUb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AKAsazf11RSGMfwxtNpq6FA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p4Y3ymUb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AKAsazf11RSGMfwxtNpq6FA.png" alt=""&gt;&lt;/a&gt;Completed Dashboard Screenshot&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s Smashing?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://smashing.github.io/"&gt;Smashing&lt;/a&gt; is an open-source dashboard framework that uses Ruby and Coffeescript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HY4st__y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AIoYIR12r3kTN7-zFsbA67Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HY4st__y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AIoYIR12r3kTN7-zFsbA67Q.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s easy to add widgets, and there are many that a premade at &lt;a href="https://github.com/Smashing/smashing/wiki/Additional-Widgets"&gt;https://github.com/Smashing/smashing/wiki/Additional-Widgets&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s a super simple one to display Twitter mentions, courtesy of &lt;a href="https://gist.github.com/VanessaHenderson"&gt;Vanessa Henderson&lt;/a&gt; on Github:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;twitter.rb&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require 'twitter'

#### Get your twitter keys &amp;amp; secrets:
#### [https://dev.twitter.com/docs/auth/tokens-devtwittercom](https://dev.twitter.com/docs/auth/tokens-devtwittercom)
twitter = Twitter::REST::Client.new do |config|
  config.consumer\_key = 'YOUR\_CONSUMER\_KEY'
  config.consumer\_secret = 'YOUR\_CONSUMER\_SECRET\_KEY'
  config.access\_token = 'YOUR\_ACCESS\_TOKEN'
  config.access\_token\_secret = 'YOUR\_ACCESS\_TOKEN\_SECRET'
end

SCHEDULER.every '15m', :first\_in =&amp;gt; 0 do |job|
  begin
    user = twitter.user
    if mentions
      mentions = mentions.map do |tweet|
        { name: tweet.user.name, body: tweet.text, avatar: tweet.user.profile\_image\_url\_https }
      end

send\_event('twitter\_mentions', {comments: mentions})
    end    
  rescue Twitter::Error
    puts "\e[33mThere was an error with Twitter\e[0m"
  end

end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Then insert the following HTML into the dashboard.erb file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;li data-row="1" data-col="1" data-sizex="2" data-sizey="1"&amp;gt;
      &amp;lt;div data-id="twitter\_mentions" data-view="Comments" style="background-color:#00afd7;" data-moreinfo="Tweets @sourceclear" &amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;i class="icon-twitter icon-background"&amp;gt;&amp;lt;/i&amp;gt;
  &amp;lt;/li&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;More info on this widget can be found at this gist: &lt;a href="https://gist.github.com/VanessaHenderson/9aa0823efdfc085f675d"&gt;https://gist.github.com/VanessaHenderson/9aa0823efdfc085f675d&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s Included?
&lt;/h3&gt;

&lt;p&gt;The goal for this dashboard was for it to be something that could display on the TV monitor near the dev team as well as be accessible to internal employees.&lt;/p&gt;

&lt;p&gt;For this reason, I decided to include the following info to display:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Links to helpful resources&lt;/strong&gt;  — included our internal documentation site, our team availability calendar, and a link to email requests for interactives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;List of team members &lt;/strong&gt; — this used the Slack widget and used an icon to display whether or not a team member is online.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprint details&lt;/strong&gt;  — this included the sprint dates, goal(s), and the status of bugs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment details&lt;/strong&gt;  — included the date of the next deployment and any additional information, such as if there is a delay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code commits &lt;/strong&gt; — used separate modules to display code changes to our CMS system and code changes to our Continuing Education system.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What was Challenging?
&lt;/h3&gt;

&lt;p&gt;Most of this project involved dealing with code I’d never dealt with before, so that was a challenge in itself. I had to learn Ruby, Coffeescript, and the APIs for Slack, Github, and Google. The problems that hindered me the most was trying to use a widget that initially didn’t work, only to realize I needed to update to a new API, and trying, and failing, to use the Vivify API to use sprint data.&lt;/p&gt;

&lt;h4&gt;
  
  
  Outdated Widgets
&lt;/h4&gt;

&lt;p&gt;The list of user-submitted widgets provided by Smashing was super helpful, however many are were outdated.&lt;/p&gt;

&lt;p&gt;For instance, the Slack API had changed since the creation of the &lt;a href="https://gist.github.com/machadolab/c948672c4a6855c48a596dd4fbbb9646"&gt;Slack User Presence widget&lt;/a&gt;, so I had to familiarize myself with the API instead of being able to use the widget right out the box.&lt;/p&gt;

&lt;p&gt;This line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;slack\_client = Slack::Client.new token: options[:api\_token]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;ended up having to change to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;slack\_client = Slack::Web::Client.new token: options[:api\_token]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Vivify Scrum
&lt;/h4&gt;

&lt;p&gt;I had a hard time working with Vivify Scrum’s API to display the info I wanted. I asked via Twitter if it was possible to obtain the current sprint using their API, and they said, “no.” To finally finish the project, I scrapped trying to use the API and opted to populate the sprint data using a Google Form, thus, I learned how to use the Google Drive and Spreadsheets APIs to populate the sprint data into the dashboard. I can always come back to utilizing the Vivify Scrum API later.&lt;/p&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;I had a lot of fun working on this. It was a side project meant for me to work on something outside of what I typically do at Hanley Wood. Not everything worked out as I expected, but I’m glad to have the experience under my belt.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eNXnVRkK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AJvyJ6L-4gstKmSis9cUa4A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eNXnVRkK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AJvyJ6L-4gstKmSis9cUa4A.png" alt=""&gt;&lt;/a&gt;Celebration Illustration from &lt;a href="https://dev.to/scottw/-undraw-10ge-temp-slug-8229813"&gt;unDraw&lt;/a&gt;&lt;/p&gt;




</description>
      <category>ruby</category>
      <category>webdev</category>
      <category>learning</category>
    </item>
    <item>
      <title>Dev and Designers Clashing</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Fri, 15 May 2020 23:45:06 +0000</pubDate>
      <link>https://forem.com/tarise/dev-and-designers-clashing-3663</link>
      <guid>https://forem.com/tarise/dev-and-designers-clashing-3663</guid>
      <description>&lt;p&gt;&lt;em&gt;cover image courtesy of &lt;a href="https://undraw.co/" rel="noopener noreferrer"&gt;unDraw.co&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In which situations have you seen Devs and Designers clash? We both speak different languages, so it's understandable how this may happen.&lt;/p&gt;

&lt;p&gt;I think empathy and respect are very important. I've heard comments from the dev community talking down on design work as if it were the least important part of the project.&lt;/p&gt;

&lt;p&gt;What do you do to ensure developers and designers maintain a good relationship?&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%2Fg4gcbjgag0u741pqsn0m.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%2Fi%2Fg4gcbjgag0u741pqsn0m.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;courtesy for &lt;a href="https://www.blackillustrations.com/" rel="noopener noreferrer"&gt;blackillustrations.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Where Do You Get Your Inspiration for Web Design/Development?</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Fri, 08 May 2020 19:20:38 +0000</pubDate>
      <link>https://forem.com/tarise/where-do-you-get-your-inspiration-for-web-design-development-2bn6</link>
      <guid>https://forem.com/tarise/where-do-you-get-your-inspiration-for-web-design-development-2bn6</guid>
      <description>&lt;p&gt;Where do you get your inspiration for web design or development?&lt;/p&gt;

&lt;p&gt;My go-to sites are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.smashingmagazine.com/"&gt;Smashing Magazine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/"&gt;CSS Tricks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our sites are a representation of our magazines, so I'll also check to see what popular media sites are up to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mashable.com/"&gt;Mashable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nytimes.com/"&gt;NY Times&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.washingtonpost.com/"&gt;Washington Post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theatlantic.com/"&gt;The Atlantic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I may be looking for things like how they do their sub-branding or how they promote their native advertising.&lt;/p&gt;

&lt;p&gt;What about you?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Why I Never Finished My First Android App</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Mon, 13 Apr 2020 14:44:03 +0000</pubDate>
      <link>https://forem.com/tarise/why-i-never-finished-my-first-android-app-3m11</link>
      <guid>https://forem.com/tarise/why-i-never-finished-my-first-android-app-3m11</guid>
      <description>&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@hamann?utm_source=medium&amp;amp;utm_medium=referral"&gt;niklas_hamann&lt;/a&gt; on &lt;a href="https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ok, so first off,&lt;/em&gt; this isn’t meant to be a post riddled with excuses. It’s intended to be a reflection of all the things I did wrong, so you know to do the opposite.&lt;/p&gt;

&lt;p&gt;If you’ve ever found yourself starting a project, yet unable to finish it, this may be useful to you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Don’t be like me, folks.&lt;/em&gt; Keep pushing and avoid the mistakes I made.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BGS-S-vp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AvFzldFhGyQ8RY_a1fK3miw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BGS-S-vp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AvFzldFhGyQ8RY_a1fK3miw.jpeg" alt="Screenshots of the Log My Pain app"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What was the App?
&lt;/h2&gt;

&lt;p&gt;I meant to fulfill a personal need when I set off to create this app. I suffer from migraines, and my neurologist needs to see a record of my migraines to assess my treatment. She’d always hand me a paper calendar that I was terrible about filling out.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Why?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Because I didn’t feel like it, that’s why. No, but on a serious note, whenever I had a migraine, I didn’t feel like getting up to find the paper and then find something to write with to log my headache. I’d put it off until later. Then I’d forget, and before you know it, I’d have an incomplete calendar.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;At one point, I was using an app that I’d downloaded to keep track of my migraines, but the company ended up removing it from the store. But I’m a software developer, right? &lt;strong&gt;Why not build my own app?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  I was my own biggest enemy.
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;My app would have the one thing that didn’t exist in any of the other headache tracking apps: a quick record button.&lt;/p&gt;

&lt;p&gt;See, when you’re in &lt;em&gt;excruciating&lt;/em&gt; pain, you don’t want to open an app and fill out a form.&lt;/p&gt;

&lt;p&gt;If I’m using my phone during an episode, it’s to peek at my notifications and maybe send someone a “k” text message to let them know I’m alive and hopefully they get the idea that I can’t type out, “Hey sorry I’ll have to get back to you later because my head hurts too bad.”&lt;/p&gt;

&lt;p&gt;See what I’m getting at?&lt;/p&gt;

&lt;p&gt;I needed to be able to record my migraine on my phone with the most minimal effort. The “quick record” button was a large button that would appear on the first screen of the app. It allowed me to record my episode quickly and fill out the details later.&lt;/p&gt;

&lt;p&gt;This feature would be how my app would stand out from the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Didn’t I Finish It?
&lt;/h2&gt;

&lt;p&gt;As I reflect on this, I can think of 3 key things that I lacked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Discipline&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confidence&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A reasonable plan&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Discipline
&lt;/h3&gt;

&lt;p&gt;First and foremost, I shouldn’t have stopped. I stopped coding, and when I had the time to go back, the mere thought of working on it again overwhelmed me, and I’d just put it off again.&lt;/p&gt;

&lt;p&gt;What I should’ve done was schedule the time to work on it regularly for a small chunk of time. An hour a day, or even just an hour over the weekend, would’ve been better than not touching it at all. My learning of Android and mobile development would’ve been continuous and consistent instead of stopping altogether.&lt;/p&gt;

&lt;h3&gt;
  
  
  Confidence
&lt;/h3&gt;

&lt;p&gt;I just was &lt;em&gt;not&lt;/em&gt; convinced that I’d be good enough. Was it anxiety? Depression? Imposter syndrome? I’m not entirely sure, but something in my being convinced me that I’d never make an app good enough for the app store. &lt;em&gt;Who did I think I was?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The solution for this is tough and involves outside help. Seeking the help of a psychologist can help to change that negative inner thinking. &lt;em&gt;This is important.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the immediate, reach out to your peers for mentorship. Their guidance and confidence in you may be the boost that you need to hang in there. There are plenty of subpar apps that have made it into the app store. After realizing this, and yes, I did see a psychologist for two years, I can see that I was entirely capable of creating a simple android app and getting it into the Google Play store. I was my own biggest enemy.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Reasonable Plan
&lt;/h3&gt;

&lt;p&gt;Ok, so I needed that “quick record” button, but the app still required some of the main features as it’s competitors, right?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Wrong.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s the thing about Agile development, which I failed at with this project:&lt;/strong&gt; The app very well could’ve been completed in small deliverable chunks, instead of me waiting for it to be what &lt;em&gt;I&lt;/em&gt; considered to be done.&lt;/p&gt;

&lt;p&gt;For instance, here’s what I could’ve done:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1 — record key info&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ability to “quick record” a migraine with the current timestamp (and delete it)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 2 — record additional info&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Start and end times&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Intensity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Triggers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Additional notes&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 3 — be able to print to hand over to my doctor&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ability to email records as a pdf&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 4 — make the view more convenient&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ability to see records in Calendar view&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 5 — color code migraine intensity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Display records with red, orange, or yellow bar to indicate the pain intensity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 6 — enhanced data visualization&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ability to view graphs of migraine trend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In reality, I completed all but Phase 6. I didn’t release anything because I never considered it “done.” From a UX perspective, I could’ve received feedback from my user base, which would’ve indicated they weren’t interested in graphs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things I’m Proud Of
&lt;/h2&gt;

&lt;p&gt;It’s not worth beating myself up about not finishing this project, so let’s end this on a positive note.&lt;/p&gt;

&lt;p&gt;I’m super proud of myself for the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Taking the time to learn Android development at all&lt;/strong&gt; — hey, I made an app :)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dabbling with branding&lt;/strong&gt; — I made the logo and aimed to use colors that would be easy on the eyes for someone who may currently have a migraine while using the app. I avoided green and blue on purpose, which is all I ever see with health-related apps. Not sure if this was a good idea or not, but I like that I put this extra thought into it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adding a project to Github&lt;/strong&gt; — Finished or not, I was able to add this project to my portfolio, and I can talk about it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I won’t be going back to this project in its current form. What I want to do instead in the near future is to recreate it from scratch using React Native or Flutter.&lt;/p&gt;

&lt;p&gt;We’ll see. ;)&lt;/p&gt;

&lt;p&gt;Thanks for reading and check out &lt;a href="https://github.com/tnsingle/logmypain"&gt;Log My Pain on Github&lt;/a&gt; if you’re interested.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>showdev</category>
      <category>agile</category>
      <category>learning</category>
    </item>
    <item>
      <title>4 Phrases You Can Use to Encourage Collaboration</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Mon, 30 Mar 2020 15:12:58 +0000</pubDate>
      <link>https://forem.com/tarise/4-phrases-you-can-use-to-encourage-collaboration-2j65</link>
      <guid>https://forem.com/tarise/4-phrases-you-can-use-to-encourage-collaboration-2j65</guid>
      <description>&lt;p&gt;As a web developer or any programmer, it’s easy to get stuck in your head. At times, it may even be humiliating to admit you’re unsure of something. Over the years, I’ve noticed that our web dev team here at Hanley Wood uses some variation of these phrases to foster collaboration. The result is that we’re compelled to ask for clarity and advice, thus resulting in new ideas, trust, and a gentle reminder that we as individuals don’t have all the answers, no matter how experienced we may think we are. How many times have you completed a task or project, only to learn later that your peer could’ve advised a better way?&lt;/p&gt;

&lt;p&gt;The phrases outlined below can benefit the most novice to the most experienced developer. We’re continually learning new technologies, and as a result, should foster our ability to learn from one another.&lt;/p&gt;

&lt;p&gt;Maybe you’re already using these phrases. If so, great job! If not, consider if they’ll be helpful to you as perform your everyday tasks.&lt;/p&gt;

&lt;h1&gt;
  
  
  “I’m Stuck.”
&lt;/h1&gt;

&lt;p&gt;Getting stuck happens. Raise your hand and let your team members know what’s up. An extra set of eyes could expose a stupid syntax error that you missed, or give you new ideas you hadn’t thought of on your own. Delaying this could result in wasted time. Set yourself a maximum amount of time you should spend trying to solve a problem, and don’t be ashamed to ask for help when you exceed that time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How many times have you completed a task or project, only to learn later that your peer could’ve advised a better way?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  “I Need a Second Opinion.”
&lt;/h1&gt;

&lt;p&gt;Getting a second opinion is another way to put an extra set of eyes on your work, but I encourage using this phrase even when you’re not stuck. Allow yourself to receive advice from both your senior and junior peers because our varying levels of experience allows us to learn from one another.&lt;/p&gt;

&lt;h1&gt;
  
  
  “What Problem is This Trying to Solve?”
&lt;/h1&gt;

&lt;p&gt;I find it difficult to put my heart into a project if I don’t fully understand it. Asking “Why are we doing this?” can come off as abrasive, but using the phrase “What problem is this trying to solve?” expresses your interest in the end goal. Often, the answer to this question results in one of two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better comprehension in completing the task at hand&lt;/li&gt;
&lt;li&gt;The opportunity to offer suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At times, it may seem as if our stakeholders are asking us to complete tasks that seemingly don’t make sense. Rather than assume the worst, use this phrase to start a conversation that would give you more clarity.&lt;/p&gt;

&lt;h1&gt;
  
  
  “I Messed Up.”
&lt;/h1&gt;

&lt;p&gt;Mistakes happen. Anyone who acts as if they’ve never made a mistake &lt;em&gt;probably&lt;/em&gt; shouldn’t be trusted. Take responsibility by admitting your mistakes without finger-pointing. Recognizing and acknowledging mistakes demonstrates integrity and instills the trust in your peers that you’re least likely to make the same mistakes again.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I encourage the use of these phrases because they’ve helped us to establish a team built on collaboration and trust. We’re all flawed in some way, yet we can all work to be more collaborative to bring out the best in all of us. Recognize your team members are all skilled in different ways and nurture your ability to learn from one another, regardless of years of experience.&lt;/p&gt;

&lt;p&gt;What do you think? Do you have any phrases or advice to add? Comment below.&lt;/p&gt;




</description>
      <category>productivity</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>Leverage Virtual Reality to Immerse Your Site Visitors Using A-Frame</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Fri, 20 Mar 2020 17:56:22 +0000</pubDate>
      <link>https://forem.com/tarise/leverage-virtual-reality-to-immerse-your-site-visitors-using-a-frame-485g</link>
      <guid>https://forem.com/tarise/leverage-virtual-reality-to-immerse-your-site-visitors-using-a-frame-485g</guid>
      <description>&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@frankvex?utm_source=medium&amp;amp;utm_medium=referral"&gt;Frank Vessia&lt;/a&gt; on &lt;a href="https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Over the years, many techniques have been used to engage website visitors. Overuse of images, marquee text, music, animated cursors, and other cringy methods were “must-haves” during early web development. Of course, much has changed since then, and the web looks a little less chaotic. Nevertheless, as technology advances, so has how we use the web.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VRa8AsxF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2284/1%2AUuffhiLtsBezC_4g5IcYGA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VRa8AsxF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2284/1%2AUuffhiLtsBezC_4g5IcYGA.gif" alt="A 90s Relic: [http://www.arngren.net/](http://www.arngren.net/)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many social media sites and apps have utilized virtual reality and augmented reality applications, such as Snapchat filters and 360 images and videos on Facebook. Though this usage is mainly for entertainment, there are still many practical ways to use VR/AR on your website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Potential Usages of VR/AR on the Web
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Data Visualization
&lt;/h3&gt;

&lt;p&gt;The Washington Post’s feature &lt;a href="https://www.washingtonpost.com/graphics/2018/national/smithsonian-dinosaur-augmented-reality/"&gt;A Mystery Dinosaur in the Nation’s Basement&lt;/a&gt; uses augmented reality to display the different parts of a nedoceratop’s skull in 3D.&lt;/p&gt;

&lt;h3&gt;
  
  
  Virtual Tours
&lt;/h3&gt;

&lt;p&gt;BBC’s &lt;a href="https://canvas-story.bbcrewind.co.uk/congo-vr/"&gt;Congo VR&lt;/a&gt; tour allows users the immersive experience of visiting an overgrown palace, hunting with pygmies, and encountering gorillas through the Democratic Republic of the Congo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try Before You Buy
&lt;/h3&gt;

&lt;p&gt;Houzz‘s &lt;a href="https://blog.houzz.com/houzz-upgrades-augmented-reality-app-capabilities/"&gt;View in My Room&lt;/a&gt; augmented reality tool enables users to view home decor and furniture in their home, true to scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Education
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://kaixr.com/"&gt;Kai XR&lt;/a&gt; offers mixed reality experiences to enhance children’s education as a supplemental classroom resource. Take a look at some of her VR field trips at &lt;a href="https://kaixr.com/vr-playground"&gt;https://kaixr.com/vr-playground&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Potential Usages of VR/AR at Hanley Wood
&lt;/h2&gt;

&lt;p&gt;Hanley Wood could benefit from VR/AR in our &lt;a href="https://www.architectmagazine.com/project-gallery"&gt;Project Gallery&lt;/a&gt; and for features like &lt;a href="https://www.builderonline.com/chowa-living-in-balance"&gt;The BUILDER Chōwa Concept Home&lt;/a&gt; by further immersing users more so than they could with images alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Gallery
&lt;/h3&gt;

&lt;p&gt;Project Gallery is a platform created for architects, firms, and manufacturers to showcase their work. A use case in which a user could benefit from VR/AR technology would be the ability to upload an interactive 3D model of their design or an augmented reality floor plan that users could walkthrough.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chōwa Concept Home
&lt;/h3&gt;

&lt;p&gt;Chōwa is Builder Magazine’s latest Concept Home that showcases the collaboration of Japanese and US teams bringing together the best techniques and practices in homebuilding. Though the finished design of the home is beautiful, our &lt;a href="https://www.builderonline.com/"&gt;Builderonline.com&lt;/a&gt; audience may benefit the most from a virtual experience that would allow them to peep through into the walls and flooring. Such an experience would enable to user to get a look at the various constructions phases and methods used, resulting in an overall comprehensive VR experience where one could see the finished product and the construction phases at once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Proof of Concept with 360 Image Office Tour
&lt;/h3&gt;

&lt;p&gt;Though the ideas mentioned above would be nice to implement, we don’t have the means to do so in the near feature. As an Agile development team, a minimal viable product that would allow our editors to incorporate VR/AR into their content may be as simple as giving them the ability to add 360 images and video. A-Frame would make it possible for us to accomplish this in little time due to its easy installation and minimal learning curve.&lt;/p&gt;

&lt;p&gt;Below is an example of an article with a 360 image. Use your cursor to look around the room and use the nav button to switch to another room. Click the pulsating pink dot to view a video of the coffee machine.&lt;/p&gt;

&lt;p&gt;Here’s the link if you’re having trouble viewing the embed: &lt;a href="https://incongruous-hardware.glitch.me/"&gt;https://incongruous-hardware.glitch.me/&lt;/a&gt;&lt;/p&gt;


&lt;div class="glitch-embed-wrap"&gt;
  &lt;iframe src="https://glitch.com/embed/#!/embed/incongruous-hardware?previewSize=100&amp;amp;path=index.html" alt="incongruous-hardware on glitch"&gt;&lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Interactive Demo of 360 Image Office Tour using A-Frame&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VM7YosU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2ArQFftGT2f8IWpLlqqkrlYQ.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VM7YosU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2ArQFftGT2f8IWpLlqqkrlYQ.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing A-Frame
&lt;/h2&gt;

&lt;p&gt;A-Frame is a free and open-source javascript framework that enables you to add virtual reality experiences to your website without the need for your audience to download an app or purchase a headset. You can build cross-platform VR experiences for Vive, Rift, Daydream, GearVR, and Cardboard as well as desktops and smartphones.&lt;/p&gt;

&lt;p&gt;Installation requires adding the latest version of aframe.min.js to the &lt;/p&gt; of your HTML document and then writing your  using A-Frame’s entity-component framework.
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;
 &amp;lt;head&amp;gt;
 &amp;lt;script src=”[https://aframe.io/releases/1.0.3/aframe.min.js](https://aframe.io/releases/1.0.3/aframe.min.js)"&amp;gt;&amp;lt;/script&amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
 &amp;lt;a-scene&amp;gt;
 &amp;lt;a-box position=”-1 0.5 -3" rotation=”0 45 0" color=”#4CC3D9"&amp;gt; &amp;lt;/a-box&amp;gt;
 &amp;lt;a-sky color=”#ECECEC”&amp;gt;&amp;lt;/a-sky&amp;gt;
 &amp;lt;/a-scene&amp;gt;
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Because A-Frame is based on HTML, it’s easy to get started with AR/VR quickly. Their documentation recommends Glitch as a playground to get started, so check out the installation page to view different examples and fork them to create your own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advantages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ability to create VR/AR experiences in-house instead of outsourcing the work to another company.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Frictionless and prevents the need to download additional software&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allows the user to interact with the scene without a headset.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cross-platform, allowing you to build for smartphones and desktop browsers, as well as VR applications for Cardboard, Rift, Windows, Vive, Windows Mixed Reality, Daydream, and GearVR.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Things to Consider
&lt;/h2&gt;

&lt;p&gt;Just because AR/VR is the new thing right now, doesn’t necessarily mean your website needs it. Consider your audience and the type of service or product your website offers.&lt;/p&gt;

&lt;p&gt;In addition, VR technology can be pretty heavy on a website, so while it may bring in users who are interested in trying it out, a slow website would quickly drive them away. Smashing Magazine offers the following solution for this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;My advice here is to not preload everything. Instead load just enough for the user to get started, then dynamically load and start caching the rest. This behavior should be familiar if you have read about Google’s PRPL pattern.&lt;br&gt;
 Even just showing a blurred 360 skybox and some low-poly content, allowing the user to look around, will buy you precious seconds of engagement to bring in additional content and to bootstrap an engaging experience.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ada — &lt;a href="https://www.smashingmagazine.com/2017/09/guide-virtual-reality-web-developers/"&gt;A Guide To Virtual Reality For Web Developers&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;According to &lt;a href="https://web.dev/apply-instant-loading-with-prpl/"&gt;https://web.dev/apply-instant-loading-with-prpl/&lt;/a&gt;, PRPL is an acronym for&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Push — push your most important resources&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Render — render the initial route as soon as possible&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pre-cache — pre-cache the remaining assets&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lazy load remaining routs and assets&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would suggest that you read the PRPL guide and the Smashing Magazine guide using the links above if you plan on dabbling with WebXR.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;WebXR is the exciting new web technology that’s out right now, and I’m eager for us at Hanley Wood to get our hands dirty with it.&lt;/p&gt;

&lt;p&gt;There are indeed some drawbacks and much to be discovered, however, A-Frame appears to be an excellent framework to help us get started quickly.&lt;/p&gt;

&lt;p&gt;Have you worked with VR for the web yet? Which frameworks have you used? Comment below.&lt;/p&gt;




&lt;h2&gt;
  
  
  Further Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aframe.io/aframe-school/#/"&gt;A-Frame School&lt;/a&gt; — an interactive course for WebVR&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developers.google.com/web/updates/2018/05/welcome-to-immersive"&gt;Welcome to the Immersive Web&lt;/a&gt; by Joseph Medley&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://blog.hubspot.com/marketing/vr-marketing-examples"&gt;9 VR Marketing Examples That You’ll Want to Steal for 2020&lt;/a&gt; by Braden Becker&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://web.dev/apply-instant-loading-with-prpl/"&gt;Apply instant loading with the PRPL&lt;/a&gt; pattern by Houssein Djirdeh&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.smashingmagazine.com/2017/09/guide-virtual-reality-web-developers/"&gt;A Guide To Virtual Reality For Web Developers&lt;/a&gt; by Ada Rose Edwards&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.washingtonpost.com/pb/blog/post/2017/10/13/journalism-with-augmented-reality/"&gt;Journalism with Augmented Reality&lt;/a&gt; by Adam Levy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.washingtonpost.com/pb/blog/post/2016/03/11/vr-for-all/"&gt;VR for All&lt;/a&gt; — a Washington Post case study about the &lt;a href="https://www.washingtonpost.com/graphics/business/mars-journey/"&gt;Mars Interactive Journey&lt;/a&gt; using A-Frame&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>html</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How and Why We Improved Our Technical Writing Skills</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Thu, 12 Mar 2020 17:01:05 +0000</pubDate>
      <link>https://forem.com/tarise/how-and-why-we-improved-our-technical-writing-skills-nfm</link>
      <guid>https://forem.com/tarise/how-and-why-we-improved-our-technical-writing-skills-nfm</guid>
      <description>&lt;p&gt;We are a small developer team at Hanley Wood, which means that we don’t have a dedicated Technical Writer. On any given day, we may be required to write some technical documentation. Our most common include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User Story Requirements&lt;/li&gt;
&lt;li&gt;Test Instructions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, occasionally, we‘ll need to write technical documentation for readers outside our core team, such as API documentation and How To’s regarding how to use new features within our Content Management System.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why was it imperative for us to improve our technical writing?
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;When you lack technical writing as a skill, your writing could cause misunderstandings with your readers.&lt;/em&gt; Without such training, it’s easy to lose sight of your audience and write in such a way that it may be confusing to them. Being proficient in technical writing ensures that you’re able to take technical jargon and concepts, and concisely communicate them for the general audience to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Technical Writing Skills are Needed to Write User Story Requirements
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Poorly written User Story Requirements can result in a failed product.&lt;/em&gt; Capturing the requirements from the stakeholder requires a clear understanding of the user’s wants and needs.&lt;/p&gt;

&lt;p&gt;According to Amber Israelsen’s course, “&lt;a href="https://app.pluralsight.com/library/courses/technical-writing-software-documentation/table-of-contents"&gt;Technical Writing: Documentation on Software Projects&lt;/a&gt;,”² each requirement should possess the following nine characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cohesive&lt;/strong&gt; — address one and only one thing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complete&lt;/strong&gt; — fully stated at once, no missing information&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consistent&lt;/strong&gt; — doesn’t contradict any other requirement&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Atomic&lt;/strong&gt; — doesn’t contain conjunctions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Traceable&lt;/strong&gt; — meets all or part of a business need as stated by stakeholders&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Current&lt;/strong&gt; — has not been made obsolete by the passage of time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Unambiguous&lt;/strong&gt; — concisely stated without jargon, acronyms, or esoteric verbiage&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Specify importance&lt;/strong&gt; — specifies a level of importance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Verifiable&lt;/strong&gt; — implementation can be determined through inspection, demonstration, test or analysis&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fortunately, our User Story Requirements are usually well written, but as with anything, there is always room for improvement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Technical Writing Skills are Needed to Write Instructions
&lt;/h2&gt;

&lt;p&gt;In my experience, writing a set of instructions may seem simple on the surface, but once you consider your audience may not have the same knowledge or skill level as you, it’s easy to miss adding key details.&lt;/p&gt;

&lt;p&gt;Below is an example of the type of test steps we commonly wrote out vs. how we’ve improved our writing.&lt;/p&gt;

&lt;p&gt;❌ &lt;strong&gt;Bad Test Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to an article&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify that the headline appears&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;strong&gt;Good Test Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to an Article content type in the CMS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Note the value in the headline field&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to this same article on the frontend via its URL&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify that the headline is the value set in the CMS&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem with the “Bad Test Steps” is that it was confusing for our developers who didn’t frequently use the CMS. Questions that would get asked were:&lt;/p&gt;

&lt;p&gt;“ Go to the article where? On the actual website? In the CMS?”&lt;/p&gt;

&lt;p&gt;“How should the headline appear?”&lt;/p&gt;

&lt;p&gt;The “Good Test Steps” give more precise instructions that we are testing the frontend of the article and where to find the data we’re looking for in the CMS.&lt;/p&gt;

&lt;h1&gt;
  
  
  How did we go about improving our technical writing?
&lt;/h1&gt;

&lt;p&gt;Once we declared there was a need for us to improve our writing skills, we set aside time in 2 sprints to complete a couple of Pluralsight courses that went over technical writing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://app.pluralsight.com/library/courses/process-instructions/table-of-contents"&gt;Writing Process Instructions and Directions&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Description from Pluralsight: “This course covers writing an introduction to a set of instructions, managing safety warnings, formatting and presenting individual steps, analyzing the audience and situation, working with visuals, and developing a troubleshooting section.”&lt;br&gt;
&lt;strong&gt;1h 29m&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://app.pluralsight.com/library/courses/technical-writing-software-documentation/table-of-contents"&gt;Technical Writing: Documentation on Software Projects&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Description from Pluralsight: “This course covers the fundamentals of writing effective software documentation. Whether you need to document requirements, architecture/design, code, test plans, or manuals for end-users, this course gives you tips and best practices to do it all.”²&lt;br&gt;
&lt;strong&gt;3h 48m&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;During our retrospective after each sprint, we discussed what we learned from each course. We found that the course material helped us to understand the importance of technical writing and knew how to apply it to our everyday writing. As a result of this training, we are more aware of the consequences of poor technical writing and aim to use this knowledge to write better documentation.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Overall, we aimed to improve our technical writing skills to strengthen our collaboration with one another and minimize confusion amongst our team members and colleagues.&lt;/p&gt;

&lt;p&gt;Do you think your team could improve their technical writing skills as well? Check out the courses below in addition to the Pluralsight courses mentioned in this article.&lt;/p&gt;

&lt;h1&gt;
  
  
  Additional Courses and Articles
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/level-up-web/instructional-design-and-technical-writing-ec84eb7e5d52"&gt;Instructional Design and Technical Writing&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.udemy.com/share/101slo/"&gt;Technical Writing: Master Your Writing Career&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://clickhelp.com/clickhelp-technical-writing-blog/how-to-write-user-documentation-and-help-manuals/"&gt;How to Write User Documentation and Help Manuals&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developers.google.com/tech-writing/overview"&gt;Google’s Technical Writing Courses&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Resources
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Ackmann, Alan. Writing Process Instructions and Directions. &lt;a href="https://app.pluralsight.com/library/courses/process-instructions/table-of-contents"&gt;https://app.pluralsight.com/library/courses/process-instructions/table-of-contents&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Israelsen, Amber. Technical Writing: Documentation on Software Projects. &lt;a href="https://www.pluralsight.com/courses/technical-writing-software-documentation"&gt;https://www.pluralsight.com/courses/technical-writing-software-documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>writing</category>
      <category>agile</category>
      <category>developer</category>
      <category>career</category>
    </item>
    <item>
      <title>4 Fast and Easy CSS Tools to Help You Design Your Website</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Tue, 21 Jan 2020 16:46:01 +0000</pubDate>
      <link>https://forem.com/tarise/4-fast-and-easy-css-tools-to-help-you-design-your-website-i9l</link>
      <guid>https://forem.com/tarise/4-fast-and-easy-css-tools-to-help-you-design-your-website-i9l</guid>
      <description>&lt;p&gt;I’ve spent about 9 years here at Hanley Wood and have watched as we’ve painstakingly managed the designs of 20+ different websites. We’ve reduced much of our workload by reducing the variance of our page templates and minimizing the amount of code needed to spin up a new website.&lt;/p&gt;

&lt;p&gt;Below I’d like to share with you some of the things that have helped us over the years in hopes that they’ll help you too. ;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Animate.css
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B2hFUtT1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/570/1%2AhMQqPRJgcDc9CHKcr4u71w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B2hFUtT1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/570/1%2AhMQqPRJgcDc9CHKcr4u71w.png" alt=""&gt;&lt;/a&gt;View each animation the library has to offer.&lt;/p&gt;

&lt;p&gt;Animate.css is a convenient little CSS library created by &lt;a href="https://daneden.me/portfolio"&gt;Daniel Eden&lt;/a&gt; that takes the hard work out of adding animations to your website. It’s cross-browser and easy to use, so give it a try!&lt;/p&gt;

&lt;p&gt;Here’s an example, taken from the Github repo, demonstrating how easy it is to add an animation to a component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;h1 class="animated infinite bounce delay-2s"&amp;gt;Example&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://daneden.github.io/animate.css/"&gt;https://daneden.github.io/animate.css/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Font Awesome
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wpfqmiEW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/795/1%2AICUSIWtj-XC58fILLHzHDg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wpfqmiEW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/795/1%2AICUSIWtj-XC58fILLHzHDg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Font Awesome is a personal fave of mine. Gone are the days where you need to buy or create an icon. Here, we have a useful font that contains most of the icons you’ll need for a project. We use them frequently on our Hanley Wood sites.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sq2Pq36G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/987/1%2AK8csFcQvbxKzofQWoe73Sg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sq2Pq36G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/987/1%2AK8csFcQvbxKzofQWoe73Sg.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;span class="fa fa-search"&amp;gt;&amp;lt;/span&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://fontawesome.com/"&gt;https://fontawesome.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hamburgers
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JndT05jV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/917/1%2A4z0YjliOWd-RYxs9OqOOxQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JndT05jV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/917/1%2A4z0YjliOWd-RYxs9OqOOxQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one is another easy library. Why spend your time trying to figure out how to animate that stupid hamburger? Thanks to &lt;a href="https://jonsuh.com/"&gt;Jonathan Suh&lt;/a&gt;, we now have a way to animate our hamburgers without having to try!&lt;/p&gt;

&lt;p&gt;Example from the website:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;button class="hamburger hamburger--collapse" type="button"&amp;gt;
  &amp;lt;span class="hamburger-box"&amp;gt;
    &amp;lt;span class="hamburger-inner"&amp;gt;&amp;lt;/span&amp;gt;
  &amp;lt;/span&amp;gt;
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://jonsuh.com/hamburgers/"&gt;https://jonsuh.com/hamburgers/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tachyons
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WKe1iiYj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/790/1%2ASA3bcFKYiJS8ly6AhH-12w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WKe1iiYj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/790/1%2ASA3bcFKYiJS8ly6AhH-12w.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recently learned about Tachyons from a colleague, and I only wished I had known about it sooner. Tachyons is a framework based on the principle of Atomic CSS by utilizing singe-use CSS classes to style components. We have slowly been incorporating this methodology into our websites so that we can focus more on new features as opposed to maintaining ridiculous amounts of CSS code. Spinning up new sites now takes less time and produces less design bugs as opposed to previous approaches. Why? Because the modularity of the CSS styles reduces complexity and increases reusability.&lt;/p&gt;

&lt;p&gt;The example below styles the div as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;position: static&lt;/li&gt;
&lt;li&gt;width: calc(33.33333333%)&lt;/li&gt;
&lt;li&gt;display: flex&lt;/li&gt;
&lt;li&gt;justify-content: flex-end
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class=”static w-third-ns flex justify-end”&amp;gt;…&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="http://tachyons.io/"&gt;http://tachyons.io/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;These are the top 4 tools I’d love to bundle up and give to anyone starting a new web project. Focus your time on creating new and interesting web features and spend less time getting the blueprint of the site up and running.&lt;/p&gt;




</description>
      <category>css</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>15 Handy Bookmarks to Help You With Front-end Web Development</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Mon, 19 Aug 2019 14:16:01 +0000</pubDate>
      <link>https://forem.com/tarise/15-handy-bookmarks-to-help-you-with-front-end-web-development-14nd</link>
      <guid>https://forem.com/tarise/15-handy-bookmarks-to-help-you-with-front-end-web-development-14nd</guid>
      <description>&lt;p&gt;Over the years I’ve acquired many browser bookmarks that have helped me with my day to day tasks as a web developer. I present to you &lt;strong&gt;15 of the best web tools&lt;/strong&gt; I have in my arsenal in hopes of helping out my fellow developers and web designers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contents
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;CSS Tools&lt;/li&gt;
&lt;li&gt;Dummy Text Generators&lt;/li&gt;
&lt;li&gt;Conversion Tools&lt;/li&gt;
&lt;li&gt;Miscellaneous Tools&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  CSS Tools
&lt;/h1&gt;

&lt;p&gt;Links to CSS online tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  CSS Selector Reference
&lt;/h2&gt;

&lt;p&gt;I keep this handy cheatsheet bookmarked simply because I don’t have all the CSS selectors memorized. Sometimes I can’t remember if I need to use &lt;code&gt;:first-child&lt;/code&gt; or &lt;code&gt;:first-of-type&lt;/code&gt;. This is super useful when it comes to learning CSS selectors you may have never used before.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4MRDRnzQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/767/1%2AHBNufjoDVbfHZtMzmegeRA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4MRDRnzQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/767/1%2AHBNufjoDVbfHZtMzmegeRA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://www.w3schools.com/cssref/css_selectors.asp"&gt;https://www.w3schools.com/cssref/css_selectors.asp&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A Complete Guide to Flexbox
&lt;/h2&gt;

&lt;p&gt;I have yet to remember all the details about the flexbox layout. I’ve found this guide to be the most helpful when I need a refresher.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Our comprehensive guide to CSS flexbox layout. This complete guide explains everything about flexbox, focusing on all the different possible properties for the parent element (the flex container) and the child elements (the flex items). It also includes history, demos, patterns, and a browser support chart.” — CSS-Tricks.com&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2baK44RM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aeq9FeLaMIxhuUXVyov5eHA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2baK44RM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aeq9FeLaMIxhuUXVyov5eHA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/"&gt;https://css-tricks.com/snippets/css/a-guide-to-flexbox/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  LESS Tester
&lt;/h2&gt;

&lt;p&gt;This tool was incredibly useful as I was learning LESS and still comes in handy now that I have more experience with the CSS preprocessor. Consider situations when your LESS code looks perfectly fine to you, but for some reason, your styles are not rendering as expected. Copy and paste your code into the LESS Tester to see if the rendered CSS is what you expect it to be.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m4VYLEbp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A-bbDW5UNuFUHJUfm9E4mxA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m4VYLEbp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A-bbDW5UNuFUHJUfm9E4mxA.png" alt=""&gt;&lt;/a&gt;LESS Tester is a sandbox environment that allows you to view your LESS code as CSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://lesstester.com/"&gt;https://lesstester.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  SASS Meister
&lt;/h2&gt;

&lt;p&gt;I have not used SASS Meister myself, but I decided to include it as an alternative to the LESS Tester above, for those of you who use SASS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5x8j7dJW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AXK0x1qxr3WBrwgYVmK7j-A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5x8j7dJW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AXK0x1qxr3WBrwgYVmK7j-A.png" alt=""&gt;&lt;/a&gt;SASS Meister is another sandbox environment similar to LESS Tester.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://www.sassmeister.com/"&gt;https://www.sassmeister.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Clippy
&lt;/h2&gt;

&lt;p&gt;To add some creativity to your website, use this tool to create complex shapes using the clip-path CSS property. Check out &lt;a href="https://www.smashingmagazine.com/2015/05/creating-responsive-shapes-with-clip-path/"&gt;Creating Responsive Shapes With Clip-Path And Breaking Out Of The Box&lt;/a&gt; on &lt;a href="https://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt; for inspiration on how you can spice up your website with clip-path and images.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M5ltVPB---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AWt7tByePf5ieAbAhim45XA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M5ltVPB---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AWt7tByePf5ieAbAhim45XA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://bennettfeely.com/clippy/"&gt;https://bennettfeely.com/clippy/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Dummy Text Generators
&lt;/h1&gt;

&lt;p&gt;Links to dummy text generators for mocking content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lipsum
&lt;/h2&gt;

&lt;p&gt;Keep this site bookmarked for anytime you need to generate random text, such as any number of paragraphs, words, characters, or lists.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Uz13-gxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/922/1%2AmUtGf70U9hxFbpjBL9JfWg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Uz13-gxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/922/1%2AmUtGf70U9hxFbpjBL9JfWg.png" alt=""&gt;&lt;/a&gt;Two randomly generated paragraphs using the &lt;a href="https://www.lipsum.com/"&gt;lipsum.com&lt;/a&gt; text generator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://www.lipsum.com/"&gt;https://www.lipsum.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cupcake Ipsum
&lt;/h2&gt;

&lt;p&gt;Here’s a fun alternative to the plain boring latin text generators. Cupcake Ipsum generates random dummy text related to sugary sweets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--57xNtD7Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AiEwwRJ9qb9Bc7UAycAStkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--57xNtD7Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AiEwwRJ9qb9Bc7UAycAStkw.png" alt=""&gt;&lt;/a&gt;Two randomly generated paragraphs &lt;a href="http://www.cupcakeipsum.com"&gt;cupcakeipsum.com&lt;/a&gt; text generator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="http://www.cupcakeipsum.com/#"&gt;http://www.cupcakeipsum.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adventure Time Filler Text Generator
&lt;/h2&gt;

&lt;p&gt;Do I really need to explain why this one is so awesome?&lt;/p&gt;

&lt;p&gt;Not only is this generator Adventure Time themed, but it also gives you the option to generate more than just plain text. You can generate dummy content that includes a header, some paragraphs, and lists.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2zyKw6zu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/974/1%2AwkXytvbETW8B_dER0TBEmQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2zyKw6zu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/974/1%2AwkXytvbETW8B_dER0TBEmQ.png" alt=""&gt;&lt;/a&gt;Randomly generated filler content with rich text elements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="http://filler-text.blogspot.com/"&gt;http://filler-text.blogspot.com/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conversion Tools
&lt;/h1&gt;

&lt;p&gt;A collection of online conversion tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Base64 Encoder and Decoder
&lt;/h2&gt;

&lt;p&gt;Being able to base64 encode files is super useful. We use this for our icons and then use the base64 data in CSS to render it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://www.mobilefish.com/services/base64/base64.php"&gt;https://www.mobilefish.com/services/base64/base64.php&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PXtoEM
&lt;/h2&gt;

&lt;p&gt;Most of our font sizes are defined using em, however, as our designers work in Photoshop, they give use the font size specs in pixels. Use this handy web tool to convert px to em and vice versa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pBkEbfSO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/976/1%2Aj3KFv6ksMCcarBQfddmv0Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pBkEbfSO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/976/1%2Aj3KFv6ksMCcarBQfddmv0Q.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="http://pxtoem.com/"&gt;http://pxtoem.com/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Misc
&lt;/h1&gt;

&lt;p&gt;Additional tools that don't fit in any of the other categories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diffchecker
&lt;/h2&gt;

&lt;p&gt;Quickly compare differences between text files using this convenient tool. There is also a Diffchecker desktop application and command line interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Oc8Ek8DH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AJr8xci7R4VVbJHKdbz6nqA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Oc8Ek8DH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AJr8xci7R4VVbJHKdbz6nqA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://www.diffchecker.com/"&gt;https://www.diffchecker.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Favicon Generator
&lt;/h2&gt;

&lt;p&gt;Need to generate a favicon? Bookmark this site so you don’t have to search around for a favicon generator the next time you need to make one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://realfavicongenerator.net/"&gt;https://realfavicongenerator.net/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Regex 101
&lt;/h2&gt;

&lt;p&gt;Regex has always been a pain to me, but I’ve found this site to be incredibly useful whenever I have to deal with them. It’s not only great for testing out your regular expressions, but it also gives you an explanation of each group so you know how to optimize it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CwtgT7a1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AtHZmxYs_0Lnr-oof8yiGRg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CwtgT7a1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AtHZmxYs_0Lnr-oof8yiGRg.png" alt=""&gt;&lt;/a&gt;Testing the regular expression for 10 digit phone number that includes the country code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://dev.to/scottw/-regex-101-ei9-temp-slug-1258619"&gt;https://regex101.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Test Credit Card Account Numbers
&lt;/h2&gt;

&lt;p&gt;If you deal with payment systems, you’ll need to use test credit card numbers when testing the functionality. You’ll find test card numbers for all the major credit card companies, such as American Express, Visa, and MasterCard, on this web page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://www.paypalobjects.com/en_AU/vhelp/paypalmanager_help/credit_card_numbers.htm"&gt;https://www.paypalobjects.com/en_AU/vhelp/paypalmanager_help/credit_card_numbers.htm&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Validator Tools for Social Meta Tags and Search Engine Markup
&lt;/h2&gt;

&lt;p&gt;This blog post contains a list of tools you can use to validate your site’s meta tags against popular social media sites. I’ll add a few here, but check out the link below for additional social media validators and a detailed explanation on why social meta tags are important.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.facebook.com/tools/debug"&gt;Facebook’s Open Graph Debugger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.twitter.com/docs/cards/validation/validator"&gt;Twitter Cards Validator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.pinterest.com/rich_pins/validator/"&gt;Pinterest Rich Pins Validator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not included in the blog post is &lt;a href="https://www.linkedin.com/post-inspector/"&gt;LinkedIn’s Post Inspector&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---3W-uhgb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AF4XGpmhk2ytDmrm7by2xlA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---3W-uhgb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AF4XGpmhk2ytDmrm7by2xlA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt; : &lt;a href="https://www.eyeflow.com/validator-tools-social-meta-tags-search-engine-markup/"&gt;https://www.eyeflow.com/validator-tools-social-meta-tags-search-engine-markup/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I hope you find this list to be useful. Please feel free to add your favorite web tools in the comments.&lt;/p&gt;




</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>productivity</category>
      <category>css</category>
    </item>
    <item>
      <title>The Trials and Tribulations of HTML Newsletters</title>
      <dc:creator>Nikki</dc:creator>
      <pubDate>Mon, 05 Aug 2019 12:16:01 +0000</pubDate>
      <link>https://forem.com/tarise/the-trials-and-tribulations-of-html-newsletters-26mp</link>
      <guid>https://forem.com/tarise/the-trials-and-tribulations-of-html-newsletters-26mp</guid>
      <description>&lt;p&gt;Newsletters are the bane of my existence. Luckily, we no longer have to work on them. Here are some tidbits we learned during the time we spent managing the design of our newsletters.&lt;/p&gt;

&lt;h1&gt;
  
  
  Newsletter Testing
&lt;/h1&gt;

&lt;p&gt;Simply viewing the &lt;em&gt;.html&lt;/em&gt; file in a web browser isn’t good enough. To test your newsletters and verify that they appear properly on today’s most popular email clients, you should use an email testing tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Email on Acid
&lt;/h2&gt;

&lt;p&gt;For that past few years, we’ve relied on &lt;a href="https://www.emailonacid.com/"&gt;Email On Acid&lt;/a&gt; to test our newsletters.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here’s what we like about it:&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Many Options for Email Clients
&lt;/h3&gt;

&lt;p&gt;Email on Acid allows you to test with multiple email clients on different browsers, desktop email clients on different operating systems, and mobile email clients on different devices. You’ll be amazed (and frustrated) to learn how different (and potentially jacked up) your newsletter can look in the same email client but on different operating systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mobile Emulator
&lt;/h3&gt;

&lt;p&gt;The browser and desktop tests only provide screenshots, however, the mobile tests can be viewed in a mobile emulator, allowing you to interact with your newsletter. This can be helpful in determining the usability of your newsletter on a mobile device.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips and Tricks
&lt;/h3&gt;

&lt;p&gt;This feature is great for troubleshooting issues with your newsletter. Maybe you can’t use floats or your embedded CSS is getting stripped out. Here’s an example of the Tips and Tricks section for Outlook 2010 on Windows 7:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y5yAyHho--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/864/1%2AVEdKClAseEfoV68Ox6agEQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y5yAyHho--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/864/1%2AVEdKClAseEfoV68Ox6agEQ.png" alt=""&gt;&lt;/a&gt;Tips and Tricks section for a test against Outlook 2010 on Windows 7&lt;/p&gt;

&lt;p&gt;Starting here will help you save time in fixing issues with your newsletter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sharing Results
&lt;/h3&gt;

&lt;p&gt;Email on Acid allows you to share your test results, which is useful for sharing with someone who doesn’t have an account. We use this to share with our stakeholders so they can take a look themselves in case we missed anything during QA.&lt;/p&gt;

&lt;h2&gt;
  
  
  Litmus
&lt;/h2&gt;

&lt;p&gt;One drawback of Email on Acid is that the screenshots are not always an accurate representation of how the newsletter looks on a particular client. There have been times when we’ve been alerted to a visual issue with our newsletter that didn’t appear in an EOA test, but on the actual email client on a given operating system. To recreate these issues, we’ll use &lt;a href="https://putsmail.com/"&gt;Litmus Putsmail&lt;/a&gt;to send off a test email to one of our email addresses, then open it in the email client on the operating system in question (usually using some type of VM software such as Parallels).&lt;/p&gt;

&lt;p&gt;In addition to Putsmail, Litmus has a suite of email testing features that are comparable to Email on Acid. I have not used Litmus myself, but you can check it out at &lt;a href="https://litmus.com/"&gt;https://litmus.com/&lt;/a&gt; to see if it’s a better option for you.&lt;/p&gt;

&lt;h1&gt;
  
  
  Tips
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Use a Boilerplate
&lt;/h2&gt;

&lt;p&gt;Don’t start from scratch. Use a boilerplate because it’s likely been implemented in such a way that the quirks specific to each email client have already been worked out for you. We used a boilerplate off of Emailology.org and customized it from there. Though Emailology no longer exists, I’ve been able to find a gist of the boilerplate at &lt;a href="https://gist.github.com/cemerson/4495931"&gt;https://gist.github.com/cemerson/4495931&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve copy-pasta’d the HTML below, just in case the gist URL disappears from the internet as well:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

HOW TO USE: Use these code examples as a guideline for formatting your HTML email. You may want to create your own template based on these snippets or just pick and choose the ones that fix your specific rendering issue(s). There are two main areas in the template: 1. The header (head) area of the document. You will find global styles, where indicated, to move inline. 2. The body section contains more specific fixes and guidance to use where needed in your design.

DO NOT COPY OVER COMMENTS AND INSTRUCTIONS WITH THE CODE to your message or risk spam box banishment :).

It is important to note that sometimes the styles in the header area should not be or don't need to be brought inline. Those instances will be marked accordingly in the comments.

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* --&amp;gt;

&amp;lt;!-- Using the xHTML doctype is a good practice when sending HTML email. While not the only doctype you can use, it seems to have the least inconsistencies. For more information on which one may work best for you, check out the resources below.

UPDATED: Now using xHTML strict based on the fact that gmail and hotmail uses it. Find out more about that, and another great boilerplate, here: [http://www.emailology.org/#1](http://www.emailology.org/#1)

More info/Reference on doctypes in email:
Campaign Monitor - [http://www.campaignmonitor.com/blog/post/3317/correct-doctype-to-use-in-html-email/](http://www.campaignmonitor.com/blog/post/3317/correct-doctype-to-use-in-html-email/)
Email on Acid - [http://www.emailonacid.com/blog/details/C18/doctype\_-\_the\_black\_sheep\_of\_html\_email\_design](http://www.emailonacid.com/blog/details/C18/doctype_-_the_black_sheep_of_html_email_design)
--&amp;gt;

&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd](http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)"&amp;gt;

&amp;lt;html xmlns="[http://www.w3.org/1999/xhtml](http://www.w3.org/1999/xhtml)"&amp;gt;
&amp;lt;head&amp;gt;
 &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&amp;gt;
 &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"/&amp;gt;
 &amp;lt;title&amp;gt;Your Message Subject or Title&amp;lt;/title&amp;gt;
 &amp;lt;style type="text/css"&amp;gt;

/\*\*\*\*\*\*\*\*\*\*\*
  Originally based on The MailChimp Reset from Fabio Carneiro, MailChimp User Experience Design
  More info and templates on Github: [https://github.com/mailchimp/Email-Blueprints](https://github.com/mailchimp/Email-Blueprints)
[http://www.mailchimp.com](http://www.mailchimp.com) &amp;amp;amp; [http://www.fabio-carneiro.com](http://www.fabio-carneiro.com)

INLINE: Yes.
  \*\*\*\*\*\*\*\*\*\*\*/
  /\* Client-specific Styles \*/
  #outlook a {padding:0;} /\* Force Outlook to provide a "view in browser" menu link. \*/
  body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}
  /\* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. \*/
  .ExternalClass {width:100%;} /\* Force Hotmail to display emails at full width \*/
  .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /\* Force Hotmail to display normal line spacing. More on that: [http://www.emailonacid.com/forum/viewthread/43/](http://www.emailonacid.com/forum/viewthread/43/) \*/
  #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}
  /\* End reset \*/

/\* Some sensible defaults for images
  1. "-ms-interpolation-mode: bicubic" works to help ie properly resize images in IE. (if you are resizing them using the width and height attributes)
  2. "border:none" removes border when linking images.
  3. Updated the common Gmail/Hotmail image display fix: Gmail and Hotmail unwantedly adds in an extra space below images when using non IE browsers. You may not always want all of your images to be block elements. Apply the "image\_fix" class to any image you need to fix.

Bring inline: Yes.
  \*/
  img {outline:none; text-decoration:none; -ms-interpolation-mode: bicubic;}
  a img {border:none;}
  .image\_fix {display:block;}

/\*\* Yahoo paragraph fix: removes the proper spacing or the paragraph (p) tag. To correct we set the top/bottom margin to 1em in the head of the document. Simple fix with little effect on other styling. NOTE: It is also common to use two breaks instead of the paragraph tag but I think this way is cleaner and more semantic. NOTE: This example recommends 1em. More info on setting web defaults: [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html) or [http://meiert.com/en/blog/20070922/user-agent-style-sheets/](http://meiert.com/en/blog/20070922/user-agent-style-sheets/)

Bring inline: Yes.
  \*\*/
  p {margin: 1em 0;}

/\*\* Hotmail header color reset: Hotmail replaces your header color styles with a green color on H2, H3, H4, H5, and H6 tags. In this example, the color is reset to black for a non-linked header, blue for a linked header, red for an active header (limited support), and purple for a visited header (limited support). Replace with your choice of color. The !important is really what is overriding Hotmail's styling. Hotmail also sets the H1 and H2 tags to the same size.

Bring inline: Yes.
  \*\*/
  h1, h2, h3, h4, h5, h6 {color: black !important;}

h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {color: blue !important;}

h1 a:active, h2 a:active, h3 a:active, h4 a:active, h5 a:active, h6 a:active {
   color: red !important; /\* Preferably not the same color as the normal header link color. There is limited support for psuedo classes in email clients, this was added just for good measure. \*/
   }

h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited {
   color: purple !important; /\* Preferably not the same color as the normal header link color. There is limited support for psuedo classes in email clients, this was added just for good measure. \*/
  }

/\*\* Outlook 07, 10 Padding issue: These "newer" versions of Outlook add some padding around table cells potentially throwing off your perfectly pixeled table. The issue can cause added space and also throw off borders completely. Use this fix in your header or inline to safely fix your table woes.

More info: [http://www.ianhoar.com/2008/04/29/outlook-2007-borders-and-1px-padding-on-table-cells/](http://www.ianhoar.com/2008/04/29/outlook-2007-borders-and-1px-padding-on-table-cells/)
[http://www.campaignmonitor.com/blog/post/3392/1px-borders-padding-on-table-cells-in-outlook-07/](http://www.campaignmonitor.com/blog/post/3392/1px-borders-padding-on-table-cells-in-outlook-07/)

H/T [@edmelly](http://twitter.com/edmelly)

Bring inline: No.
  \*\*/
  table td {border-collapse: collapse;}

/\*\* Remove spacing around Outlook 07, 10 tables

More info : [http://www.campaignmonitor.com/blog/post/3694/removing-spacing-from-around-tables-in-outlook-2007-and-2010/](http://www.campaignmonitor.com/blog/post/3694/removing-spacing-from-around-tables-in-outlook-2007-and-2010/)

Bring inline: Yes
    \*\*/
    table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }

/\* Styling your links has become much simpler with the new Yahoo. In fact, it falls in line with the main credo of styling in email, bring your styles inline. Your link colors will be uniform across clients when brought inline.

Bring inline: Yes. \*/
  a {color: orange;}

/\* Or to go the gold star route...
  a:link { color: orange; }
  a:visited { color: blue; }
  a:hover { color: green; }
  \*/

/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
  \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
  MOBILE TARGETING

Use [@media](http://twitter.com/media) queries with care. You should not bring these styles inline -- so it's recommended to apply them AFTER you bring the other stlying inline.

Note: test carefully with Yahoo.
  Note 2: Don't bring anything below this line inline.
  \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
  \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/

/\* NOTE: To properly use [@media](http://twitter.com/media) queries and play nice with yahoo mail, use attribute selectors in place of class, id declarations.
  table[class=classname]
  Read more: [http://www.campaignmonitor.com/blog/post/3457/media-query-issues-in-yahoo-mail-mobile-email/](http://www.campaignmonitor.com/blog/post/3457/media-query-issues-in-yahoo-mail-mobile-email/)
  \*/
[@media](http://twitter.com/media) only screen and (max-device-width: 480px) {

/\* A nice and clean way to target phone numbers you want clickable and avoid a mobile phone from linking other numbers that look like, but are not phone numbers. Use these two blocks of code to "unstyle" any numbers that may be linked. The second block gives you a class to apply with a span tag to the numbers you would like linked and styled.

Inspired by Campaign Monitor's article on using phone numbers in email: [http://www.campaignmonitor.com/blog/post/3571/using-phone-numbers-in-html-email/](http://www.campaignmonitor.com/blog/post/3571/using-phone-numbers-in-html-email/).

Step 1 (Step 2: line 224)
   \*/
   a[href^="tel"], a[href^="sms"] {
      text-decoration: none;
      color: black; /\* or whatever your want \*/
      pointer-events: none;
      cursor: default;
     }

.mobile\_link a[href^="tel"], .mobile\_link a[href^="sms"] {
      text-decoration: default;
      color: orange !important; /\* or whatever your want \*/
      pointer-events: auto;
      cursor: default;
     }
  }

/\* More Specific Targeting \*/

[@media](http://twitter.com/media) only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
   /\* You guessed it, ipad (tablets, smaller screens, etc) \*/

/\* Step 1a: Repeating for the iPad \*/
   a[href^="tel"], a[href^="sms"] {
      text-decoration: none;
      color: blue; /\* or whatever your want \*/
      pointer-events: none;
      cursor: default;
     }

.mobile\_link a[href^="tel"], .mobile\_link a[href^="sms"] {
      text-decoration: default;
      color: orange !important;
      pointer-events: auto;
      cursor: default;
     }
  }

[@media](http://twitter.com/media) only screen and (-webkit-min-device-pixel-ratio: 2) {
   /\* Put your iPhone 4g styles in here \*/
  }

/\* Following Android targeting from:
[http://developer.android.com/guide/webapps/targeting.html](http://developer.android.com/guide/webapps/targeting.html)
[http://pugetworks.com/2011/04/css-media-queries-for-targeting-different-mobile-devices/](http://pugetworks.com/2011/04/css-media-queries-for-targeting-different-mobile-devices/) \*/
[@media](http://twitter.com/media) only screen and (-webkit-device-pixel-ratio:.75){
   /\* Put CSS for low density (ldpi) Android layouts in here \*/
  }
[@media](http://twitter.com/media) only screen and (-webkit-device-pixel-ratio:1){
   /\* Put CSS for medium density (mdpi) Android layouts in here \*/
  }
[@media](http://twitter.com/media) only screen and (-webkit-device-pixel-ratio:1.5){
   /\* Put CSS for high density (hdpi) Android layouts in here \*/
  }
  /\* end Android targeting \*/
 &amp;lt;/style&amp;gt;

&amp;lt;!-- Targeting Windows Mobile --&amp;gt;
 &amp;lt;!--[if IEMobile 7]&amp;gt;
 &amp;lt;style type="text/css"&amp;gt;

&amp;lt;/style&amp;gt;
 &amp;lt;![endif]--&amp;gt;

&amp;lt;!-- \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
 END MOBILE TARGETING
 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* --&amp;gt;

&amp;lt;!--[if gte mso 9]&amp;gt;
 &amp;lt;style&amp;gt;
  /\* Target Outlook 2007 and 2010 \*/
 &amp;lt;/style&amp;gt;
 &amp;lt;![endif]--&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
 &amp;lt;!-- Wrapper/Container Table: Use a wrapper table to control the width and the background color consistently of your email. Use this approach instead of setting attributes on the body tag. --&amp;gt;
 &amp;lt;table cellpadding="0" cellspacing="0" border="0" id="backgroundTable"&amp;gt;
 &amp;lt;tr&amp;gt;
  &amp;lt;td&amp;gt;

&amp;lt;!-- Tables are the most common way to format your email consistently. Set your table widths inside cells and in most cases reset cellpadding, cellspacing, and border to zero. Use nested tables as a way to space effectively in your message. --&amp;gt;
  &amp;lt;table cellpadding="0" cellspacing="0" border="0" align="center"&amp;gt;
   &amp;lt;tr&amp;gt;
    &amp;lt;td width="200" valign="top"&amp;gt;&amp;lt;/td&amp;gt;
    &amp;lt;td width="200" valign="top"&amp;gt;&amp;lt;/td&amp;gt;
    &amp;lt;td width="200" valign="top"&amp;gt;&amp;lt;/td&amp;gt;
   &amp;lt;/tr&amp;gt;
  &amp;lt;/table&amp;gt;

&amp;lt;!-- End example table --&amp;gt;

&amp;lt;!-- Yahoo Link color fix updated: Simply bring your link styling inline. --&amp;gt;
  &amp;lt;a href="[http://htmlemailboilerplate.com](http://htmlemailboilerplate.com)" target ="\_blank" title="Styling Links" style="color: orange; text-decoration: none;"&amp;gt;Coloring Links appropriately&amp;lt;/a&amp;gt;

&amp;lt;!-- Gmail/Hotmail image display fix: Gmail and Hotmail unwantedly adds in an extra space below images when using non IE browsers. This can be especially painful when you putting images on top of each other or putting back together an image you spliced for formatting reasons. Either way, you can add the 'image\_fix' class to remove that space below the image. Make sure to set alignment (don't use float) on your images if you are placing them inline with text.--&amp;gt;
  &amp;lt;img class="image\_fix" src="full path to image" alt="Your alt text" title="Your title text" width="x" height="x" /&amp;gt;

&amp;lt;!-- Step 2: Working with telephone numbers (including sms prompts). Use the "mobile\_link" class with a span tag to control what number links and what doesn't in mobile clients. --&amp;gt;
  &amp;lt;span class="mobile\_link"&amp;gt;123-456-7890&amp;lt;/span&amp;gt;

&amp;lt;/td&amp;gt;
 &amp;lt;/tr&amp;gt;
 &amp;lt;/table&amp;gt;
 &amp;lt;!-- End of wrapper table --&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Hate Outlook.com’s Contextual Highlighting?
&lt;/h2&gt;

&lt;p&gt;Use the following snippet to override Outlook.com’s contextual highlighting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/\* Overrides Outlook.com Contextual Highlighting \*/
    span {
        color: #000;
        border-bottom-width: 0;
        border-bottom-style: none;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Avoid Deeply Nested Tables
&lt;/h2&gt;

&lt;p&gt;At some point, our newsletter layout was a little more complex than they are now. This resulted in some nested tables that were affecting Outlook. We ended up with a huge gap of whitespace in the middle of our newsletters. We followed the &lt;a href="https://www.emailonacid.com/tip/outlook-desktop/"&gt;tips from Email On Acid&lt;/a&gt;, however nothing worked. So don’t do this.&lt;/p&gt;

&lt;p&gt;I actually don’t recall if we ever fixed this issue. We moved on to a simpler template shortly after.&lt;/p&gt;

&lt;h2&gt;
  
  
  Include Both Embedded CSS and Inline CSS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Embedded CSS&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Embedded CSS is useful for mobile design and overriding the styles of extra elements inserted by the email client.&lt;/p&gt;

&lt;p&gt;Here’s a snippet that ensures all your links are the desired color and style, taking into account that Yahoo inserts a span.yshortcuts inside all links:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/\*Yahoo adds span.yshortcuts inside all links\*/
    a:link,
    span.yshortcuts {
        color: #000; /\* Link color must be set inline for Gmail\*/
        background-color: none;
        border: none;
        text-decoration: none;
    }

p a:link,
    p span.yshortcuts {
        text-decoration: underline;
    }

p a:active,
    p a:visited,
    p span.yshortcuts:active {
        text-decoration: underline;
    }

a:active,
    a:visited,
    span.yshortcuts:active {
        color: #000;
        background-color: none;
        border: none;
        text-decoration: none;
    }

a:hover,
    span.yshortcuts:hover,
    span.yshortcuts:focus {
        text-decoration: underline;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Inline CSS&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Gmail does not supported embedded CSS. Use either of the following inline CSS tools to convert your embedded CSS into inline CSS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.campaignmonitor.com/resources/tools/css-inliner/"&gt;https://www.campaignmonitor.com/resources/tools/css-inliner/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://putsmail.com/inliner"&gt;https://putsmail.com/inliner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foundation.zurb.com/emails/inliner-v2.html"&gt;https://foundation.zurb.com/emails/inliner-v2.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn How to Walk Away
&lt;/h2&gt;

&lt;p&gt;Depending on the complexity of your newsletter, the time and frustration to get it to look exactly the same on every supported email client for each platform is simply not worth it. Maybe your link show up purple in Gmail despite the styles setting them to blue. Maybe the spacing between paragraphs in Outlook 2016 is a little more than desired. If your content is still readable and still maintains the basic layout, do away with the nuances if you haven’t been able to solve them within a reasonable amount of time.&lt;/p&gt;

&lt;h1&gt;
  
  
  Useful Links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.emailonacid.com/"&gt;Email on Acid&lt;/a&gt;
An email testing tool.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://litmus.com/"&gt;Litmus&lt;/a&gt;
Another email testing tool.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://foundation.zurb.com/emails.html"&gt;Foundation for Emails (formally Ink)&lt;/a&gt;
A framework for creating HTML emails.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gist.github.com/cemerson/4495931"&gt;Emailology’s Boilerplate Gist&lt;/a&gt;
An html template from the former Emailology.com.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bojler.slicejack.com/"&gt;Bojler&lt;/a&gt;
An email framework created to ease the pain of creating email templates.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.campaignmonitor.com/css/"&gt;Campaign Monitor’s CSS Guide&lt;/a&gt;
A guide to CSS support for the most popular email clients.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.emailonacid.com/tips-and-tricks/"&gt;Email on Acid’s Tips &amp;amp; Tricks&lt;/a&gt;
A collection CSS and HTML of tips and tricks for the most common email clients.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s all I have and I hope I never have to experience the pain of creating newsletter templates ever again. Good luck!&lt;/p&gt;




</description>
      <category>html</category>
      <category>css</category>
      <category>newsletters</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
