<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Elizabeth Schafer</title>
    <description>The latest articles on DEV Community by Elizabeth Schafer (@elizabethschafer).</description>
    <link>https://dev.to/elizabethschafer</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%2F146597%2F9e749e80-9994-4fe8-83ef-0a3ebfb66ea6.jpeg</url>
      <title>DEV Community: Elizabeth Schafer</title>
      <link>https://dev.to/elizabethschafer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elizabethschafer"/>
    <language>en</language>
    <item>
      <title>A Starting Point for Writing Technical Blog Posts</title>
      <dc:creator>Elizabeth Schafer</dc:creator>
      <pubDate>Sun, 28 Apr 2019 13:24:33 +0000</pubDate>
      <link>https://dev.to/elizabethschafer/a-starting-point-for-writing-technical-blog-posts-n2o</link>
      <guid>https://dev.to/elizabethschafer/a-starting-point-for-writing-technical-blog-posts-n2o</guid>
      <description>&lt;p&gt;I've accumulated a lot of useful info as a front end developer over the years, and want to be able to share that with others. Unfortunately, teaching doesn't come naturally to me. I feel like I need to simultaneously know everything and teach everything all at once, which of course is impossible. I also have a hard time narrowing down what the most important concepts are because everything seems equally important to me.&lt;/p&gt;

&lt;p&gt;When I decided to try writing a technical blog post, I searched around to see if there were any guidelines or best practices I might be able to follow. That's when I came across &lt;a href="https://howtoegghead.com/"&gt;howtoegghead.com&lt;/a&gt;, which is a guide for egghead.io instructors on how to create lessons. I found it really helpful, and highly recommend reading through it if you're looking for guidance.&lt;/p&gt;

&lt;p&gt;Here's a summary of the points I found most useful (adapted for blog posts), plus some of my own thoughts. Full disclosure: this is all new to me, and mostly just notes to myself as a way to encourage myself to write more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decide what to write about
&lt;/h2&gt;

&lt;p&gt;Some ideas for topics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;something you're passionate about&lt;/li&gt;
&lt;li&gt;something you've learned recently, or are in the process of learning&lt;/li&gt;
&lt;li&gt;something you've figured out recently (e.g., a confusing bug or unexpected edge case)&lt;/li&gt;
&lt;li&gt;something that seems super simple to you, but might be a big help to anyone less experienced&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Make sure to narrow this down to something very specific.&lt;/strong&gt; It should be something you can talk about in just a few minutes. For example, my thought process might be something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;I'm passionate about accessibility, so I should write about that!&lt;/em&gt; - This is way too broad. I wouldn't even know where to start.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Being able to use a keyboard to navigate a website is important.&lt;/em&gt; - A little better, but still too much to cover.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The first thing I notice with keyboard navigation is how important it is for focus states to be visible and easy to spot.&lt;/em&gt; - Much better. This is finally something I can start wrapping my head around.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;I'll talk specifically about button focus states.&lt;/em&gt; Perfect! This sounds pretty simple on the surface, but there's a lot I can talk about.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I love about this is that I could potentially write a series of short, related posts that each go into detail about one specific thing. It gives me permission to leave out extra details that I feel like I should mention, but don't necessarily contribute to the current topic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's totally fine if you want to write about something that other people have already written about.&lt;/strong&gt; By writing in your own words, you're giving people another viewpoint that might make things click. It's also a great way for you to reinforce what you've learned, and for your future self to reference.&lt;/p&gt;

&lt;p&gt;Some of my favorite blog posts are ones that cover the absolute basics of HTML and CSS. These are things that have been covered many times already, but I always learn something new.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It doesn't matter if you're a beginner.&lt;/strong&gt; If you're a beginner, you might work through things in a way that makes sense to other beginners. Someone more experienced might include a code snippet without explicitly stating which file that code is supposed to go in. Or they might include something to run from the command line without explaining that you first need to be in the right working directory. Those are the types of things I get stuck on when I'm learning something new, and they're usually hard to figure out when you don't know how things work yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be clear and to the point
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Assume your readers already have the required background knowledge.&lt;/strong&gt; If there's anything they don't know, they can look it up on their own. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't include an intro, outro, or stage-setting.&lt;/strong&gt; Think about when you search for a recipe and have to read someone's life story before you find the ingredient list. We want to keep it simple, so include only the content people are looking for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Show your work
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Include a series of editable code examples.&lt;/strong&gt; It's one thing to read about something, and another to see it in action. Instead of describing everything in words, use code examples to prove your point. Here's an example of what I mean:&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/eschafer/embed/qvJvZR?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;br&gt;
By including a series of examples, readers can see each step of the process and how it affects the result. And since these can be edited, readers have the option of playing around with the code to get a better understanding of how things work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now you're ready to write!
&lt;/h2&gt;

&lt;p&gt;I put this together because I was having a hard time getting started without a list of guidelines to follow. Now that I have a starting point, I'm hoping it will help make the writing process easier for me in the future.&lt;/p&gt;

&lt;p&gt;Are there any resources you use to figure out what to write about or how to structure your posts? Or do you have a specific process you like to follow that works for you? I'd love to learn more about how others are doing this!&lt;/p&gt;

&lt;p&gt;One thing I found after writing most of this was &lt;a href="https://dev.to/aspittel/my-blog-post-workflow-from-topic-to-publication-4n78"&gt;Ali Spittel's blog post workflow&lt;/a&gt; which goes more in-depth - would've been helpful if I'd noticed that first! 😉&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>blogging</category>
      <category>writing</category>
      <category>tips</category>
    </item>
    <item>
      <title>Designing button focus states for better usability</title>
      <dc:creator>Elizabeth Schafer</dc:creator>
      <pubDate>Sun, 07 Apr 2019 06:30:46 +0000</pubDate>
      <link>https://dev.to/elizabethschafer/designing-button-focus-states-for-better-usability-gm2</link>
      <guid>https://dev.to/elizabethschafer/designing-button-focus-states-for-better-usability-gm2</guid>
      <description>&lt;p&gt;Let's say we're making a custom button. The designer hands off the design file, and we write some CSS to make it look exactly right. Pretty straightforward, right?&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/eschafer/embed/qvJvZR?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;But wait — buttons have more than one state. The default state we just created looks good so far, but we need to make sure that it also looks noticeably different when it's focused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Many people exclusively use keyboards to navigate, and rely on the focus state to know where they are on the page.&lt;/strong&gt;&lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;There's a huge variety of reasons why someone might use a keyboard over a mouse, and for many, using the mouse as a fallback just isn't an option.&lt;/p&gt;

&lt;p&gt;When you navigate a page with the keyboard, you press tab to go through all the interactive elements on the page. If you have access to a keyboard now, go ahead and try it out. You should be able to easily see what's in focus.&lt;/p&gt;

&lt;p&gt;If the focus state isn't visible (or hard to see), it's like trying to use a website with an invisible mouse cursor:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/eschafer/embed/moaKXV?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;There's no way anyone would think that'd be okay to push to production! But when we don't pay attention to our focus states, that's exactly what we end up doing.&lt;/p&gt;

&lt;p&gt;This affects real people in the same way the invisible-cursor example might affect you. If you're sighted, there's also a good chance that &lt;em&gt;you&lt;/em&gt;, personally, might end up relying on these focus states as you age (assuming you don't already). Let's fix this!&lt;/p&gt;

&lt;h2&gt;
  
  
  Browser defaults
&lt;/h2&gt;

&lt;p&gt;Browsers provide focus states by default. Here's what those look like on our custom button:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzf29wd2d3gcu4lduc6z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzf29wd2d3gcu4lduc6z.png" alt="How popular browsers render the custom button's focus state."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I don't have vision problems, but most of those are &lt;em&gt;very&lt;/em&gt; hard for me to see. It's even worse for people with low vision — for them, there's no visible difference between these focus states and the default button state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Designing a custom focus state
&lt;/h2&gt;

&lt;p&gt;So what would we need to do to have a focus state that people can see? The main guidelines I use are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If you're relying on color to signify a change in state, the &lt;a href="https://webaim.org/resources/contrastchecker/" rel="noopener noreferrer"&gt;color contrast ratio&lt;/a&gt; between the default color and the focus color needs to be at least 3:1&lt;sup id="fnref2"&gt;2&lt;/sup&gt;.&lt;/li&gt;
&lt;li&gt;Make sure that any outlines are thick enough to actually see. There aren't any official guidelines on this, but at least use something larger than 1px.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here are some examples of accessible focus states:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/eschafer/embed/pYGNge?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Ahh, much better! I realize that a lot of people like things like this to be subtle, but it doesn't really matter what something looks like if you can't use it. This was just a quick proof of concept, so I'm sure there's more creative ways to work within these guidelines that will also fit the aesthetic.&lt;/p&gt;

&lt;p&gt;I hope this is useful!&lt;/p&gt;

&lt;h3&gt;
  
  
  Related reading
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/focusing-on-focus-styles/" rel="noopener noreferrer"&gt;https://css-tricks.com/focusing-on-focus-styles/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.deque.com/blog/accessible-focus-indicators/" rel="noopener noreferrer"&gt;https://www.deque.com/blog/accessible-focus-indicators/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/removing-that-ugly-focus-ring-and-keeping-it-too-6c8727fefcd2" rel="noopener noreferrer"&gt;https://hackernoon.com/removing-that-ugly-focus-ring-and-keeping-it-too-6c8727fefcd2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/focus-visible.html" rel="noopener noreferrer"&gt;https://www.w3.org/WAI/WCAG21/Understanding/focus-visible.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webaim.org/resources/contrastchecker/" rel="noopener noreferrer"&gt;https://webaim.org/resources/contrastchecker/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://www.w3.org/WAI/perspective-videos/keyboard/" rel="noopener noreferrer"&gt;https://www.w3.org/WAI/perspective-videos/keyboard/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/non-text-contrast.html" rel="noopener noreferrer"&gt;https://www.w3.org/WAI/WCAG21/Understanding/non-text-contrast.html&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>a11y</category>
      <category>css</category>
      <category>webdev</category>
      <category>ux</category>
    </item>
  </channel>
</rss>
