[ { "content": "
Adapted from mailchimp’s guide under a CC-BY-NC-4.0 license.
\n\nWe’re always working to make our content more accessible and usable to the widest possible audience. Writing for accessibility\ngoes way beyond making everything on the page available as text. It also affects the way you organize content and guide\nreaders through a page.
\n\nDepending on the audience and country, there may be laws governing the level of accessibility required. At minimum, an\naccessible version should be available. Accessibility includes users of all mental and physical capacities, whether situational\n(broken glasses!) or more permanent.
\n\nWe write for a diverse audience of readers who all interact with our content in different ways. We aim to make our content\naccessible to anyone using a screen reader, keyboard navigation, or Braille interface, and to users of all cognitive capabilities.
\n\nAs you write, consider the following:
\n\nMany of the best practices for writing for accessibility echo those for writing technical content, with the added complexity\nof markup, syntax, and structure.
\n\nAvoid directional instructions and any language that requires the reader to see the layout or design of the page. This is\nhelpful for many reasons, including layout changes on mobile.
\n\nYes: “Select from these options,” (with the steps listed after the title)
\n\nNo: “Select from the options in the right sidebar.”
\n\nHeaders should always be nested and consecutive. Never skip a header level for styling reasons. To help group sections,\nbe sure the page title is <h1>
, top-level sections are <h2>
s, and subsequent inside those are <h3>
and beyond. Avoid\nexcessive nesting.
Put the most important information first. Place similar topics in the same paragraph, and clearly separate different topics\nwith headings.
\n\nStarting with a simple outline that includes key messages can help you create a hierarchy and organize your ideas in a\nlogical way. This improves scannability and encourages better understanding.
\n\nMake true lists instead of using a paragraph or line breaks.
\n\nLabel inputs with clear names, and use appropriate tags. Think carefully about what fields are necessary, and especially\nwhich ones you mark as required. Label required fields clearly. The shorter the form, the better.
\n\nLinks should provide information on the associated action or destination. Try to avoid “click here” or “learn more.”
\n\nWrite short sentences and use familiar words. Avoid jargon and slang. If you need to use an abbreviation or acronym that\npeople may not understand, explain what it means on first reference.
\n\nThe alt tag is the most basic form of image description, and it should be included on all images. The language will depend\non the purpose of the image:
\n\nEach browser handles alt tags differently. Supplement images with standard captions when possible.
\n\nClosed captioning or transcripts should be available for all videos. The information presented in videos should also be\navailable in other formats.
\n\nAim for high contrast between your font and background colors. Tools in the resources section should help with picking\naccessible colors.
\n\nImages should not be the only method of communication, because images may not load or may not be seen. Avoid using images\nwhen the same information could be communicated in writing.
\n", "id": "/docs/content-guide/accessibility", "url": "/docs/content-guide/accessibility/", "path": "_docs/content-guide/accessibility.md", "relative_path": "_docs/content-guide/accessibility.md", "excerpt": "Adapted from mailchimp’s guide under a CC-BY-NC-4.0 license.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Writing guide for inclusivity","robots":"noindex,follow"}, "title": "Accessibility", "slug": "accessibility", "ext": ".md", "tags": [] }, { "content": "To keep content understandable, concise, and relevant, it should be:
\n\nYou should:
\n\nWords ending in –ion and -ment tend to make sentences longer and more complicated than necessary. Avoid turning verbs\ninto nouns, a common sign of jargon.
\n\nCraft sentences at 25 words or fewer, whenever possible. If a sentence has fewer than 14 words, readers understand 90 percent of content. At 25 words, sentences are markedly more difficult to comprehend.
\n\nWe also recommend varying sentence length. Switching things up helps you keep readers interested. This tactic will also\ngive you better control of your content’s tone — a text with only short sentences can unintentionally sound terse. The\noccasional longer sentence adds a bit of narrative interest (and can help a piece of writing sound friendlier, too).
\n\nHere’s an example of how you might transform a too-long sentence into something more manageable. Instead of:
\n\n\n\n\nDue to privacy and logistical considerations, passes cannot be replaced if lost or stolen; a new Paper Voucher must be\naccessed by going to the everykidinapark.gov website and completing the same activities\nto obtain a new Paper Voucher.
\n
Use:
\n\n\n\n", "id": "/docs/content-guide/be-concise", "url": "/docs/content-guide/be-concise/", "path": "_docs/content-guide/be-concise.md", "relative_path": "_docs/content-guide/be-concise.md", "excerpt": "Unfortunately, we can’t replace lost or stolen passes. Get a new pass by visiting everykidinapark.gov\nand signing up again.
\n
To keep content understandable, concise, and relevant, it should be:
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Write enough to get your point across, but no more.","robots":"noindex,follow"}, "title": "Be concise", "slug": "be-concise", "ext": ".md", "tags": [] }, { "content": "Write in a way that suits the situation. Ask yourself: Who is going to read this? What do they need to know? How might\nthey be feeling?
\n\nHelp people find the information they need quickly and easily. Guide them through the process.
\n\nUse plain language and simple sentences.
\n\nChoose clarity over cleverness.
\n\nRespect the complexity of our users’ experiences.
\n\nBe willing to be surprised about who’s reading your work.
\n\nTalk like a person.
\n\nTell the truth.
\n\nUse positive language and concrete examples.
\n\nMake sure your content works for users. Don’t be afraid to scrap what’s there and start over.
\n\nWrite a draft, test it out, gather feedback, and keep refining.
\n", "id": "/docs/content-guide/content-principles", "url": "/docs/content-guide/content-principles/", "path": "_docs/content-guide/content-principles.md", "relative_path": "_docs/content-guide/content-principles.md", "excerpt": "Adapted from mailchimp’s guide under a CC-BY-NC-4.0 license.
\n\nAdhering to certain rules of grammar and mechanics helps us keep our writing clear and consistent. This section will lay\nout our house style, which applies to all of our content unless otherwise noted in this guide.
\n\nWrite for all readers. Some people will read every word you write. Others will just skim. Help everyone read better by\ngrouping related ideas together and using descriptive headers and subheaders.
\n\nFocus your message. Create a hierarchy of information. Lead with the main point or the most important content, in sentences,\nparagraphs, sections, and pages.
\n\nBe concise. Use short words and sentences. Avoid unnecessary modifiers.
\n\nBe specific. Avoid vague language. Cut the fluff.
\n\nBe consistent. Stick to the copy patterns and style points outlined in this guide.
\n\nThe guiding principle behind these guidelines is trueness to form: a word, phrase, number, etc. should look like what it\nis. The more a date, time, phone number, quote, or similar looks to the user like its affordance, the more likely the user\nwill understand and consume that information.
\n\nIf there’s a chance your reader won’t recognize an abbreviation or acronym, spell it out the first time you mention it.\nThen use the short version for all other references. If the abbreviation isn’t clearly related to the full version,\nspecify in parentheses.
\n\n\n\n\nFirst use: Network Operations Center
\n
\n\n\nSecond use: NOC
\n
\n\n\nFirst use: Coordinated Universal Time (UTC)
\n
\n\n\nSecond use: UTC
\n
If the abbreviation or acronym is well known, like API or HTML, use it instead (and don’t worry about spelling it out).
\n\nUse active voice. Avoid passive voice.
\n\nIn active voice, the subject of the sentence does the action. In passive voice, the subject of the sentence has the action\ndone to it.
\n\n\n\n\nYes: Marti logged into the account.
\n
\n\n\nNo: The account was logged into by Marti.
\n
Words like “was” and “by” may indicate that you’re writing in passive voice. Scan for these words and rework sentences\nwhere they appear.
\n\nOne exception is when you want to specifically emphasize the action over the subject. In some cases, this is fine.
\n\n\n\n\nYour account was flagged by our abuse team.
\n
We use a few different forms of capitalization. Title case capitalizes the first letter of every word except articles,\nprepositions, and conjunctions. Sentence case capitalizes the first letter of the first word.
\n\nWhen writing out an email address or website URL, use all lowercase.
\n\n\n\n\ntest@example.com
\n
Don’t capitalize random words in the middle of sentences. Here are some words that we never capitalize in a sentence.
\n\nThey’re great! They give your writing an informal, friendly tone.
\n\nEmoji are a fun way to add humor and visual interest to your writing, but use them infrequently and deliberately.
\n\nSpell out a number when it begins a sentence. Otherwise, use the numeral. This includes ordinals.
\n\n\n\n\nTen new employees started on Monday, and 12 start next week.
\n
\n\n\nI ate 3 donuts at Coffee Hour.
\n
\n\n\nMeg won 1st place in last year’s Walktober contest.
\n
\n\n\nWe hosted a group of 8th graders who are learning to code.
\n
Sometimes it feels weird to use the numeral. If it’s an expression that typically uses spelled-out numbers, leave them\nthat way.
\n\n\n\n\nA friendly welcome email can help you make a great first impression.
\n
\n\n\nThat is a third-party integration.
\n
\n\n\nPut your best foot forward with the all-in-one Marketing Platform that grows with you.
\n
\n\n\nAfter you send your newsletter, Freddie will give you a high-five.
\n
Numbers over 3 digits get commas:
\n\nWrite out big numbers in full. Abbreviate them if there are space restraints, as in a tweet or a chart: 1k, 150k.
\n\nGenerally, spell out the day of the week and the month. Abbreviate only if space is an issue.
\n\n\n\n\nSaturday, January 24
\n
\n\n\nSat., Jan. 24
\n
Spell out fractions.
\n\n\n\n\nYes: two-thirds
\n
\n\n\nNo: 2/3
\n
Use decimal points when a number can’t be easily written out as a fraction, like 1.375 or 47.2.
\n\nUse the % symbol instead of spelling out “percent.”
\n\nUse a hyphen (-) to indicate a range or span of numbers.
\n\n\n\n\nIt takes 20-30 days.
\n
When writing about US currency, use the dollar sign before the amount. Include a decimal and number of cents if more than 0.
\n\n\n\n\n$20
\n
\n\n\n$19.99
\n
When writing about other currencies, follow the same symbol-amount format:
\n\n\n\n\n¥1\n€1
\n
Defer to Nick Kolenda’s Pricing psychology when setting\nthe price of any product on the site. The goal for any price should be:
\n\nFor US phone numbers, use the familiar format with the area code in parentheses:
\n\n\n\n\n(248) 721-0350
\n
For any international number, precede with a +
followed by the country code and number with no spaces. If a regional/local\nformatting standard is known, use that.
\n\n\n+44 0800 328 1700
\n
Use the degree symbol and the capital F abbreviation for Fahrenheit.
\n\n\n\n\n98°F
\n
Use numerals and AM or PM, with a space in between. Always add minutes, even on the hour, as it makes times within text\nfar more recognizable and skimmable.
\n\nUse a hyphen between times to indicate a time period.
\n\n\n\n\n7:00 AM–10:30 PM
\n
Specify time zones when writing about an event or something else people would need to schedule. Abbreviate time zones\nwithin the continental United States as follows:
\n\nWhen referring to international time zones, spell them out: Nepal Standard Time, Australian Eastern Time. If a time zone\ndoes not have a set name, use its Coordinated Universal Time (UTC) offset.
\n\nAbbreviate decades when referring to those within the past 100 years.
\n\nWhen referring to decades more than 100 years ago, be more specific:
\n\nPunctuation marks, such as the colon, should be outside of bolding or emphasis if they are at a boundary. Other punctuation\nsimilarly should be “programmer style”, where commas are outside of quotes and the like. This is not exactly to AP/MLA/Chicago\nstyle standards, but matches the personality of our voice.
\n\nIn some cases, such as apostrophes, quotes, and others, there exist ‘smart’ marks that are curly or otherwise-affected. Using\nthese marks rather than plain or straight quotes is left to your discretion — plain marks are entirely acceptable in all\nusages.
\n\nThe apostrophe’s most common use is making a word possessive. If the word already ends in an s and it’s singular, you also\nadd an ‘s. If the word ends in an s and is plural, just add an apostrophe.
\n\nApostrophes can also be used to denote that you’ve dropped some letters from a word, usually for humor or emphasis. This\nis fine, but do it sparingly.
\n\nUse a colon (rather than an ellipsis, em dash, or comma) to offset a list.
\n\n\n\n\nErin ordered 3 kinds of donuts: glazed, chocolate, and pumpkin.
\n
You can also use a colon to join 2 related phrases. If a complete sentence follows the colon, capitalize the 1st word.
\n\n\n\n\nI was faced with a dilemma: I wanted a donut, but I’d just eaten a bagel.
\n
When writing a list, use the serial comma (also known as the Oxford comma).
\n\n\n\n\nYes: David admires his parents, Oprah, and Justin Timberlake.
\n
\n\n\nNo: David admires his parents, Oprah and Justin Timberlake.
\n
Otherwise, use common sense. If you’re unsure, read the sentence out loud. Where you find yourself taking a breath, use\na comma.
\n\nUse a hyphen (-) without spaces on either side to link words into single phrase, or to indicate a span or range.
\n\nUse an em dash (—) with spaces on either side to offset an aside.
\n\nUse a true em dash, not hyphens (- or –).
\n\n\n\n\nMultivariate testing — just one of our new Pro feature — can help you grow your business.
\n
\n\n\nAustin thought Brad was the donut thief, but he was wrong — it was Lain.
\n
Ellipses (…) can be used to indicate that you’re trailing off before the end of a thought. Use them sparingly. Don’t\nuse them for emphasis or drama, and don’t use them in titles or headers.
\n\n\n\n\n“Where did all those donuts go?” Christy asked. Lain said, “I don’t know…”
\n
Ellipses, in brackets, can also be used to show that you’re omitting words in a quote.
\n\n\n\n\n“When in the Course of human events it becomes necessary for one people to dissolve the political bands which have\nconnected them with another and to assume among the powers of the earth, […] a decent respect to the opinions of\nmankind requires that they should declare the causes which impel them to the separation.”
\n
Periods go outside of quotation marks, programmer-style. They go outside parentheses when the parenthetical is part of a\nlarger sentence, and inside parentheses when the parenthetical stands alone.
\n\n\n\n\nChristy said, “I ate a donut”.
\n
\n\n\nI ate a donut (and I ate a bagel, too).
\n
\n\n\nI ate a donut and a bagel. (The donut was Sam’s.)
\n
Leave a single space between sentences.
\n\nQuestion marks go inside quotation marks if they’re part of the quote, and outside otherwise. Like periods, they go outside\nparentheses when the parenthetical is part of a larger sentence, and inside parentheses when the parenthetical stands alone.
\n\nUse exclamation points sparingly, and never more than one at a time. They’re like high-fives: A well-timed one is great,\nbut too many can be annoying.
\n\nExclamation points go inside quotation marks when part of the quote, or outside otherwise. Like periods and question marks,\nthey go outside parentheses when the parenthetical is part of a larger sentence, and inside parentheses when the parenthetical\nstands alone.
\n\nNever use exclamation points in failure messages or alerts. When in doubt, avoid!
\n\nUse quotes to refer to words and letters, titles of short works (like articles and poems), and direct quotations.
\n\nPeriods and commas go outside quotation marks when terminal. Question marks within quotes follow logic — if the question\nmark is part of the quotation, it goes within. If you’re asking a question that ends with a quote, it goes outside the quote.
\n\nUse single quotation marks for quotes within quotes.
\n\n\n\n\nWho was it that said, “A fool and his donut are easily parted”?
\n
\n\n\nBrad said, “A wise man once told me, ‘A fool and his donut are easily parted.’”
\n
Use single quotes for single words or hyphenated phrases. For multi-word quotations, use double quotes on the outside and\nsingle quotes within. Avoid triple-nested quotes whenever humanly possible.
\n\nGo easy on semicolons. They usually support long, complicated sentences that could easily be simplified. Try an em dash\n(—) instead, or simply start a new sentence.
\n\nDon’t use ampersands unless one is part of a company or brand name.
\n\nWhen referring generally to a file extension type, use all uppercase without a period. Add a lowercase s to make plural.
\n\nWhen referring to a specific file, the filename should be lowercase:
\n\nIf your subject’s gender is unknown or irrelevant, use “they,” “them,” and “their” as a singular pronoun. Use “he/him/his”\nand “she/her/her” pronouns as appropriate. Don’t use “one” as a pronoun.
\n\nWhen quoting someone in a blog post or other publication, use the present tense.
\n\n\n\n\n“Using Mailchimp has helped our business grow,” says Jamie Smith.
\n
The first time you mention a person in writing, refer to them by their first and last names. On all other mentions, refer\nto them by their first name.
\n\nCapitalize the names of departments and teams (but not the word “team” or “department”).
\n\nCapitalize individual job titles when referencing to a specific role. Don’t capitalize when referring to the role in general terms.
\n\n\n\n\nOur new Marketing Manager starts today.
\n
\n\n\nAll the managers ate donuts.
\n
Don’t refer to someone as a “ninja,” “rockstar,” or “wizard” unless they literally are one.
\n\nThe first time you mention a school, college, or university in a piece of writing, refer to it by its full official name.\nOn all other mentions, use its more common abbreviation.
\n\n\n\n\nGeorgia Institute of Technology, Georgia Tech
\n
\n\n\nGeorgia State University, GSU
\n
Spell out all city and state names. Don’t abbreviate city names.
\n\nPer AP Style, all cities should be accompanied by their state, with the exception of: Atlanta, Baltimore, Boston, Chicago,\nCincinnati, Cleveland, Dallas, Denver, Detroit, Honolulu, Houston, Indianapolis, Las Vegas, Los Angeles, Miami, Milwaukee,\nMinneapolis, New Orleans, New York, Oklahoma City, Philadelphia, Phoenix, Pittsburgh, St. Louis, Salt Lake City, San Antonio,\nSan Diego, San Francisco, Seattle, Washington.
\n\nOn first mention, write out United States. On subsequent mentions, US is fine. The same rule applies to any other country\nor federation with a common abbreviation (European Union, EU; United Kingdom, UK).
\n\nCapitalize the names of websites and web publications. Don’t italicize.
\n\nAvoid spelling out URLs, but when you need to, write the entire URL including https://www. and the like, so the address is\nrecognizable and skimmable.
\n\nWrite in plain English. If you need to use a technical term, briefly define it so everyone can understand.
\n\nUse italics to indicate the title of a long work (like a book, movie, or album) or to emphasize a word.
\n\nDon’t use underline formatting, and don’t use any combination of italic, bold, caps, and underline.
\n\nLeft-align text, never center or right-aligned.
\n\nLeave one space between sentences, never 2.
\n\nUse positive language rather than negative language. One way to detect negative language is to look for words like “can’t,”\n“don’t,” etc.
\n\n\n\n\nYes: To get a donut, stand in line.
\n
\n\n", "id": "/docs/content-guide/grammar-mechanics", "url": "/docs/content-guide/grammar-mechanics/", "path": "_docs/content-guide/grammar-mechanics.md", "relative_path": "_docs/content-guide/grammar-mechanics.md", "excerpt": "No: You can’t get a donut if you don’t stand in line.
\n
Adapted from mailchimp’s guide under a CC-BY-NC-4.0 license.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Formatting and consistency in language on the site.","robots":"noindex,follow"}, "title": "Grammar and mechanics", "slug": "grammar-mechanics", "ext": ".md", "tags": [] }, { "content": "If you’re like many folks, you might not be sure of the difference between voice and tone. Maybe you’ve never deliberately\ncrafted a voice and don’t know where to start. Not to fret! In this section, we’ll discuss the differences between voice\nand tone, how we describe our organizational voice, how to establish your own voice, and how to choose a tone that’s\nappropriate for whatever you’re writing.
\n\nIt’s a common question and one that young writers find themselves asking often: What’s the difference between voice and\ntone?
\n\nOur voice is our unique personality. It can be helpful to think of voice as analogous to a person’s voice. Just as\nyou can identify your best friend in a crowd as soon as you hear her distinctive laugh, you can use an author’s or\norganization’s voice to identify a piece of writing even if you haven’t seen the byline. A well-crafted voice communicates\npersonality and values — it’s a distilled representation of an author or organization.
\n\nTone is more like attitude — the emotional context of a piece. It can be helpful to think of authorial tone as analogous\nto a person’s tone of voice. Just as a person would use a somber, sympathetic tone of voice to console a friend about the\nloss of a pet, an author writing a story about a natural disaster would most likely use a somber, serious tone. Conversely,\nan author writing a blog post about the launch of a new product might use an enthusiastic, upbeat tone.
\n\nOn this site, we like to communicate in a friendly, straightforward way. We consider our voice to be:
\n\nWe believe that communication can — and should — be fun and easy to read, and our voice represents this.
\n\nIn all of the communication we produce, we want to create a strong connection with our users. We want to get them the\ninformation they need in a straightforward way and show that we know what’s important to them. As an organization,\nwe need to sound somewhat official; we also recognize that official doesn’t need to translate to stuffy, archaic, or aloof.
\n\nFor this reason, we use contractions in the writing we create for our site. We also encourage clients to consider using\ncontractions, too, though we recognize this may not be the right choice for all contexts.
\n\nWhether you realize it or not, you already have a unique voice; the tricky part can be classifying it and pinning it down.
\n\nTo describe your voice — which, in turn, will allow you to diagram it, create guidelines around it, and make it reproducible\n— you’ll need to do some investigation and self reflection. Ask yourself these questions:
\n\nWhat are my core values? Your voice is a reflection of your core values. Before you craft a voice, consider the values\nyour organization represents and how you can translate these into stylistic patterns. If you’re part of a young organization\nthat hasn’t yet codified its values, you might use this opportunity to start that conversation. Crafting a voice before\nyou’ve determined your organization’s values can be dangerous — your voice might not reflect what you eventually decide\non. Along the same lines, if your organization is undergoing a large-scale values overhaul, you’ll want to make sure your\norganizational voice reflects your new values.
\n\nWho is my audience? In writing, as elsewhere, your audience is paramount — without them, you’d have no reason to write.\nPut yourself in their situation and think about the stylistic traits that might appeal to them. Remember, your voice doesn’t\nneed to appeal to everyone (and, in fact, shouldn’t — cure-alls cure nothing, as the old saying goes).
\n\nUse your answers to these questions to craft a description of your voice. Once you’ve come up with your description, look\nit over and identify any contradictions or holes (never a good thing). While voices should be nuanced, they should also\nbe cohesive.
\n\nAs we mentioned earlier, your voice is a constant, but your tone is a variable. Consider the following: If you’re having\nan irredeemably terrible day, you might get peeved at a store associate who chirpily (and repeatedly) asks if they can\nhelp you with anything. Instead of picking up on your nonverbal — or perhaps verbal — cues, this associate is tone-deaf.\nThe associate maintained a consistently helpful voice, but they failed to shift their tone from energetic to restrained.\nAs a result, their message (however valuable or well-intended) is lost on you.
\n\nTo avoid going the way of the associate, think about your users’ needs in different situations. Use these needs to determine\nyour tone.
\n\nLet’s consider three examples that target three different reader groups. Obituaries, technical blog posts, and marketing\nemails targeted at newly engaged couples have vastly different tones. Why? The three types of writing correspond to audiences\nin three highly different emotional states.
\n\nType of writing | \nIntended readership | \nTone | \nExample | \n
---|---|---|---|
Obituary of a prominent community member | \nPeople who knew (or knew of) the deceased | \nRespectful, reverent, somber | \n“Professor Pelham was respected by his colleagues and revered by students, many of whom would wake before dawn\n on registration day to ensure gaining entry to his classes. His wit, gentle humor, and compassion left their mark\n on everyone he talked to.” | \n
Blog post announcing open source documentation guide | \nDevelopers and other readers with a strong tech background | \nDirect, impartial | \n“The Open Source Style Guide\n is a comprehensive handbook for writing clear, accessible, and user-friendly documentation so that your open source\n code repositories are accessible both internally and externally. | \n
Marketing email from the boutique bridal department of a well-known clothing company | \nNewly engaged women (ages 28 through 33) | \nEnthusiastic, earnest, bubbly | \n“Say ‘I do!’ to 25% off. Now through July 3rd, take an additional 25% off all bridal wear and accessories.\n Celebrate your big day in style (and get a jumpstart on your honeymoon fund!).” | \n
If you’re having trouble finding an appropriate tone, try reframing the situation: How would you talk to a friend who’s\nin the same situation as your target user? Remembering that written communication is a conversation can help you settle\non the best tone for your purpose.
\n\nIf you’re like many folks, you might not be sure of the difference between voice and tone. Maybe you’ve never deliberately\ncrafted a voice and don’t know where to start. Not to fret! In this section, we’ll discuss the differences between voice\nand tone, how we describe our organizational voice, how to establish your own voice, and how to choose a tone that’s\nappropriate for whatever you’re writing.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"The mission, vision, and goals of the website qua website.","robots":"noindex,follow"}, "title": "Voice and tone", "slug": "voice-tone", "ext": ".md", "tags": [] }, { "content": "Adapted from mailchimp’s guide under a CC-BY-NC-4.0 license.
\n\nWe write the same way we live: with a person-first perspective. Whether you’re writing for an internal or external audience,\nit’s important to write for and about other people in a way that’s compassionate, inclusive, and respectful. Being aware\nof the impact of your language will help make Mailchimp a better place to work and a better steward of our values in the\nworld. In this section we’ll lay out some guidelines for writing about people with compassion, and share some resources\nfor further learning.
\n\nDon’t reference a person’s age unless it’s relevant to what you’re writing. If it is relevant, include the person’s specific\nage, offset by commas.
\n\nThe CEO, 16, just got her driver’s license.
\n\nDon’t refer to people using age-related descriptors like “young,” “old,” or “elderly.”
\n\nWhen possible, highlight the spectrum of sensory, motors, cognitive, and other abilities, rather than drawing ableist\ndistinctions with language.
\n\nAvoid disability-related idioms like “lame” or “falling on deaf ears.” Don’t refer to a person’s disability unless it’s\nrelevant to what you’re writing. If you need to mention it, ask whether your subject prefers person-first language\n(“they have a disability”) or identity-first language (“they are disabled”).
\n\nWhen writing about a person with disabilities, don’t use the words “suffer,” “victim,” or “handicapped.”\n“Handicapped parking” is OK.
\n\nDon’t call groups of people “guys.” Don’t call women “girls.”
\n\nAvoid gendered terms in favor of neutral alternatives, like “server” instead of “waitress” and “businessperson” instead\nof “businessman.”
\n\nIt’s OK to use “they” as a singular pronoun.
\n\nUse the following words as modifiers, but never as nouns:
\n\nDon’t use these words in reference to LGBT people or communities:
\n\nDon’t use “same-sex” marriage, unless the distinction is relevant to what you’re writing. (Avoid “gay marriage.”) Otherwise,\nit’s just “marriage.”
\n\nWhen writing about a person, use their communicated pronouns. When in doubt, just ask or use their name.
\n\nUse “deaf” as an adjective to describe a person with significant hearing loss. You can also use “partially deaf” or\n“hard of hearing.”
\n\nDon’t use hyphens when referring to someone with dual heritage or nationality. For example, use “Asian American” instead\nof “Asian-American.”
\n\nDon’t refer to a person’s medical condition unless it’s relevant to what you’re writing.
\n\nIf a reference to a person’s medical condition is warranted, use the same rules as writing about people with physical\ndisabilities and emphasize the person first. Don’t call a person with a medical condition a “victim.”
\n\nDon’t refer to a person’s mental or cognitive condition unless it’s relevant to what you’re writing. Never assume that\nsomeone has a medical, mental, or cognitive condition.
\n\nDon’t describe a person as “mentally ill.” If a reference to a person’s mental or cognitive condition is warranted, use\nthe same rules as writing about people with physical disabilities or medical conditions and emphasize the person first.
\n\nUse the adjective “blind” to describe a person who is unable to see. Use “low vision” to describe a person with limited vision.
\n", "id": "/docs/content-guide/writing-about-people", "url": "/docs/content-guide/writing-about-people/", "path": "_docs/content-guide/writing-about-people.md", "relative_path": "_docs/content-guide/writing-about-people.md", "excerpt": "Adapted from mailchimp’s guide under a CC-BY-NC-4.0 license.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Useful distinctions in order to be inclusive.","robots":"noindex,follow"}, "title": "Writing about people", "slug": "writing-about-people", "ext": ".md", "tags": [] }, { "content": "The site comes pre-installed with some JavaScript that allows you to accomplish some common interface conventions without\nhaving to write any front-end code.
\n\nThese scripts can be used in conjunction with one another, and can be used dynamically on the page (new DOM elements with\nrelevant classes are initialized via a mutationObserver, and all event code uses bubbling).
\n\nPer the Technical section of the site documentation, all additional JavaScript should be either:
\n\nThe core utility among all these scripts is /assets/js/partials/utility--initizalizer.js
. It allows you to easily perform\ninitialization operations on classed elements when they appear in the DOM.
The initializer runs first once the DOM is ready during page load, operating on all registered elements that exist at the\ntime of page load.
\n\nA mutationObserver, the only one on the site for performance, then listens for DOM changes, and relatively-efficiently detects\nwhether any registered elements are among the changes. If they are, the registered initialization function is run and a class\nis added to the element to signify that its initializer has run.
\n\nFor example, if an element should be given a particular class once it’s found in the DOM, the initialization function might\nbe:
\n\nvar exampleInitializationFunction = function (initType) {\n this.classList.add(\"js--event--click\");\n};\n
Notice that the targeted element is the this
within the function scope.
To register it to run both on load and on DOM mutations, call the utilityInitializer()
:
utilityInitializer(\"js--example\", \"exampleInitializationFunction\");\n
Any element that enters the DOM with the js--example
class will then have the js--event--click
class added by the function\nyou’ve written, either at page load or when a mutation is observed. In order to prevent the initializer from running multiple\ntimes on the same element, an appended class is also added to the element. In the example, that class would be js--example--initialized
.
Only single classes may be used for the first argument of the utilityInitializer()
, and the class should not have a preceding\nperiod (it’s a class string rather than a selector). Similarly, the second argument should be the function name of the\ninitialization function as a string, allowing for a this
caller into the function as desired.
By convention, the functions passed into the utilityInitializer()
should be named for the partial and appended with\n‘InitializationFunction’. For instance, in /assets/js/partials/js--copy-above.js
(named for the class in the first place,\nwhere the class is descriptive of the behavior), the initialization function passed to utilityInitializer()
is named\ncopyaboveInitializationFunction
.
The utility works purely on classes and keeps track of initializations using classes as well. This is by design, since other\nsolves may leak or prevent multiple different initializations on a single element. It also keeps the majority of DOM work\nas class manipulation rather than costly operations.
\n\nWhile not technically part of the initializer, the common pattern on the site for new JavaScript is to use a bubbling event\nlistener to ensure any element matching the correct criteria triggers the event, even if it was not registered to the listener\nat load-time.
\n\n/* Use event delegation for any dynamically-added events. */\ndocument.addEventListener(\n \"click\",\n function (event) {\n if (event.target !== document && event.target.closest(\".js--example\")) {\n let exampleElement = event.target.closest(\".js--example\");\n }\n },\n false\n);\n
The closest()
method facilitates the bubbling with vanilla methods, narrowing events bubbled to the document
to only elements\nwith a specific selector.
The main JavaScript on the site includes adding a ‘js’ class to the body, which can be used for Progressive enhancement\nin CSS and elsewhere.
\n\ndocument.body.classList.add(\"js\");\n
The window has a single, lightweight, debounced scroll listener that toggles classes on the body for whether the user is\nscrolling up, down, or if they have reached the top of the page. These classes can be used in the CSS for things like sticky\nheaders:
\n\n.body-scroll--down
.body-scroll--top
.body-scroll--up
The window
also has a single intersectionObserver: it does the lazy-loaded pictures and some classes for doing animations\nonce the user scrolls to reveal the element.
If you have animations defined, as in the utility--animation.css
stylesheet, and applied to an element, you can make the animation\ntrigger via the intersectionObserver by putting the js--to-animate
class on it. This observer is dynamic, so you can put\nreveal animations on elements added via AJAX if so desired.
An example of a reveal animation on an element is as follows:
\n\n<div class=\"js--to-animate animation-name--reveal\">\n This text will use the 'reveal' animation once observed.\n</div>\n
Result:
\n\nPer Heydon Pickering’s work on the Inclusive card component, the class\njs--child--link
applied to a card or other block-level context will turn the element into the most functional block-link-like\nitem possible. The class dynamically does the following (conditional on the classed element containing a valid link):
pointer
so hover makes it feel like a linkcard--hover
class, which can be used in CSS to add hover effectsExample:
\n\nText content for the example card.
\nOn the ‘atomic’ pages (atoms, molecules, organisms, etc.) of the documentation, each component is itself within a ‘docblock’\ncomponent: molecules/docblock.html
. Any class declared and passed to the docblock via the ‘classes’ parameter may then\nbe toggled on the front end to the top-level element of the component (note that every component should have configurable\nclasses at the top level so authors may modify the appearance and functionality to suit their needs).
Example:
\n\nHeadings provide your document with an hierarchical outline.
\n\n<h1>
, next use <h2>
and so on<h1>
per page. Using more than one will not result in an error, but using only one is seen\nas a best practice. It makes logical sense — <h1>
is the most important heading, and tells you what the purpose of the\noverall page is. You wouldn’t have a book with more than one title, or a movie with more than one name! Having a single\ntop-level title is also arguably better for screenreader users, and SEO@see MDN article on h1-h6
\n\n\n\nA common navigation technique for users of screen reading software is jumping from heading to heading to quickly determine\nthe content of the page. Because of this, it is important to not skip one or more heading levels. Doing so may create confusion,\nas the person navigating this way may be left wondering where the missing heading is.
\n\nFor the following events:
\n\n\"animationcancel\",\n \"animationend\",\n \"animationiteration\",\n \"animationstart\",\n \"blur\",\n \"canplay\",\n \"canplaythrough\",\n \"change\",\n \"click\",\n \"compositionend\",\n \"compositionstart\",\n \"compositionupdate\",\n \"contextmenu\",\n \"dblclick\",\n \"drag\",\n \"dragend\",\n \"dragenter\",\n \"dragleave\",\n \"dragover\",\n \"dragstart\",\n \"drop\",\n \"durationchange\",\n \"emptied\",\n \"ended\",\n \"focus\",\n \"focusin\",\n \"focusout\",\n \"fullscreenchange\",\n \"fullscreenerror\",\n \"gotpointercapture\",\n \"input\",\n \"loadeddata\",\n \"loadedmetadata\",\n \"lostpointercapture\",\n \"mousedown\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"pause\",\n \"play\",\n \"playing\",\n \"pointercancel\",\n \"pointerdown\",\n \"pointerenter\",\n \"pointerleave\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"pointerup\",\n \"ratechange\",\n \"reset\",\n \"seeked\",\n \"seeking\",\n \"show\",\n \"slotchange\",\n \"stalled\",\n \"submit\",\n \"suspend\",\n \"SVGAbort\",\n \"SVGError\",\n \"SVGLoad\",\n \"SVGResize\",\n \"SVGScroll\",\n \"SVGUnload\",\n \"SVGZoom\",\n \"timeupdate\",\n \"touchcancel\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\",\n \"transitionend\",\n \"unload\",\n \"volumechange\",\n \"waiting\";\n
…you can add js--event--
and then the event name, and the classed element will have some things happen automatically\nwhen that event triggers:
js--event--[eventName]--once
class is added and persists. So, if you add js--event--click
\nto a <div>
and then click it, that element will have the js--event--click--once
class on itdata-js-event-eventname-count
and its\nvalue will increment as the event occurs on the elementjs--event--click
to a <div>
and then\nclick it, that element will have the js--event--click--toggle
class on it. Clicking again removes the class, and so forthA great deal of what we do as front-end JavaScript developers comes down to event handling and class manipulation, so this\ngeneralized utility can often be used to create functionality without writing additional JavaScript. Toogled items like\nlightboxes, dropdown menus, etc. can all be accomplished by addressing the js--event--...--toggle
classes in CSS, usually\nwith an additional class to avoid conflicts.
This functionality is not expressly dynamic (ie. it does not register with the mutationObserver), but it does use event\nbubbling, so dynamically-added elements can also use these utility event classes.
\n\nThe list of events does not include scroll, resize, or other events that would require a debounce, and are usually best\naccomplished with an observer pattern rather than an event listener.
\n\nExternal links, for usability and security purposes, are set to open in a new tab/window via target=\"_blank\"
, with rel
\nset with the noopener
and noreferrer
flags so the browser does not leak private information across sites.
This script is not presently set to be dynamic like other scripts, so any dynamically-added external links may open in the\nsame tab and may leak opener and referrer information to the destination.
\n\nRather than using a library for lazy loading, since this site only supports evergreen browsers we can let our intersectionObserver\nlazy load our images, with only a minimal fallback.
\n\nTo lazy-load an <img>
or <picture>
, simply:
src
to data-src
and srcset
to data-srcset
src
and srcset
as src=\"/assets/images/required/s.gif\"
(a tiny pixel) in order to maintain\nHTML validity<noscript>
element as a fallbackpicture--lazy-load
class to the <img>
or <picture>
element, whichever is at the top levelTo make lazy loading and modern formats easier, add all images with the image include:
\n\n{% include atoms/image.html\n alt=\"Your alt text here\"\n caption=\"Optional caption here\"\n classes=\"\"\n src=\"required/meta-image--default.jpg\"\n%}\n
Result:
\n\n\n\nThere are a few classes/utilities that either change their parent element or work in tandem with adjacent elements. These\nclasses can be used for some of the most frequent interface conventions:
\n\nThe .js--copy-above
class, applied usually to a <button>
like so:
<button class=\"js--copy-above layout--hide--no-javascript\" type=\"button\">\n + Add another\n</button>\n
…clones the DOM element preceding it upon click, inserts another version, and does some interesting modification to the\ncloned element to ensure proper operation and accessibility.
\n\nExample:
\n\nMainly, it increments the value of any attribute that should be unique on the page, such as for
, id
, name
, and the aria-
\nattributes corresponding to those. These increments are delimited by between 1 and infinity colons (:
) that represent the\ndepth of the element within the DOM element being cloned.
Cloned elements are dismissible, allowing the application to be returned to its original state by the user.
\n\nIf the original element is:
\n\n<fieldset name=\"attendee\">\n <legend>Attendee</legend>\n <div class=\"form--item form--item--input form--item--input--text \">\n <label\n class=\"label form--item--label display--block font-size--p75em\"\n for=\"fullname\"\n >\n Full name\n </label>\n <input name=\"fullname\" id=\"fullname\" type=\"text\" />\n </div>\n</fieldset>\n
The first clone created by pressing the js–copy-above button would be augmented to be:
\n\n<fieldset\n name=\"attendee:2\"\n class=\"js--dismissible js--dismissible--initialized position--relative\"\n>\n <button type=\"button\" class=\"js--dismissible--close\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n <legend>Attendee</legend>\n <div class=\"form--item form--item--input form--item--input--text \">\n <label\n class=\"label form--item--label display--block font-size--p75em\"\n for=\"fullname:::2\"\n >\n Full name\n </label>\n <input name=\"fullname:::2\" id=\"fullname:::2\" type=\"text\" />\n </div>\n</fieldset>\n
The colon delimiters can conceivably be used to predict, template, or reconstruct cloned elements on subsequent page loads,\nbased on form data or some other state persistence mechanism not currently used on the site. Note that the service-worker.js
\ncan be modified to persist application state across the session, though this is not implemented in an appreciable way on the\nsite (except for the search page where the History API is used to persist a GET parameter).
Since the delimiters are based on depth in the cloned element, it’s important to ensure any referenced elements within (\nsuch as a paragraph referenced with aria-describedby
) are at the same DOM level within the element. Often this can be\nachieved by wrapping an element with a semantically-empty element such as <div>
or <span>
. If you don’t place elements\nat the same DOM level, assistive technologies or the browser itself may issue a warning about duplicates or a mismatch.
The js--dismissible
class is really cool.
Example:
\n\nDismissible status alert
\nIf you add it to an element, it will initialize by adding some padding and a close button. When a user presses the close\nbutton, the classed element will be removed from the DOM entirely.
\n\nIf the dismissed element had a stable-valued id
attribute and also has the js--dismissible
class on subsequent page loads,\na localStorage check will hide the element on DOMReady.
This class functionality is dynamic, so it can be used in conjunction with the “Copy Above” classed element above, for instance,\nwhich opens a lot of possibilities for <form>
and other interfaces.
Share links are the worst. The JavaScript that ships with this site includes a “floating action button” (FAB) that uses the\nbrowser/OS native sharing mechanism rather than a third-party script for sharing links and content. The button will only\nappear if native sharing is supported by the browser (progressive enhancement).
\n\nThe .js--toggle-below
class, applied typically to a <button>
, can be used to toggle the visibility of the element immediately\nfollowing the control in the DOM.
Adding a button to the page like so:
\n\n<button type=\"button\" class=\"js--toggle-below\" aria-expanded=\"true\">\n Example hidden content<br />\n <span class=\"js--toggle-below--label\">Close below</span>\n</button>\n
Example:
\n\nwill hide the element following it, with the button toggling the element's appearance in an accessible way on click.
\nIf the aria-expanded
attribute is not present or set to \"true\"
, the element following the button is visible and the\ntext of the <span class=\"js--toggle-below--label>
will automatically switch to “Close below”.
If JavaScript is not present, this toggle fails safe, and the contents will be visible.
\n\nThe site’s codebase contains the ability to sell products using the third-party Snipcart e-commerce utility. The snipcart\ncode is dynamically added to the page as needed, for both performance and privacy reasons.
\n\nFor a product widget of the following construction (automatic using collections and includes/layouts):
\n\n<div class=\"product--widget layout--hide--no-javascript \">\n <div class=\"product--widget--quantity\">\n <label for=\"sbfrt-0001-quantity\">Quantity:</label>\n <input\n type=\"number\"\n id=\"sbfrt-0001-quantity\"\n name=\"sbfrt-0001-quantity\"\n class=\"product--widget--quantity--input\"\n min=\"1\"\n value=\"1\"\n />\n </div>\n <div class=\"product--widget--buy-button\">\n <button\n type=\"button\"\n class=\"buy-button snipcart-add-item\"\n data-item-quantity=\"1\"\n data-item-id=\"SBFRT-0001\"\n data-item-name=\"A banana\"\n data-item-price=\"82.99\"\n data-item-image=\"http://localhost:4000/assets/images/1200x630/banana.jpg\"\n data-item-url=\"http://localhost:4000/products/a-banana/\"\n data-item-description=\"Affordable, portable fruiting\"\n >\n Add to cart\n </button>\n </div>\n</div>\n
An event listener is in place to update the data-item-quantity
attribute on the button (as specified by snipcart’s API)\nwhen the .product--widget--quantity
number input changes.
For this to work, the parent must be a .product--widget
and the number <input>
itself must have the class .product--widget--quantity--input
If a snipcart cookie is present, a “floating action button” for accessing the shopping cart will appear to the user.
\n", "id": "/docs/content-technical/javascript", "url": "/docs/content-technical/javascript/", "path": "_docs/content-technical/javascript.md", "relative_path": "_docs/content-technical/javascript.md", "excerpt": "The site comes pre-installed with some JavaScript that allows you to accomplish some common interface conventions without\nhaving to write any front-end code.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Scripts and behaviors available for use on the site.","robots":"noindex,follow"}, "title": "JavaScript", "slug": "javascript", "ext": ".md", "tags": [] }, { "content": "Any page on the site can use the layout utilities included in the CSS to make beautiful, responsive layouts.
\n\nalign-content--
align-items--
align-self--
display--
flex--
flex-direction--
flex-wrap--
justify-content--
<div class=\"layout--row display--flex\">\n <aside\n class=\"layout--column flex--1 display--flex flex-direction--column justify-content--center padding-horizontal--4 padding-horizontal--collapse\"\n >\n <p>Left column content.</p>\n </aside>\n\n <aside\n class=\"layout--column flex--1 display--flex flex-direction--column justify-content--center padding-horizontal--4 padding-horizontal--collapse\"\n >\n <p>Right column content.</p>\n </aside>\n</div>\n
The above HTML renders out as:
\n\nExample:
\n\nLet’s break down the markup and classes for all this. The above code can be copied as the starter for a layout, but having\nan appreciation of why a layout works the way it does will help ensure you don’t have to refer to this page all the time.
\n\nThe wrapper for any row containing columns should be a semantically-appropriate or meaningless element. In most cases a\n<div>
will do nicely.
Each column, even if it is the bigger column, is an aside, so using <aside>
is at least not semantically out of bounds.
As is customary on websites in the 2020s, each page consists of horizontal stripes sectioning content from the header all\nthe way to the footer. Many pages have one big stripe for content, such as blog posts or documentation, whereas full-fledged\npages with storytelling or sales purposes may have additional stripes for calls to action and other uses.
\n\nThe site includes the _includes/organisms/section.html
component, which can tentatively be used for any such stripe. However,\nthere are two main considerations for this:
.html
files rather than .md
files)For HTML validation and outline-level accessibility, be sure to include an <h2>
near the beginning of any section you create.
A section/stripe typically has the following markup:
\n\n<section class=\"layout--stripe\">\n <div class=\"layout--stripe--inner\">\n {% include atoms/heading.html children=\"Describes the section contents\"\n classes=\"\" level=\"2\" %} ...section contents here.\n </div>\n</section>\n
Above, .layout--stripe--inner
sets a max-width to the maximum content width of the site, and horizontally centers itself.\nThe main <section>
tag can take as many classes as needed, such as background-color and images. For accessibility, be sure\nto declare color--white
when applying a dark background.
The site’s CSS contains a bunch of utility-first classes for constructing layouts. Some of them follow the property–value\nconvention for CSS relating to flexbox, so a mastery of flexbox and knowledge of the property–value convention for the site’s\nutility classes will get you most of the way. We’ll document the flexbox classes below, nevertheless.
\n\nproperty–value.css contains any CSS property that has keyword values beyond ‘none’, ‘inherit’, and ‘initial’. If you’re\nlooking to put cursor: pointer;
on an element, for instance, you can use the property two dashes value class syntax and\napply
<div class=\"cursor--pointer\"></div>\n
instead. The following class categories are the ones most applicable to layouts.
\n\nalign-content--
The classes
\n\n.align-content--flex-start
.align-content--flex-end
.align-content--center
.align-content--space-between
.align-content--space-around
.align-content--space-evenly
.align-content--stretch
apply the keyword property values for align-content.
\n\nTypically in layouts the vertical and horizontal alignment is applied to different elements (layout--row
and layout--column
),\nso cross-axis settings are rare.
align-items--
These classes are also used sparingly, but can be used especially when centering.
\n\n.align-items--flex-start
.align-items--flex-end
.align-items--center
.align-items--baseline
.align-items--stretch
One quick way to attempt vertical centering is to put align-items on the container. However, often the more resilient vertical\ncentering rests with flex-direction–column and justify-content–center instead.
\n\nalign-self--
This is a super rare set of classes to use in a typical layout, but are available nonetheless.
\n\n.align-self--flex-start
.align-self--flex-end
.align-self--center
.align-self--baseline
.align-self--stretch
display--
The display property is key to setting a container to a flexbox layout.
\n\n.display--flex
Adding this class to a container, on its own, puts its children in a flex context. Additional classes will augment the\nchildren.
\n\nflex--
Some of the standard layout keyword values include auto, initial, and none. These largely have the effect of making the\nflex child take the space it needs, with auto making it take up the remaining space.
\n\n.flex--auto
.flex--initial
.flex--none
The 1-6 numbered flex classes allow for proportional layout:
\n\n.flex--1
.flex--2
.flex--3
.flex--4
.flex--5
.flex--6
A layout containing a flex--2
and two flex--1
children would have a 50/25/25% layout in its\nrespective direction.
flex-direction--
Chiefly, flex-direction–row (the default) sets layouts horizontally, while flex-direction–colulmn\nplaces them vertically.
\n\n.flex-direction--row
.flex-direction--row-reverse
.flex-direction--column
.flex-direction--column-reverse
Each of the reverse classes/values can be used for creating alternating layouts, or for otherwise augmenting the source\norder without using the order
property.
flex-wrap--
By default, flex containers do not wrap their children. The flex-wrap–wrap class can be added to create layouts that\ncontinue to a second line, for instance.
\n\n.flex-wrap--nowrap
.flex-wrap--wrap
.flex-wrap--wrap-reverse
justify-content--
The justify-content property is the most useful plain modifier class for layouts. It sets the orientation of the children\nwithin a flex container to the start, center, or puts available space between the items.
\n\n.justify-content--flex-start
.justify-content--flex-end
.justify-content--center
.justify-content--space-between
.justify-content--space-around
.justify-content--space-evenly
.justify-content--stretch
There are plenty more classes in this file, but the following are most useful for making engaging sections and layouts.
\n\na11y--visually-hidden
The .a11y--visually-hidden
class is useful for section headings and other elements that should not appear visually, but\nare semantically necessary or accessibly useful. It hides the content except when it or its children has :focus
.
background-image-display-mobile--hide
.background-image-display-mobile--hide
is useful when you use a busy photographic background image that looks good on\ndesktop, but may impede legibility on mobile. It will hide background images for viewports narrower than 1023px.
All the layout classes reside here, and most are namespaced with .layout--
to make them easy to see when scanning markup.
layout--column
All <aside>
elements or others serving as columns in a layout should have the .layout--column
class. It sets a min-width\nin case flex-shrink settings would otherwise smush the column to a tiny size. When the layout collapses to a single column,\nthe class also sets reasonable top and bottom spacing that aren’t necessary when the columns are side-by-side.
layout--column--empty
Use .layout--column--empty
when a column has no content but is inserted to fill space. When the layout collapses to a single\ncolumn any element with this class will be hidden.
layout--multiple--horizontal
.layout--multiple--horizontal
is slightly different conceptually from the other layouts in this guide. The layout–multiple–horizontal\nclass can be placed on a wrapper (ideally a <ul>
or <ol>
) and all the direct children are laid out three wide and wrapping.\nThis is ideal for the ‘card’ UI pattern.
As with layout--row
, the cards go to a single column at narrow viewports.
Often this works best if you can automatically add .flex--1
to all the child cards.
layout--row
The .layout--row
class allows the row (containing one or more columns) to wrap if needs to, starting at 1023px and narrower,\nand forces a single-column layout at 767px and narrower.
layout--stripe
.layout--stripe
pads sections responsively. At desktop-ish viewports the padding is bigger, while on smaller viewports\nthere is slighly less vertical padding to account for the smaller screen real estate.
The utility–spacing.css file has classes for putting margin and padding on elements, and handling that spacing responsively.
\n\nmargin-horizontal--
.margin-horizontal--0
, .margin-horizontal--1
, .margin-horizontal--2
, .margin-horizontal--4
, .margin-horizontal--8
,\n.margin-horizontal--16
, .margin-horizontal--32
margin-horizontal--collapse
Often the margin put on an item for desktop display is too large for mobile. The .margin-horizontal--collapse
gets rid\nof horizontal margins on elements at narrow viewports, so everything displays in a neat column and obeys the box model and\noverflow rules.
margin-top--auto
.margin-top--auto
is particularly useful for pushing an element to the bottom of the column (such as a “read more” link)\nwhen using a layout--column
or flex-direction--column
where the content does not flex-grow to fill the entire space\nnecessarily.
margin-vertical--
The margin-vertical classes, like their padding counterparts, apply vertical spacing in the same units as the horizontal\nclasses, but in the other direction. Vertical margin and padding need not have full-fledged collapse rules (horizontal\nspacing interacts with the edges of the viewport, whereas vertical spacing most often contributes to scroll length, so\nfor practical purposes we are stringent about horizontal spacing and lax about vertical spacing), but the larger classes\nhalve in size for small viewports.
\n\n.margin-vertical--0
.margin-vertical--1
.margin-vertical--2
.margin-vertical--4
.margin-vertical--8
.margin-vertical--16
.margin-vertical--32
padding-horizontal--
The horizontal padding classes use the same units as all the other spacing classes, and like margin-horizontal--
there\nis a .padding-horizontal--collapse
class available for quick responsiveness.
.padding-horizontal--0
.padding-horizontal--1
.padding-horizontal--2
.padding-horizontal--4
.padding-horizontal--8
.padding-horizontal--16
.padding-horizontal--32
,padding-horizontal--collapse
.padding-horizontal--collapse
collapse the horizontal padding applied by the regular classes when you get down to narrow\nviewports, allowing columns to have a lot of breathing room at desktop but maintain a clean left line of content on mobile\ndevices and other narrow viewports.
padding-vertical--
The vertical padding classes should be used fairly sparingly, since a flex column with justify-content--
classes appied\nis overwhelmingly more likely to accomplish the desired effect. For more fixed applications, and for facilitating the spacer\ncomponent, these classes can give you vertical internal spacing.
.padding-vertical--0
.padding-vertical--1
.padding-vertical--2
.padding-vertical--4
.padding-vertical--8
.padding-vertical--16
.padding-vertical--32
Any page on the site can use the layout utilities included in the CSS to make beautiful, responsive layouts.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Instructions for making layouts.","robots":"noindex,follow"}, "title": "Layouts", "slug": "layouts", "ext": ".md", "tags": [] }, { "content": "A table of contents, based on the headings in the documents, can be added to the top [only] of a markdown (.md) file\nwith the following code exactly:
\n\n## Table of contents\n{: .no_toc}\n\n1. TOC\n{:toc}\n
On this site we use a text format called markdown for much of the content. This format is plain old text with some extra\n‘syntax’ (symbols and spacing) to let you make things like links, headings, bold and italic text, and a bunch of other stuff,\nall in a way that looks mostly natural on its own.
\n\nA big advantage of this format is that you can learn it without having to learn the nitty-gritty of HTML, and end up with\nbeautiful pages. Anywhere you see a file that ends in .md
you can use this markdown stuff outlined below and spice the\nheck out of your content without bugging a developer!
This site renders markdown using the kramdown engine, and as such can take\nany syntax accepted by the engine as a whole. In circumstances where there are multiple ways to make an element, this\nguide is prescriptive about the preferred style to use for consistency on this site.
\n\nRegular text can be typed as you naturally would in a word-processing program; just type out the text and then hit Enter\ntwice to create a new paragraph.
\n\nOne thing we do as a convention on this site is hit Enter once (start a new line) when the line you’re on gets to 120\nletters/characters long. This makes the text readable and manageable in a plain text editor without fancy wrapping settings.
\n\nHere’s an example of some plain old paragraph text in a markdown file:
\n\nRegular text can be typed as you naturally would in a word-processing program; just type out the text and then hit Enter\ntwice to create a new paragraph.\n\nOne thing we do as a convention on this site is hit Enter once (start a new line) when the line you're on gets to 120\nletters/characters long. This makes the text readable and manageable in a plain text editor without fancy wrapping settings.\n\nHere's an example of some plain old paragraph text in a markdown file:\n
Headings are a great way to split your content into meaningful, bite-size sections. Usability researchers have found time\nand again that users respond very poorly to long paragraphs and big walls of text, so headings are a great solve for that.\nThey also give people waypoints in the document to skim, and are necessary if you want a table of contents like the one at\nthe top of this page.
\n\nHeadings must follow a logical outline order… you can’t start a page with a fourth-level heading just because you like\nthe way it looks. In fact, every page on the web should have just one first-level heading. That’s why every markdown page\nyou see on the site should start with a second-level heading!
\n\nYou can add a heading like this:
\n\n### Headings\n
And here are all the heading levels available to you when writing:
\n\n## Second-level heading\n\n### Third-level heading\n\n#### Fourth-level heading\n\n##### Fifth-level heading\n\n###### Sixth-level heading\n
You’re not allowed to go beyond six levels. Typically if you get past four you’re probably writing too much on one page.
\n\nOn this site we use bold and italic text in a specific way, and avoid underlined plain text since it can be mistaken for\nlinks. Italic text is useful for the titles of media, or for non-confident emphasis. When confident of what is being\nemphasized, use bold text instead.
\n\nItalic text can be added by wrapping the text in question in single underscores:
\n\nThis text is regular, while _this text is italic_. We're back to regular.\n
Which renders to:
\n\nThis text is regular, while this text is italic. We’re back to regular.
\n\nBold text can be added by wrapping the text in question in double asterisks:
\n\nThis text is regular, while **this text is bold**. We're back to regular.\n
Which renders to:
\n\nThis text is regular, while this text is bold. We’re back to regular.
\n\nLinks are the backbone of the web. They allow you to write a little in one place and refer to information that exists on\nanother site or page. In markdown there is a straightforward way to make links. Be advised, though, that linking to content\non the site is different from link to external sites.
\n\nThe main syntax to know is the squares-and-parentheses for links: [descriptive text](https://...)
For external links, be sure to insert a fully-qualified address, including the https://
part.
Learn more [at the Google home page](https://www.google.com).\n
Which renders as:
\n\nLearn more at the Google home page.
\n\nInternal links can be done in one of two ways. The first is if you’re certain that a particular path exists and will\nalways exist, you can refer to it directly:
\n\nWe go into our history on the [About us page](/about/).\n
This renders as:
\n\nWe go into our history on the About us page.
\n\nNote that the link starts with a slash. Typically you want all links of this type to be “root relative”, or beginning with\na slash (/
) and showing the full path from the home page.
However, pretty link paths can change for SEO or usability purposes, whereas the file and its location is much less likely\nto change. Given this, we can use a method of linking that the underlying (Jekyll) system provides:
\n\nWe go into our history on the [About us page]({% link collections/pages/about.html %}).\n
This renders similar to the above link:
\n\nWe go into our history on the About us page.
\n\nIf the pretty path to the About page changes, the Jekyll method will automatically update the link, while the hard-coded\nmethod will still point to the old path.
\n\nWhen working with content files and their paths and links, please abide by the following:
\n\nLists are great for making bite-sized scannable areas of content, logically grouping concepts, ensuring accessible listings,\nand semantically saying whether a list has no order (bulleted) or that order is important (numbered).
\n\nBulleted lists can be entered as a line starting with two spaces, an asterisk, then another space, followed by that bullet’s\ncontent, like so:
\n\n- First bullet in the list, though since it's a bullet that's not important. This bullet has a lot of content, requiring\n it to wrap at 120 characters. We indent the second and subsequent lines with an extra two spaces\n- Another bullet\n- Sure, let's do another bullet. Note that stylistically we do not end list items with periods\n
This renders to the screen as:
\n\nNumbered lists are similar to bullet list syntax, just with the asterisks replaced with numbers and periods, like so:
\n\n1. Say we need to talk\n2. Say \"sit down, it's just a talk\"\n3. Smile politely\n4. Stare politely right on through\n
This renders to the screen as:
\n\nSometimes markdown gets upset when you have a numbered list with more than 9 items. In this case, it’s ok to start again\nat zero or one, rather than using two-digit numbers. While it’s true that any number can be used at any position in a numbered\nlist, try whenever possible to use the correct number order so that the plain markdown file is readable.
\n\nA blockquote is started using the >
marker followed by a space; all following lines that are also started with the\nblockquote marker belong to the blockquote. You can use other markdown within a quote as necessary:
> Some sort of window to your right\n> As he goes left and you **stay right**\n> Between the lines of fear and blame\n> You begin to wonder why you came\n
The above quote code renders as:
\n\n\n\n\nSome sort of window to your right\nAs he goes left and you stay right\nBetween the lines of fear and blame\nYou begin to wonder why you came
\n
The principle behind using a blockquote rather than a “sentence quote” is similar to the usage of code blocks below; a brief\nquote is most appropriate inline with its surrounding text, whereas a longer quote or one deserving emphasis should be in\na blockquote like above.
\n\nIf you would like to place code samples within some of the text on a page, you can either use inline code, which can appear\non the same line as the rest of the text, or in a block with smart highlighting. Inline code is good for brief examples\nwhere highlighting and other concerns are minimal, whereas a block of code is appropriate for multi-line samples.
\n\nTo insert a multi-line, highlighted code sample, wrap it top and bottom with three backticks. Optionally, you can add\na notation after the opening backticks to indicate the kind of syntax to highlight within:
\n\n```javascript\nalert(\"This is a bad example of JavaScript!\");\n```\n
This renders on the screen as:
\n\nalert(\"This is a bad example of JavaScript!\");\n
Inline code can be added with single backticks, within a sentence if desired.
\n\nIn markdown, `### Example` becomes `<h3>Example</h3>` in HTML.\n
This renders on the front end as: In markdown, ### Example
becomes <h3>Example</h3>
in HTML.
kramdown supports a syntax for creating simple tables. A line starting with a pipe character (|
)\nstarts a table row. However, if the pipe characters is immediately followed by a dash (-
), a\nseparator line is created. Separator lines are used to split the table header from the table body\n(and optionally align the table columns) and to split the table body into multiple parts. If the\npipe character is followed by an equal sign (=
), the tables rows below it are part of the table\nfooter.
| Header1 | Header2 | Header3 |\n| :------ | :-----: | ------: |\n| cell1 | cell2 | cell3 |\n| cellA | cellB | cellC |\n| cell1 | cell2 | cell3 |\n| cellA | cellB | cellC |\n
This renders out as:
\n\nHeader1 | \nHeader2 | \nHeader3 | \n
---|---|---|
cell1 | \ncell2 | \ncell3 | \n
cellA | \ncellB | \ncellC | \n
cell1 | \ncell2 | \ncell3 | \n
cellA | \ncellB | \ncellC | \n
Tables in both markdown and HTML are some of the most complicated syntax. If you find yourself making a table, it may be\ntime to discuss your needs with a developer.
\n\nImages can be added in the manner shown below. Just… don’t do it this way. Keep reading this section.
\n\n![Default meta image](/assets/images/required/meta-image--default.jpg)\n
Since this site is obscenely high-performance, it does a bunch of things to images when the site regenerates to make images\nload faster. The way of adding images above won’t do it, but the way below will:
\n\n{% include atoms/image.html\n src=\"required/meta-image--default.jpg\"\n alt=\"Default meta image\"\n caption=\"Look how shareable the page is!\"\n%}\n
The example code above becomes:
\n\n\n\nFootnotes can easily be used. Just set a footnote marker1 in the text and somewhere else the footnote definition2.\nIt looks like this:
\n\nThis is some text with a footnote[^3]. We breeze past it into the next sentence.\n\n[^3]: And here is the definition.\n
Typically you’d put all the footnote definitions at the bottom of a heading-ed section, or perhaps the page, depending on\nhow much you have written.
\n\nThe elements below get into murky territory, since if you’re using them it’s often a sign you should be using an HTML file\ninstead of a markdown one.
\n\nCSS classes can be added to certain elements using the {: .classname }
syntax. For example, here’s how we made the\n‘Advanced’ heading above:
## Advanced\n\n{: .}\n
Any valid HTML can be entered as-is into a markdown file and it will come out the other side as rendered HTML. Any text\nwithin the HTML will not be interpreted as markdown, though, so ensure the contents of a wrapping HTML element are also\npre-written as HTML.
\n\nSomething like:
\n\nHere is some plain text. <em>This text is italic</em> but this text is not.\n
Renders to the screen as:
\n\nHere is some plain text. This text is italic but this text is not.
\n\n Use this table to review content and ensure the metadata matches the content:\n
\n\nTitle | \nDescription | \nMeta title | \nImg src | \nImg alt | \nMeta robots | \nType | \n \n \n \n
---|---|---|---|---|---|---|
\n \n You may be LOST\n | \nThere has been an issue finding your page. | \n\n | 1200x630/john-locke.jpg | \nWe're not the only ones on this island and we all know it | \nnoindex,follow | \nPage | \n
\n \n About Brad\n | \nWho, what, when, where, why, and how. | \n\n | about-brad_social.jpg | \n\n | \n | Page | \n
\n \n Accessibility Statement\n | \nOur commitment to all users visiting this site. | \n\n | \n | \n | \n | Page | \n
\n \n Categories\n | \nList of all the categories on the site, with their tagged items. | \n\n | \n | \n | noindex,follow | \nPage | \n
\n \n Contact us\n | \nWe would love to hear from you. | \n\n | \n | \n | \n | Page | \n
\n \n Documentation\n | \nGuides and tools for writing and designing around this site. | \n\n | \n | \n | \n | Page | \n
\n \n Events Archive\n | \nEvents that have previously occurred. | \n\n | \n | \n | \n | Page | \n
\n \n Events\n | \nAll the goings-on. | \n\n | \n | \n | \n | Page | \n
\n \n Frequently asked questions\n | \nWhat we've been asked, and what we say when asked. | \n\n | \n | \n | \n | Page | \n
\n \n Blog\n | \nSerialized writings collected in a single place for your enjoyment. | \n\n | \n | \n | \n | Page | \n
\n \n Search\n | \nTextually find content on the site via a form with a text box. | \n\n | \n | \n | \n | Page | \n
\n \n (untitled)\n | \n\n | \n | \n | \n | \n | Page | \n
\n \n Home\n | \nBrad Czerniak is a Drupal and JAMstack developer in Michigan. | \n\n | \n | \n | \n | Page | \n
\n \n You're offline\n | \nWhen your connection is interrupted and you go to a non-cached page, this is where you land. | \n\n | \n | \n | noindex,follow | \nPage | \n
\n \n Press\n | \nWho to contact if you're a journalist. | \n\n | \n | \n | \n | Page | \n
\n \n Privacy Policy\n | \nHow you can expect your data to be handled, and when and where cookies are used on the site. | \n\n | \n | \n | \n | Page | \n
\n \n Products\n | \nProducts for sale. | \n\n | \n | \n | \n | Page | \n
\n \n Site map\n | \nA list of all links on the site, grouped by type and in alphabetical order. | \n\n | \n | \n | \n | Page | \n
\n \n Tags\n | \nList of all the tags on the site, with their tagged items. | \n\n | \n | \n | noindex,follow | \nPage | \n
\n \n Terms and conditions\n | \nRules and regulations for the use of this website. | \n\n | \n | \n | \n | Page | \n
\n \n Thank you!\n | \nWe appreciate your form submission! | \n\n | \n | \n | noindex,follow | \nPage | \n
\n \n (untitled)\n | \n\n | \n | \n | \n | \n | Page | \n
\n \n (untitled)\n | \n\n | \n | \n | \n | \n | Page | \n
\n \n Blog\n | \nSerialized writings collected in a single place for your enjoyment. | \n\n | \n | \n | \n | Page | \n
\n \n Blog\n | \nSerialized writings collected in a single place for your enjoyment. | \n\n | \n | \n | \n | Page | \n
\n \n Accessibility\n | \nWriting guide for inclusivity | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Atoms\n | \nThe very smallest components in the design system. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Be concise\n | \nWrite enough to get your point across, but no more. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Browser support\n | \nBrowsers this site supports when testing and building. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Color\n | \nThe very smallest components in the design system. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Content principles\n | \nQuick overview of our guiding content principles. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Forms\n | \nThe very smallest components in the design system. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n GIF files\n | \nAll the GIF files in the assets directory. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Grammar and mechanics\n | \nFormatting and consistency in language on the site. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Icons\n | \nThe very smallest components in the design system. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Information architecture\n | \nMenus, tagging, and other structures. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n JPEG files\n | \nAll the JPEG files in the assets directory. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n JSON files\n | \nJavaScript Object Notation files available publicly on this site. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n JavaScript\n | \nScripts and behaviors available for use on the site. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Lang (translated)\n | \nValues for translated CSS strings. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Layouts\n | \nInstructions for making layouts. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Markdown\n | \nAll markdown syntax and its usage for this site. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Molecules\n | \nComponents that are made up of more than one little thing. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Moodboard\n | \nFonts, colors, logos and imagery, and other things that contribute to the feel. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Organisms\n | \nBiggest components, made up of all the smaller kinds. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n PNG files\n | \nAll the PNG files in the assets directory. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Performance budget\n | \nThe allowed number and size of assets delivered to users on the front end. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Personas\n | \nIntentional stereotypes used for empathetic framing. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n SVG files\n | \nAll the SVG files in the assets directory. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Search engine optimization\n | \nPage metadata for reviewing to ensure good SEO. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Sections (reusable)\n | \nReusable and demonstration content at organism size. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Strategic Plan\n | \nThe mission, vision, and goals of the website qua website. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n UX principles\n | \nPrioritzation of the laws of user experience for heuristic work. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n User testing\n | \nInstructions for testing the site with users. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Values (design tokens)\n | \nValues for non-color design tokens. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Voice and tone\n | \nThe mission, vision, and goals of the website qua website. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n Writing about people\n | \nUseful distinctions in order to be inclusive. | \n\n | \n | \n | noindex,follow | \ndocs | \n
\n \n 3 years of Solve it once\n | \nA few easy things you can do to support Brad, just this once. | \n\n | 1200x630/share_3-years-of-so1ve.png | \nA graphic representation of this post title and description | \n\n | posts | \n
\n \n 52for2009 #1 — Turk for 2 hours a day\n | \nThis was a fun idea for a new years resolution | \n\n | \n | \n | \n | posts | \n
\n \n A Hint at the Future\n | \nI don't want to be one of those sporadic bloggers that apologize whenever they go a while without posting | \n\n | \n | \n | \n | posts | \n
\n \n A No-brainer\n | \nBrad being wrong about OBL. | \n\n | \n | \n | \n | posts | \n
\n \n A Year of Transliteracy: Call to Action\n | \nPutting transliteracy behind me | \n\n | \n | \n | \n | posts | \n
\n \n An Alternative Interpretation\n | \nSilly Beatles thing. | \n\n | \n | \n | \n | posts | \n
\n \n An implication for geeks\n | \nI think Freeman Dyson was dead wrong | \n\n | \n | \n | \n | posts | \n
\n \n And the other half-completed projects…\n | \nStuff I was working on in August 2007 | \n\n | \n | \n | \n | posts | \n
\n \n Another Responsive Data Tables Approach\n | \nLittle Bobby Tables strikes again | \n\n | \n | \n | \n | posts | \n
\n \n Both Have Good Points\n | \nSummarizing a twitter debate about the digital divide | \n\n | \n | \n | \n | posts | \n
\n \n CSS is Syntactically Inconsistent\n | \nPseudo this, pseudo that | \n\n | \n | \n | \n | posts | \n
\n \n Coming soon\n | \nCommitment to blog more | \n\n | french-onion-dip.jpg | \nA sticker on the tub top of some French onion dip | \n\n | posts | \n
\n \n Context in the Future\n | \nDesiring siloes right before siloes became pervasive | \n\n | \n | \n | \n | posts | \n
\n \n Day Five\n | \nHe says I'm getting better. | \n\n | 1200x630/share_3day-five.png | \nAgent Checkles with me in the mirror. | \n\n | posts | \n
\n \n Development Favicon\n | \nA neat browser extension I made | \n\n | \n | \n | \n | posts | \n
\n \n Drupal and Git\n | \nA presentation that made me locally infamous | \n\n | \n | \n | \n | posts | \n
\n \n Drupal is the Answer\n | \nPresenter notes for a Drupal presentation | \n\n | \n | \n | \n | posts | \n
\n \n Encyclopedia of Censorship\n | \n[Redacted] | \n\n | \n | \n | \n | posts | \n
\n \n Energy\n | \nThe most important point to ponder. | \n\n | \n | \n | \n | posts | \n
\n \n Example post\n | \nA blog post with example content and front matter. | \n\n | \n | \n | \n | posts | \n
\n \n Facebook Librarian Beta Release\n | \nThis app no longer exists, btw. It was a cool old thing that did not steal your personal info. | \n\n | \n | \n | \n | posts | \n
\n \n Flextures\n | \nReally wanna twist a phone | \n\n | \n | \n | \n | posts | \n
\n \n For the Cultural Lexicon\n | \nI starchive my gmail all the time. Inbox zero, baby! | \n\n | \n | \n | \n | posts | \n
\n \n Further Refining Transliteracy\n | \nMore long-winded talk that nobody cares about now | \n\n | \n | \n | \n | posts | \n
\n \n General Update\n | \nA Brad post, going into 2008. | \n\n | \n | \n | \n | posts | \n
\n \n Gmail hacks\n | \nForwarding and send as instructions for Wayne State LIS students in 2008. | \n\n | \n | \n | \n | posts | \n
\n \n Google Chatback Badge Improvements\n | \nDeprecated chat widget | \n\n | \n | \n | \n | posts | \n
\n \n Help me with my resume\n | \nFirst draft of my online resume. It had wood grain. | \n\n | \n | \n | \n | posts | \n
\n \n His name is Miles, get it?\n | \nMemes! Get your memes here! | \n\n | \n | \n | \n | posts | \n
\n \n How to Live\n | \nSimple two-step process. | \n\n | \n | \n | \n | posts | \n
\n \n IL Communication\n | \nJust one literacy was not enough criticism for one Brad | \n\n | \n | \n | \n | posts | \n
\n \n Is it Opposite Day?\n | \nGimmick site I ran for a while | \n\n | \n | \n | \n | posts | \n
\n \n Is this a coincidence?\n | \nSometimes we don't hurt just the ones we love. | \n\n | \n | \n | \n | posts | \n
\n \n Keep Reading!\n | \nAndrew Keen's arguments become weaker over time. | \n\n | \n | \n | \n | posts | \n
\n \n Languages of a Blueberry Smoothie\n | \nStill trying to bring folks around to my pedantry | \n\n | \n | \n | \n | posts | \n
\n \n Librarian updates\n | \nProgress on the Facebook Librarian app. | \n\n | \n | \n | \n | posts | \n
\n \n LibraryThing Issues\n | \nEarly versions of a catalog app were nightmarish | \n\n | \n | \n | \n | posts | \n
\n \n Lose the MeeboMe Gadget\n | \nStrong opinion from the age of Flash. | \n\n | \n | \n | \n | posts | \n
\n \n Matters of Media\n | \nMaking Claude Shannon spin in his grave | \n\n | \n | \n | \n | posts | \n
\n \n More Theme-y Stuff\n | \nExample theme for a defunct tool for a defunct tool. | \n\n | \n | \n | \n | posts | \n
\n \n My First Chrome 48\n | \nEarly review of a free Chromebook | \n\n | \n | \n | \n | posts | \n
\n \n Observations\n | \nTook an unexpected swipe at Orlando Bloom | \n\n | \n | \n | \n | posts | \n
\n \n Oh Dear\n | \nRacism is racism. | \n\n | \n | \n | \n | posts | \n
\n \n Okay, so I almost have a site\n | \nDon't really want a blog. Gonna make it very Brad-like soon. | \n\n | \n | \n | \n | posts | \n
\n \n On Transliteracy\n | \nThe beginning of a series of correct-but-underappreciated screeds | \n\n | \n | \n | \n | posts | \n
\n \n Only Upgrade?\n | \nI think this counts as a tweet. | \n\n | \n | \n | \n | posts | \n
\n \n Patrons in their Natural Habitat\n | \nLibrary meta humor. | \n\n | \n | \n | \n | posts | \n
\n \n People are making pretty themes!\n | \nGone themes from defunct tools. | \n\n | \n | \n | \n | posts | \n
\n \n Personal Transparency\n | \nBradleaks: a document dump | \n\n | \n | \n | \n | posts | \n
\n \n Play the 'House' Home game!\n | \nThe best in 2007-Google-Doc-based entertainment. | \n\n | \n | \n | \n | posts | \n
\n \n Post To Blog Gadget\n | \nFor all the iGoogle users out there. | \n\n | \n | \n | \n | posts | \n
\n \n Practically Mobile\n | \nCheck out this early RWD post! | \n\n | \n | \n | \n | posts | \n
\n \n Quick pontoon rant\n | \nThe number of pontoons does not change the name. | \n\n | 1200x630/pontoon-boat.jpg | \nIllustration that a pontoon boat has one or more pontoons | \n\n | posts | \n
\n \n Recipe before I make it #1- MexItalian Burger\n | \nThis turned out great! Red Robin eat your heart out | \n\n | \n | \n | \n | posts | \n
\n \n Redefining Transliteracy\n | \nExposition of the correct transliteracy definition | \n\n | \n | \n | \n | posts | \n
\n \n Resist That Advice \n | \nRedesign early and often? | \n\n | \n | \n | \n | posts | \n
\n \n Sass considered harmful\n | \nCSS preprocessors had a lot of promises but not a lot of delivery. It is time to dump them. | \n\n | 1200x630/share_sass-considered-harmful.png | \nIt's CSS all the way down, and 'preprocessors' never did what you thought. | \n\n | posts | \n
\n \n Simple Productivity Hack\n | \nA Google Alerts trick from back in the day. | \n\n | \n | \n | \n | posts | \n
\n \n Six Pack\n | \nPeyton Manning telling it like it is. | \n\n | \n | \n | \n | posts | \n
\n \n Skeptical about this one\n | \nAn encyclopedia beyond belief | \n\n | \n | \n | \n | posts | \n
\n \n Some Predictions\n | \nYoung Brad being stupid about energy | \n\n | \n | \n | \n | posts | \n
\n \n Something to consider\n | \nPrejudging the visuals for Speed Racer. | \n\n | \n | \n | \n | posts | \n
\n \n Speaking the Same Language\n | \nFar more depth into transliteracy | \n\n | \n | \n | \n | posts | \n
\n \n Sports Night\n | \nQuotes from one of my favorite shows. | \n\n | \n | \n | \n | posts | \n
\n \n Stop Reading!\n | \nWhy read when you can skim and pretend? | \n\n | \n | \n | \n | posts | \n
\n \n Stuff about sleep\n | \nInstead of Westworld we got Little Caesars Arena | \n\n | \n | \n | \n | posts | \n
\n \n The Best Thing since a Better Mousetrap\n | \nFour days into the app, and the plans are coming together. | \n\n | \n | \n | \n | posts | \n
\n \n The Future\n | \nPostdictions about the first iPhone. | \n\n | \n | \n | \n | posts | \n
\n \n The History and Art of the Video Power Hour\n | \nNotes on an obscure hobby. | \n\n | \n | \n | \n | posts | \n
\n \n The Trouble with Charity\n | \nAn opinion I've since outgrown. | \n\n | \n | \n | \n | posts | \n
\n \n Things that interest me\n | \nTwo seemingly-small concepts that caught my eye. | \n\n | \n | \n | \n | posts | \n
\n \n Those Canadians!\n | \nPlease let me become a citizen, Canada. | \n\n | \n | \n | \n | posts | \n
\n \n Una Dia\n | \nReflections on the first day of the librarian facebook app. | \n\n | \n | \n | \n | posts | \n
\n \n Useless Halloween Predictions\n | \nMade one of these costume predictions a reality. | \n\n | \n | \n | \n | posts | \n
\n \n Valentine Commercialism\n | \nPink electronics are for people who like the color pink. | \n\n | \n | \n | \n | posts | \n
\n \n Week 2 — Encyclopedia by Letters\n | \nReading a bunch of articles and listing them | \n\n | \n | \n | \n | posts | \n
\n \n What Browsers do (that they shouldn't)\n | \nA slice of browser history. | \n\n | \n | \n | \n | posts | \n
\n \n Whiteboard Backlog\n | \nDrawings all over the walls of my apartment | \n\n | \n | \n | \n | posts | \n
\n \n Why Are We CSS-ing All Stupid?\n | \nUnfinished draft I really wanted to publish | \n\n | \n | \n | \n | posts | \n
\n \n Widget/Gadget rant #1\n | \nWidgets and Gadgets are a pervasive phenomenon. As such, it's strange that they're so under-developed. | \n\n | \n | \n | \n | posts | \n
\n \n Widget/Gadget rant #2\n | \nLet me start with the bottom line: You should make a widget for your site. | \n\n | \n | \n | \n | posts | \n
\n \n Your Fast Catalog\n | \nOddly-specific WebPAC tweaks | \n\n | \n | \n | \n | posts | \n
\n \n iGoogle Theme Maker!\n | \nA cool, dead project for a defunct Google homepage. | \n\n | \n | \n | \n | posts | \n
\n \n iOS 4 Graph Paper Wallpaper\n | \nFree, simple wallpaper | \n\n | \n | \n | \n | posts | \n
\n \n iPhone alarm clock improvements\n | \nPerhaps my best idea | \n\n | \n | \n | \n | posts | \n
\n \n meta rock\n | \nI miss old-school ze frank | \n\n | \n | \n | \n | posts | \n
\n \n A banana\n | \nAffordable, portable fruiting | \n\n | 1200x630/banana.jpg | \nStylish banana | \n\n | products | \n
\n \n B banana\n | \nLesser fruit | \n\n | 1200x630/banana-invert.jpg | \nStylish banana | \n\n | products | \n
Image | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n | s.gif | \n/assets/images/required/s.gif | \n
| \n
Image | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n | s.gif | \n/assets/images/required/s.gif | \n
| \n
Image | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n | banana-invert.jpg | \n/assets/images/1200x630/banana-invert.jpg | \n
| \n
\n | banana.jpg | \n/assets/images/1200x630/banana.jpg | \n
| \n
\n | brad-czerniak.jpg | \n/assets/images/1200x630/brad-czerniak.jpg | \n
| \n
\n | john-locke.jpg | \n/assets/images/1200x630/john-locke.jpg | \n
| \n
\n | pontoon-boat.jpg | \n/assets/images/1200x630/pontoon-boat.jpg | \n
| \n
\n | tuscan-sign.jpg | \n/assets/images/1200x630/tuscan-sign.jpg | \n
| \n
\n | 960x640baselinegrid.jpg | \n/assets/images/960x640baselinegrid.jpg | \n
| \n
\n | about-brad_social.jpg | \n/assets/images/about-brad_social.jpg | \n
| \n
\n | alarming.jpg | \n/assets/images/alarming.jpg | \n
| \n
\n | asymbol.jpg | \n/assets/images/asymbol.jpg | \n
| \n
\n | atheme.jpg | \n/assets/images/atheme.jpg | \n
| \n
\n | bpcz_gc_bg.jpg | \n/assets/images/bpcz_gc_bg.jpg | \n
| \n
\n | brad_business.jpg | \n/assets/images/brad_business.jpg | \n
| \n
\n | brad_bw.jpg | \n/assets/images/brad_bw.jpg | \n
| \n
\n | brad_kid-business.jpg | \n/assets/images/brad_kid-business.jpg | \n
| \n
\n | brad_senior-photo.jpg | \n/assets/images/brad_senior-photo.jpg | \n
| \n
\n | french-onion-dip.jpg | \n/assets/images/french-onion-dip.jpg | \n
| \n
\n | gmail_stickers.jpg | \n/assets/images/gmail_stickers.jpg | \n
| \n
\n | hit.jpg | \n/assets/images/hit.jpg | \n
| \n
\n | hero-home.jpg | \n/assets/images/in-css/hero-home.jpg | \n
| \n
\n | languages-of-a-conversation.jpg | \n/assets/images/languages-of-a-conversation.jpg | \n
| \n
\n | lovegurup1.jpg | \n/assets/images/lovegurup1.jpg | \n
| \n
\n | luda404.jpg | \n/assets/images/luda404.jpg | \n
| \n
\n | nyan_cat.jpg | \n/assets/images/nyan_cat.jpg | \n
| \n
\n | paranormal.jpg | \n/assets/images/paranormal.jpg | \n
| \n
\n | 0-hanging-cabinets.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/0-hanging-cabinets.jpg | \n
| \n
\n | 1-floors.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/1-floors.jpg | \n
| \n
\n | 2-prep-counters.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/2-prep-counters.jpg | \n
| \n
\n | 3-mostly-finished.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/3-mostly-finished.jpg | \n
| \n
\n | family.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/family.jpg | \n
| \n
\n | invitation-progress.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/invitation-progress.jpg | \n
| \n
\n | papercraft.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/papercraft.jpg | \n
| \n
\n | ranger-float.jpg | \n/assets/images/ranger-float.jpg | \n
| \n
\n | demo.jpg | \n/assets/images/required/demo.jpg | \n
| \n
\n | demo_bw.jpg | \n/assets/images/required/demo_bw.jpg | \n
| \n
\n | meta-image--default.jpg | \n/assets/images/required/meta-image--default.jpg | \n
| \n
\n | symbols.jpg | \n/assets/images/symbols.jpg | \n
| \n
\n | the_letter_that_johnnie_walker_read.jpg | \n/assets/images/the_letter_that_johnnie_walker_read.jpg | \n
| \n
\n | tj.jpg | \n/assets/images/tj.jpg | \n
| \n
\n | translit-medium-example.jpg | \n/assets/images/translit-medium-example.jpg | \n
| \n
\n | turk.jpg | \n/assets/images/turk.jpg | \n
| \n
\n | weirdcomm.jpg | \n/assets/images/weirdcomm.jpg | \n
| \n
Image | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n | banana-invert.jpg | \n/assets/images/1200x630/banana-invert.jpg | \n
| \n
\n | banana.jpg | \n/assets/images/1200x630/banana.jpg | \n
| \n
\n | brad-czerniak.jpg | \n/assets/images/1200x630/brad-czerniak.jpg | \n
| \n
\n | john-locke.jpg | \n/assets/images/1200x630/john-locke.jpg | \n
| \n
\n | pontoon-boat.jpg | \n/assets/images/1200x630/pontoon-boat.jpg | \n
| \n
\n | tuscan-sign.jpg | \n/assets/images/1200x630/tuscan-sign.jpg | \n
| \n
\n | 960x640baselinegrid.jpg | \n/assets/images/960x640baselinegrid.jpg | \n
| \n
\n | about-brad_social.jpg | \n/assets/images/about-brad_social.jpg | \n
| \n
\n | alarming.jpg | \n/assets/images/alarming.jpg | \n
| \n
\n | asymbol.jpg | \n/assets/images/asymbol.jpg | \n
| \n
\n | atheme.jpg | \n/assets/images/atheme.jpg | \n
| \n
\n | bpcz_gc_bg.jpg | \n/assets/images/bpcz_gc_bg.jpg | \n
| \n
\n | brad_business.jpg | \n/assets/images/brad_business.jpg | \n
| \n
\n | brad_bw.jpg | \n/assets/images/brad_bw.jpg | \n
| \n
\n | brad_kid-business.jpg | \n/assets/images/brad_kid-business.jpg | \n
| \n
\n | brad_senior-photo.jpg | \n/assets/images/brad_senior-photo.jpg | \n
| \n
\n | french-onion-dip.jpg | \n/assets/images/french-onion-dip.jpg | \n
| \n
\n | gmail_stickers.jpg | \n/assets/images/gmail_stickers.jpg | \n
| \n
\n | hit.jpg | \n/assets/images/hit.jpg | \n
| \n
\n | hero-home.jpg | \n/assets/images/in-css/hero-home.jpg | \n
| \n
\n | languages-of-a-conversation.jpg | \n/assets/images/languages-of-a-conversation.jpg | \n
| \n
\n | lovegurup1.jpg | \n/assets/images/lovegurup1.jpg | \n
| \n
\n | luda404.jpg | \n/assets/images/luda404.jpg | \n
| \n
\n | nyan_cat.jpg | \n/assets/images/nyan_cat.jpg | \n
| \n
\n | paranormal.jpg | \n/assets/images/paranormal.jpg | \n
| \n
\n | 0-hanging-cabinets.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/0-hanging-cabinets.jpg | \n
| \n
\n | 1-floors.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/1-floors.jpg | \n
| \n
\n | 2-prep-counters.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/2-prep-counters.jpg | \n
| \n
\n | 3-mostly-finished.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/3-mostly-finished.jpg | \n
| \n
\n | family.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/family.jpg | \n
| \n
\n | invitation-progress.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/invitation-progress.jpg | \n
| \n
\n | papercraft.jpg | \n/assets/images/posts/2023-05-24-so1ve-anniversary/papercraft.jpg | \n
| \n
\n | ranger-float.jpg | \n/assets/images/ranger-float.jpg | \n
| \n
\n | demo.jpg | \n/assets/images/required/demo.jpg | \n
| \n
\n | demo_bw.jpg | \n/assets/images/required/demo_bw.jpg | \n
| \n
\n | meta-image--default.jpg | \n/assets/images/required/meta-image--default.jpg | \n
| \n
\n | symbols.jpg | \n/assets/images/symbols.jpg | \n
| \n
\n | the_letter_that_johnnie_walker_read.jpg | \n/assets/images/the_letter_that_johnnie_walker_read.jpg | \n
| \n
\n | tj.jpg | \n/assets/images/tj.jpg | \n
| \n
\n | translit-medium-example.jpg | \n/assets/images/translit-medium-example.jpg | \n
| \n
\n | turk.jpg | \n/assets/images/turk.jpg | \n
| \n
\n | weirdcomm.jpg | \n/assets/images/weirdcomm.jpg | \n
| \n
\n The following JSON feeds can be used by any party abiding by the CORS policy:\n
\n\nFile name (linked) | \nDescription | \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
---|---|
browserslist.json | \nA JSON representation of .browserslistrc, in the same format as accepted in ./package.json. | \n
budget.json | \nThe site's front-end performance budget, broken down by asset type. Can be used in Lighthouse CLI ( https://web.dev/use-lighthouse-for-performance-budgets/#run-lighthouse ) | \n
data-feeds.json | \nA meta-listing of all publicly-available JSON feeds on the site | \n
design-tokens.json | \nA single source of truth for design decisions, to be used in the style guide and in the CSS. Potentially compatible with amzn/style-dictionary ( https://github.com/amzn/style-dictionary ) | \n
docs.json | \nListing of all documentation content on the site | \n
events.json | \nListing of all event content on the site | \n
forms.json | \nListing of all forms on the site | \n
jsonfeed.json | \nAll of the blog posts on the site, in https://jsonfeed.org/ format | \n
jsonfeed.json | \nAll of the events on the site, in https://jsonfeed.org/ format | \n
pages.json | \nListing of all page content on the site | \n
people.json | \nListing of all people on the site | \n
posts.json | \nListing of all posts content on the site | \n
products--snipcart-crawler.json | \nA feed of all site products for snipcart, in a format you can use to fetch at https://app.snipcart.com/dashboard/products/fetch | \n
products.json | \nListing of all products on the site | \n
search-index.json | \nAll the published textual content of the site split out by page, for searching on the front end | \n
sections.json | \nListing of all reusable sections on the site | \n
redirects.json | \n\n |
Image | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n | apple-touch-icon.png | \n/apple-touch-icon.png | \n
| \n
\n | share_3-years-of-so1ve.png | \n/assets/images/1200x630/share_3-years-of-so1ve.png | \n
| \n
\n | share_3day-five.png | \n/assets/images/1200x630/share_3day-five.png | \n
| \n
\n | share_sass-considered-harmful.png | \n/assets/images/1200x630/share_sass-considered-harmful.png | \n
| \n
\n | all_i_see_are_equations.png | \n/assets/images/all_i_see_are_equations.png | \n
| \n
\n | default_alarm.png | \n/assets/images/default_alarm.png | \n
| \n
\n | frequentflyermiles.png | \n/assets/images/frequentflyermiles.png | \n
| \n
\n | hawidu.png | \n/assets/images/hawidu.png | \n
| \n
\n | ios-grid.png | \n/assets/images/ios-grid.png | \n
| \n
\n | lanojs.png | \n/assets/images/lanojs.png | \n
| \n
\n | logo-mark.png | \n/assets/images/logo-mark.png | \n
| \n
\n | map-class-regex.png | \n/assets/images/map-class-regex.png | \n
| \n
\n | mixin-docs.png | \n/assets/images/mixin-docs.png | \n
| \n
\n | nauticalmiles.png | \n/assets/images/nauticalmiles.png | \n
| \n
\n | apple-touch-icon.png | \n/assets/images/required/apple-touch-icon.png | \n
| \n
\n | logo-mark_512.png | \n/assets/images/required/logo-mark_512.png | \n
| \n
\n | tile-wide.png | \n/assets/images/required/tile-wide.png | \n
| \n
\n | tile.png | \n/assets/images/required/tile.png | \n
| \n
\n | tables_content_in_css.png | \n/assets/images/tables_content_in_css.png | \n
| \n
Image | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n | apple-touch-icon.png | \n/apple-touch-icon.png | \n
| \n
\n | share_3-years-of-so1ve.png | \n/assets/images/1200x630/share_3-years-of-so1ve.png | \n
| \n
\n | share_3day-five.png | \n/assets/images/1200x630/share_3day-five.png | \n
| \n
\n | share_sass-considered-harmful.png | \n/assets/images/1200x630/share_sass-considered-harmful.png | \n
| \n
\n | all_i_see_are_equations.png | \n/assets/images/all_i_see_are_equations.png | \n
| \n
\n | default_alarm.png | \n/assets/images/default_alarm.png | \n
| \n
\n | frequentflyermiles.png | \n/assets/images/frequentflyermiles.png | \n
| \n
\n | hawidu.png | \n/assets/images/hawidu.png | \n
| \n
\n | ios-grid.png | \n/assets/images/ios-grid.png | \n
| \n
\n | lanojs.png | \n/assets/images/lanojs.png | \n
| \n
\n | logo-mark.png | \n/assets/images/logo-mark.png | \n
| \n
\n | map-class-regex.png | \n/assets/images/map-class-regex.png | \n
| \n
\n | mixin-docs.png | \n/assets/images/mixin-docs.png | \n
| \n
\n | nauticalmiles.png | \n/assets/images/nauticalmiles.png | \n
| \n
\n | apple-touch-icon.png | \n/assets/images/required/apple-touch-icon.png | \n
| \n
\n | logo-mark_512.png | \n/assets/images/required/logo-mark_512.png | \n
| \n
\n | tile-wide.png | \n/assets/images/required/tile-wide.png | \n
| \n
\n | tile.png | \n/assets/images/required/tile.png | \n
| \n
\n | tables_content_in_css.png | \n/assets/images/tables_content_in_css.png | \n
| \n
Image | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n | logo-inverted.svg | \n/assets/images/required/logo-inverted.svg | \n
| \n
\n | logo-mark.svg | \n/assets/images/required/logo-mark.svg | \n
| \n
\n | logo.svg | \n/assets/images/required/logo.svg | \n
| \n
\n | unidentified_cartoon.svg | \n/assets/images/unidentified_cartoon.svg | \n
| \n
Image | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n | logo-inverted.svg | \n/assets/images/required/logo-inverted.svg | \n
| \n
\n | logo-mark.svg | \n/assets/images/required/logo-mark.svg | \n
| \n
\n | logo.svg | \n/assets/images/required/logo.svg | \n
| \n
\n | unidentified_cartoon.svg | \n/assets/images/unidentified_cartoon.svg | \n
| \n
These are the smallest constituent components of the system.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nHeadings provide your document with an hierarchical outline.
\n\n<h1>
, next use <h2>
and so on<h1>
per page. Using more than one will not result in an error, but using only one is seen\nas a best practice. It makes logical sense — <h1>
is the most important heading, and tells you what the purpose of the\noverall page is. You wouldn’t have a book with more than one title, or a movie with more than one name! Having a single\ntop-level title is also arguably better for screenreader users, and SEO@see MDN article on h1-h6
\n\n\n\nA common navigation technique for users of screen reading software is jumping from heading to heading to quickly determine\nthe content of the page. Because of this, it is important to not skip one or more heading levels. Doing so may create confusion,\nas the person navigating this way may be left wondering where the missing heading is.
\n\nIcons visually represent a small concept. They’re used to provide both visual guidance and visual interest to an element.
\n\n\n\nSince icons are primarily visual, it’s important that icons not be the only way of conveying meaning. Textual labels are\nimportant to avoid inaccessible and unusable “mystery meat navigation”.
\n\nImages represent ideas visually. They should be used to make an impact where communicating an idea is more effective with\nvisual aids.
\n\nImages should be inserted using the liquid template include whenever possible, since the liquid template uses conditional\nchecks to insert next-generation optimized images if available.
\n\n\n\nIt is required for all images to have an alt attribute. If an image has no communicative value (ie. it is purely decorative),\nits alt attribute should be an empty string. Otherwise, the alt attribute’s text should be a description of the image’s role\nin the corpus of the page.
\n\nSpacers are used to put some breathing room vertically between elements.
\n\nSpacers are only available in 1, 2, 4, 8, 16, and 32 sizes. Other size values will result in an empty spacer.
\n\n\n\nSpacers are empty <div>
elements with no semantic value. Spacers should not be used for any semantic purpose.
These are the smallest constituent components of the system.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"The very smallest components in the design system.","robots":"noindex,follow"}, "title": "Atoms", "slug": "atoms", "ext": ".html", "tags": [] }, { "content": "The following are translated strings used in the front-end code, grouped by language code.
\n\n\n\nName | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
content--error | \n'Fehler: ' | \nString that can be translated. | \ni18n/l10n | \n
The following are translated strings used in the front-end code, grouped by language code.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Values for translated CSS strings.","robots":"noindex,follow"}, "title": "Lang (translated)", "slug": "lang", "ext": ".html", "tags": [] }, { "content": "Color plays a big part in bringing a brand together. Here is the palette of the base scheme, right next to each\n other. If you can't feel a brand impression or at least get a hint at a mood, it might be worthwhile to revisit the\n scheme.
\n\nOften the brand palette is used more subtly, via the light versions of the brand shades. These washed-out or pastel\n tones should also work together to give you a hint of the brand:
\n\nHere are all the brand colors, broken out in logical groupings.
\n\nPalette | \nValue | \nName | \nDescription | \nCategory | \n
---|---|---|---|---|
\n \n \n | \n #222 | \nblack | \nBlack or near-black, typically used for body text against a white background. | \nMonochrome | \n
\n \n \n | \n #555 | \ngrey-dark | \nA dark grey used for less text contrast in places, and some light-on-dark sections | \nMonochrome | \n
\n \n \n | \n #aaa | \ngrey | \nA medium grey has lots of utility throughout; borders, text, everything | \nMonochrome | \n
\n \n \n | \n #f7f7f7 | \ngrey-light | \nEspecially used for alternating sections with white background, but also versatile | \nMonochrome | \n
\n \n \n | \n #fff | \nwhite | \nThe one, the only, white. | \nMonochrome | \n
\n \n \n | \n #0081a7 | \nmain | \nA medium shade of an on-brand blue, ideally. Used for links by default | \nTheme | \n
\n \n \n | \n #002733 | \nmain-dark | \nA dark shade of the main hue, used for thematic backgrounds | \nTheme | \n
\n \n \n | \n #ccf4ff | \nmain-light | \nA very light shade of the main hue, used for backgrounds primarily. | \nTheme | \n
\n \n \n | \n #f07167 | \nsecond | \nMedium shade of what is usually a hot color like red, yellow, or orange | \nTheme | \n
\n \n \n | \n #331716 | \nsecond-dark | \nA darker shade of the secondary hue | \nTheme | \n
\n \n \n | \n #ffcfcc | \nsecond-light | \nA light shade of the secondary hue | \nTheme | \n
\n \n \n | \n #00afb9 | \nthird | \nThe third brand/theme color in a medium shade | \nTheme | \n
\n \n \n | \n #003033 | \nthird-dark | \nA dark shade of the third hue | \nTheme | \n
\n \n \n | \n #ccfcff | \nthird-light | \nA light shade of the third hue | \nTheme | \n
\n \n \n | \n #6100a7 | \naccent | \nA special color, often a medium shade. If the brand has a purple or teal, it is great here | \nTheme | \n
\n \n \n | \n #004085 | \nstatus | \nText color for status alerts | \nUI | \n
\n \n \n | \n #cce5ff | \nstatus-background | \nBackground color for status alerts | \nUI | \n
\n \n \n | \n #856404 | \nwarning | \nText color for warning alerts | \nUI | \n
\n \n \n | \n #fff3cd | \nwarning-background | \nBackground color for warning alerts | \nUI | \n
\n \n \n | \n #721c24 | \nerror | \nText color for error alerts | \nUI | \n
\n \n \n | \n #f8d7da | \nerror-background | \nBackground color for error alerts | \nUI | \n
Color plays a big part in bringing a brand together. Here is the palette of the base scheme, right next to each\n other. If you can't feel a brand impression or at least get a hint at a mood, it might be worthwhile to revisit the\n scheme.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"The very smallest components in the design system.","robots":"noindex,follow"}, "title": "Color", "slug": "color", "ext": ".html", "tags": [] }, { "content": "The following is a listing of design tokens for the design system of the site. Colors are displayed on their own page.\n As the design system matures, some values may also be broken out and given examples.
\n\n\n\n \nName | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
border--default | \n1px solid | \nThe thickness, style, and perhaps color of the default border | \nMood | \n
Name | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
border-radius--default | \n.25em | \nThe roundedness of corners on items that have rounded corners | \nMood | \n
Name | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
box-shadow--default | \n0 .1em .75em rgba(99,99,99,.625) | \nThe default shadow cast by an element when an element is supposed to cast a shadow | \nMood | \n
Name | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
content--error | \n'Error: ' | \nString that can be translated. | \ni18n/l10n | \n
content--footnotes | \n'Footnotes' | \nString denoting footnotes that can be translated | \ni18n/l10n | \n
Name | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
font-family--input | \n'Public Sans', Arial, Helvetica, sans-serif | \nFont used for form fields, primarily | \nTypography | \n
font-family--monospace | \n'courier new', courier, monospace | \nCode font. Usually defaults to a web-safe font | \nTypography | \n
font-family--primary | \n'Public Sans', Arial, Helvetica, sans-serif | \nMain body copy and erstwhile main font | \nTypography | \n
font-family--secondary | \n'Emberly', Georgia, Times New Roman, serif | \nFont for headings and other visual emphasis | \nTypography | \n
Name | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
layout--content-area | \n1200px | \nThe maximum width that content inside sections can get | \nMaximum | \n
Name | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
line-height--default | \n1.425 | \nThe leading, or vertical space between lines, of body text, expressed as a unitless number | \nTypography | \n
line-height--heading | \n1 | \nThe leading, or vertical space between lines, of headings, expressed as a unitless number | \nTypography | \n
Name | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
spacing--single | \n0.625rem | \nThe base unit for styling of space: with, between, around things. Big values make the design airy, small tight | \nMood | \n
Name | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
text-shadow--default | \n0 0 2px rgba(0,0,0,.325) | \nThe default shadow cast by text when given a shadow | \nMood | \n
Name | \nValue | \nDescription | \nCategory | \n
---|---|---|---|
transition--default | \nall .3s ease-in | \nThe properties, timing, and easing of most site elements when they change between property values | \nMood | \n
The following is a listing of design tokens for the design system of the site. Colors are displayed on their own page.\n As the design system matures, some values may also be broken out and given examples.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Values for non-color design tokens.","robots":"noindex,follow"}, "title": "Values (design tokens)", "slug": "values", "ext": ".html", "tags": [] }, { "content": "Forms, whether standalone or called as the form collection type, can use these well-constructed components.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nInputs can have description text.
\n \nUse the input component for text, tel, email, hidden, or other varieties of the base-level <input>
tag.
Form inputs require a matching label that is associated with it either implicitly or by using the for
attribute.
The yes/no component lets you get a clear answer using radio buttons to toggle. This base level control could then be\nenhanced with JavaScript and styling to be a single switch-style toggle, though that is not strictly necessary.
\n\n\n\nRadios are recognized by most assistive technologies. The more you change the markup the greater risk you have of breaking\nthe experience for somebody.
\n\nQuestions, dietary info, well-wishes, your single greatest piece of advice besides wash-your-hands and wear-sunscreen.
\n \nUse the textarea component to receive long textual answers.
\n\n\n\nTextareas can be finicky.
\n\nForms, whether standalone or called as the form collection type, can use these well-constructed components.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"The very smallest components in the design system.","robots":"noindex,follow"}, "title": "Forms", "slug": "forms", "ext": ".html", "tags": [] }, { "content": "The framework comes with octicons, simple-icons, and a directory for 'other'.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nIcon | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n \n | \nalert.svg | \n_includes/icons/octicons/alert.svg | \n \n \n | \n
\n \n | \narchive.svg | \n_includes/icons/octicons/archive.svg | \n \n \n | \n
\n \n | \narrow-both.svg | \n_includes/icons/octicons/arrow-both.svg | \n \n \n | \n
\n \n | \narrow-down.svg | \n_includes/icons/octicons/arrow-down.svg | \n \n \n | \n
\n \n | \narrow-left.svg | \n_includes/icons/octicons/arrow-left.svg | \n \n \n | \n
\n \n | \narrow-right.svg | \n_includes/icons/octicons/arrow-right.svg | \n \n \n | \n
\n \n | \narrow-small-down.svg | \n_includes/icons/octicons/arrow-small-down.svg | \n \n \n | \n
\n \n | \narrow-small-left.svg | \n_includes/icons/octicons/arrow-small-left.svg | \n \n \n | \n
\n \n | \narrow-small-right.svg | \n_includes/icons/octicons/arrow-small-right.svg | \n \n \n | \n
\n \n | \narrow-small-up.svg | \n_includes/icons/octicons/arrow-small-up.svg | \n \n \n | \n
\n \n | \narrow-up.svg | \n_includes/icons/octicons/arrow-up.svg | \n \n \n | \n
\n \n | \nbeaker.svg | \n_includes/icons/octicons/beaker.svg | \n \n \n | \n
\n \n | \nbell.svg | \n_includes/icons/octicons/bell.svg | \n \n \n | \n
\n \n | \nbold.svg | \n_includes/icons/octicons/bold.svg | \n \n \n | \n
\n \n | \nbook.svg | \n_includes/icons/octicons/book.svg | \n \n \n | \n
\n \n | \nbookmark.svg | \n_includes/icons/octicons/bookmark.svg | \n \n \n | \n
\n \n | \nbriefcase.svg | \n_includes/icons/octicons/briefcase.svg | \n \n \n | \n
\n \n | \nbroadcast.svg | \n_includes/icons/octicons/broadcast.svg | \n \n \n | \n
\n \n | \nbrowser.svg | \n_includes/icons/octicons/browser.svg | \n \n \n | \n
\n \n | \nbug.svg | \n_includes/icons/octicons/bug.svg | \n \n \n | \n
\n \n | \ncalendar.svg | \n_includes/icons/octicons/calendar.svg | \n \n \n | \n
\n \n | \ncheck.svg | \n_includes/icons/octicons/check.svg | \n \n \n | \n
\n \n | \nchecklist.svg | \n_includes/icons/octicons/checklist.svg | \n \n \n | \n
\n \n | \nchevron-down.svg | \n_includes/icons/octicons/chevron-down.svg | \n \n \n | \n
\n \n | \nchevron-left.svg | \n_includes/icons/octicons/chevron-left.svg | \n \n \n | \n
\n \n | \nchevron-right.svg | \n_includes/icons/octicons/chevron-right.svg | \n \n \n | \n
\n \n | \nchevron-up.svg | \n_includes/icons/octicons/chevron-up.svg | \n \n \n | \n
\n \n | \ncircle-slash.svg | \n_includes/icons/octicons/circle-slash.svg | \n \n \n | \n
\n \n | \ncircuit-board.svg | \n_includes/icons/octicons/circuit-board.svg | \n \n \n | \n
\n \n | \nclippy.svg | \n_includes/icons/octicons/clippy.svg | \n \n \n | \n
\n \n | \nclock.svg | \n_includes/icons/octicons/clock.svg | \n \n \n | \n
\n \n | \ncloud-download.svg | \n_includes/icons/octicons/cloud-download.svg | \n \n \n | \n
\n \n | \ncloud-upload.svg | \n_includes/icons/octicons/cloud-upload.svg | \n \n \n | \n
\n \n | \ncode.svg | \n_includes/icons/octicons/code.svg | \n \n \n | \n
\n \n | \ncomment-discussion.svg | \n_includes/icons/octicons/comment-discussion.svg | \n \n \n | \n
\n \n | \ncomment.svg | \n_includes/icons/octicons/comment.svg | \n \n \n | \n
\n \n | \ncredit-card.svg | \n_includes/icons/octicons/credit-card.svg | \n \n \n | \n
\n \n | \ndash.svg | \n_includes/icons/octicons/dash.svg | \n \n \n | \n
\n \n | \ndashboard.svg | \n_includes/icons/octicons/dashboard.svg | \n \n \n | \n
\n \n | \ndatabase.svg | \n_includes/icons/octicons/database.svg | \n \n \n | \n
\n \n | \ndependent.svg | \n_includes/icons/octicons/dependent.svg | \n \n \n | \n
\n \n | \ndesktop-download.svg | \n_includes/icons/octicons/desktop-download.svg | \n \n \n | \n
\n \n | \ndevice-camera-video.svg | \n_includes/icons/octicons/device-camera-video.svg | \n \n \n | \n
\n \n | \ndevice-camera.svg | \n_includes/icons/octicons/device-camera.svg | \n \n \n | \n
\n \n | \ndevice-desktop.svg | \n_includes/icons/octicons/device-desktop.svg | \n \n \n | \n
\n \n | \ndevice-mobile.svg | \n_includes/icons/octicons/device-mobile.svg | \n \n \n | \n
\n \n | \ndiff-added.svg | \n_includes/icons/octicons/diff-added.svg | \n \n \n | \n
\n \n | \ndiff-ignored.svg | \n_includes/icons/octicons/diff-ignored.svg | \n \n \n | \n
\n \n | \ndiff-modified.svg | \n_includes/icons/octicons/diff-modified.svg | \n \n \n | \n
\n \n | \ndiff-removed.svg | \n_includes/icons/octicons/diff-removed.svg | \n \n \n | \n
\n \n | \ndiff-renamed.svg | \n_includes/icons/octicons/diff-renamed.svg | \n \n \n | \n
\n \n | \ndiff.svg | \n_includes/icons/octicons/diff.svg | \n \n \n | \n
\n \n | \nellipsis.svg | \n_includes/icons/octicons/ellipsis.svg | \n \n \n | \n
\n \n | \neye-closed.svg | \n_includes/icons/octicons/eye-closed.svg | \n \n \n | \n
\n \n | \neye.svg | \n_includes/icons/octicons/eye.svg | \n \n \n | \n
\n \n | \nfile-binary.svg | \n_includes/icons/octicons/file-binary.svg | \n \n \n | \n
\n \n | \nfile-code.svg | \n_includes/icons/octicons/file-code.svg | \n \n \n | \n
\n \n | \nfile-directory.svg | \n_includes/icons/octicons/file-directory.svg | \n \n \n | \n
\n \n | \nfile-media.svg | \n_includes/icons/octicons/file-media.svg | \n \n \n | \n
\n \n | \nfile-pdf.svg | \n_includes/icons/octicons/file-pdf.svg | \n \n \n | \n
\n \n | \nfile-submodule.svg | \n_includes/icons/octicons/file-submodule.svg | \n \n \n | \n
\n \n | \nfile-symlink-directory.svg | \n_includes/icons/octicons/file-symlink-directory.svg | \n \n \n | \n
\n \n | \nfile-symlink-file.svg | \n_includes/icons/octicons/file-symlink-file.svg | \n \n \n | \n
\n \n | \nfile-zip.svg | \n_includes/icons/octicons/file-zip.svg | \n \n \n | \n
\n \n | \nfile.svg | \n_includes/icons/octicons/file.svg | \n \n \n | \n
\n \n | \nflame.svg | \n_includes/icons/octicons/flame.svg | \n \n \n | \n
\n \n | \nfold-down.svg | \n_includes/icons/octicons/fold-down.svg | \n \n \n | \n
\n \n | \nfold-up.svg | \n_includes/icons/octicons/fold-up.svg | \n \n \n | \n
\n \n | \nfold.svg | \n_includes/icons/octicons/fold.svg | \n \n \n | \n
\n \n | \ngear.svg | \n_includes/icons/octicons/gear.svg | \n \n \n | \n
\n \n | \ngift.svg | \n_includes/icons/octicons/gift.svg | \n \n \n | \n
\n \n | \ngist-secret.svg | \n_includes/icons/octicons/gist-secret.svg | \n \n \n | \n
\n \n | \ngist.svg | \n_includes/icons/octicons/gist.svg | \n \n \n | \n
\n \n | \ngit-branch.svg | \n_includes/icons/octicons/git-branch.svg | \n \n \n | \n
\n \n | \ngit-commit.svg | \n_includes/icons/octicons/git-commit.svg | \n \n \n | \n
\n \n | \ngit-compare.svg | \n_includes/icons/octicons/git-compare.svg | \n \n \n | \n
\n \n | \ngit-merge.svg | \n_includes/icons/octicons/git-merge.svg | \n \n \n | \n
\n \n | \ngit-pull-request.svg | \n_includes/icons/octicons/git-pull-request.svg | \n \n \n | \n
\n \n | \ngithub-action.svg | \n_includes/icons/octicons/github-action.svg | \n \n \n | \n
\n \n | \nglobe.svg | \n_includes/icons/octicons/globe.svg | \n \n \n | \n
\n \n | \ngrabber.svg | \n_includes/icons/octicons/grabber.svg | \n \n \n | \n
\n \n | \ngraph.svg | \n_includes/icons/octicons/graph.svg | \n \n \n | \n
\n \n | \nheart-outline.svg | \n_includes/icons/octicons/heart-outline.svg | \n \n \n | \n
\n \n | \nheart.svg | \n_includes/icons/octicons/heart.svg | \n \n \n | \n
\n \n | \nhistory.svg | \n_includes/icons/octicons/history.svg | \n \n \n | \n
\n \n | \nhome.svg | \n_includes/icons/octicons/home.svg | \n \n \n | \n
\n \n | \nhorizontal-rule.svg | \n_includes/icons/octicons/horizontal-rule.svg | \n \n \n | \n
\n \n | \nhubot.svg | \n_includes/icons/octicons/hubot.svg | \n \n \n | \n
\n \n | \ninbox.svg | \n_includes/icons/octicons/inbox.svg | \n \n \n | \n
\n \n | \ninfinity.svg | \n_includes/icons/octicons/infinity.svg | \n \n \n | \n
\n \n | \ninfo.svg | \n_includes/icons/octicons/info.svg | \n \n \n | \n
\n \n | \ninternal-repo.svg | \n_includes/icons/octicons/internal-repo.svg | \n \n \n | \n
\n \n | \nissue-closed.svg | \n_includes/icons/octicons/issue-closed.svg | \n \n \n | \n
\n \n | \nissue-opened.svg | \n_includes/icons/octicons/issue-opened.svg | \n \n \n | \n
\n \n | \nissue-reopened.svg | \n_includes/icons/octicons/issue-reopened.svg | \n \n \n | \n
\n \n | \nitalic.svg | \n_includes/icons/octicons/italic.svg | \n \n \n | \n
\n \n | \njersey.svg | \n_includes/icons/octicons/jersey.svg | \n \n \n | \n
\n \n | \nkebab-horizontal.svg | \n_includes/icons/octicons/kebab-horizontal.svg | \n \n \n | \n
\n \n | \nkebab-vertical.svg | \n_includes/icons/octicons/kebab-vertical.svg | \n \n \n | \n
\n \n | \nkey.svg | \n_includes/icons/octicons/key.svg | \n \n \n | \n
\n \n | \nkeyboard.svg | \n_includes/icons/octicons/keyboard.svg | \n \n \n | \n
\n \n | \nlaw.svg | \n_includes/icons/octicons/law.svg | \n \n \n | \n
\n \n | \nlight-bulb.svg | \n_includes/icons/octicons/light-bulb.svg | \n \n \n | \n
\n \n | \nline-arrow-down.svg | \n_includes/icons/octicons/line-arrow-down.svg | \n \n \n | \n
\n \n | \nline-arrow-left.svg | \n_includes/icons/octicons/line-arrow-left.svg | \n \n \n | \n
\n \n | \nline-arrow-right.svg | \n_includes/icons/octicons/line-arrow-right.svg | \n \n \n | \n
\n \n | \nline-arrow-up.svg | \n_includes/icons/octicons/line-arrow-up.svg | \n \n \n | \n
\n \n | \nlink-external.svg | \n_includes/icons/octicons/link-external.svg | \n \n \n | \n
\n \n | \nlink.svg | \n_includes/icons/octicons/link.svg | \n \n \n | \n
\n \n | \nlist-ordered.svg | \n_includes/icons/octicons/list-ordered.svg | \n \n \n | \n
\n \n | \nlist-unordered.svg | \n_includes/icons/octicons/list-unordered.svg | \n \n \n | \n
\n \n | \nlocation.svg | \n_includes/icons/octicons/location.svg | \n \n \n | \n
\n \n | \nlock.svg | \n_includes/icons/octicons/lock.svg | \n \n \n | \n
\n \n | \nlogo-gist.svg | \n_includes/icons/octicons/logo-gist.svg | \n \n \n | \n
\n \n | \nlogo-github.svg | \n_includes/icons/octicons/logo-github.svg | \n \n \n | \n
\n \n | \nmail-read.svg | \n_includes/icons/octicons/mail-read.svg | \n \n \n | \n
\n \n | \nmail.svg | \n_includes/icons/octicons/mail.svg | \n \n \n | \n
\n \n | \nmark-github.svg | \n_includes/icons/octicons/mark-github.svg | \n \n \n | \n
\n \n | \nmarkdown.svg | \n_includes/icons/octicons/markdown.svg | \n \n \n | \n
\n \n | \nmegaphone.svg | \n_includes/icons/octicons/megaphone.svg | \n \n \n | \n
\n \n | \nmention.svg | \n_includes/icons/octicons/mention.svg | \n \n \n | \n
\n \n | \nmilestone.svg | \n_includes/icons/octicons/milestone.svg | \n \n \n | \n
\n \n | \nmirror.svg | \n_includes/icons/octicons/mirror.svg | \n \n \n | \n
\n \n | \nmortar-board.svg | \n_includes/icons/octicons/mortar-board.svg | \n \n \n | \n
\n \n | \nmute.svg | \n_includes/icons/octicons/mute.svg | \n \n \n | \n
\n \n | \nno-newline.svg | \n_includes/icons/octicons/no-newline.svg | \n \n \n | \n
\n \n | \nnote.svg | \n_includes/icons/octicons/note.svg | \n \n \n | \n
\n \n | \noctoface.svg | \n_includes/icons/octicons/octoface.svg | \n \n \n | \n
\n \n | \norganization.svg | \n_includes/icons/octicons/organization.svg | \n \n \n | \n
\n \n | \npackage.svg | \n_includes/icons/octicons/package.svg | \n \n \n | \n
\n \n | \npaintcan.svg | \n_includes/icons/octicons/paintcan.svg | \n \n \n | \n
\n \n | \npencil.svg | \n_includes/icons/octicons/pencil.svg | \n \n \n | \n
\n \n | \nperson.svg | \n_includes/icons/octicons/person.svg | \n \n \n | \n
\n \n | \npin.svg | \n_includes/icons/octicons/pin.svg | \n \n \n | \n
\n \n | \nplay.svg | \n_includes/icons/octicons/play.svg | \n \n \n | \n
\n \n | \nplug.svg | \n_includes/icons/octicons/plug.svg | \n \n \n | \n
\n \n | \nplus-small.svg | \n_includes/icons/octicons/plus-small.svg | \n \n \n | \n
\n \n | \nplus.svg | \n_includes/icons/octicons/plus.svg | \n \n \n | \n
\n \n | \nprimitive-dot-stroke.svg | \n_includes/icons/octicons/primitive-dot-stroke.svg | \n \n \n | \n
\n \n | \nprimitive-dot.svg | \n_includes/icons/octicons/primitive-dot.svg | \n \n \n | \n
\n \n | \nprimitive-square.svg | \n_includes/icons/octicons/primitive-square.svg | \n \n \n | \n
\n \n | \nproject.svg | \n_includes/icons/octicons/project.svg | \n \n \n | \n
\n \n | \npulse.svg | \n_includes/icons/octicons/pulse.svg | \n \n \n | \n
\n \n | \nquestion.svg | \n_includes/icons/octicons/question.svg | \n \n \n | \n
\n \n | \nquote.svg | \n_includes/icons/octicons/quote.svg | \n \n \n | \n
\n \n | \nradio-tower.svg | \n_includes/icons/octicons/radio-tower.svg | \n \n \n | \n
\n \n | \nreply.svg | \n_includes/icons/octicons/reply.svg | \n \n \n | \n
\n \n | \nrepo-clone.svg | \n_includes/icons/octicons/repo-clone.svg | \n \n \n | \n
\n \n | \nrepo-force-push.svg | \n_includes/icons/octicons/repo-force-push.svg | \n \n \n | \n
\n \n | \nrepo-forked.svg | \n_includes/icons/octicons/repo-forked.svg | \n \n \n | \n
\n \n | \nrepo-pull.svg | \n_includes/icons/octicons/repo-pull.svg | \n \n \n | \n
\n \n | \nrepo-push.svg | \n_includes/icons/octicons/repo-push.svg | \n \n \n | \n
\n \n | \nrepo-template-private.svg | \n_includes/icons/octicons/repo-template-private.svg | \n \n \n | \n
\n \n | \nrepo-template.svg | \n_includes/icons/octicons/repo-template.svg | \n \n \n | \n
\n \n | \nrepo.svg | \n_includes/icons/octicons/repo.svg | \n \n \n | \n
\n \n | \nreport.svg | \n_includes/icons/octicons/report.svg | \n \n \n | \n
\n \n | \nrequest-changes.svg | \n_includes/icons/octicons/request-changes.svg | \n \n \n | \n
\n \n | \nrocket.svg | \n_includes/icons/octicons/rocket.svg | \n \n \n | \n
\n \n | \nrss.svg | \n_includes/icons/octicons/rss.svg | \n \n \n | \n
\n \n | \nruby.svg | \n_includes/icons/octicons/ruby.svg | \n \n \n | \n
\n \n | \nsaved.svg | \n_includes/icons/octicons/saved.svg | \n \n \n | \n
\n \n | \nscreen-full.svg | \n_includes/icons/octicons/screen-full.svg | \n \n \n | \n
\n \n | \nscreen-normal.svg | \n_includes/icons/octicons/screen-normal.svg | \n \n \n | \n
\n \n | \nsearch.svg | \n_includes/icons/octicons/search.svg | \n \n \n | \n
\n \n | \nserver.svg | \n_includes/icons/octicons/server.svg | \n \n \n | \n
\n \n | \nsettings.svg | \n_includes/icons/octicons/settings.svg | \n \n \n | \n
\n \n | \nshield-check.svg | \n_includes/icons/octicons/shield-check.svg | \n \n \n | \n
\n \n | \nshield-lock.svg | \n_includes/icons/octicons/shield-lock.svg | \n \n \n | \n
\n \n | \nshield-x.svg | \n_includes/icons/octicons/shield-x.svg | \n \n \n | \n
\n \n | \nshield.svg | \n_includes/icons/octicons/shield.svg | \n \n \n | \n
\n \n | \nsign-in.svg | \n_includes/icons/octicons/sign-in.svg | \n \n \n | \n
\n \n | \nsign-out.svg | \n_includes/icons/octicons/sign-out.svg | \n \n \n | \n
\n \n | \nskip.svg | \n_includes/icons/octicons/skip.svg | \n \n \n | \n
\n \n | \nsmiley.svg | \n_includes/icons/octicons/smiley.svg | \n \n \n | \n
\n \n | \nsquirrel.svg | \n_includes/icons/octicons/squirrel.svg | \n \n \n | \n
\n \n | \nstar.svg | \n_includes/icons/octicons/star.svg | \n \n \n | \n
\n \n | \nstop.svg | \n_includes/icons/octicons/stop.svg | \n \n \n | \n
\n \n | \nsync.svg | \n_includes/icons/octicons/sync.svg | \n \n \n | \n
\n \n | \ntag.svg | \n_includes/icons/octicons/tag.svg | \n \n \n | \n
\n \n | \ntasklist.svg | \n_includes/icons/octicons/tasklist.svg | \n \n \n | \n
\n \n | \ntelescope.svg | \n_includes/icons/octicons/telescope.svg | \n \n \n | \n
\n \n | \nterminal.svg | \n_includes/icons/octicons/terminal.svg | \n \n \n | \n
\n \n | \ntext-size.svg | \n_includes/icons/octicons/text-size.svg | \n \n \n | \n
\n \n | \nthree-bars.svg | \n_includes/icons/octicons/three-bars.svg | \n \n \n | \n
\n \n | \nthumbsdown.svg | \n_includes/icons/octicons/thumbsdown.svg | \n \n \n | \n
\n \n | \nthumbsup.svg | \n_includes/icons/octicons/thumbsup.svg | \n \n \n | \n
\n \n | \ntools.svg | \n_includes/icons/octicons/tools.svg | \n \n \n | \n
\n \n | \ntrashcan.svg | \n_includes/icons/octicons/trashcan.svg | \n \n \n | \n
\n \n | \ntriangle-down.svg | \n_includes/icons/octicons/triangle-down.svg | \n \n \n | \n
\n \n | \ntriangle-left.svg | \n_includes/icons/octicons/triangle-left.svg | \n \n \n | \n
\n \n | \ntriangle-right.svg | \n_includes/icons/octicons/triangle-right.svg | \n \n \n | \n
\n \n | \ntriangle-up.svg | \n_includes/icons/octicons/triangle-up.svg | \n \n \n | \n
\n \n | \nunfold.svg | \n_includes/icons/octicons/unfold.svg | \n \n \n | \n
\n \n | \nunmute.svg | \n_includes/icons/octicons/unmute.svg | \n \n \n | \n
\n \n | \nunsaved.svg | \n_includes/icons/octicons/unsaved.svg | \n \n \n | \n
\n \n | \nunverified.svg | \n_includes/icons/octicons/unverified.svg | \n \n \n | \n
\n \n | \nverified.svg | \n_includes/icons/octicons/verified.svg | \n \n \n | \n
\n \n | \nversions.svg | \n_includes/icons/octicons/versions.svg | \n \n \n | \n
\n \n | \nwatch.svg | \n_includes/icons/octicons/watch.svg | \n \n \n | \n
\n \n | \nworkflow-all.svg | \n_includes/icons/octicons/workflow-all.svg | \n \n \n | \n
\n \n | \nworkflow.svg | \n_includes/icons/octicons/workflow.svg | \n \n \n | \n
\n \n | \nx.svg | \n_includes/icons/octicons/x.svg | \n \n \n | \n
\n \n | \nzap.svg | \n_includes/icons/octicons/zap.svg | \n \n \n | \n
Icon | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n \n | \n1001tracklists.svg | \n_includes/icons/simple-icons/1001tracklists.svg | \n \n \n | \n
\n \n | \n1password.svg | \n_includes/icons/simple-icons/1password.svg | \n \n \n | \n
\n \n | \n500px.svg | \n_includes/icons/simple-icons/500px.svg | \n \n \n | \n
\n \n | \nabbrobotstudio.svg | \n_includes/icons/simple-icons/abbrobotstudio.svg | \n \n \n | \n
\n \n | \nabout-dot-me.svg | \n_includes/icons/simple-icons/about-dot-me.svg | \n \n \n | \n
\n \n | \nabstract.svg | \n_includes/icons/simple-icons/abstract.svg | \n \n \n | \n
\n \n | \nacademia.svg | \n_includes/icons/simple-icons/academia.svg | \n \n \n | \n
\n \n | \naccusoft.svg | \n_includes/icons/simple-icons/accusoft.svg | \n \n \n | \n
\n \n | \nacm.svg | \n_includes/icons/simple-icons/acm.svg | \n \n \n | \n
\n \n | \nactigraph.svg | \n_includes/icons/simple-icons/actigraph.svg | \n \n \n | \n
\n \n | \nactivision.svg | \n_includes/icons/simple-icons/activision.svg | \n \n \n | \n
\n \n | \naddthis.svg | \n_includes/icons/simple-icons/addthis.svg | \n \n \n | \n
\n \n | \nadguard.svg | \n_includes/icons/simple-icons/adguard.svg | \n \n \n | \n
\n \n | \nadobe.svg | \n_includes/icons/simple-icons/adobe.svg | \n \n \n | \n
\n \n | \nadobeacrobatreader.svg | \n_includes/icons/simple-icons/adobeacrobatreader.svg | \n \n \n | \n
\n \n | \nadobeaftereffects.svg | \n_includes/icons/simple-icons/adobeaftereffects.svg | \n \n \n | \n
\n \n | \nadobeaudition.svg | \n_includes/icons/simple-icons/adobeaudition.svg | \n \n \n | \n
\n \n | \nadobecreativecloud.svg | \n_includes/icons/simple-icons/adobecreativecloud.svg | \n \n \n | \n
\n \n | \nadobedreamweaver.svg | \n_includes/icons/simple-icons/adobedreamweaver.svg | \n \n \n | \n
\n \n | \nadobeillustrator.svg | \n_includes/icons/simple-icons/adobeillustrator.svg | \n \n \n | \n
\n \n | \nadobeindesign.svg | \n_includes/icons/simple-icons/adobeindesign.svg | \n \n \n | \n
\n \n | \nadobelightroomcc.svg | \n_includes/icons/simple-icons/adobelightroomcc.svg | \n \n \n | \n
\n \n | \nadobelightroomclassic.svg | \n_includes/icons/simple-icons/adobelightroomclassic.svg | \n \n \n | \n
\n \n | \nadobephonegap.svg | \n_includes/icons/simple-icons/adobephonegap.svg | \n \n \n | \n
\n \n | \nadobephotoshop.svg | \n_includes/icons/simple-icons/adobephotoshop.svg | \n \n \n | \n
\n \n | \nadobepremiere.svg | \n_includes/icons/simple-icons/adobepremiere.svg | \n \n \n | \n
\n \n | \nadobetypekit.svg | \n_includes/icons/simple-icons/adobetypekit.svg | \n \n \n | \n
\n \n | \nadobexd.svg | \n_includes/icons/simple-icons/adobexd.svg | \n \n \n | \n
\n \n | \nadonisjs.svg | \n_includes/icons/simple-icons/adonisjs.svg | \n \n \n | \n
\n \n | \naerlingus.svg | \n_includes/icons/simple-icons/aerlingus.svg | \n \n \n | \n
\n \n | \naffinity.svg | \n_includes/icons/simple-icons/affinity.svg | \n \n \n | \n
\n \n | \naffinitydesigner.svg | \n_includes/icons/simple-icons/affinitydesigner.svg | \n \n \n | \n
\n \n | \naffinityphoto.svg | \n_includes/icons/simple-icons/affinityphoto.svg | \n \n \n | \n
\n \n | \naffinitypublisher.svg | \n_includes/icons/simple-icons/affinitypublisher.svg | \n \n \n | \n
\n \n | \naiqfome.svg | \n_includes/icons/simple-icons/aiqfome.svg | \n \n \n | \n
\n \n | \nairbnb.svg | \n_includes/icons/simple-icons/airbnb.svg | \n \n \n | \n
\n \n | \nairbus.svg | \n_includes/icons/simple-icons/airbus.svg | \n \n \n | \n
\n \n | \naircall.svg | \n_includes/icons/simple-icons/aircall.svg | \n \n \n | \n
\n \n | \nairplayaudio.svg | \n_includes/icons/simple-icons/airplayaudio.svg | \n \n \n | \n
\n \n | \nairplayvideo.svg | \n_includes/icons/simple-icons/airplayvideo.svg | \n \n \n | \n
\n \n | \nairtable.svg | \n_includes/icons/simple-icons/airtable.svg | \n \n \n | \n
\n \n | \nalgolia.svg | \n_includes/icons/simple-icons/algolia.svg | \n \n \n | \n
\n \n | \nalipay.svg | \n_includes/icons/simple-icons/alipay.svg | \n \n \n | \n
\n \n | \nalliedmodders.svg | \n_includes/icons/simple-icons/alliedmodders.svg | \n \n \n | \n
\n \n | \nallocine.svg | \n_includes/icons/simple-icons/allocine.svg | \n \n \n | \n
\n \n | \nalpinelinux.svg | \n_includes/icons/simple-icons/alpinelinux.svg | \n \n \n | \n
\n \n | \namazon.svg | \n_includes/icons/simple-icons/amazon.svg | \n \n \n | \n
\n \n | \namazonalexa.svg | \n_includes/icons/simple-icons/amazonalexa.svg | \n \n \n | \n
\n \n | \namazonaws.svg | \n_includes/icons/simple-icons/amazonaws.svg | \n \n \n | \n
\n \n | \namazonlumberyard.svg | \n_includes/icons/simple-icons/amazonlumberyard.svg | \n \n \n | \n
\n \n | \namd.svg | \n_includes/icons/simple-icons/amd.svg | \n \n \n | \n
\n \n | \namericanexpress.svg | \n_includes/icons/simple-icons/americanexpress.svg | \n \n \n | \n
\n \n | \nanaconda.svg | \n_includes/icons/simple-icons/anaconda.svg | \n \n \n | \n
\n \n | \nanalogue.svg | \n_includes/icons/simple-icons/analogue.svg | \n \n \n | \n
\n \n | \nanchor.svg | \n_includes/icons/simple-icons/anchor.svg | \n \n \n | \n
\n \n | \nandela.svg | \n_includes/icons/simple-icons/andela.svg | \n \n \n | \n
\n \n | \nandroid.svg | \n_includes/icons/simple-icons/android.svg | \n \n \n | \n
\n \n | \nandroidstudio.svg | \n_includes/icons/simple-icons/androidstudio.svg | \n \n \n | \n
\n \n | \nangellist.svg | \n_includes/icons/simple-icons/angellist.svg | \n \n \n | \n
\n \n | \nangular.svg | \n_includes/icons/simple-icons/angular.svg | \n \n \n | \n
\n \n | \nangularjs.svg | \n_includes/icons/simple-icons/angularjs.svg | \n \n \n | \n
\n \n | \nangularuniversal.svg | \n_includes/icons/simple-icons/angularuniversal.svg | \n \n \n | \n
\n \n | \nansible.svg | \n_includes/icons/simple-icons/ansible.svg | \n \n \n | \n
\n \n | \nantena3.svg | \n_includes/icons/simple-icons/antena3.svg | \n \n \n | \n
\n \n | \napache.svg | \n_includes/icons/simple-icons/apache.svg | \n \n \n | \n
\n \n | \napacheairflow.svg | \n_includes/icons/simple-icons/apacheairflow.svg | \n \n \n | \n
\n \n | \napacheant.svg | \n_includes/icons/simple-icons/apacheant.svg | \n \n \n | \n
\n \n | \napachecordova.svg | \n_includes/icons/simple-icons/apachecordova.svg | \n \n \n | \n
\n \n | \napacheecharts.svg | \n_includes/icons/simple-icons/apacheecharts.svg | \n \n \n | \n
\n \n | \napacheflink.svg | \n_includes/icons/simple-icons/apacheflink.svg | \n \n \n | \n
\n \n | \napachekafka.svg | \n_includes/icons/simple-icons/apachekafka.svg | \n \n \n | \n
\n \n | \napachemaven.svg | \n_includes/icons/simple-icons/apachemaven.svg | \n \n \n | \n
\n \n | \napachenetbeanside.svg | \n_includes/icons/simple-icons/apachenetbeanside.svg | \n \n \n | \n
\n \n | \napacheopenoffice.svg | \n_includes/icons/simple-icons/apacheopenoffice.svg | \n \n \n | \n
\n \n | \napachepulsar.svg | \n_includes/icons/simple-icons/apachepulsar.svg | \n \n \n | \n
\n \n | \napacherocketmq.svg | \n_includes/icons/simple-icons/apacherocketmq.svg | \n \n \n | \n
\n \n | \napachesolr.svg | \n_includes/icons/simple-icons/apachesolr.svg | \n \n \n | \n
\n \n | \napachespark.svg | \n_includes/icons/simple-icons/apachespark.svg | \n \n \n | \n
\n \n | \napollographql.svg | \n_includes/icons/simple-icons/apollographql.svg | \n \n \n | \n
\n \n | \napple.svg | \n_includes/icons/simple-icons/apple.svg | \n \n \n | \n
\n \n | \napplemusic.svg | \n_includes/icons/simple-icons/applemusic.svg | \n \n \n | \n
\n \n | \napplepay.svg | \n_includes/icons/simple-icons/applepay.svg | \n \n \n | \n
\n \n | \napplepodcasts.svg | \n_includes/icons/simple-icons/applepodcasts.svg | \n \n \n | \n
\n \n | \nappveyor.svg | \n_includes/icons/simple-icons/appveyor.svg | \n \n \n | \n
\n \n | \naral.svg | \n_includes/icons/simple-icons/aral.svg | \n \n \n | \n
\n \n | \narchicad.svg | \n_includes/icons/simple-icons/archicad.svg | \n \n \n | \n
\n \n | \narchiveofourown.svg | \n_includes/icons/simple-icons/archiveofourown.svg | \n \n \n | \n
\n \n | \narchlinux.svg | \n_includes/icons/simple-icons/archlinux.svg | \n \n \n | \n
\n \n | \narduino.svg | \n_includes/icons/simple-icons/arduino.svg | \n \n \n | \n
\n \n | \nartstation.svg | \n_includes/icons/simple-icons/artstation.svg | \n \n \n | \n
\n \n | \narxiv.svg | \n_includes/icons/simple-icons/arxiv.svg | \n \n \n | \n
\n \n | \nasana.svg | \n_includes/icons/simple-icons/asana.svg | \n \n \n | \n
\n \n | \nasciidoctor.svg | \n_includes/icons/simple-icons/asciidoctor.svg | \n \n \n | \n
\n \n | \nasciinema.svg | \n_includes/icons/simple-icons/asciinema.svg | \n \n \n | \n
\n \n | \nat-and-t.svg | \n_includes/icons/simple-icons/at-and-t.svg | \n \n \n | \n
\n \n | \natlassian.svg | \n_includes/icons/simple-icons/atlassian.svg | \n \n \n | \n
\n \n | \natom.svg | \n_includes/icons/simple-icons/atom.svg | \n \n \n | \n
\n \n | \naudi.svg | \n_includes/icons/simple-icons/audi.svg | \n \n \n | \n
\n \n | \naudible.svg | \n_includes/icons/simple-icons/audible.svg | \n \n \n | \n
\n \n | \naudiomack.svg | \n_includes/icons/simple-icons/audiomack.svg | \n \n \n | \n
\n \n | \naurelia.svg | \n_includes/icons/simple-icons/aurelia.svg | \n \n \n | \n
\n \n | \nauth0.svg | \n_includes/icons/simple-icons/auth0.svg | \n \n \n | \n
\n \n | \nauthy.svg | \n_includes/icons/simple-icons/authy.svg | \n \n \n | \n
\n \n | \nautomatic.svg | \n_includes/icons/simple-icons/automatic.svg | \n \n \n | \n
\n \n | \nautotask.svg | \n_includes/icons/simple-icons/autotask.svg | \n \n \n | \n
\n \n | \naventrix.svg | \n_includes/icons/simple-icons/aventrix.svg | \n \n \n | \n
\n \n | \nawesomewm.svg | \n_includes/icons/simple-icons/awesomewm.svg | \n \n \n | \n
\n \n | \nazureartifacts.svg | \n_includes/icons/simple-icons/azureartifacts.svg | \n \n \n | \n
\n \n | \nazuredevops.svg | \n_includes/icons/simple-icons/azuredevops.svg | \n \n \n | \n
\n \n | \nazurepipelines.svg | \n_includes/icons/simple-icons/azurepipelines.svg | \n \n \n | \n
\n \n | \nbabel.svg | \n_includes/icons/simple-icons/babel.svg | \n \n \n | \n
\n \n | \nbaidu.svg | \n_includes/icons/simple-icons/baidu.svg | \n \n \n | \n
\n \n | \nbamboo.svg | \n_includes/icons/simple-icons/bamboo.svg | \n \n \n | \n
\n \n | \nbancontact.svg | \n_includes/icons/simple-icons/bancontact.svg | \n \n \n | \n
\n \n | \nbandcamp.svg | \n_includes/icons/simple-icons/bandcamp.svg | \n \n \n | \n
\n \n | \nbandlab.svg | \n_includes/icons/simple-icons/bandlab.svg | \n \n \n | \n
\n \n | \nbandsintown.svg | \n_includes/icons/simple-icons/bandsintown.svg | \n \n \n | \n
\n \n | \nbasecamp.svg | \n_includes/icons/simple-icons/basecamp.svg | \n \n \n | \n
\n \n | \nbathasu.svg | \n_includes/icons/simple-icons/bathasu.svg | \n \n \n | \n
\n \n | \nbattle-dot-net.svg | \n_includes/icons/simple-icons/battle-dot-net.svg | \n \n \n | \n
\n \n | \nbeatport.svg | \n_includes/icons/simple-icons/beatport.svg | \n \n \n | \n
\n \n | \nbeats.svg | \n_includes/icons/simple-icons/beats.svg | \n \n \n | \n
\n \n | \nbeatsbydre.svg | \n_includes/icons/simple-icons/beatsbydre.svg | \n \n \n | \n
\n \n | \nbehance.svg | \n_includes/icons/simple-icons/behance.svg | \n \n \n | \n
\n \n | \nbigcartel.svg | \n_includes/icons/simple-icons/bigcartel.svg | \n \n \n | \n
\n \n | \nbing.svg | \n_includes/icons/simple-icons/bing.svg | \n \n \n | \n
\n \n | \nbit.svg | \n_includes/icons/simple-icons/bit.svg | \n \n \n | \n
\n \n | \nbitbucket.svg | \n_includes/icons/simple-icons/bitbucket.svg | \n \n \n | \n
\n \n | \nbitcoin.svg | \n_includes/icons/simple-icons/bitcoin.svg | \n \n \n | \n
\n \n | \nbitdefender.svg | \n_includes/icons/simple-icons/bitdefender.svg | \n \n \n | \n
\n \n | \nbitly.svg | \n_includes/icons/simple-icons/bitly.svg | \n \n \n | \n
\n \n | \nbitrise.svg | \n_includes/icons/simple-icons/bitrise.svg | \n \n \n | \n
\n \n | \nblackberry.svg | \n_includes/icons/simple-icons/blackberry.svg | \n \n \n | \n
\n \n | \nblender.svg | \n_includes/icons/simple-icons/blender.svg | \n \n \n | \n
\n \n | \nblogger.svg | \n_includes/icons/simple-icons/blogger.svg | \n \n \n | \n
\n \n | \nbluetooth.svg | \n_includes/icons/simple-icons/bluetooth.svg | \n \n \n | \n
\n \n | \nbmcsoftware.svg | \n_includes/icons/simple-icons/bmcsoftware.svg | \n \n \n | \n
\n \n | \nbmw.svg | \n_includes/icons/simple-icons/bmw.svg | \n \n \n | \n
\n \n | \nboeing.svg | \n_includes/icons/simple-icons/boeing.svg | \n \n \n | \n
\n \n | \nboost.svg | \n_includes/icons/simple-icons/boost.svg | \n \n \n | \n
\n \n | \nbootstrap.svg | \n_includes/icons/simple-icons/bootstrap.svg | \n \n \n | \n
\n \n | \nbosch.svg | \n_includes/icons/simple-icons/bosch.svg | \n \n \n | \n
\n \n | \nbower.svg | \n_includes/icons/simple-icons/bower.svg | \n \n \n | \n
\n \n | \nbox.svg | \n_includes/icons/simple-icons/box.svg | \n \n \n | \n
\n \n | \nbrand-dot-ai.svg | \n_includes/icons/simple-icons/brand-dot-ai.svg | \n \n \n | \n
\n \n | \nbrandfolder.svg | \n_includes/icons/simple-icons/brandfolder.svg | \n \n \n | \n
\n \n | \nbrave.svg | \n_includes/icons/simple-icons/brave.svg | \n \n \n | \n
\n \n | \nbreaker.svg | \n_includes/icons/simple-icons/breaker.svg | \n \n \n | \n
\n \n | \nbroadcom.svg | \n_includes/icons/simple-icons/broadcom.svg | \n \n \n | \n
\n \n | \nbuddy.svg | \n_includes/icons/simple-icons/buddy.svg | \n \n \n | \n
\n \n | \nbuffer.svg | \n_includes/icons/simple-icons/buffer.svg | \n \n \n | \n
\n \n | \nbugsnag.svg | \n_includes/icons/simple-icons/bugsnag.svg | \n \n \n | \n
\n \n | \nbulma.svg | \n_includes/icons/simple-icons/bulma.svg | \n \n \n | \n
\n \n | \nbuymeacoffee.svg | \n_includes/icons/simple-icons/buymeacoffee.svg | \n \n \n | \n
\n \n | \nbuzzfeed.svg | \n_includes/icons/simple-icons/buzzfeed.svg | \n \n \n | \n
\n \n | \nc.svg | \n_includes/icons/simple-icons/c.svg | \n \n \n | \n
\n \n | \ncakephp.svg | \n_includes/icons/simple-icons/cakephp.svg | \n \n \n | \n
\n \n | \ncampaignmonitor.svg | \n_includes/icons/simple-icons/campaignmonitor.svg | \n \n \n | \n
\n \n | \ncanva.svg | \n_includes/icons/simple-icons/canva.svg | \n \n \n | \n
\n \n | \ncashapp.svg | \n_includes/icons/simple-icons/cashapp.svg | \n \n \n | \n
\n \n | \ncassandra.svg | \n_includes/icons/simple-icons/cassandra.svg | \n \n \n | \n
\n \n | \ncastbox.svg | \n_includes/icons/simple-icons/castbox.svg | \n \n \n | \n
\n \n | \ncastorama.svg | \n_includes/icons/simple-icons/castorama.svg | \n \n \n | \n
\n \n | \ncastro.svg | \n_includes/icons/simple-icons/castro.svg | \n \n \n | \n
\n \n | \ncdprojekt.svg | \n_includes/icons/simple-icons/cdprojekt.svg | \n \n \n | \n
\n \n | \ncelery.svg | \n_includes/icons/simple-icons/celery.svg | \n \n \n | \n
\n \n | \ncentos.svg | \n_includes/icons/simple-icons/centos.svg | \n \n \n | \n
\n \n | \ncesium.svg | \n_includes/icons/simple-icons/cesium.svg | \n \n \n | \n
\n \n | \ncevo.svg | \n_includes/icons/simple-icons/cevo.svg | \n \n \n | \n
\n \n | \nchartmogul.svg | \n_includes/icons/simple-icons/chartmogul.svg | \n \n \n | \n
\n \n | \nchase.svg | \n_includes/icons/simple-icons/chase.svg | \n \n \n | \n
\n \n | \nchef.svg | \n_includes/icons/simple-icons/chef.svg | \n \n \n | \n
\n \n | \ncinema4d.svg | \n_includes/icons/simple-icons/cinema4d.svg | \n \n \n | \n
\n \n | \ncircle.svg | \n_includes/icons/simple-icons/circle.svg | \n \n \n | \n
\n \n | \ncircleci.svg | \n_includes/icons/simple-icons/circleci.svg | \n \n \n | \n
\n \n | \ncirrusci.svg | \n_includes/icons/simple-icons/cirrusci.svg | \n \n \n | \n
\n \n | \ncisco.svg | \n_includes/icons/simple-icons/cisco.svg | \n \n \n | \n
\n \n | \ncitrix.svg | \n_includes/icons/simple-icons/citrix.svg | \n \n \n | \n
\n \n | \ncitroen.svg | \n_includes/icons/simple-icons/citroen.svg | \n \n \n | \n
\n \n | \ncivicrm.svg | \n_includes/icons/simple-icons/civicrm.svg | \n \n \n | \n
\n \n | \nclaris.svg | \n_includes/icons/simple-icons/claris.svg | \n \n \n | \n
\n \n | \nclockify.svg | \n_includes/icons/simple-icons/clockify.svg | \n \n \n | \n
\n \n | \nclojure.svg | \n_includes/icons/simple-icons/clojure.svg | \n \n \n | \n
\n \n | \ncloudbees.svg | \n_includes/icons/simple-icons/cloudbees.svg | \n \n \n | \n
\n \n | \ncloudcannon.svg | \n_includes/icons/simple-icons/cloudcannon.svg | \n \n \n | \n
\n \n | \ncloudflare.svg | \n_includes/icons/simple-icons/cloudflare.svg | \n \n \n | \n
\n \n | \ncloudsmith.svg | \n_includes/icons/simple-icons/cloudsmith.svg | \n \n \n | \n
\n \n | \ncmake.svg | \n_includes/icons/simple-icons/cmake.svg | \n \n \n | \n
\n \n | \ncnn.svg | \n_includes/icons/simple-icons/cnn.svg | \n \n \n | \n
\n \n | \nco-op.svg | \n_includes/icons/simple-icons/co-op.svg | \n \n \n | \n
\n \n | \ncodacy.svg | \n_includes/icons/simple-icons/codacy.svg | \n \n \n | \n
\n \n | \ncodecademy.svg | \n_includes/icons/simple-icons/codecademy.svg | \n \n \n | \n
\n \n | \ncodechef.svg | \n_includes/icons/simple-icons/codechef.svg | \n \n \n | \n
\n \n | \ncodeclimate.svg | \n_includes/icons/simple-icons/codeclimate.svg | \n \n \n | \n
\n \n | \ncodecov.svg | \n_includes/icons/simple-icons/codecov.svg | \n \n \n | \n
\n \n | \ncodefactor.svg | \n_includes/icons/simple-icons/codefactor.svg | \n \n \n | \n
\n \n | \ncodeforces.svg | \n_includes/icons/simple-icons/codeforces.svg | \n \n \n | \n
\n \n | \ncodeigniter.svg | \n_includes/icons/simple-icons/codeigniter.svg | \n \n \n | \n
\n \n | \ncodepen.svg | \n_includes/icons/simple-icons/codepen.svg | \n \n \n | \n
\n \n | \ncoderwall.svg | \n_includes/icons/simple-icons/coderwall.svg | \n \n \n | \n
\n \n | \ncodesandbox.svg | \n_includes/icons/simple-icons/codesandbox.svg | \n \n \n | \n
\n \n | \ncodeship.svg | \n_includes/icons/simple-icons/codeship.svg | \n \n \n | \n
\n \n | \ncodewars.svg | \n_includes/icons/simple-icons/codewars.svg | \n \n \n | \n
\n \n | \ncodio.svg | \n_includes/icons/simple-icons/codio.svg | \n \n \n | \n
\n \n | \ncoffeescript.svg | \n_includes/icons/simple-icons/coffeescript.svg | \n \n \n | \n
\n \n | \ncoinbase.svg | \n_includes/icons/simple-icons/coinbase.svg | \n \n \n | \n
\n \n | \ncommonworkflowlanguage.svg | \n_includes/icons/simple-icons/commonworkflowlanguage.svg | \n \n \n | \n
\n \n | \ncomposer.svg | \n_includes/icons/simple-icons/composer.svg | \n \n \n | \n
\n \n | \ncompropago.svg | \n_includes/icons/simple-icons/compropago.svg | \n \n \n | \n
\n \n | \nconcourse.svg | \n_includes/icons/simple-icons/concourse.svg | \n \n \n | \n
\n \n | \nconda-forge.svg | \n_includes/icons/simple-icons/conda-forge.svg | \n \n \n | \n
\n \n | \nconekta.svg | \n_includes/icons/simple-icons/conekta.svg | \n \n \n | \n
\n \n | \nconfluence.svg | \n_includes/icons/simple-icons/confluence.svg | \n \n \n | \n
\n \n | \nconvertio.svg | \n_includes/icons/simple-icons/convertio.svg | \n \n \n | \n
\n \n | \ncoronaengine.svg | \n_includes/icons/simple-icons/coronaengine.svg | \n \n \n | \n
\n \n | \ncoronarenderer.svg | \n_includes/icons/simple-icons/coronarenderer.svg | \n \n \n | \n
\n \n | \ncoursera.svg | \n_includes/icons/simple-icons/coursera.svg | \n \n \n | \n
\n \n | \ncoveralls.svg | \n_includes/icons/simple-icons/coveralls.svg | \n \n \n | \n
\n \n | \ncpanel.svg | \n_includes/icons/simple-icons/cpanel.svg | \n \n \n | \n
\n \n | \ncplusplus.svg | \n_includes/icons/simple-icons/cplusplus.svg | \n \n \n | \n
\n \n | \ncraftcms.svg | \n_includes/icons/simple-icons/craftcms.svg | \n \n \n | \n
\n \n | \ncreativecommons.svg | \n_includes/icons/simple-icons/creativecommons.svg | \n \n \n | \n
\n \n | \ncrehana.svg | \n_includes/icons/simple-icons/crehana.svg | \n \n \n | \n
\n \n | \ncrunchbase.svg | \n_includes/icons/simple-icons/crunchbase.svg | \n \n \n | \n
\n \n | \ncrunchyroll.svg | \n_includes/icons/simple-icons/crunchyroll.svg | \n \n \n | \n
\n \n | \ncryengine.svg | \n_includes/icons/simple-icons/cryengine.svg | \n \n \n | \n
\n \n | \ncsharp.svg | \n_includes/icons/simple-icons/csharp.svg | \n \n \n | \n
\n \n | \ncss3.svg | \n_includes/icons/simple-icons/css3.svg | \n \n \n | \n
\n \n | \ncsswizardry.svg | \n_includes/icons/simple-icons/csswizardry.svg | \n \n \n | \n
\n \n | \ncurl.svg | \n_includes/icons/simple-icons/curl.svg | \n \n \n | \n
\n \n | \nd3-dot-js.svg | \n_includes/icons/simple-icons/d3-dot-js.svg | \n \n \n | \n
\n \n | \ndailymotion.svg | \n_includes/icons/simple-icons/dailymotion.svg | \n \n \n | \n
\n \n | \ndart.svg | \n_includes/icons/simple-icons/dart.svg | \n \n \n | \n
\n \n | \ndaserste.svg | \n_includes/icons/simple-icons/daserste.svg | \n \n \n | \n
\n \n | \ndashlane.svg | \n_includes/icons/simple-icons/dashlane.svg | \n \n \n | \n
\n \n | \ndassaultsystemes.svg | \n_includes/icons/simple-icons/dassaultsystemes.svg | \n \n \n | \n
\n \n | \ndatacamp.svg | \n_includes/icons/simple-icons/datacamp.svg | \n \n \n | \n
\n \n | \ndatadog.svg | \n_includes/icons/simple-icons/datadog.svg | \n \n \n | \n
\n \n | \ndazn.svg | \n_includes/icons/simple-icons/dazn.svg | \n \n \n | \n
\n \n | \ndblp.svg | \n_includes/icons/simple-icons/dblp.svg | \n \n \n | \n
\n \n | \ndcentertainment.svg | \n_includes/icons/simple-icons/dcentertainment.svg | \n \n \n | \n
\n \n | \ndebian.svg | \n_includes/icons/simple-icons/debian.svg | \n \n \n | \n
\n \n | \ndeepin.svg | \n_includes/icons/simple-icons/deepin.svg | \n \n \n | \n
\n \n | \ndeezer.svg | \n_includes/icons/simple-icons/deezer.svg | \n \n \n | \n
\n \n | \ndelicious.svg | \n_includes/icons/simple-icons/delicious.svg | \n \n \n | \n
\n \n | \ndeliveroo.svg | \n_includes/icons/simple-icons/deliveroo.svg | \n \n \n | \n
\n \n | \ndell.svg | \n_includes/icons/simple-icons/dell.svg | \n \n \n | \n
\n \n | \ndeno.svg | \n_includes/icons/simple-icons/deno.svg | \n \n \n | \n
\n \n | \ndependabot.svg | \n_includes/icons/simple-icons/dependabot.svg | \n \n \n | \n
\n \n | \ndesignernews.svg | \n_includes/icons/simple-icons/designernews.svg | \n \n \n | \n
\n \n | \ndev-dot-to.svg | \n_includes/icons/simple-icons/dev-dot-to.svg | \n \n \n | \n
\n \n | \ndeviantart.svg | \n_includes/icons/simple-icons/deviantart.svg | \n \n \n | \n
\n \n | \ndevrant.svg | \n_includes/icons/simple-icons/devrant.svg | \n \n \n | \n
\n \n | \ndiaspora.svg | \n_includes/icons/simple-icons/diaspora.svg | \n \n \n | \n
\n \n | \ndigg.svg | \n_includes/icons/simple-icons/digg.svg | \n \n \n | \n
\n \n | \ndigitalocean.svg | \n_includes/icons/simple-icons/digitalocean.svg | \n \n \n | \n
\n \n | \ndirectus.svg | \n_includes/icons/simple-icons/directus.svg | \n \n \n | \n
\n \n | \ndiscogs.svg | \n_includes/icons/simple-icons/discogs.svg | \n \n \n | \n
\n \n | \ndiscord.svg | \n_includes/icons/simple-icons/discord.svg | \n \n \n | \n
\n \n | \ndiscourse.svg | \n_includes/icons/simple-icons/discourse.svg | \n \n \n | \n
\n \n | \ndiscover.svg | \n_includes/icons/simple-icons/discover.svg | \n \n \n | \n
\n \n | \ndisqus.svg | \n_includes/icons/simple-icons/disqus.svg | \n \n \n | \n
\n \n | \ndisroot.svg | \n_includes/icons/simple-icons/disroot.svg | \n \n \n | \n
\n \n | \ndjango.svg | \n_includes/icons/simple-icons/django.svg | \n \n \n | \n
\n \n | \ndlna.svg | \n_includes/icons/simple-icons/dlna.svg | \n \n \n | \n
\n \n | \ndocker.svg | \n_includes/icons/simple-icons/docker.svg | \n \n \n | \n
\n \n | \ndocusign.svg | \n_includes/icons/simple-icons/docusign.svg | \n \n \n | \n
\n \n | \ndolby.svg | \n_includes/icons/simple-icons/dolby.svg | \n \n \n | \n
\n \n | \ndot-net.svg | \n_includes/icons/simple-icons/dot-net.svg | \n \n \n | \n
\n \n | \ndouban.svg | \n_includes/icons/simple-icons/douban.svg | \n \n \n | \n
\n \n | \ndraugiem-dot-lv.svg | \n_includes/icons/simple-icons/draugiem-dot-lv.svg | \n \n \n | \n
\n \n | \ndribbble.svg | \n_includes/icons/simple-icons/dribbble.svg | \n \n \n | \n
\n \n | \ndrone.svg | \n_includes/icons/simple-icons/drone.svg | \n \n \n | \n
\n \n | \ndropbox.svg | \n_includes/icons/simple-icons/dropbox.svg | \n \n \n | \n
\n \n | \ndrupal.svg | \n_includes/icons/simple-icons/drupal.svg | \n \n \n | \n
\n \n | \ndtube.svg | \n_includes/icons/simple-icons/dtube.svg | \n \n \n | \n
\n \n | \nduckduckgo.svg | \n_includes/icons/simple-icons/duckduckgo.svg | \n \n \n | \n
\n \n | \ndunked.svg | \n_includes/icons/simple-icons/dunked.svg | \n \n \n | \n
\n \n | \nduolingo.svg | \n_includes/icons/simple-icons/duolingo.svg | \n \n \n | \n
\n \n | \ndynamics365.svg | \n_includes/icons/simple-icons/dynamics365.svg | \n \n \n | \n
\n \n | \ndynatrace.svg | \n_includes/icons/simple-icons/dynatrace.svg | \n \n \n | \n
\n \n | \nea.svg | \n_includes/icons/simple-icons/ea.svg | \n \n \n | \n
\n \n | \neasyjet.svg | \n_includes/icons/simple-icons/easyjet.svg | \n \n \n | \n
\n \n | \nebay.svg | \n_includes/icons/simple-icons/ebay.svg | \n \n \n | \n
\n \n | \neclipseide.svg | \n_includes/icons/simple-icons/eclipseide.svg | \n \n \n | \n
\n \n | \nelastic.svg | \n_includes/icons/simple-icons/elastic.svg | \n \n \n | \n
\n \n | \nelasticcloud.svg | \n_includes/icons/simple-icons/elasticcloud.svg | \n \n \n | \n
\n \n | \nelasticsearch.svg | \n_includes/icons/simple-icons/elasticsearch.svg | \n \n \n | \n
\n \n | \nelasticstack.svg | \n_includes/icons/simple-icons/elasticstack.svg | \n \n \n | \n
\n \n | \nelectron.svg | \n_includes/icons/simple-icons/electron.svg | \n \n \n | \n
\n \n | \nelementary.svg | \n_includes/icons/simple-icons/elementary.svg | \n \n \n | \n
\n \n | \neleventy.svg | \n_includes/icons/simple-icons/eleventy.svg | \n \n \n | \n
\n \n | \nelixir.svg | \n_includes/icons/simple-icons/elixir.svg | \n \n \n | \n
\n \n | \nello.svg | \n_includes/icons/simple-icons/ello.svg | \n \n \n | \n
\n \n | \nelm.svg | \n_includes/icons/simple-icons/elm.svg | \n \n \n | \n
\n \n | \nelsevier.svg | \n_includes/icons/simple-icons/elsevier.svg | \n \n \n | \n
\n \n | \nember-dot-js.svg | \n_includes/icons/simple-icons/ember-dot-js.svg | \n \n \n | \n
\n \n | \nemby.svg | \n_includes/icons/simple-icons/emby.svg | \n \n \n | \n
\n \n | \nemlakjet.svg | \n_includes/icons/simple-icons/emlakjet.svg | \n \n \n | \n
\n \n | \nempirekred.svg | \n_includes/icons/simple-icons/empirekred.svg | \n \n \n | \n
\n \n | \nenvato.svg | \n_includes/icons/simple-icons/envato.svg | \n \n \n | \n
\n \n | \nepel.svg | \n_includes/icons/simple-icons/epel.svg | \n \n \n | \n
\n \n | \nepicgames.svg | \n_includes/icons/simple-icons/epicgames.svg | \n \n \n | \n
\n \n | \nepson.svg | \n_includes/icons/simple-icons/epson.svg | \n \n \n | \n
\n \n | \nesea.svg | \n_includes/icons/simple-icons/esea.svg | \n \n \n | \n
\n \n | \neslint.svg | \n_includes/icons/simple-icons/eslint.svg | \n \n \n | \n
\n \n | \nethereum.svg | \n_includes/icons/simple-icons/ethereum.svg | \n \n \n | \n
\n \n | \netsy.svg | \n_includes/icons/simple-icons/etsy.svg | \n \n \n | \n
\n \n | \neventbrite.svg | \n_includes/icons/simple-icons/eventbrite.svg | \n \n \n | \n
\n \n | \neventstore.svg | \n_includes/icons/simple-icons/eventstore.svg | \n \n \n | \n
\n \n | \nevernote.svg | \n_includes/icons/simple-icons/evernote.svg | \n \n \n | \n
\n \n | \neverplaces.svg | \n_includes/icons/simple-icons/everplaces.svg | \n \n \n | \n
\n \n | \nevry.svg | \n_includes/icons/simple-icons/evry.svg | \n \n \n | \n
\n \n | \nexercism.svg | \n_includes/icons/simple-icons/exercism.svg | \n \n \n | \n
\n \n | \nexpertsexchange.svg | \n_includes/icons/simple-icons/expertsexchange.svg | \n \n \n | \n
\n \n | \nexpo.svg | \n_includes/icons/simple-icons/expo.svg | \n \n \n | \n
\n \n | \neyeem.svg | \n_includes/icons/simple-icons/eyeem.svg | \n \n \n | \n
\n \n | \nf-droid.svg | \n_includes/icons/simple-icons/f-droid.svg | \n \n \n | \n
\n \n | \nf-secure.svg | \n_includes/icons/simple-icons/f-secure.svg | \n \n \n | \n
\n \n | \nfacebook.svg | \n_includes/icons/simple-icons/facebook.svg | \n \n \n | \n
\n \n | \nfaceit.svg | \n_includes/icons/simple-icons/faceit.svg | \n \n \n | \n
\n \n | \nfandango.svg | \n_includes/icons/simple-icons/fandango.svg | \n \n \n | \n
\n \n | \nfandom.svg | \n_includes/icons/simple-icons/fandom.svg | \n \n \n | \n
\n \n | \nfastly.svg | \n_includes/icons/simple-icons/fastly.svg | \n \n \n | \n
\n \n | \nfavro.svg | \n_includes/icons/simple-icons/favro.svg | \n \n \n | \n
\n \n | \nfeathub.svg | \n_includes/icons/simple-icons/feathub.svg | \n \n \n | \n
\n \n | \nfedora.svg | \n_includes/icons/simple-icons/fedora.svg | \n \n \n | \n
\n \n | \nfedramp.svg | \n_includes/icons/simple-icons/fedramp.svg | \n \n \n | \n
\n \n | \nfeedly.svg | \n_includes/icons/simple-icons/feedly.svg | \n \n \n | \n
\n \n | \nferrari.svg | \n_includes/icons/simple-icons/ferrari.svg | \n \n \n | \n
\n \n | \nferrarin-dot-v-dot.svg | \n_includes/icons/simple-icons/ferrarin-dot-v-dot.svg | \n \n \n | \n
\n \n | \nfidoalliance.svg | \n_includes/icons/simple-icons/fidoalliance.svg | \n \n \n | \n
\n \n | \nfifa.svg | \n_includes/icons/simple-icons/fifa.svg | \n \n \n | \n
\n \n | \nfigma.svg | \n_includes/icons/simple-icons/figma.svg | \n \n \n | \n
\n \n | \nfigshare.svg | \n_includes/icons/simple-icons/figshare.svg | \n \n \n | \n
\n \n | \nfila.svg | \n_includes/icons/simple-icons/fila.svg | \n \n \n | \n
\n \n | \nfilezilla.svg | \n_includes/icons/simple-icons/filezilla.svg | \n \n \n | \n
\n \n | \nfirebase.svg | \n_includes/icons/simple-icons/firebase.svg | \n \n \n | \n
\n \n | \nfirst.svg | \n_includes/icons/simple-icons/first.svg | \n \n \n | \n
\n \n | \nfitbit.svg | \n_includes/icons/simple-icons/fitbit.svg | \n \n \n | \n
\n \n | \nfite.svg | \n_includes/icons/simple-icons/fite.svg | \n \n \n | \n
\n \n | \nfiverr.svg | \n_includes/icons/simple-icons/fiverr.svg | \n \n \n | \n
\n \n | \nflask.svg | \n_includes/icons/simple-icons/flask.svg | \n \n \n | \n
\n \n | \nflattr.svg | \n_includes/icons/simple-icons/flattr.svg | \n \n \n | \n
\n \n | \nflickr.svg | \n_includes/icons/simple-icons/flickr.svg | \n \n \n | \n
\n \n | \nflipboard.svg | \n_includes/icons/simple-icons/flipboard.svg | \n \n \n | \n
\n \n | \nfloatplane.svg | \n_includes/icons/simple-icons/floatplane.svg | \n \n \n | \n
\n \n | \nflood.svg | \n_includes/icons/simple-icons/flood.svg | \n \n \n | \n
\n \n | \nfluentd.svg | \n_includes/icons/simple-icons/fluentd.svg | \n \n \n | \n
\n \n | \nflutter.svg | \n_includes/icons/simple-icons/flutter.svg | \n \n \n | \n
\n \n | \nfnac.svg | \n_includes/icons/simple-icons/fnac.svg | \n \n \n | \n
\n \n | \nfontawesome.svg | \n_includes/icons/simple-icons/fontawesome.svg | \n \n \n | \n
\n \n | \nformstack.svg | \n_includes/icons/simple-icons/formstack.svg | \n \n \n | \n
\n \n | \nfortinet.svg | \n_includes/icons/simple-icons/fortinet.svg | \n \n \n | \n
\n \n | \nfossa.svg | \n_includes/icons/simple-icons/fossa.svg | \n \n \n | \n
\n \n | \nfossilscm.svg | \n_includes/icons/simple-icons/fossilscm.svg | \n \n \n | \n
\n \n | \nfoursquare.svg | \n_includes/icons/simple-icons/foursquare.svg | \n \n \n | \n
\n \n | \nframer.svg | \n_includes/icons/simple-icons/framer.svg | \n \n \n | \n
\n \n | \nfreebsd.svg | \n_includes/icons/simple-icons/freebsd.svg | \n \n \n | \n
\n \n | \nfreecodecamp.svg | \n_includes/icons/simple-icons/freecodecamp.svg | \n \n \n | \n
\n \n | \nfreelancer.svg | \n_includes/icons/simple-icons/freelancer.svg | \n \n \n | \n
\n \n | \nfujifilm.svg | \n_includes/icons/simple-icons/fujifilm.svg | \n \n \n | \n
\n \n | \nfujitsu.svg | \n_includes/icons/simple-icons/fujitsu.svg | \n \n \n | \n
\n \n | \nfuraffinity.svg | \n_includes/icons/simple-icons/furaffinity.svg | \n \n \n | \n
\n \n | \nfurrynetwork.svg | \n_includes/icons/simple-icons/furrynetwork.svg | \n \n \n | \n
\n \n | \ngarmin.svg | \n_includes/icons/simple-icons/garmin.svg | \n \n \n | \n
\n \n | \ngatsby.svg | \n_includes/icons/simple-icons/gatsby.svg | \n \n \n | \n
\n \n | \ngauges.svg | \n_includes/icons/simple-icons/gauges.svg | \n \n \n | \n
\n \n | \ngeneralmotors.svg | \n_includes/icons/simple-icons/generalmotors.svg | \n \n \n | \n
\n \n | \ngenius.svg | \n_includes/icons/simple-icons/genius.svg | \n \n \n | \n
\n \n | \ngentoo.svg | \n_includes/icons/simple-icons/gentoo.svg | \n \n \n | \n
\n \n | \ngeocaching.svg | \n_includes/icons/simple-icons/geocaching.svg | \n \n \n | \n
\n \n | \ngerrit.svg | \n_includes/icons/simple-icons/gerrit.svg | \n \n \n | \n
\n \n | \nghost.svg | \n_includes/icons/simple-icons/ghost.svg | \n \n \n | \n
\n \n | \ngimp.svg | \n_includes/icons/simple-icons/gimp.svg | \n \n \n | \n
\n \n | \ngit.svg | \n_includes/icons/simple-icons/git.svg | \n \n \n | \n
\n \n | \ngitea.svg | \n_includes/icons/simple-icons/gitea.svg | \n \n \n | \n
\n \n | \ngithub.svg | \n_includes/icons/simple-icons/github.svg | \n \n \n | \n
\n \n | \ngithubactions.svg | \n_includes/icons/simple-icons/githubactions.svg | \n \n \n | \n
\n \n | \ngitkraken.svg | \n_includes/icons/simple-icons/gitkraken.svg | \n \n \n | \n
\n \n | \ngitlab.svg | \n_includes/icons/simple-icons/gitlab.svg | \n \n \n | \n
\n \n | \ngitpod.svg | \n_includes/icons/simple-icons/gitpod.svg | \n \n \n | \n
\n \n | \ngitter.svg | \n_includes/icons/simple-icons/gitter.svg | \n \n \n | \n
\n \n | \nglassdoor.svg | \n_includes/icons/simple-icons/glassdoor.svg | \n \n \n | \n
\n \n | \nglitch.svg | \n_includes/icons/simple-icons/glitch.svg | \n \n \n | \n
\n \n | \ngmail.svg | \n_includes/icons/simple-icons/gmail.svg | \n \n \n | \n
\n \n | \ngnome.svg | \n_includes/icons/simple-icons/gnome.svg | \n \n \n | \n
\n \n | \ngnu.svg | \n_includes/icons/simple-icons/gnu.svg | \n \n \n | \n
\n \n | \ngnubash.svg | \n_includes/icons/simple-icons/gnubash.svg | \n \n \n | \n
\n \n | \ngnuemacs.svg | \n_includes/icons/simple-icons/gnuemacs.svg | \n \n \n | \n
\n \n | \ngnuicecat.svg | \n_includes/icons/simple-icons/gnuicecat.svg | \n \n \n | \n
\n \n | \ngnuprivacyguard.svg | \n_includes/icons/simple-icons/gnuprivacyguard.svg | \n \n \n | \n
\n \n | \ngnusocial.svg | \n_includes/icons/simple-icons/gnusocial.svg | \n \n \n | \n
\n \n | \ngo.svg | \n_includes/icons/simple-icons/go.svg | \n \n \n | \n
\n \n | \ngodotengine.svg | \n_includes/icons/simple-icons/godotengine.svg | \n \n \n | \n
\n \n | \ngog-dot-com.svg | \n_includes/icons/simple-icons/gog-dot-com.svg | \n \n \n | \n
\n \n | \ngoldenline.svg | \n_includes/icons/simple-icons/goldenline.svg | \n \n \n | \n
\n \n | \ngoodreads.svg | \n_includes/icons/simple-icons/goodreads.svg | \n \n \n | \n
\n \n | \ngoogle.svg | \n_includes/icons/simple-icons/google.svg | \n \n \n | \n
\n \n | \ngoogleads.svg | \n_includes/icons/simple-icons/googleads.svg | \n \n \n | \n
\n \n | \ngoogleanalytics.svg | \n_includes/icons/simple-icons/googleanalytics.svg | \n \n \n | \n
\n \n | \ngoogleassistant.svg | \n_includes/icons/simple-icons/googleassistant.svg | \n \n \n | \n
\n \n | \ngooglecardboard.svg | \n_includes/icons/simple-icons/googlecardboard.svg | \n \n \n | \n
\n \n | \ngooglecast.svg | \n_includes/icons/simple-icons/googlecast.svg | \n \n \n | \n
\n \n | \ngooglechrome.svg | \n_includes/icons/simple-icons/googlechrome.svg | \n \n \n | \n
\n \n | \ngoogleclassroom.svg | \n_includes/icons/simple-icons/googleclassroom.svg | \n \n \n | \n
\n \n | \ngooglecloud.svg | \n_includes/icons/simple-icons/googlecloud.svg | \n \n \n | \n
\n \n | \ngoogledrive.svg | \n_includes/icons/simple-icons/googledrive.svg | \n \n \n | \n
\n \n | \ngoogleearth.svg | \n_includes/icons/simple-icons/googleearth.svg | \n \n \n | \n
\n \n | \ngooglefit.svg | \n_includes/icons/simple-icons/googlefit.svg | \n \n \n | \n
\n \n | \ngooglehangouts.svg | \n_includes/icons/simple-icons/googlehangouts.svg | \n \n \n | \n
\n \n | \ngooglehangoutschat.svg | \n_includes/icons/simple-icons/googlehangoutschat.svg | \n \n \n | \n
\n \n | \ngooglekeep.svg | \n_includes/icons/simple-icons/googlekeep.svg | \n \n \n | \n
\n \n | \ngooglelens.svg | \n_includes/icons/simple-icons/googlelens.svg | \n \n \n | \n
\n \n | \ngooglemaps.svg | \n_includes/icons/simple-icons/googlemaps.svg | \n \n \n | \n
\n \n | \ngooglemessages.svg | \n_includes/icons/simple-icons/googlemessages.svg | \n \n \n | \n
\n \n | \ngooglemybusiness.svg | \n_includes/icons/simple-icons/googlemybusiness.svg | \n \n \n | \n
\n \n | \ngooglenearby.svg | \n_includes/icons/simple-icons/googlenearby.svg | \n \n \n | \n
\n \n | \ngooglepay.svg | \n_includes/icons/simple-icons/googlepay.svg | \n \n \n | \n
\n \n | \ngoogleplay.svg | \n_includes/icons/simple-icons/googleplay.svg | \n \n \n | \n
\n \n | \ngooglepodcasts.svg | \n_includes/icons/simple-icons/googlepodcasts.svg | \n \n \n | \n
\n \n | \ngooglescholar.svg | \n_includes/icons/simple-icons/googlescholar.svg | \n \n \n | \n
\n \n | \ngooglesearchconsole.svg | \n_includes/icons/simple-icons/googlesearchconsole.svg | \n \n \n | \n
\n \n | \ngooglesheets.svg | \n_includes/icons/simple-icons/googlesheets.svg | \n \n \n | \n
\n \n | \ngooglestreetview.svg | \n_includes/icons/simple-icons/googlestreetview.svg | \n \n \n | \n
\n \n | \ngoogletagmanager.svg | \n_includes/icons/simple-icons/googletagmanager.svg | \n \n \n | \n
\n \n | \ngoogletranslate.svg | \n_includes/icons/simple-icons/googletranslate.svg | \n \n \n | \n
\n \n | \ngov-dot-uk.svg | \n_includes/icons/simple-icons/gov-dot-uk.svg | \n \n \n | \n
\n \n | \ngradle.svg | \n_includes/icons/simple-icons/gradle.svg | \n \n \n | \n
\n \n | \ngrafana.svg | \n_includes/icons/simple-icons/grafana.svg | \n \n \n | \n
\n \n | \ngraphcool.svg | \n_includes/icons/simple-icons/graphcool.svg | \n \n \n | \n
\n \n | \ngraphql.svg | \n_includes/icons/simple-icons/graphql.svg | \n \n \n | \n
\n \n | \ngrav.svg | \n_includes/icons/simple-icons/grav.svg | \n \n \n | \n
\n \n | \ngravatar.svg | \n_includes/icons/simple-icons/gravatar.svg | \n \n \n | \n
\n \n | \ngreenkeeper.svg | \n_includes/icons/simple-icons/greenkeeper.svg | \n \n \n | \n
\n \n | \ngreensock.svg | \n_includes/icons/simple-icons/greensock.svg | \n \n \n | \n
\n \n | \ngroovy.svg | \n_includes/icons/simple-icons/groovy.svg | \n \n \n | \n
\n \n | \ngroupon.svg | \n_includes/icons/simple-icons/groupon.svg | \n \n \n | \n
\n \n | \ngrunt.svg | \n_includes/icons/simple-icons/grunt.svg | \n \n \n | \n
\n \n | \ngulp.svg | \n_includes/icons/simple-icons/gulp.svg | \n \n \n | \n
\n \n | \ngumroad.svg | \n_includes/icons/simple-icons/gumroad.svg | \n \n \n | \n
\n \n | \ngumtree.svg | \n_includes/icons/simple-icons/gumtree.svg | \n \n \n | \n
\n \n | \ngutenberg.svg | \n_includes/icons/simple-icons/gutenberg.svg | \n \n \n | \n
\n \n | \nhabr.svg | \n_includes/icons/simple-icons/habr.svg | \n \n \n | \n
\n \n | \nhackaday.svg | \n_includes/icons/simple-icons/hackaday.svg | \n \n \n | \n
\n \n | \nhackerearth.svg | \n_includes/icons/simple-icons/hackerearth.svg | \n \n \n | \n
\n \n | \nhackerone.svg | \n_includes/icons/simple-icons/hackerone.svg | \n \n \n | \n
\n \n | \nhackerrank.svg | \n_includes/icons/simple-icons/hackerrank.svg | \n \n \n | \n
\n \n | \nhackhands.svg | \n_includes/icons/simple-icons/hackhands.svg | \n \n \n | \n
\n \n | \nhackster.svg | \n_includes/icons/simple-icons/hackster.svg | \n \n \n | \n
\n \n | \nhappycow.svg | \n_includes/icons/simple-icons/happycow.svg | \n \n \n | \n
\n \n | \nharbor.svg | \n_includes/icons/simple-icons/harbor.svg | \n \n \n | \n
\n \n | \nhashnode.svg | \n_includes/icons/simple-icons/hashnode.svg | \n \n \n | \n
\n \n | \nhaskell.svg | \n_includes/icons/simple-icons/haskell.svg | \n \n \n | \n
\n \n | \nhatenabookmark.svg | \n_includes/icons/simple-icons/hatenabookmark.svg | \n \n \n | \n
\n \n | \nhaveibeenpwned.svg | \n_includes/icons/simple-icons/haveibeenpwned.svg | \n \n \n | \n
\n \n | \nhaxe.svg | \n_includes/icons/simple-icons/haxe.svg | \n \n \n | \n
\n \n | \nhellofresh.svg | \n_includes/icons/simple-icons/hellofresh.svg | \n \n \n | \n
\n \n | \nhelm.svg | \n_includes/icons/simple-icons/helm.svg | \n \n \n | \n
\n \n | \nhere.svg | \n_includes/icons/simple-icons/here.svg | \n \n \n | \n
\n \n | \nheroku.svg | \n_includes/icons/simple-icons/heroku.svg | \n \n \n | \n
\n \n | \nhexo.svg | \n_includes/icons/simple-icons/hexo.svg | \n \n \n | \n
\n \n | \nhighly.svg | \n_includes/icons/simple-icons/highly.svg | \n \n \n | \n
\n \n | \nhipchat.svg | \n_includes/icons/simple-icons/hipchat.svg | \n \n \n | \n
\n \n | \nhitachi.svg | \n_includes/icons/simple-icons/hitachi.svg | \n \n \n | \n
\n \n | \nhive.svg | \n_includes/icons/simple-icons/hive.svg | \n \n \n | \n
\n \n | \nhockeyapp.svg | \n_includes/icons/simple-icons/hockeyapp.svg | \n \n \n | \n
\n \n | \nhomeassistant.svg | \n_includes/icons/simple-icons/homeassistant.svg | \n \n \n | \n
\n \n | \nhomify.svg | \n_includes/icons/simple-icons/homify.svg | \n \n \n | \n
\n \n | \nhootsuite.svg | \n_includes/icons/simple-icons/hootsuite.svg | \n \n \n | \n
\n \n | \nhoudini.svg | \n_includes/icons/simple-icons/houdini.svg | \n \n \n | \n
\n \n | \nhouzz.svg | \n_includes/icons/simple-icons/houzz.svg | \n \n \n | \n
\n \n | \nhp.svg | \n_includes/icons/simple-icons/hp.svg | \n \n \n | \n
\n \n | \nhtml5.svg | \n_includes/icons/simple-icons/html5.svg | \n \n \n | \n
\n \n | \nhtmlacademy.svg | \n_includes/icons/simple-icons/htmlacademy.svg | \n \n \n | \n
\n \n | \nhuawei.svg | \n_includes/icons/simple-icons/huawei.svg | \n \n \n | \n
\n \n | \nhubspot.svg | \n_includes/icons/simple-icons/hubspot.svg | \n \n \n | \n
\n \n | \nhugo.svg | \n_includes/icons/simple-icons/hugo.svg | \n \n \n | \n
\n \n | \nhulu.svg | \n_includes/icons/simple-icons/hulu.svg | \n \n \n | \n
\n \n | \nhumblebundle.svg | \n_includes/icons/simple-icons/humblebundle.svg | \n \n \n | \n
\n \n | \nhurriyetemlak.svg | \n_includes/icons/simple-icons/hurriyetemlak.svg | \n \n \n | \n
\n \n | \nhypothesis.svg | \n_includes/icons/simple-icons/hypothesis.svg | \n \n \n | \n
\n \n | \niata.svg | \n_includes/icons/simple-icons/iata.svg | \n \n \n | \n
\n \n | \nibm.svg | \n_includes/icons/simple-icons/ibm.svg | \n \n \n | \n
\n \n | \nicloud.svg | \n_includes/icons/simple-icons/icloud.svg | \n \n \n | \n
\n \n | \nicomoon.svg | \n_includes/icons/simple-icons/icomoon.svg | \n \n \n | \n
\n \n | \nicon.svg | \n_includes/icons/simple-icons/icon.svg | \n \n \n | \n
\n \n | \niconify.svg | \n_includes/icons/simple-icons/iconify.svg | \n \n \n | \n
\n \n | \niconjar.svg | \n_includes/icons/simple-icons/iconjar.svg | \n \n \n | \n
\n \n | \nicq.svg | \n_includes/icons/simple-icons/icq.svg | \n \n \n | \n
\n \n | \nideal.svg | \n_includes/icons/simple-icons/ideal.svg | \n \n \n | \n
\n \n | \nifixit.svg | \n_includes/icons/simple-icons/ifixit.svg | \n \n \n | \n
\n \n | \nifood.svg | \n_includes/icons/simple-icons/ifood.svg | \n \n \n | \n
\n \n | \nimdb.svg | \n_includes/icons/simple-icons/imdb.svg | \n \n \n | \n
\n \n | \nimgur.svg | \n_includes/icons/simple-icons/imgur.svg | \n \n \n | \n
\n \n | \nindeed.svg | \n_includes/icons/simple-icons/indeed.svg | \n \n \n | \n
\n \n | \ninfluxdb.svg | \n_includes/icons/simple-icons/influxdb.svg | \n \n \n | \n
\n \n | \ninkscape.svg | \n_includes/icons/simple-icons/inkscape.svg | \n \n \n | \n
\n \n | \ninstacart.svg | \n_includes/icons/simple-icons/instacart.svg | \n \n \n | \n
\n \n | \ninstagram.svg | \n_includes/icons/simple-icons/instagram.svg | \n \n \n | \n
\n \n | \ninstapaper.svg | \n_includes/icons/simple-icons/instapaper.svg | \n \n \n | \n
\n \n | \nintel.svg | \n_includes/icons/simple-icons/intel.svg | \n \n \n | \n
\n \n | \nintellijidea.svg | \n_includes/icons/simple-icons/intellijidea.svg | \n \n \n | \n
\n \n | \nintercom.svg | \n_includes/icons/simple-icons/intercom.svg | \n \n \n | \n
\n \n | \ninternetarchive.svg | \n_includes/icons/simple-icons/internetarchive.svg | \n \n \n | \n
\n \n | \ninternetexplorer.svg | \n_includes/icons/simple-icons/internetexplorer.svg | \n \n \n | \n
\n \n | \ninvision.svg | \n_includes/icons/simple-icons/invision.svg | \n \n \n | \n
\n \n | \ninvoiceninja.svg | \n_includes/icons/simple-icons/invoiceninja.svg | \n \n \n | \n
\n \n | \niobroker.svg | \n_includes/icons/simple-icons/iobroker.svg | \n \n \n | \n
\n \n | \nionic.svg | \n_includes/icons/simple-icons/ionic.svg | \n \n \n | \n
\n \n | \nios.svg | \n_includes/icons/simple-icons/ios.svg | \n \n \n | \n
\n \n | \nipfs.svg | \n_includes/icons/simple-icons/ipfs.svg | \n \n \n | \n
\n \n | \nissuu.svg | \n_includes/icons/simple-icons/issuu.svg | \n \n \n | \n
\n \n | \nitch-dot-io.svg | \n_includes/icons/simple-icons/itch-dot-io.svg | \n \n \n | \n
\n \n | \nitunes.svg | \n_includes/icons/simple-icons/itunes.svg | \n \n \n | \n
\n \n | \njabber.svg | \n_includes/icons/simple-icons/jabber.svg | \n \n \n | \n
\n \n | \njava.svg | \n_includes/icons/simple-icons/java.svg | \n \n \n | \n
\n \n | \njavascript.svg | \n_includes/icons/simple-icons/javascript.svg | \n \n \n | \n
\n \n | \njcb.svg | \n_includes/icons/simple-icons/jcb.svg | \n \n \n | \n
\n \n | \njekyll.svg | \n_includes/icons/simple-icons/jekyll.svg | \n \n \n | \n
\n \n | \njenkins.svg | \n_includes/icons/simple-icons/jenkins.svg | \n \n \n | \n
\n \n | \njenkinsx.svg | \n_includes/icons/simple-icons/jenkinsx.svg | \n \n \n | \n
\n \n | \njest.svg | \n_includes/icons/simple-icons/jest.svg | \n \n \n | \n
\n \n | \njet.svg | \n_includes/icons/simple-icons/jet.svg | \n \n \n | \n
\n \n | \njetbrains.svg | \n_includes/icons/simple-icons/jetbrains.svg | \n \n \n | \n
\n \n | \njinja.svg | \n_includes/icons/simple-icons/jinja.svg | \n \n \n | \n
\n \n | \njira.svg | \n_includes/icons/simple-icons/jira.svg | \n \n \n | \n
\n \n | \njoomla.svg | \n_includes/icons/simple-icons/joomla.svg | \n \n \n | \n
\n \n | \njquery.svg | \n_includes/icons/simple-icons/jquery.svg | \n \n \n | \n
\n \n | \njsdelivr.svg | \n_includes/icons/simple-icons/jsdelivr.svg | \n \n \n | \n
\n \n | \njsfiddle.svg | \n_includes/icons/simple-icons/jsfiddle.svg | \n \n \n | \n
\n \n | \njson.svg | \n_includes/icons/simple-icons/json.svg | \n \n \n | \n
\n \n | \njsonwebtokens.svg | \n_includes/icons/simple-icons/jsonwebtokens.svg | \n \n \n | \n
\n \n | \njupyter.svg | \n_includes/icons/simple-icons/jupyter.svg | \n \n \n | \n
\n \n | \njusteat.svg | \n_includes/icons/simple-icons/justeat.svg | \n \n \n | \n
\n \n | \njustgiving.svg | \n_includes/icons/simple-icons/justgiving.svg | \n \n \n | \n
\n \n | \nkaggle.svg | \n_includes/icons/simple-icons/kaggle.svg | \n \n \n | \n
\n \n | \nkaios.svg | \n_includes/icons/simple-icons/kaios.svg | \n \n \n | \n
\n \n | \nkaspersky.svg | \n_includes/icons/simple-icons/kaspersky.svg | \n \n \n | \n
\n \n | \nkatana.svg | \n_includes/icons/simple-icons/katana.svg | \n \n \n | \n
\n \n | \nkeepassxc.svg | \n_includes/icons/simple-icons/keepassxc.svg | \n \n \n | \n
\n \n | \nkentico.svg | \n_includes/icons/simple-icons/kentico.svg | \n \n \n | \n
\n \n | \nkeras.svg | \n_includes/icons/simple-icons/keras.svg | \n \n \n | \n
\n \n | \nkeybase.svg | \n_includes/icons/simple-icons/keybase.svg | \n \n \n | \n
\n \n | \nkeycdn.svg | \n_includes/icons/simple-icons/keycdn.svg | \n \n \n | \n
\n \n | \nkhanacademy.svg | \n_includes/icons/simple-icons/khanacademy.svg | \n \n \n | \n
\n \n | \nkhronosgroup.svg | \n_includes/icons/simple-icons/khronosgroup.svg | \n \n \n | \n
\n \n | \nkibana.svg | \n_includes/icons/simple-icons/kibana.svg | \n \n \n | \n
\n \n | \nkickstarter.svg | \n_includes/icons/simple-icons/kickstarter.svg | \n \n \n | \n
\n \n | \nkik.svg | \n_includes/icons/simple-icons/kik.svg | \n \n \n | \n
\n \n | \nkirby.svg | \n_includes/icons/simple-icons/kirby.svg | \n \n \n | \n
\n \n | \nklm.svg | \n_includes/icons/simple-icons/klm.svg | \n \n \n | \n
\n \n | \nklout.svg | \n_includes/icons/simple-icons/klout.svg | \n \n \n | \n
\n \n | \nknown.svg | \n_includes/icons/simple-icons/known.svg | \n \n \n | \n
\n \n | \nko-fi.svg | \n_includes/icons/simple-icons/ko-fi.svg | \n \n \n | \n
\n \n | \nkodi.svg | \n_includes/icons/simple-icons/kodi.svg | \n \n \n | \n
\n \n | \nkoding.svg | \n_includes/icons/simple-icons/koding.svg | \n \n \n | \n
\n \n | \nkotlin.svg | \n_includes/icons/simple-icons/kotlin.svg | \n \n \n | \n
\n \n | \nkrita.svg | \n_includes/icons/simple-icons/krita.svg | \n \n \n | \n
\n \n | \nkubernetes.svg | \n_includes/icons/simple-icons/kubernetes.svg | \n \n \n | \n
\n \n | \nkyocera.svg | \n_includes/icons/simple-icons/kyocera.svg | \n \n \n | \n
\n \n | \nlabview.svg | \n_includes/icons/simple-icons/labview.svg | \n \n \n | \n
\n \n | \nlaravel.svg | \n_includes/icons/simple-icons/laravel.svg | \n \n \n | \n
\n \n | \nlaravelhorizon.svg | \n_includes/icons/simple-icons/laravelhorizon.svg | \n \n \n | \n
\n \n | \nlaravelnova.svg | \n_includes/icons/simple-icons/laravelnova.svg | \n \n \n | \n
\n \n | \nlast-dot-fm.svg | \n_includes/icons/simple-icons/last-dot-fm.svg | \n \n \n | \n
\n \n | \nlastpass.svg | \n_includes/icons/simple-icons/lastpass.svg | \n \n \n | \n
\n \n | \nlatex.svg | \n_includes/icons/simple-icons/latex.svg | \n \n \n | \n
\n \n | \nlaunchpad.svg | \n_includes/icons/simple-icons/launchpad.svg | \n \n \n | \n
\n \n | \nleetcode.svg | \n_includes/icons/simple-icons/leetcode.svg | \n \n \n | \n
\n \n | \nlenovo.svg | \n_includes/icons/simple-icons/lenovo.svg | \n \n \n | \n
\n \n | \nletsencrypt.svg | \n_includes/icons/simple-icons/letsencrypt.svg | \n \n \n | \n
\n \n | \nletterboxd.svg | \n_includes/icons/simple-icons/letterboxd.svg | \n \n \n | \n
\n \n | \nlg.svg | \n_includes/icons/simple-icons/lg.svg | \n \n \n | \n
\n \n | \nlgtm.svg | \n_includes/icons/simple-icons/lgtm.svg | \n \n \n | \n
\n \n | \nliberapay.svg | \n_includes/icons/simple-icons/liberapay.svg | \n \n \n | \n
\n \n | \nlibrarything.svg | \n_includes/icons/simple-icons/librarything.svg | \n \n \n | \n
\n \n | \nlibreoffice.svg | \n_includes/icons/simple-icons/libreoffice.svg | \n \n \n | \n
\n \n | \nlighthouse.svg | \n_includes/icons/simple-icons/lighthouse.svg | \n \n \n | \n
\n \n | \nline.svg | \n_includes/icons/simple-icons/line.svg | \n \n \n | \n
\n \n | \nlineageos.svg | \n_includes/icons/simple-icons/lineageos.svg | \n \n \n | \n
\n \n | \nlinewebtoon.svg | \n_includes/icons/simple-icons/linewebtoon.svg | \n \n \n | \n
\n \n | \nlinkedin.svg | \n_includes/icons/simple-icons/linkedin.svg | \n \n \n | \n
\n \n | \nlinode.svg | \n_includes/icons/simple-icons/linode.svg | \n \n \n | \n
\n \n | \nlinux.svg | \n_includes/icons/simple-icons/linux.svg | \n \n \n | \n
\n \n | \nlinuxfoundation.svg | \n_includes/icons/simple-icons/linuxfoundation.svg | \n \n \n | \n
\n \n | \nlinuxmint.svg | \n_includes/icons/simple-icons/linuxmint.svg | \n \n \n | \n
\n \n | \nlitecoin.svg | \n_includes/icons/simple-icons/litecoin.svg | \n \n \n | \n
\n \n | \nlivejournal.svg | \n_includes/icons/simple-icons/livejournal.svg | \n \n \n | \n
\n \n | \nlivestream.svg | \n_includes/icons/simple-icons/livestream.svg | \n \n \n | \n
\n \n | \nllvm.svg | \n_includes/icons/simple-icons/llvm.svg | \n \n \n | \n
\n \n | \nlmms.svg | \n_includes/icons/simple-icons/lmms.svg | \n \n \n | \n
\n \n | \nlogmein.svg | \n_includes/icons/simple-icons/logmein.svg | \n \n \n | \n
\n \n | \nlogstash.svg | \n_includes/icons/simple-icons/logstash.svg | \n \n \n | \n
\n \n | \nloop.svg | \n_includes/icons/simple-icons/loop.svg | \n \n \n | \n
\n \n | \nlua.svg | \n_includes/icons/simple-icons/lua.svg | \n \n \n | \n
\n \n | \nlufthansa.svg | \n_includes/icons/simple-icons/lufthansa.svg | \n \n \n | \n
\n \n | \nlumen.svg | \n_includes/icons/simple-icons/lumen.svg | \n \n \n | \n
\n \n | \nlyft.svg | \n_includes/icons/simple-icons/lyft.svg | \n \n \n | \n
\n \n | \nmaas.svg | \n_includes/icons/simple-icons/maas.svg | \n \n \n | \n
\n \n | \nmacys.svg | \n_includes/icons/simple-icons/macys.svg | \n \n \n | \n
\n \n | \nmagento.svg | \n_includes/icons/simple-icons/magento.svg | \n \n \n | \n
\n \n | \nmagisk.svg | \n_includes/icons/simple-icons/magisk.svg | \n \n \n | \n
\n \n | \nmail-dot-ru.svg | \n_includes/icons/simple-icons/mail-dot-ru.svg | \n \n \n | \n
\n \n | \nmailchimp.svg | \n_includes/icons/simple-icons/mailchimp.svg | \n \n \n | \n
\n \n | \nmakerbot.svg | \n_includes/icons/simple-icons/makerbot.svg | \n \n \n | \n
\n \n | \nmanageiq.svg | \n_includes/icons/simple-icons/manageiq.svg | \n \n \n | \n
\n \n | \nmanjaro.svg | \n_includes/icons/simple-icons/manjaro.svg | \n \n \n | \n
\n \n | \nmapbox.svg | \n_includes/icons/simple-icons/mapbox.svg | \n \n \n | \n
\n \n | \nmariadb.svg | \n_includes/icons/simple-icons/mariadb.svg | \n \n \n | \n
\n \n | \nmariadbfoundation.svg | \n_includes/icons/simple-icons/mariadbfoundation.svg | \n \n \n | \n
\n \n | \nmarkdown.svg | \n_includes/icons/simple-icons/markdown.svg | \n \n \n | \n
\n \n | \nmarketo.svg | \n_includes/icons/simple-icons/marketo.svg | \n \n \n | \n
\n \n | \nmastercard.svg | \n_includes/icons/simple-icons/mastercard.svg | \n \n \n | \n
\n \n | \nmastodon.svg | \n_includes/icons/simple-icons/mastodon.svg | \n \n \n | \n
\n \n | \nmaterial-ui.svg | \n_includes/icons/simple-icons/material-ui.svg | \n \n \n | \n
\n \n | \nmaterialdesign.svg | \n_includes/icons/simple-icons/materialdesign.svg | \n \n \n | \n
\n \n | \nmaterialdesignicons.svg | \n_includes/icons/simple-icons/materialdesignicons.svg | \n \n \n | \n
\n \n | \nmathworks.svg | \n_includes/icons/simple-icons/mathworks.svg | \n \n \n | \n
\n \n | \nmatrix.svg | \n_includes/icons/simple-icons/matrix.svg | \n \n \n | \n
\n \n | \nmattermost.svg | \n_includes/icons/simple-icons/mattermost.svg | \n \n \n | \n
\n \n | \nmatternet.svg | \n_includes/icons/simple-icons/matternet.svg | \n \n \n | \n
\n \n | \nmcafee.svg | \n_includes/icons/simple-icons/mcafee.svg | \n \n \n | \n
\n \n | \nmdnwebdocs.svg | \n_includes/icons/simple-icons/mdnwebdocs.svg | \n \n \n | \n
\n \n | \nmediafire.svg | \n_includes/icons/simple-icons/mediafire.svg | \n \n \n | \n
\n \n | \nmediatemple.svg | \n_includes/icons/simple-icons/mediatemple.svg | \n \n \n | \n
\n \n | \nmedium.svg | \n_includes/icons/simple-icons/medium.svg | \n \n \n | \n
\n \n | \nmeetup.svg | \n_includes/icons/simple-icons/meetup.svg | \n \n \n | \n
\n \n | \nmega.svg | \n_includes/icons/simple-icons/mega.svg | \n \n \n | \n
\n \n | \nmendeley.svg | \n_includes/icons/simple-icons/mendeley.svg | \n \n \n | \n
\n \n | \nmercedes.svg | \n_includes/icons/simple-icons/mercedes.svg | \n \n \n | \n
\n \n | \nmessenger.svg | \n_includes/icons/simple-icons/messenger.svg | \n \n \n | \n
\n \n | \nmeteor.svg | \n_includes/icons/simple-icons/meteor.svg | \n \n \n | \n
\n \n | \nmicro-dot-blog.svg | \n_includes/icons/simple-icons/micro-dot-blog.svg | \n \n \n | \n
\n \n | \nmicrobit.svg | \n_includes/icons/simple-icons/microbit.svg | \n \n \n | \n
\n \n | \nmicrogenetics.svg | \n_includes/icons/simple-icons/microgenetics.svg | \n \n \n | \n
\n \n | \nmicrosoft.svg | \n_includes/icons/simple-icons/microsoft.svg | \n \n \n | \n
\n \n | \nmicrosoftaccess.svg | \n_includes/icons/simple-icons/microsoftaccess.svg | \n \n \n | \n
\n \n | \nmicrosoftazure.svg | \n_includes/icons/simple-icons/microsoftazure.svg | \n \n \n | \n
\n \n | \nmicrosoftedge.svg | \n_includes/icons/simple-icons/microsoftedge.svg | \n \n \n | \n
\n \n | \nmicrosoftexcel.svg | \n_includes/icons/simple-icons/microsoftexcel.svg | \n \n \n | \n
\n \n | \nmicrosoftoffice.svg | \n_includes/icons/simple-icons/microsoftoffice.svg | \n \n \n | \n
\n \n | \nmicrosoftonedrive.svg | \n_includes/icons/simple-icons/microsoftonedrive.svg | \n \n \n | \n
\n \n | \nmicrosoftonenote.svg | \n_includes/icons/simple-icons/microsoftonenote.svg | \n \n \n | \n
\n \n | \nmicrosoftoutlook.svg | \n_includes/icons/simple-icons/microsoftoutlook.svg | \n \n \n | \n
\n \n | \nmicrosoftpowerpoint.svg | \n_includes/icons/simple-icons/microsoftpowerpoint.svg | \n \n \n | \n
\n \n | \nmicrosoftsqlserver.svg | \n_includes/icons/simple-icons/microsoftsqlserver.svg | \n \n \n | \n
\n \n | \nmicrosoftteams.svg | \n_includes/icons/simple-icons/microsoftteams.svg | \n \n \n | \n
\n \n | \nmicrosoftword.svg | \n_includes/icons/simple-icons/microsoftword.svg | \n \n \n | \n
\n \n | \nmicrostrategy.svg | \n_includes/icons/simple-icons/microstrategy.svg | \n \n \n | \n
\n \n | \nmidi.svg | \n_includes/icons/simple-icons/midi.svg | \n \n \n | \n
\n \n | \nminds.svg | \n_includes/icons/simple-icons/minds.svg | \n \n \n | \n
\n \n | \nminetest.svg | \n_includes/icons/simple-icons/minetest.svg | \n \n \n | \n
\n \n | \nminutemailer.svg | \n_includes/icons/simple-icons/minutemailer.svg | \n \n \n | \n
\n \n | \nmitsubishi.svg | \n_includes/icons/simple-icons/mitsubishi.svg | \n \n \n | \n
\n \n | \nmix.svg | \n_includes/icons/simple-icons/mix.svg | \n \n \n | \n
\n \n | \nmixcloud.svg | \n_includes/icons/simple-icons/mixcloud.svg | \n \n \n | \n
\n \n | \nmixer.svg | \n_includes/icons/simple-icons/mixer.svg | \n \n \n | \n
\n \n | \nmocha.svg | \n_includes/icons/simple-icons/mocha.svg | \n \n \n | \n
\n \n | \nmojang.svg | \n_includes/icons/simple-icons/mojang.svg | \n \n \n | \n
\n \n | \nmonero.svg | \n_includes/icons/simple-icons/monero.svg | \n \n \n | \n
\n \n | \nmongodb.svg | \n_includes/icons/simple-icons/mongodb.svg | \n \n \n | \n
\n \n | \nmonkeytie.svg | \n_includes/icons/simple-icons/monkeytie.svg | \n \n \n | \n
\n \n | \nmonogram.svg | \n_includes/icons/simple-icons/monogram.svg | \n \n \n | \n
\n \n | \nmonster.svg | \n_includes/icons/simple-icons/monster.svg | \n \n \n | \n
\n \n | \nmonzo.svg | \n_includes/icons/simple-icons/monzo.svg | \n \n \n | \n
\n \n | \nmoo.svg | \n_includes/icons/simple-icons/moo.svg | \n \n \n | \n
\n \n | \nmozilla.svg | \n_includes/icons/simple-icons/mozilla.svg | \n \n \n | \n
\n \n | \nmozillafirefox.svg | \n_includes/icons/simple-icons/mozillafirefox.svg | \n \n \n | \n
\n \n | \nmusescore.svg | \n_includes/icons/simple-icons/musescore.svg | \n \n \n | \n
\n \n | \nmxlinux.svg | \n_includes/icons/simple-icons/mxlinux.svg | \n \n \n | \n
\n \n | \nmyspace.svg | \n_includes/icons/simple-icons/myspace.svg | \n \n \n | \n
\n \n | \nmysql.svg | \n_includes/icons/simple-icons/mysql.svg | \n \n \n | \n
\n \n | \nnativescript.svg | \n_includes/icons/simple-icons/nativescript.svg | \n \n \n | \n
\n \n | \nndr.svg | \n_includes/icons/simple-icons/ndr.svg | \n \n \n | \n
\n \n | \nnec.svg | \n_includes/icons/simple-icons/nec.svg | \n \n \n | \n
\n \n | \nneo4j.svg | \n_includes/icons/simple-icons/neo4j.svg | \n \n \n | \n
\n \n | \nneovim.svg | \n_includes/icons/simple-icons/neovim.svg | \n \n \n | \n
\n \n | \nnetapp.svg | \n_includes/icons/simple-icons/netapp.svg | \n \n \n | \n
\n \n | \nnetflix.svg | \n_includes/icons/simple-icons/netflix.svg | \n \n \n | \n
\n \n | \nnetlify.svg | \n_includes/icons/simple-icons/netlify.svg | \n \n \n | \n
\n \n | \nnewyorktimes.svg | \n_includes/icons/simple-icons/newyorktimes.svg | \n \n \n | \n
\n \n | \nnext-dot-js.svg | \n_includes/icons/simple-icons/next-dot-js.svg | \n \n \n | \n
\n \n | \nnextcloud.svg | \n_includes/icons/simple-icons/nextcloud.svg | \n \n \n | \n
\n \n | \nnextdoor.svg | \n_includes/icons/simple-icons/nextdoor.svg | \n \n \n | \n
\n \n | \nnfc.svg | \n_includes/icons/simple-icons/nfc.svg | \n \n \n | \n
\n \n | \nnginx.svg | \n_includes/icons/simple-icons/nginx.svg | \n \n \n | \n
\n \n | \nnim.svg | \n_includes/icons/simple-icons/nim.svg | \n \n \n | \n
\n \n | \nnintendo.svg | \n_includes/icons/simple-icons/nintendo.svg | \n \n \n | \n
\n \n | \nnintendo3ds.svg | \n_includes/icons/simple-icons/nintendo3ds.svg | \n \n \n | \n
\n \n | \nnintendogamecube.svg | \n_includes/icons/simple-icons/nintendogamecube.svg | \n \n \n | \n
\n \n | \nnintendoswitch.svg | \n_includes/icons/simple-icons/nintendoswitch.svg | \n \n \n | \n
\n \n | \nnixos.svg | \n_includes/icons/simple-icons/nixos.svg | \n \n \n | \n
\n \n | \nnode-dot-js.svg | \n_includes/icons/simple-icons/node-dot-js.svg | \n \n \n | \n
\n \n | \nnode-red.svg | \n_includes/icons/simple-icons/node-red.svg | \n \n \n | \n
\n \n | \nnodemon.svg | \n_includes/icons/simple-icons/nodemon.svg | \n \n \n | \n
\n \n | \nnokia.svg | \n_includes/icons/simple-icons/nokia.svg | \n \n \n | \n
\n \n | \nnotion.svg | \n_includes/icons/simple-icons/notion.svg | \n \n \n | \n
\n \n | \nnotist.svg | \n_includes/icons/simple-icons/notist.svg | \n \n \n | \n
\n \n | \nnpm.svg | \n_includes/icons/simple-icons/npm.svg | \n \n \n | \n
\n \n | \nnucleo.svg | \n_includes/icons/simple-icons/nucleo.svg | \n \n \n | \n
\n \n | \nnuget.svg | \n_includes/icons/simple-icons/nuget.svg | \n \n \n | \n
\n \n | \nnuke.svg | \n_includes/icons/simple-icons/nuke.svg | \n \n \n | \n
\n \n | \nnutanix.svg | \n_includes/icons/simple-icons/nutanix.svg | \n \n \n | \n
\n \n | \nnuxt-dot-js.svg | \n_includes/icons/simple-icons/nuxt-dot-js.svg | \n \n \n | \n
\n \n | \nnvidia.svg | \n_includes/icons/simple-icons/nvidia.svg | \n \n \n | \n
\n \n | \nobsstudio.svg | \n_includes/icons/simple-icons/obsstudio.svg | \n \n \n | \n
\n \n | \nocaml.svg | \n_includes/icons/simple-icons/ocaml.svg | \n \n \n | \n
\n \n | \noctave.svg | \n_includes/icons/simple-icons/octave.svg | \n \n \n | \n
\n \n | \noctopusdeploy.svg | \n_includes/icons/simple-icons/octopusdeploy.svg | \n \n \n | \n
\n \n | \noculus.svg | \n_includes/icons/simple-icons/oculus.svg | \n \n \n | \n
\n \n | \nodnoklassniki.svg | \n_includes/icons/simple-icons/odnoklassniki.svg | \n \n \n | \n
\n \n | \nonstar.svg | \n_includes/icons/simple-icons/onstar.svg | \n \n \n | \n
\n \n | \nopel.svg | \n_includes/icons/simple-icons/opel.svg | \n \n \n | \n
\n \n | \nopenaccess.svg | \n_includes/icons/simple-icons/openaccess.svg | \n \n \n | \n
\n \n | \nopenapiinitiative.svg | \n_includes/icons/simple-icons/openapiinitiative.svg | \n \n \n | \n
\n \n | \nopenbsd.svg | \n_includes/icons/simple-icons/openbsd.svg | \n \n \n | \n
\n \n | \nopencollective.svg | \n_includes/icons/simple-icons/opencollective.svg | \n \n \n | \n
\n \n | \nopencontainersinitiative.svg | \n_includes/icons/simple-icons/opencontainersinitiative.svg | \n \n \n | \n
\n \n | \nopengl.svg | \n_includes/icons/simple-icons/opengl.svg | \n \n \n | \n
\n \n | \nopenid.svg | \n_includes/icons/simple-icons/openid.svg | \n \n \n | \n
\n \n | \nopensourceinitiative.svg | \n_includes/icons/simple-icons/opensourceinitiative.svg | \n \n \n | \n
\n \n | \nopenssl.svg | \n_includes/icons/simple-icons/openssl.svg | \n \n \n | \n
\n \n | \nopenstreetmap.svg | \n_includes/icons/simple-icons/openstreetmap.svg | \n \n \n | \n
\n \n | \nopensuse.svg | \n_includes/icons/simple-icons/opensuse.svg | \n \n \n | \n
\n \n | \nopenvpn.svg | \n_includes/icons/simple-icons/openvpn.svg | \n \n \n | \n
\n \n | \nopera.svg | \n_includes/icons/simple-icons/opera.svg | \n \n \n | \n
\n \n | \nopsgenie.svg | \n_includes/icons/simple-icons/opsgenie.svg | \n \n \n | \n
\n \n | \nopslevel.svg | \n_includes/icons/simple-icons/opslevel.svg | \n \n \n | \n
\n \n | \noracle.svg | \n_includes/icons/simple-icons/oracle.svg | \n \n \n | \n
\n \n | \norcid.svg | \n_includes/icons/simple-icons/orcid.svg | \n \n \n | \n
\n \n | \norigin.svg | \n_includes/icons/simple-icons/origin.svg | \n \n \n | \n
\n \n | \nosmc.svg | \n_includes/icons/simple-icons/osmc.svg | \n \n \n | \n
\n \n | \novercast.svg | \n_includes/icons/simple-icons/overcast.svg | \n \n \n | \n
\n \n | \noverleaf.svg | \n_includes/icons/simple-icons/overleaf.svg | \n \n \n | \n
\n \n | \novh.svg | \n_includes/icons/simple-icons/ovh.svg | \n \n \n | \n
\n \n | \npagekit.svg | \n_includes/icons/simple-icons/pagekit.svg | \n \n \n | \n
\n \n | \npalantir.svg | \n_includes/icons/simple-icons/palantir.svg | \n \n \n | \n
\n \n | \npaloaltosoftware.svg | \n_includes/icons/simple-icons/paloaltosoftware.svg | \n \n \n | \n
\n \n | \npandora.svg | \n_includes/icons/simple-icons/pandora.svg | \n \n \n | \n
\n \n | \npantheon.svg | \n_includes/icons/simple-icons/pantheon.svg | \n \n \n | \n
\n \n | \nparitysubstrate.svg | \n_includes/icons/simple-icons/paritysubstrate.svg | \n \n \n | \n
\n \n | \nparse-dot-ly.svg | \n_includes/icons/simple-icons/parse-dot-ly.svg | \n \n \n | \n
\n \n | \npastebin.svg | \n_includes/icons/simple-icons/pastebin.svg | \n \n \n | \n
\n \n | \npatreon.svg | \n_includes/icons/simple-icons/patreon.svg | \n \n \n | \n
\n \n | \npaypal.svg | \n_includes/icons/simple-icons/paypal.svg | \n \n \n | \n
\n \n | \npeertube.svg | \n_includes/icons/simple-icons/peertube.svg | \n \n \n | \n
\n \n | \npepsi.svg | \n_includes/icons/simple-icons/pepsi.svg | \n \n \n | \n
\n \n | \nperiscope.svg | \n_includes/icons/simple-icons/periscope.svg | \n \n \n | \n
\n \n | \npeugeot.svg | \n_includes/icons/simple-icons/peugeot.svg | \n \n \n | \n
\n \n | \npexels.svg | \n_includes/icons/simple-icons/pexels.svg | \n \n \n | \n
\n \n | \nphotocrowd.svg | \n_includes/icons/simple-icons/photocrowd.svg | \n \n \n | \n
\n \n | \nphp.svg | \n_includes/icons/simple-icons/php.svg | \n \n \n | \n
\n \n | \npi-hole.svg | \n_includes/icons/simple-icons/pi-hole.svg | \n \n \n | \n
\n \n | \npicarto-dot-tv.svg | \n_includes/icons/simple-icons/picarto-dot-tv.svg | \n \n \n | \n
\n \n | \npinboard.svg | \n_includes/icons/simple-icons/pinboard.svg | \n \n \n | \n
\n \n | \npingdom.svg | \n_includes/icons/simple-icons/pingdom.svg | \n \n \n | \n
\n \n | \npingup.svg | \n_includes/icons/simple-icons/pingup.svg | \n \n \n | \n
\n \n | \npinterest.svg | \n_includes/icons/simple-icons/pinterest.svg | \n \n \n | \n
\n \n | \npivotaltracker.svg | \n_includes/icons/simple-icons/pivotaltracker.svg | \n \n \n | \n
\n \n | \npixabay.svg | \n_includes/icons/simple-icons/pixabay.svg | \n \n \n | \n
\n \n | \npjsip.svg | \n_includes/icons/simple-icons/pjsip.svg | \n \n \n | \n
\n \n | \nplangrid.svg | \n_includes/icons/simple-icons/plangrid.svg | \n \n \n | \n
\n \n | \nplatzi.svg | \n_includes/icons/simple-icons/platzi.svg | \n \n \n | \n
\n \n | \nplayer-dot-me.svg | \n_includes/icons/simple-icons/player-dot-me.svg | \n \n \n | \n
\n \n | \nplayerfm.svg | \n_includes/icons/simple-icons/playerfm.svg | \n \n \n | \n
\n \n | \nplaystation.svg | \n_includes/icons/simple-icons/playstation.svg | \n \n \n | \n
\n \n | \nplaystation2.svg | \n_includes/icons/simple-icons/playstation2.svg | \n \n \n | \n
\n \n | \nplaystation3.svg | \n_includes/icons/simple-icons/playstation3.svg | \n \n \n | \n
\n \n | \nplaystation4.svg | \n_includes/icons/simple-icons/playstation4.svg | \n \n \n | \n
\n \n | \npleroma.svg | \n_includes/icons/simple-icons/pleroma.svg | \n \n \n | \n
\n \n | \nplesk.svg | \n_includes/icons/simple-icons/plesk.svg | \n \n \n | \n
\n \n | \nplex.svg | \n_includes/icons/simple-icons/plex.svg | \n \n \n | \n
\n \n | \npluralsight.svg | \n_includes/icons/simple-icons/pluralsight.svg | \n \n \n | \n
\n \n | \nplurk.svg | \n_includes/icons/simple-icons/plurk.svg | \n \n \n | \n
\n \n | \npluscodes.svg | \n_includes/icons/simple-icons/pluscodes.svg | \n \n \n | \n
\n \n | \npocket.svg | \n_includes/icons/simple-icons/pocket.svg | \n \n \n | \n
\n \n | \npocketcasts.svg | \n_includes/icons/simple-icons/pocketcasts.svg | \n \n \n | \n
\n \n | \npokemon.svg | \n_includes/icons/simple-icons/pokemon.svg | \n \n \n | \n
\n \n | \npoly.svg | \n_includes/icons/simple-icons/poly.svg | \n \n \n | \n
\n \n | \npolymerproject.svg | \n_includes/icons/simple-icons/polymerproject.svg | \n \n \n | \n
\n \n | \nporsche.svg | \n_includes/icons/simple-icons/porsche.svg | \n \n \n | \n
\n \n | \npostgresql.svg | \n_includes/icons/simple-icons/postgresql.svg | \n \n \n | \n
\n \n | \npostman.svg | \n_includes/icons/simple-icons/postman.svg | \n \n \n | \n
\n \n | \npostwoman.svg | \n_includes/icons/simple-icons/postwoman.svg | \n \n \n | \n
\n \n | \npowershell.svg | \n_includes/icons/simple-icons/powershell.svg | \n \n \n | \n
\n \n | \npr-dot-co.svg | \n_includes/icons/simple-icons/pr-dot-co.svg | \n \n \n | \n
\n \n | \npre-commit.svg | \n_includes/icons/simple-icons/pre-commit.svg | \n \n \n | \n
\n \n | \nprestashop.svg | \n_includes/icons/simple-icons/prestashop.svg | \n \n \n | \n
\n \n | \nprettier.svg | \n_includes/icons/simple-icons/prettier.svg | \n \n \n | \n
\n \n | \nprezi.svg | \n_includes/icons/simple-icons/prezi.svg | \n \n \n | \n
\n \n | \nprismic.svg | \n_includes/icons/simple-icons/prismic.svg | \n \n \n | \n
\n \n | \nprobot.svg | \n_includes/icons/simple-icons/probot.svg | \n \n \n | \n
\n \n | \nprocesswire.svg | \n_includes/icons/simple-icons/processwire.svg | \n \n \n | \n
\n \n | \nproducthunt.svg | \n_includes/icons/simple-icons/producthunt.svg | \n \n \n | \n
\n \n | \nprometheus.svg | \n_includes/icons/simple-icons/prometheus.svg | \n \n \n | \n
\n \n | \nproto-dot-io.svg | \n_includes/icons/simple-icons/proto-dot-io.svg | \n \n \n | \n
\n \n | \nprotocols-dot-io.svg | \n_includes/icons/simple-icons/protocols-dot-io.svg | \n \n \n | \n
\n \n | \nprotonmail.svg | \n_includes/icons/simple-icons/protonmail.svg | \n \n \n | \n
\n \n | \nproxmox.svg | \n_includes/icons/simple-icons/proxmox.svg | \n \n \n | \n
\n \n | \npublons.svg | \n_includes/icons/simple-icons/publons.svg | \n \n \n | \n
\n \n | \npurescript.svg | \n_includes/icons/simple-icons/purescript.svg | \n \n \n | \n
\n \n | \npypi.svg | \n_includes/icons/simple-icons/pypi.svg | \n \n \n | \n
\n \n | \npython.svg | \n_includes/icons/simple-icons/python.svg | \n \n \n | \n
\n \n | \npytorch.svg | \n_includes/icons/simple-icons/pytorch.svg | \n \n \n | \n
\n \n | \npyup.svg | \n_includes/icons/simple-icons/pyup.svg | \n \n \n | \n
\n \n | \nqemu.svg | \n_includes/icons/simple-icons/qemu.svg | \n \n \n | \n
\n \n | \nqgis.svg | \n_includes/icons/simple-icons/qgis.svg | \n \n \n | \n
\n \n | \nqi.svg | \n_includes/icons/simple-icons/qi.svg | \n \n \n | \n
\n \n | \nqiita.svg | \n_includes/icons/simple-icons/qiita.svg | \n \n \n | \n
\n \n | \nqiwi.svg | \n_includes/icons/simple-icons/qiwi.svg | \n \n \n | \n
\n \n | \nqualcomm.svg | \n_includes/icons/simple-icons/qualcomm.svg | \n \n \n | \n
\n \n | \nqualtrics.svg | \n_includes/icons/simple-icons/qualtrics.svg | \n \n \n | \n
\n \n | \nquantcast.svg | \n_includes/icons/simple-icons/quantcast.svg | \n \n \n | \n
\n \n | \nquantopian.svg | \n_includes/icons/simple-icons/quantopian.svg | \n \n \n | \n
\n \n | \nquarkus.svg | \n_includes/icons/simple-icons/quarkus.svg | \n \n \n | \n
\n \n | \nquest.svg | \n_includes/icons/simple-icons/quest.svg | \n \n \n | \n
\n \n | \nquicktime.svg | \n_includes/icons/simple-icons/quicktime.svg | \n \n \n | \n
\n \n | \nquip.svg | \n_includes/icons/simple-icons/quip.svg | \n \n \n | \n
\n \n | \nquora.svg | \n_includes/icons/simple-icons/quora.svg | \n \n \n | \n
\n \n | \nqwiklabs.svg | \n_includes/icons/simple-icons/qwiklabs.svg | \n \n \n | \n
\n \n | \nqzone.svg | \n_includes/icons/simple-icons/qzone.svg | \n \n \n | \n
\n \n | \nr.svg | \n_includes/icons/simple-icons/r.svg | \n \n \n | \n
\n \n | \nrabbitmq.svg | \n_includes/icons/simple-icons/rabbitmq.svg | \n \n \n | \n
\n \n | \nradiopublic.svg | \n_includes/icons/simple-icons/radiopublic.svg | \n \n \n | \n
\n \n | \nrails.svg | \n_includes/icons/simple-icons/rails.svg | \n \n \n | \n
\n \n | \nraspberrypi.svg | \n_includes/icons/simple-icons/raspberrypi.svg | \n \n \n | \n
\n \n | \nreact.svg | \n_includes/icons/simple-icons/react.svg | \n \n \n | \n
\n \n | \nreactos.svg | \n_includes/icons/simple-icons/reactos.svg | \n \n \n | \n
\n \n | \nreactrouter.svg | \n_includes/icons/simple-icons/reactrouter.svg | \n \n \n | \n
\n \n | \nreadthedocs.svg | \n_includes/icons/simple-icons/readthedocs.svg | \n \n \n | \n
\n \n | \nrealm.svg | \n_includes/icons/simple-icons/realm.svg | \n \n \n | \n
\n \n | \nreason.svg | \n_includes/icons/simple-icons/reason.svg | \n \n \n | \n
\n \n | \nreasonstudios.svg | \n_includes/icons/simple-icons/reasonstudios.svg | \n \n \n | \n
\n \n | \nredbubble.svg | \n_includes/icons/simple-icons/redbubble.svg | \n \n \n | \n
\n \n | \nreddit.svg | \n_includes/icons/simple-icons/reddit.svg | \n \n \n | \n
\n \n | \nredhat.svg | \n_includes/icons/simple-icons/redhat.svg | \n \n \n | \n
\n \n | \nredhatopenshift.svg | \n_includes/icons/simple-icons/redhatopenshift.svg | \n \n \n | \n
\n \n | \nredis.svg | \n_includes/icons/simple-icons/redis.svg | \n \n \n | \n
\n \n | \nredux.svg | \n_includes/icons/simple-icons/redux.svg | \n \n \n | \n
\n \n | \nrenren.svg | \n_includes/icons/simple-icons/renren.svg | \n \n \n | \n
\n \n | \nrepl-dot-it.svg | \n_includes/icons/simple-icons/repl-dot-it.svg | \n \n \n | \n
\n \n | \nresearchgate.svg | \n_includes/icons/simple-icons/researchgate.svg | \n \n \n | \n
\n \n | \nreverbnation.svg | \n_includes/icons/simple-icons/reverbnation.svg | \n \n \n | \n
\n \n | \nrhinoceros.svg | \n_includes/icons/simple-icons/rhinoceros.svg | \n \n \n | \n
\n \n | \nriot.svg | \n_includes/icons/simple-icons/riot.svg | \n \n \n | \n
\n \n | \nripple.svg | \n_includes/icons/simple-icons/ripple.svg | \n \n \n | \n
\n \n | \nriseup.svg | \n_includes/icons/simple-icons/riseup.svg | \n \n \n | \n
\n \n | \nrollup-dot-js.svg | \n_includes/icons/simple-icons/rollup-dot-js.svg | \n \n \n | \n
\n \n | \nroots.svg | \n_includes/icons/simple-icons/roots.svg | \n \n \n | \n
\n \n | \nroundcube.svg | \n_includes/icons/simple-icons/roundcube.svg | \n \n \n | \n
\n \n | \nrss.svg | \n_includes/icons/simple-icons/rss.svg | \n \n \n | \n
\n \n | \nrstudio.svg | \n_includes/icons/simple-icons/rstudio.svg | \n \n \n | \n
\n \n | \nrtlzwei.svg | \n_includes/icons/simple-icons/rtlzwei.svg | \n \n \n | \n
\n \n | \nruby.svg | \n_includes/icons/simple-icons/ruby.svg | \n \n \n | \n
\n \n | \nrubygems.svg | \n_includes/icons/simple-icons/rubygems.svg | \n \n \n | \n
\n \n | \nrunkeeper.svg | \n_includes/icons/simple-icons/runkeeper.svg | \n \n \n | \n
\n \n | \nrust.svg | \n_includes/icons/simple-icons/rust.svg | \n \n \n | \n
\n \n | \nryanair.svg | \n_includes/icons/simple-icons/ryanair.svg | \n \n \n | \n
\n \n | \nsafari.svg | \n_includes/icons/simple-icons/safari.svg | \n \n \n | \n
\n \n | \nsahibinden.svg | \n_includes/icons/simple-icons/sahibinden.svg | \n \n \n | \n
\n \n | \nsalesforce.svg | \n_includes/icons/simple-icons/salesforce.svg | \n \n \n | \n
\n \n | \nsaltstack.svg | \n_includes/icons/simple-icons/saltstack.svg | \n \n \n | \n
\n \n | \nsamsung.svg | \n_includes/icons/simple-icons/samsung.svg | \n \n \n | \n
\n \n | \nsamsungpay.svg | \n_includes/icons/simple-icons/samsungpay.svg | \n \n \n | \n
\n \n | \nsap.svg | \n_includes/icons/simple-icons/sap.svg | \n \n \n | \n
\n \n | \nsass.svg | \n_includes/icons/simple-icons/sass.svg | \n \n \n | \n
\n \n | \nsat-dot-1.svg | \n_includes/icons/simple-icons/sat-dot-1.svg | \n \n \n | \n
\n \n | \nsaucelabs.svg | \n_includes/icons/simple-icons/saucelabs.svg | \n \n \n | \n
\n \n | \nscala.svg | \n_includes/icons/simple-icons/scala.svg | \n \n \n | \n
\n \n | \nscaleway.svg | \n_includes/icons/simple-icons/scaleway.svg | \n \n \n | \n
\n \n | \nscribd.svg | \n_includes/icons/simple-icons/scribd.svg | \n \n \n | \n
\n \n | \nscrutinizerci.svg | \n_includes/icons/simple-icons/scrutinizerci.svg | \n \n \n | \n
\n \n | \nseagate.svg | \n_includes/icons/simple-icons/seagate.svg | \n \n \n | \n
\n \n | \nseat.svg | \n_includes/icons/simple-icons/seat.svg | \n \n \n | \n
\n \n | \nsega.svg | \n_includes/icons/simple-icons/sega.svg | \n \n \n | \n
\n \n | \nsellfy.svg | \n_includes/icons/simple-icons/sellfy.svg | \n \n \n | \n
\n \n | \nsemanticweb.svg | \n_includes/icons/simple-icons/semanticweb.svg | \n \n \n | \n
\n \n | \nsemaphoreci.svg | \n_includes/icons/simple-icons/semaphoreci.svg | \n \n \n | \n
\n \n | \nsencha.svg | \n_includes/icons/simple-icons/sencha.svg | \n \n \n | \n
\n \n | \nsensu.svg | \n_includes/icons/simple-icons/sensu.svg | \n \n \n | \n
\n \n | \nsentry.svg | \n_includes/icons/simple-icons/sentry.svg | \n \n \n | \n
\n \n | \nserverfault.svg | \n_includes/icons/simple-icons/serverfault.svg | \n \n \n | \n
\n \n | \nserverless.svg | \n_includes/icons/simple-icons/serverless.svg | \n \n \n | \n
\n \n | \nshazam.svg | \n_includes/icons/simple-icons/shazam.svg | \n \n \n | \n
\n \n | \nshell.svg | \n_includes/icons/simple-icons/shell.svg | \n \n \n | \n
\n \n | \nshopify.svg | \n_includes/icons/simple-icons/shopify.svg | \n \n \n | \n
\n \n | \nshopware.svg | \n_includes/icons/simple-icons/shopware.svg | \n \n \n | \n
\n \n | \nshowpad.svg | \n_includes/icons/simple-icons/showpad.svg | \n \n \n | \n
\n \n | \nsiemens.svg | \n_includes/icons/simple-icons/siemens.svg | \n \n \n | \n
\n \n | \nsignal.svg | \n_includes/icons/simple-icons/signal.svg | \n \n \n | \n
\n \n | \nsimpleicons.svg | \n_includes/icons/simple-icons/simpleicons.svg | \n \n \n | \n
\n \n | \nsinaweibo.svg | \n_includes/icons/simple-icons/sinaweibo.svg | \n \n \n | \n
\n \n | \nsitepoint.svg | \n_includes/icons/simple-icons/sitepoint.svg | \n \n \n | \n
\n \n | \nsketch.svg | \n_includes/icons/simple-icons/sketch.svg | \n \n \n | \n
\n \n | \nskillshare.svg | \n_includes/icons/simple-icons/skillshare.svg | \n \n \n | \n
\n \n | \nskyliner.svg | \n_includes/icons/simple-icons/skyliner.svg | \n \n \n | \n
\n \n | \nskype.svg | \n_includes/icons/simple-icons/skype.svg | \n \n \n | \n
\n \n | \nskypeforbusiness.svg | \n_includes/icons/simple-icons/skypeforbusiness.svg | \n \n \n | \n
\n \n | \nslack.svg | \n_includes/icons/simple-icons/slack.svg | \n \n \n | \n
\n \n | \nslackware.svg | \n_includes/icons/simple-icons/slackware.svg | \n \n \n | \n
\n \n | \nslashdot.svg | \n_includes/icons/simple-icons/slashdot.svg | \n \n \n | \n
\n \n | \nslickpic.svg | \n_includes/icons/simple-icons/slickpic.svg | \n \n \n | \n
\n \n | \nslides.svg | \n_includes/icons/simple-icons/slides.svg | \n \n \n | \n
\n \n | \nsmartthings.svg | \n_includes/icons/simple-icons/smartthings.svg | \n \n \n | \n
\n \n | \nsmashingmagazine.svg | \n_includes/icons/simple-icons/smashingmagazine.svg | \n \n \n | \n
\n \n | \nsmugmug.svg | \n_includes/icons/simple-icons/smugmug.svg | \n \n \n | \n
\n \n | \nsnapchat.svg | \n_includes/icons/simple-icons/snapchat.svg | \n \n \n | \n
\n \n | \nsnapcraft.svg | \n_includes/icons/simple-icons/snapcraft.svg | \n \n \n | \n
\n \n | \nsnyk.svg | \n_includes/icons/simple-icons/snyk.svg | \n \n \n | \n
\n \n | \nsociety6.svg | \n_includes/icons/simple-icons/society6.svg | \n \n \n | \n
\n \n | \nsocket-dot-io.svg | \n_includes/icons/simple-icons/socket-dot-io.svg | \n \n \n | \n
\n \n | \nsogou.svg | \n_includes/icons/simple-icons/sogou.svg | \n \n \n | \n
\n \n | \nsolus.svg | \n_includes/icons/simple-icons/solus.svg | \n \n \n | \n
\n \n | \nsonarcloud.svg | \n_includes/icons/simple-icons/sonarcloud.svg | \n \n \n | \n
\n \n | \nsonarlint.svg | \n_includes/icons/simple-icons/sonarlint.svg | \n \n \n | \n
\n \n | \nsonarqube.svg | \n_includes/icons/simple-icons/sonarqube.svg | \n \n \n | \n
\n \n | \nsonarsource.svg | \n_includes/icons/simple-icons/sonarsource.svg | \n \n \n | \n
\n \n | \nsongkick.svg | \n_includes/icons/simple-icons/songkick.svg | \n \n \n | \n
\n \n | \nsonicwall.svg | \n_includes/icons/simple-icons/sonicwall.svg | \n \n \n | \n
\n \n | \nsonos.svg | \n_includes/icons/simple-icons/sonos.svg | \n \n \n | \n
\n \n | \nsoundcloud.svg | \n_includes/icons/simple-icons/soundcloud.svg | \n \n \n | \n
\n \n | \nsourceengine.svg | \n_includes/icons/simple-icons/sourceengine.svg | \n \n \n | \n
\n \n | \nsourceforge.svg | \n_includes/icons/simple-icons/sourceforge.svg | \n \n \n | \n
\n \n | \nsourcegraph.svg | \n_includes/icons/simple-icons/sourcegraph.svg | \n \n \n | \n
\n \n | \nspacemacs.svg | \n_includes/icons/simple-icons/spacemacs.svg | \n \n \n | \n
\n \n | \nspacex.svg | \n_includes/icons/simple-icons/spacex.svg | \n \n \n | \n
\n \n | \nsparkfun.svg | \n_includes/icons/simple-icons/sparkfun.svg | \n \n \n | \n
\n \n | \nsparkpost.svg | \n_includes/icons/simple-icons/sparkpost.svg | \n \n \n | \n
\n \n | \nspdx.svg | \n_includes/icons/simple-icons/spdx.svg | \n \n \n | \n
\n \n | \nspeakerdeck.svg | \n_includes/icons/simple-icons/speakerdeck.svg | \n \n \n | \n
\n \n | \nspectrum.svg | \n_includes/icons/simple-icons/spectrum.svg | \n \n \n | \n
\n \n | \nspinnaker.svg | \n_includes/icons/simple-icons/spinnaker.svg | \n \n \n | \n
\n \n | \nspinrilla.svg | \n_includes/icons/simple-icons/spinrilla.svg | \n \n \n | \n
\n \n | \nspotify.svg | \n_includes/icons/simple-icons/spotify.svg | \n \n \n | \n
\n \n | \nspotlight.svg | \n_includes/icons/simple-icons/spotlight.svg | \n \n \n | \n
\n \n | \nspreaker.svg | \n_includes/icons/simple-icons/spreaker.svg | \n \n \n | \n
\n \n | \nspring.svg | \n_includes/icons/simple-icons/spring.svg | \n \n \n | \n
\n \n | \nsprint.svg | \n_includes/icons/simple-icons/sprint.svg | \n \n \n | \n
\n \n | \nsquare.svg | \n_includes/icons/simple-icons/square.svg | \n \n \n | \n
\n \n | \nsquareenix.svg | \n_includes/icons/simple-icons/squareenix.svg | \n \n \n | \n
\n \n | \nsquarespace.svg | \n_includes/icons/simple-icons/squarespace.svg | \n \n \n | \n
\n \n | \nstackbit.svg | \n_includes/icons/simple-icons/stackbit.svg | \n \n \n | \n
\n \n | \nstackexchange.svg | \n_includes/icons/simple-icons/stackexchange.svg | \n \n \n | \n
\n \n | \nstackoverflow.svg | \n_includes/icons/simple-icons/stackoverflow.svg | \n \n \n | \n
\n \n | \nstackpath.svg | \n_includes/icons/simple-icons/stackpath.svg | \n \n \n | \n
\n \n | \nstackshare.svg | \n_includes/icons/simple-icons/stackshare.svg | \n \n \n | \n
\n \n | \nstadia.svg | \n_includes/icons/simple-icons/stadia.svg | \n \n \n | \n
\n \n | \nstaffbase.svg | \n_includes/icons/simple-icons/staffbase.svg | \n \n \n | \n
\n \n | \nstatamic.svg | \n_includes/icons/simple-icons/statamic.svg | \n \n \n | \n
\n \n | \nstaticman.svg | \n_includes/icons/simple-icons/staticman.svg | \n \n \n | \n
\n \n | \nstatuspage.svg | \n_includes/icons/simple-icons/statuspage.svg | \n \n \n | \n
\n \n | \nsteam.svg | \n_includes/icons/simple-icons/steam.svg | \n \n \n | \n
\n \n | \nsteamworks.svg | \n_includes/icons/simple-icons/steamworks.svg | \n \n \n | \n
\n \n | \nsteem.svg | \n_includes/icons/simple-icons/steem.svg | \n \n \n | \n
\n \n | \nsteemit.svg | \n_includes/icons/simple-icons/steemit.svg | \n \n \n | \n
\n \n | \nsteinberg.svg | \n_includes/icons/simple-icons/steinberg.svg | \n \n \n | \n
\n \n | \nstellar.svg | \n_includes/icons/simple-icons/stellar.svg | \n \n \n | \n
\n \n | \nstencyl.svg | \n_includes/icons/simple-icons/stencyl.svg | \n \n \n | \n
\n \n | \nstitcher.svg | \n_includes/icons/simple-icons/stitcher.svg | \n \n \n | \n
\n \n | \nstorify.svg | \n_includes/icons/simple-icons/storify.svg | \n \n \n | \n
\n \n | \nstorybook.svg | \n_includes/icons/simple-icons/storybook.svg | \n \n \n | \n
\n \n | \nstrapi.svg | \n_includes/icons/simple-icons/strapi.svg | \n \n \n | \n
\n \n | \nstrava.svg | \n_includes/icons/simple-icons/strava.svg | \n \n \n | \n
\n \n | \nstripe.svg | \n_includes/icons/simple-icons/stripe.svg | \n \n \n | \n
\n \n | \nstrongswan.svg | \n_includes/icons/simple-icons/strongswan.svg | \n \n \n | \n
\n \n | \nstubhub.svg | \n_includes/icons/simple-icons/stubhub.svg | \n \n \n | \n
\n \n | \nstyled-components.svg | \n_includes/icons/simple-icons/styled-components.svg | \n \n \n | \n
\n \n | \nstyleshare.svg | \n_includes/icons/simple-icons/styleshare.svg | \n \n \n | \n
\n \n | \nstylus.svg | \n_includes/icons/simple-icons/stylus.svg | \n \n \n | \n
\n \n | \nsublimetext.svg | \n_includes/icons/simple-icons/sublimetext.svg | \n \n \n | \n
\n \n | \nsubversion.svg | \n_includes/icons/simple-icons/subversion.svg | \n \n \n | \n
\n \n | \nsuperuser.svg | \n_includes/icons/simple-icons/superuser.svg | \n \n \n | \n
\n \n | \nsuzuki.svg | \n_includes/icons/simple-icons/suzuki.svg | \n \n \n | \n
\n \n | \nsvelte.svg | \n_includes/icons/simple-icons/svelte.svg | \n \n \n | \n
\n \n | \nsvg.svg | \n_includes/icons/simple-icons/svg.svg | \n \n \n | \n
\n \n | \nsvgo.svg | \n_includes/icons/simple-icons/svgo.svg | \n \n \n | \n
\n \n | \nswagger.svg | \n_includes/icons/simple-icons/swagger.svg | \n \n \n | \n
\n \n | \nswarm.svg | \n_includes/icons/simple-icons/swarm.svg | \n \n \n | \n
\n \n | \nswift.svg | \n_includes/icons/simple-icons/swift.svg | \n \n \n | \n
\n \n | \nsymantec.svg | \n_includes/icons/simple-icons/symantec.svg | \n \n \n | \n
\n \n | \nsymfony.svg | \n_includes/icons/simple-icons/symfony.svg | \n \n \n | \n
\n \n | \nsymphony.svg | \n_includes/icons/simple-icons/symphony.svg | \n \n \n | \n
\n \n | \nsynology.svg | \n_includes/icons/simple-icons/synology.svg | \n \n \n | \n
\n \n | \nt-mobile.svg | \n_includes/icons/simple-icons/t-mobile.svg | \n \n \n | \n
\n \n | \ntableau.svg | \n_includes/icons/simple-icons/tableau.svg | \n \n \n | \n
\n \n | \ntails.svg | \n_includes/icons/simple-icons/tails.svg | \n \n \n | \n
\n \n | \ntailwindcss.svg | \n_includes/icons/simple-icons/tailwindcss.svg | \n \n \n | \n
\n \n | \ntapas.svg | \n_includes/icons/simple-icons/tapas.svg | \n \n \n | \n
\n \n | \ntata.svg | \n_includes/icons/simple-icons/tata.svg | \n \n \n | \n
\n \n | \nteamviewer.svg | \n_includes/icons/simple-icons/teamviewer.svg | \n \n \n | \n
\n \n | \nted.svg | \n_includes/icons/simple-icons/ted.svg | \n \n \n | \n
\n \n | \nteespring.svg | \n_includes/icons/simple-icons/teespring.svg | \n \n \n | \n
\n \n | \ntele5.svg | \n_includes/icons/simple-icons/tele5.svg | \n \n \n | \n
\n \n | \ntelegram.svg | \n_includes/icons/simple-icons/telegram.svg | \n \n \n | \n
\n \n | \ntencentqq.svg | \n_includes/icons/simple-icons/tencentqq.svg | \n \n \n | \n
\n \n | \ntencentweibo.svg | \n_includes/icons/simple-icons/tencentweibo.svg | \n \n \n | \n
\n \n | \ntensorflow.svg | \n_includes/icons/simple-icons/tensorflow.svg | \n \n \n | \n
\n \n | \nteradata.svg | \n_includes/icons/simple-icons/teradata.svg | \n \n \n | \n
\n \n | \nterraform.svg | \n_includes/icons/simple-icons/terraform.svg | \n \n \n | \n
\n \n | \ntesla.svg | \n_includes/icons/simple-icons/tesla.svg | \n \n \n | \n
\n \n | \nthemighty.svg | \n_includes/icons/simple-icons/themighty.svg | \n \n \n | \n
\n \n | \nthemoviedatabase.svg | \n_includes/icons/simple-icons/themoviedatabase.svg | \n \n \n | \n
\n \n | \ntheregister.svg | \n_includes/icons/simple-icons/theregister.svg | \n \n \n | \n
\n \n | \nthewashingtonpost.svg | \n_includes/icons/simple-icons/thewashingtonpost.svg | \n \n \n | \n
\n \n | \nthreema.svg | \n_includes/icons/simple-icons/threema.svg | \n \n \n | \n
\n \n | \ntidal.svg | \n_includes/icons/simple-icons/tidal.svg | \n \n \n | \n
\n \n | \ntide.svg | \n_includes/icons/simple-icons/tide.svg | \n \n \n | \n
\n \n | \ntiktok.svg | \n_includes/icons/simple-icons/tiktok.svg | \n \n \n | \n
\n \n | \ntimescale.svg | \n_includes/icons/simple-icons/timescale.svg | \n \n \n | \n
\n \n | \ntinder.svg | \n_includes/icons/simple-icons/tinder.svg | \n \n \n | \n
\n \n | \ntodoist.svg | \n_includes/icons/simple-icons/todoist.svg | \n \n \n | \n
\n \n | \ntoggl.svg | \n_includes/icons/simple-icons/toggl.svg | \n \n \n | \n
\n \n | \ntomorrowland.svg | \n_includes/icons/simple-icons/tomorrowland.svg | \n \n \n | \n
\n \n | \ntopcoder.svg | \n_includes/icons/simple-icons/topcoder.svg | \n \n \n | \n
\n \n | \ntoptal.svg | \n_includes/icons/simple-icons/toptal.svg | \n \n \n | \n
\n \n | \ntor.svg | \n_includes/icons/simple-icons/tor.svg | \n \n \n | \n
\n \n | \ntoshiba.svg | \n_includes/icons/simple-icons/toshiba.svg | \n \n \n | \n
\n \n | \ntrainerroad.svg | \n_includes/icons/simple-icons/trainerroad.svg | \n \n \n | \n
\n \n | \ntrakt.svg | \n_includes/icons/simple-icons/trakt.svg | \n \n \n | \n
\n \n | \ntransportforireland.svg | \n_includes/icons/simple-icons/transportforireland.svg | \n \n \n | \n
\n \n | \ntravisci.svg | \n_includes/icons/simple-icons/travisci.svg | \n \n \n | \n
\n \n | \ntreehouse.svg | \n_includes/icons/simple-icons/treehouse.svg | \n \n \n | \n
\n \n | \ntrello.svg | \n_includes/icons/simple-icons/trello.svg | \n \n \n | \n
\n \n | \ntrendmicro.svg | \n_includes/icons/simple-icons/trendmicro.svg | \n \n \n | \n
\n \n | \ntripadvisor.svg | \n_includes/icons/simple-icons/tripadvisor.svg | \n \n \n | \n
\n \n | \ntrulia.svg | \n_includes/icons/simple-icons/trulia.svg | \n \n \n | \n
\n \n | \ntrustpilot.svg | \n_includes/icons/simple-icons/trustpilot.svg | \n \n \n | \n
\n \n | \ntryitonline.svg | \n_includes/icons/simple-icons/tryitonline.svg | \n \n \n | \n
\n \n | \ntumblr.svg | \n_includes/icons/simple-icons/tumblr.svg | \n \n \n | \n
\n \n | \nturkishairlines.svg | \n_includes/icons/simple-icons/turkishairlines.svg | \n \n \n | \n
\n \n | \ntwilio.svg | \n_includes/icons/simple-icons/twilio.svg | \n \n \n | \n
\n \n | \ntwitch.svg | \n_includes/icons/simple-icons/twitch.svg | \n \n \n | \n
\n \n | \ntwitter.svg | \n_includes/icons/simple-icons/twitter.svg | \n \n \n | \n
\n \n | \ntwoo.svg | \n_includes/icons/simple-icons/twoo.svg | \n \n \n | \n
\n \n | \ntypescript.svg | \n_includes/icons/simple-icons/typescript.svg | \n \n \n | \n
\n \n | \ntypo3.svg | \n_includes/icons/simple-icons/typo3.svg | \n \n \n | \n
\n \n | \nuber.svg | \n_includes/icons/simple-icons/uber.svg | \n \n \n | \n
\n \n | \nubereats.svg | \n_includes/icons/simple-icons/ubereats.svg | \n \n \n | \n
\n \n | \nubisoft.svg | \n_includes/icons/simple-icons/ubisoft.svg | \n \n \n | \n
\n \n | \nublockorigin.svg | \n_includes/icons/simple-icons/ublockorigin.svg | \n \n \n | \n
\n \n | \nubuntu.svg | \n_includes/icons/simple-icons/ubuntu.svg | \n \n \n | \n
\n \n | \nudacity.svg | \n_includes/icons/simple-icons/udacity.svg | \n \n \n | \n
\n \n | \nudemy.svg | \n_includes/icons/simple-icons/udemy.svg | \n \n \n | \n
\n \n | \nuikit.svg | \n_includes/icons/simple-icons/uikit.svg | \n \n \n | \n
\n \n | \nulule.svg | \n_includes/icons/simple-icons/ulule.svg | \n \n \n | \n
\n \n | \numbraco.svg | \n_includes/icons/simple-icons/umbraco.svg | \n \n \n | \n
\n \n | \nunicode.svg | \n_includes/icons/simple-icons/unicode.svg | \n \n \n | \n
\n \n | \nunity.svg | \n_includes/icons/simple-icons/unity.svg | \n \n \n | \n
\n \n | \nunrealengine.svg | \n_includes/icons/simple-icons/unrealengine.svg | \n \n \n | \n
\n \n | \nunsplash.svg | \n_includes/icons/simple-icons/unsplash.svg | \n \n \n | \n
\n \n | \nuntangle.svg | \n_includes/icons/simple-icons/untangle.svg | \n \n \n | \n
\n \n | \nuntappd.svg | \n_includes/icons/simple-icons/untappd.svg | \n \n \n | \n
\n \n | \nupwork.svg | \n_includes/icons/simple-icons/upwork.svg | \n \n \n | \n
\n \n | \nv.svg | \n_includes/icons/simple-icons/v.svg | \n \n \n | \n
\n \n | \nv8.svg | \n_includes/icons/simple-icons/v8.svg | \n \n \n | \n
\n \n | \nvagrant.svg | \n_includes/icons/simple-icons/vagrant.svg | \n \n \n | \n
\n \n | \nvalve.svg | \n_includes/icons/simple-icons/valve.svg | \n \n \n | \n
\n \n | \nveeam.svg | \n_includes/icons/simple-icons/veeam.svg | \n \n \n | \n
\n \n | \nvenmo.svg | \n_includes/icons/simple-icons/venmo.svg | \n \n \n | \n
\n \n | \nveritas.svg | \n_includes/icons/simple-icons/veritas.svg | \n \n \n | \n
\n \n | \nverizon.svg | \n_includes/icons/simple-icons/verizon.svg | \n \n \n | \n
\n \n | \nviadeo.svg | \n_includes/icons/simple-icons/viadeo.svg | \n \n \n | \n
\n \n | \nviber.svg | \n_includes/icons/simple-icons/viber.svg | \n \n \n | \n
\n \n | \nvim.svg | \n_includes/icons/simple-icons/vim.svg | \n \n \n | \n
\n \n | \nvimeo.svg | \n_includes/icons/simple-icons/vimeo.svg | \n \n \n | \n
\n \n | \nvine.svg | \n_includes/icons/simple-icons/vine.svg | \n \n \n | \n
\n \n | \nvirb.svg | \n_includes/icons/simple-icons/virb.svg | \n \n \n | \n
\n \n | \nvisa.svg | \n_includes/icons/simple-icons/visa.svg | \n \n \n | \n
\n \n | \nvisualstudio.svg | \n_includes/icons/simple-icons/visualstudio.svg | \n \n \n | \n
\n \n | \nvisualstudiocode.svg | \n_includes/icons/simple-icons/visualstudiocode.svg | \n \n \n | \n
\n \n | \nvivino.svg | \n_includes/icons/simple-icons/vivino.svg | \n \n \n | \n
\n \n | \nvk.svg | \n_includes/icons/simple-icons/vk.svg | \n \n \n | \n
\n \n | \nvlcmediaplayer.svg | \n_includes/icons/simple-icons/vlcmediaplayer.svg | \n \n \n | \n
\n \n | \nvmware.svg | \n_includes/icons/simple-icons/vmware.svg | \n \n \n | \n
\n \n | \nvodafone.svg | \n_includes/icons/simple-icons/vodafone.svg | \n \n \n | \n
\n \n | \nvolkswagen.svg | \n_includes/icons/simple-icons/volkswagen.svg | \n \n \n | \n
\n \n | \nvsco.svg | \n_includes/icons/simple-icons/vsco.svg | \n \n \n | \n
\n \n | \nvue-dot-js.svg | \n_includes/icons/simple-icons/vue-dot-js.svg | \n \n \n | \n
\n \n | \nvuetify.svg | \n_includes/icons/simple-icons/vuetify.svg | \n \n \n | \n
\n \n | \nvulkan.svg | \n_includes/icons/simple-icons/vulkan.svg | \n \n \n | \n
\n \n | \nw3c.svg | \n_includes/icons/simple-icons/w3c.svg | \n \n \n | \n
\n \n | \nwattpad.svg | \n_includes/icons/simple-icons/wattpad.svg | \n \n \n | \n
\n \n | \nwaze.svg | \n_includes/icons/simple-icons/waze.svg | \n \n \n | \n
\n \n | \nwearos.svg | \n_includes/icons/simple-icons/wearos.svg | \n \n \n | \n
\n \n | \nweasyl.svg | \n_includes/icons/simple-icons/weasyl.svg | \n \n \n | \n
\n \n | \nwebassembly.svg | \n_includes/icons/simple-icons/webassembly.svg | \n \n \n | \n
\n \n | \nwebauthn.svg | \n_includes/icons/simple-icons/webauthn.svg | \n \n \n | \n
\n \n | \nwebcomponents-dot-org.svg | \n_includes/icons/simple-icons/webcomponents-dot-org.svg | \n \n \n | \n
\n \n | \nwebgl.svg | \n_includes/icons/simple-icons/webgl.svg | \n \n \n | \n
\n \n | \nwebmin.svg | \n_includes/icons/simple-icons/webmin.svg | \n \n \n | \n
\n \n | \nwebpack.svg | \n_includes/icons/simple-icons/webpack.svg | \n \n \n | \n
\n \n | \nwebrtc.svg | \n_includes/icons/simple-icons/webrtc.svg | \n \n \n | \n
\n \n | \nwebstorm.svg | \n_includes/icons/simple-icons/webstorm.svg | \n \n \n | \n
\n \n | \nwechat.svg | \n_includes/icons/simple-icons/wechat.svg | \n \n \n | \n
\n \n | \nwhatsapp.svg | \n_includes/icons/simple-icons/whatsapp.svg | \n \n \n | \n
\n \n | \nwheniwork.svg | \n_includes/icons/simple-icons/wheniwork.svg | \n \n \n | \n
\n \n | \nwhitesource.svg | \n_includes/icons/simple-icons/whitesource.svg | \n \n \n | \n
\n \n | \nwii.svg | \n_includes/icons/simple-icons/wii.svg | \n \n \n | \n
\n \n | \nwiiu.svg | \n_includes/icons/simple-icons/wiiu.svg | \n \n \n | \n
\n \n | \nwikipedia.svg | \n_includes/icons/simple-icons/wikipedia.svg | \n \n \n | \n
\n \n | \nwindows.svg | \n_includes/icons/simple-icons/windows.svg | \n \n \n | \n
\n \n | \nwire.svg | \n_includes/icons/simple-icons/wire.svg | \n \n \n | \n
\n \n | \nwireguard.svg | \n_includes/icons/simple-icons/wireguard.svg | \n \n \n | \n
\n \n | \nwish.svg | \n_includes/icons/simple-icons/wish.svg | \n \n \n | \n
\n \n | \nwix.svg | \n_includes/icons/simple-icons/wix.svg | \n \n \n | \n
\n \n | \nwolfram.svg | \n_includes/icons/simple-icons/wolfram.svg | \n \n \n | \n
\n \n | \nwolframlanguage.svg | \n_includes/icons/simple-icons/wolframlanguage.svg | \n \n \n | \n
\n \n | \nwolframmathematica.svg | \n_includes/icons/simple-icons/wolframmathematica.svg | \n \n \n | \n
\n \n | \nwoo.svg | \n_includes/icons/simple-icons/woo.svg | \n \n \n | \n
\n \n | \nwoocommerce.svg | \n_includes/icons/simple-icons/woocommerce.svg | \n \n \n | \n
\n \n | \nwordpress.svg | \n_includes/icons/simple-icons/wordpress.svg | \n \n \n | \n
\n \n | \nworkplace.svg | \n_includes/icons/simple-icons/workplace.svg | \n \n \n | \n
\n \n | \nwpengine.svg | \n_includes/icons/simple-icons/wpengine.svg | \n \n \n | \n
\n \n | \nwprocket.svg | \n_includes/icons/simple-icons/wprocket.svg | \n \n \n | \n
\n \n | \nwrite-dot-as.svg | \n_includes/icons/simple-icons/write-dot-as.svg | \n \n \n | \n
\n \n | \nx-dot-org.svg | \n_includes/icons/simple-icons/x-dot-org.svg | \n \n \n | \n
\n \n | \nx-pack.svg | \n_includes/icons/simple-icons/x-pack.svg | \n \n \n | \n
\n \n | \nxamarin.svg | \n_includes/icons/simple-icons/xamarin.svg | \n \n \n | \n
\n \n | \nxaml.svg | \n_includes/icons/simple-icons/xaml.svg | \n \n \n | \n
\n \n | \nxampp.svg | \n_includes/icons/simple-icons/xampp.svg | \n \n \n | \n
\n \n | \nxbox.svg | \n_includes/icons/simple-icons/xbox.svg | \n \n \n | \n
\n \n | \nxcode.svg | \n_includes/icons/simple-icons/xcode.svg | \n \n \n | \n
\n \n | \nxdadevelopers.svg | \n_includes/icons/simple-icons/xdadevelopers.svg | \n \n \n | \n
\n \n | \nxero.svg | \n_includes/icons/simple-icons/xero.svg | \n \n \n | \n
\n \n | \nxfce.svg | \n_includes/icons/simple-icons/xfce.svg | \n \n \n | \n
\n \n | \nxiaomi.svg | \n_includes/icons/simple-icons/xiaomi.svg | \n \n \n | \n
\n \n | \nxing.svg | \n_includes/icons/simple-icons/xing.svg | \n \n \n | \n
\n \n | \nxmpp.svg | \n_includes/icons/simple-icons/xmpp.svg | \n \n \n | \n
\n \n | \nxrp.svg | \n_includes/icons/simple-icons/xrp.svg | \n \n \n | \n
\n \n | \nxsplit.svg | \n_includes/icons/simple-icons/xsplit.svg | \n \n \n | \n
\n \n | \nyahoo.svg | \n_includes/icons/simple-icons/yahoo.svg | \n \n \n | \n
\n \n | \nyamahacorporation.svg | \n_includes/icons/simple-icons/yamahacorporation.svg | \n \n \n | \n
\n \n | \nyamahamotorcorporation.svg | \n_includes/icons/simple-icons/yamahamotorcorporation.svg | \n \n \n | \n
\n \n | \nyammer.svg | \n_includes/icons/simple-icons/yammer.svg | \n \n \n | \n
\n \n | \nyandex.svg | \n_includes/icons/simple-icons/yandex.svg | \n \n \n | \n
\n \n | \nyarn.svg | \n_includes/icons/simple-icons/yarn.svg | \n \n \n | \n
\n \n | \nycombinator.svg | \n_includes/icons/simple-icons/ycombinator.svg | \n \n \n | \n
\n \n | \nyelp.svg | \n_includes/icons/simple-icons/yelp.svg | \n \n \n | \n
\n \n | \nyoutube.svg | \n_includes/icons/simple-icons/youtube.svg | \n \n \n | \n
\n \n | \nyoutubegaming.svg | \n_includes/icons/simple-icons/youtubegaming.svg | \n \n \n | \n
\n \n | \nyoutubestudio.svg | \n_includes/icons/simple-icons/youtubestudio.svg | \n \n \n | \n
\n \n | \nyoutubetv.svg | \n_includes/icons/simple-icons/youtubetv.svg | \n \n \n | \n
\n \n | \nz-wave.svg | \n_includes/icons/simple-icons/z-wave.svg | \n \n \n | \n
\n \n | \nzalando.svg | \n_includes/icons/simple-icons/zalando.svg | \n \n \n | \n
\n \n | \nzapier.svg | \n_includes/icons/simple-icons/zapier.svg | \n \n \n | \n
\n \n | \nzdf.svg | \n_includes/icons/simple-icons/zdf.svg | \n \n \n | \n
\n \n | \nzeit.svg | \n_includes/icons/simple-icons/zeit.svg | \n \n \n | \n
\n \n | \nzend.svg | \n_includes/icons/simple-icons/zend.svg | \n \n \n | \n
\n \n | \nzendesk.svg | \n_includes/icons/simple-icons/zendesk.svg | \n \n \n | \n
\n \n | \nzendframework.svg | \n_includes/icons/simple-icons/zendframework.svg | \n \n \n | \n
\n \n | \nzeromq.svg | \n_includes/icons/simple-icons/zeromq.svg | \n \n \n | \n
\n \n | \nzerply.svg | \n_includes/icons/simple-icons/zerply.svg | \n \n \n | \n
\n \n | \nzhihu.svg | \n_includes/icons/simple-icons/zhihu.svg | \n \n \n | \n
\n \n | \nzigbee.svg | \n_includes/icons/simple-icons/zigbee.svg | \n \n \n | \n
\n \n | \nzillow.svg | \n_includes/icons/simple-icons/zillow.svg | \n \n \n | \n
\n \n | \nzingat.svg | \n_includes/icons/simple-icons/zingat.svg | \n \n \n | \n
\n \n | \nzoom.svg | \n_includes/icons/simple-icons/zoom.svg | \n \n \n | \n
\n \n | \nzorin.svg | \n_includes/icons/simple-icons/zorin.svg | \n \n \n | \n
\n \n | \nzulip.svg | \n_includes/icons/simple-icons/zulip.svg | \n \n \n | \n
Icon | \nFilename | \nFull path | \nInclude code | \n
---|---|---|---|
\n \n | \nshare.svg | \n_includes/icons/other/share.svg | \n \n \n | \n
The framework comes with octicons, simple-icons, and a directory for 'other'.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"The very smallest components in the design system.","robots":"noindex,follow"}, "title": "Icons", "slug": "icons", "ext": ".html", "tags": [] }, { "content": "Molecules are characterized by having more than just one little thing to them, and by not being a form input.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nWe mailed out all invitations a while ago. If you did not receive one you probably were not invited. It's a small wedding, sorry.
\nAccordions are used for progressive disclosure. Specifically, they can be used for things like FAQs, where the\nalternativue would be anchor links in a table of contents for showing the headings, then clicking to show the\nanswer/detail.
\n\nAccordions should not be used to hide large amounts of content. That is being dishonest to the user about the content\non the page. To mediate this, the accordion could be open by default.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nBrad made a status alert
\nAlerts let the user know something more important and timely that body text.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nBylines give metadata about a page, post, or entity.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nArbitrary location for a party three centuries in the making
\nCards are represent content that has its own page.
\n\n@see https://inclusive-components.design/cards/
\n\n\n\nJust some sample text in the accessibility section for now.
\n\n@see https://inclusive-components.design/cards/
\n\nA collection hierarchy represents all the items in a collection, as organized in the collection’s directory structure. It\ncan serve as a secondary navigation, especially on pages for docs.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nDocblocks are used by the internal component system to show examples and documentation for other components.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nEvent details can be placed in the page hero for an event, or perhaps elsewhere. Events have details that other collections\ndo not, so putting the dates and locations somewhere other than the body may yield greater attention to it.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nMenus can be used to group related navigation links together in order to display an implied information architecture.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nSKU: SBFRT-0001
\nPrice: 82.99
\nProduct summary is the product equivalent of a byline or event details component. It shows the SKU, price, and other fixed\nfields for a product.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nProduct widgets set up a buy button for snipcart with a quantity selector.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nThe search widget is a toggleable icon that opens a search form for keyword searching the whole site. Only one should appear\nper page in order to avoid id attribute conflicts.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nMolecules are characterized by having more than just one little thing to them, and by not being a form input.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Components that are made up of more than one little thing.","robots":"noindex,follow"}, "title": "Molecules", "slug": "molecules", "ext": ".html", "tags": [] }, { "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nPromise: We make the least-breakable widgets on the market in the Peoria area.
\n\nMission: Take the Chicagoland area's widget market by storm in the next five years.
\n\nTone: Direct, concise, uncomplicated. You should get what we're saying the first time you read it.
\n\nElevator pitch: \"You know when you're up on the top floor trying to install a widget, and it breaks?\n Yeah, we've dealt with that forever, too. Our company makes widgets that don't break, so you pay less and get more.\"
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nWorked through 8 concepts, which seems like the right number to really explore the creative space. Each concept is\n a black-and-white rendering, since the end result has to be used for web, print (including b&w), and other media.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nA logo mark should accomplish a few things:
\n\nColor plays a big part in bringing a brand together. Here is the palette of the base scheme, right next to each\n other. If you can't feel a brand impression or at least get a hint at a mood, it might be worthwhile to revisit the\n scheme.
\n\nOften the brand palette is used more subtly, via the light versions of the brand shades. These washed-out or pastel\n tones should also work together to give you a hint of the brand:
\n\nEvery site/brand has one or more assets that get dropped all over the place: logo for print, social, app icons, etc.\n Social usually has cover images. There are defaults and treatments that are best explained.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nImage | \nDescription | \n
---|---|
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n | \nThe chosen logo concept with its main color treatment | \n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n | \nThe app icon when you install this site as a bookmark on a mobile device. | \n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n | \nThe simplified mark used as an icon in browser tabs and bookmarks. | \n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n | \nAn app tile, primarily for Windows. | \n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n | \nA wide app tile, primarily for Windows. | \n
In this section we'll leverage the defaults in the system to see how the design choices reinforce a brand mood.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nA card is usually a good example of a site's mood, since it often has the site's choices of shadows (lighting direction),\n borders, corners, colors, image treatments, etc.
\n\nFonts, colors, logos and imagery, and other things that contribute to the feel.
\nHere are the individual properties, highlighted for review:
\n\nAlong with the standard typographic styles demonstrated\n in the section below, this paragraph has the default border on it. It also has some padding applied, since otherwise\n the border would be tight to the text.\n
\n border--default:\n 1px solid\n
This paragraph is similar\n to the one above, but it applies the standard amount of corner rounding for the site. In broad terms, very square\n corners feel calculated, structural, rigid, whereas a very round corner feels smooth, safe, playful. A subtle rounding\n in between can evoke a compromise between two extremes.\n
\n border-radius--default:\n .25em\n
Here\n we add the default box-shadow. Even if a site doesn't explicitly use shadows (ie. flat design), setting a default has\n value because it gives a design idea of a light source and its direction. This can be used for art direction, and can\n contribute to imagery choice; keeping consistent lighting direction can make a site feel cohesive.\n
\n box-shadow--default:\n 0 .1em .75em rgba(99,99,99,.625)\n
This box demonstrates how wide a box will go within the content area. Within reason, a narrow content area feels legible\n and cozy, while a wide area feels creative and expansive. We typically set up a 1200-pixel-wide content area, for two\n good reasons:
\n\nThe standard spacing on the site is multiples of a single,set value. This way, if you end up wanting to change the\n feel of the site, you can do it by changing one thing in one place. A site with big whitespace feels luxurious and\n upmarket, while tight spacing feels efficient but can also come across as unrefined. Here is a single space, not very\n indicative of much on its own:\n
\n
Motion, transitions, animations, and 'micro-animations' (which is industry buzzword talk rather than a meaningful\n distinction) can also influence how a visitor feels about your brand presence. An example of the default transition\n timing is below:
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nHuman perception and preference for snappy interfaces constrains transitions to between instant and half a second.\n Obviously you can't make a transition faster than instant, and any slower than half a second and people feel like\n there's a computer problem.\n
\n transition--default:\n all .3s ease-in\n
Below are textual explanations of the typographic choices, as well as some samples of common elements. This is what\n normal body text looks like, for instance.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nFollowing a heading should be some text. If there's a heading and then another heading it's usually a sign that the\n content isn't being outlined in a manner that humans of all abilities as well as search engines can easily understand.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nA level-1 heading is often the page title. Depending on your school of thought, the logo may also be a level-1 heading.\n Level-2 headings are for section headers. So once you've gotten into a section and are writing text, you're using third-level\n headings to keep the right outline level.
\n\nThere should be a comfortable amount of space between paragraphs. Not a tiny space that makes it feel like a continuous\n paragraph, nor a giant space that makes the page feel like a void.
\n\nAnyway, level three headings, as a common text treatment within body text, should appear distinct from the paragrpah\n text, but should be legible and easy to visually discern when skimming or scanning.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nIn practice, a document written for humans on the web doesn't go down six outline levels. If you find yourself writing\n a fifth-level heading, it may be time to reconsider the density and complexity of the page. It might be worthwhile to\n write simpler prose and split different concepts onto different pages.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nMore often than not, the type scale approaches the body text size around heading level 5 or 6. It's not uncommon for\n heading level six to be smaller than body text, albeit bold or italic or underlined or a different font or a different\n shade/color. If you're writing a dense, technical site, it's probably worthwhile to keep heading 5 bigger than body\n text.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nAn important thing to note with heading levels, beyond font size and text treatments, it the comfort of the spacing\n between a heading and text, especially above it. A consistent amount of space between all text elements including headings\n is similar to square corners: harsh, calculating, flat. A variable amount of space (bigger headings have bigger spaces)\n feels more human and organic.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nHere are the fonts used to evoke brand feelings and aid the user in reading the site.
\n\nThis paragraph probably looks like the once above it. That's because paragraphs are\n overwhelmingly set in the primary font. The web is a majority of sans-serif faces for the body copy, but a serif can\n give a classic, timeless feel.\n
\n font-family--primary:\n 'Public Sans', Arial, Helvetica, sans-serif\n
Here is some body text set in the secondary font. Depending on the face being used,\n this may not be particularly easy-to-read. The secondary font is for making a statement in your headings and other\n places where feeling can be generated with text treatment. See in the definition box that the main font is declared,\n but then there's a 'stack' of web-safe fonts separated by commas. These are the fallbacks for when the web font doesn't\n load. You can also use them as secondary brand fonts.\n
\n font-family--secondary:\n 'Emberly', Georgia, Times New Roman, serif\n
If your site has code samples, having a monospace font can be a good, subtle branding\n enhancement. Typically we'll just set a web-safe stack, but if you have a technical site you'll likely see a benefit\n picking and loading a brand-specific code font.\n
\n font-family--monospace:\n 'courier new', courier, monospace\n
\n // Here is some code as an example, set in monospace font:\n console.log({\n fontName: 'test1',\n sillyCode: 'what the heck?'\n });\n
\n\nText boxes and other form inputs can have their own font, and on this site it is set to\n this! For the most part you're gonna want to stick to a boring sans-serif font for form inputs, since that's what\n users expect.\n
\n font-family--input:\n 'Public Sans', Arial, Helvetica, sans-serif\n
This paragraph has the standard line-height (leading) applied. A value of 1 means the\n text is strictly single-spaced. A value of 2 is double-spaced. In practical terms text feels legible when it's a little\n less than 1.5. You can make the text feel urgent and dense by going lower, or breezy by going higher.\n
\n line-height--default:\n 1.425\n
This is probably more difficult to read. Body text can be nearly double-spaced and it\n still feels pretty comfortable. Headings with more than about 1.2 spacing begin to subvert the proportions of space.\n In order to preserve the gestalt of the heading's logical text grouping, text with a line-height for headings should\n be nearly single-spaced.\n
\n line-height--heading:\n 1\n
Text shadows are not typically applied to body text because it is so small, and the\n shadows can interfere with the shapes of letters and words when reading. But headings, especially those placed over\n image backgrounds, can benefit from a little shadow or glow, especially when a brand mood appreciates depth and lighting\n over flatness.\n
\n text-shadow--default:\n 0 0 2px rgba(0,0,0,.325)\n
\n\n\nA blockquote is a way to highlight a large amount of quoted text. Often you'll find typographic flourishes in conjunction\n with lines, spacing, and especially big quotation marks. Colors and backgrounds are also not uncommon.
\n
Next, after this paragraph, is a horizontal rule. They can be as plain and utilitarian as a 1-pixel black line, or\n an ornate source of visual flourishes.
\n\nUnordered lists most usually have bullet dots at the beginning of each line.
\n\nHere, near the bottom of all this discussion of brand and mood, are links, of all things!\n Within body copy you'll find links, as well as bold, strong text and italic, emphasized text.\n Please, dear reader, keep underlines on textual links, and avoid using underlines for non-link purposes.
\n", "id": "/docs/design/moodboard", "url": "/docs/design/moodboard/", "path": "_docs/design/moodboard.html", "relative_path": "_docs/design/moodboard.html", "excerpt": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n For the most part, organism components can be dropped in wherever they're needed or desired. Often they're added via\n layouts, though, so be careful to account for any duplicates that may arise from one-off usage.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nThe copyright section contains the copyright statement, as well as licensing links if applicable, and the copyright menu.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nThe footer section contains site contact information, socials, and the footer menu.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nThe form section can use the mode property in conjunction with a slug to call an entity from a form collection. It can also\nbuild a form with any suitably-constructed entity with all the necessary props.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nThe header section contains the logo and identifying information. It also houses the search widget markup.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nName | \nDescription | \nExample | \n
---|---|---|
\nclasses | \n \ncss classes applied to parent | \n \ncolor--main-dark\n | \n \n
The header section contains the logo and identifying information. It also houses the main menu and search widget markup.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\n\n This section can be customized for a fancy, important, temporary feature on the home page. You will probably want\n to put a fancy background here or otherwise catch users' eyes.\n
\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n Make your own site easily\nName | \nDescription | \nExample | \n
---|---|---|
\nclasses | \n \ncss classes applied to parent | \n \ncolor--main-dark\n | \n \n
The header pre is an optional section for the front page, to draw attention above the fold.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nName | \nDescription | \nExample | \n
---|---|---|
\nclasses | \n \ncss classes applied to parent | \n \ncolor--main-dark\n | \n \n
The hero contains the page title, and sometimes more information like the meta description or other details.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nName | \nDescription | \nExample | \n
---|---|---|
\nclasses | \n \ncss classes applied to parent | \n \ncolor--main-dark\n | \n \n
The nav section contains the main menu. It is a headroom-style sticky menu by default.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nWriting guide for inclusivity
\nWrite enough to get your point across, but no more.
\nQuick overview of our guiding content principles.
\nName | \nDescription | \nExample | \n
---|---|---|
\nclasses | \n \ncss classes applied to parent | \n \nbackground-color--main-dark color--white | \n \n
\nchildren | \n \nContents and sub-contents of the section | \n \nHere is some text. | \n \n
\ntitle | \n \nEach section should have an h2 | \n \nThis describes what is in the section | \n \n
\ntitle_classes | \n \nStyling for the section title | \n \nheading--h1\n | \n \n
The related section can highlight content of the same type as the page you’re on.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nThis is a paragraph of text
\nName | \nDescription | \nExample | \n
---|---|---|
\n classes | \n \ncss classes applied to parent | \n \nbackground-color--main-dark color--white | \n \n
\n children | \n \nContents and sub-contents of the section | \n \nHere is some text. | \n \n
\n title | \n \nEach section should have an h2 | \n \nThis describes what is in the section | \n \n
\n title_classes | \n \nStyling for the section title | \n \nheading--h1\n | \n \n
Sections separate large distinct portions of content on a page.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nName | \nDescription | \nExample | \n
---|---|---|
\nclasses | \n \ncss classes applied to parent | \n \ncolor--main-dark\n | \n \n
The utility navigation section is for verb-based navigation actions like “Contact us”, as opposed to nouns like About that\nbelong in the main nav.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\nName | \nDescription | \nExample | \n
---|---|---|
\nclasses | \n \ncss classes applied to parent | \n \ncolor--main-dark\n | \n \n
The external utility navigation section is for affiliated and other brand sites related to the current site.
\n\n\n\nJust some sample text in the accessibility section for now.
\n\n\n For the most part, organism components can be dropped in wherever they're needed or desired. Often they're added via\n layouts, though, so be careful to account for any duplicates that may arise from one-off usage.\n
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Biggest components, made up of all the smaller kinds.","robots":"noindex,follow"}, "title": "Organisms", "slug": "organisms", "ext": ".html", "tags": [] }, { "content": "@todo for some reason this page is running into rendering issues.
\n\n\n Section entities may be called by organisms/section.html
using the mode=\"ref\" prop. They can also be automatically\n added to any content in the Page collection via the front-matter.\n
Brad made a status alert
\"\n classes=\"\"\n dismissible=true\n level=\"status\"\n %}\n\n {% include molecules/alert.html\n children=\"This is a warning-level alert using plain text rather than markup.\"\n classes=\"\"\n dismissible=true\n level=\"warning\"\n %}\n\n {% include molecules/alert.html\n children=\"Here is an error alert with bold text and a link.
\"\n classes=\"\"\n dismissible=true\n level=\"error\"\n %}\n\n{% endcomment %}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n {% include organisms/form.html\n mode=\"ref\"\n slug=\"contact\"\n%}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nThis version of the site redesign was primarily completed in about 2 days.
\n\nIf you want a high-quality site with all of the features but very little of the cost, get in touch with Brad.
\n\n {% include atoms/spacer.html size=\"2\" %}\n\n Solve it once\nTo see all current events, check out the Events page
\n{% else %}\nThere are presently no future events.
\n{% endif %}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n {% include atoms/spacer.html size=\"4\" %}\n\n{% if site.posts[0] %}\nSee more on our Blog page.
\n{% else %}\nThere are presently no posts.
\n{% endif %}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n {% include atoms/spacer.html size=\"2\" %}\n\nUpdates aren't too frequent. If you subscribe and then quickly unsubscribe, no hard feelings.
\n\n{% include organisms/form.html\n mode=\"ref\"\n slug=\"mailchimp\"\n%}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n {% include atoms/spacer.html size=\"4\" %}\n\n{% if site.people[0] %}\nThere are presently no people on this site.
\n{% endif %}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n {% include atoms/spacer.html size=\"4\" %}\n\n{% assign products = site.products %}\n{% if products[0] %}\nTo see all products, check out the Products page
\n{% else %}\nThere are presently no products.
\n{% endif %}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n", "id": "/docs/design/sections", "url": "/docs/design/sections/", "path": "_docs/design/sections.html", "relative_path": "_docs/design/sections.html", "excerpt": "@todo for some reason this page is running into rendering issues.
\n\n", "collection": "docs", "draft": false, "categories": [], "layout": "doc", "sitemap": false, "authors": ["brad-czerniak"], "meta": {"description":"Reusable and demonstration content at organism size.","robots":"noindex,follow"}, "title": "Sections (reusable)", "slug": "sections", "ext": ".html", "tags": [] }, { "content": "The following strategic direction encompasses the strategy of this site qua website; that is, it is a website strategy\nrather than an organization strategy. The vision, mission, values, goals, and objectives herein define what is to be\naccomplished by the site in service of a greater organizational vision.
\n\nA site where everyone can find what they need quickly.
\n\nTo deliver a broadly-accessible and inclusive web experience that is efficient and feels fast, using compelling copy,\nmedia, and web-standards-based technologies.
\n\n\n For human testing and automated tools, this project is committed to supporting the following browsers:\n
\n\nBrowser versions | \nNotes | \n \n \n \n \n \n \n
---|---|
last 2 Chrome versions | \nChrome is an 'Evergreen' browser | \n
last 2 ChromeAndroid versions | \nChrome is an 'Evergreen' browser | \n
last 2 Edge versions | \nEdge is an 'Evergreen' browser based on Chrome | \n
last 2 Firefox versions | \nFirefox is an 'Evergreen' browser | \n
last 1 iOS versions | \niOS Safari has a limited release cycle, but software updates are readily performed | \n
last 1 Safari versions | \nSafari has a limited release cycle, but software updates are readily performed | \n
not IE 1-11 | \nInternet Explorer has declining market share, poor feature support, and is no longer supported by Microsoft | \n
\n Browser support information is in ./_includes/.browserslistrc and can be used in node.js (autoprefixer and the like)\n by ensuring env BROWSERSLIST_CONFIG=./_includes/.browserslistrc
.\n
\n In order to ensure snappy and standards-compliant front-end performance, each asset group should be limited to the\n following maximum numbers of files and total payload.\n
\n\nAsset class | \nMax number of files | \nTotal payload size | \n \n \n \n \n
---|---|---|
document | \n1 | \n20 kB | \n
font | \n8 | \n250 kB | \n
image | \n20 | \n500 kB | \n
media | \n3 | \n100 kB | \n
other | \n20 | \n100 kB | \n
script | \n5 | \n100 kB | \n
stylesheet | \n3 | \n50 kB | \n
third-party | \n5 | \n60 kB | \n
total | \n40 | \n1500 kB | \n
\n The above data comes from ./_data/budget.json
, which is a performance budget file that can be directly\n used by the Lighthouse CLI to test pages against\n the budget.\n
\n If editing the budget.json file, please ensure to keep the asset classes in both resourceCounts
and\n resourceSizes
identical and in the same (alphabetical) order, since the way this table is rendered efficiently\n depends on that.\n
\n Front-end performance is important, as reflected in this site's strategic plan. Performance affects multiple aspects of\n site operation:\n
\n\n\n As a website team, it is our duty to keep site front-end performance within the budget whenever humanly possible. When\n we are in jeopardy of exceeding the budget, we can approach the issue in one or more ways\n (according to Tim Kadlec):\n
\n\n\n Great performance sometimes means making tough choices, but as a team we will prevail as long as we remain goal-oriented.\n
\n\n\n Menus are a good indication of the implied structure of a site, even when the typed data is stored in a flat manner.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nThe main menu is the primary way users navigate between top-level sections. Pages in the main menu should have short,\n instantly-understandable titles. There should be between 1 and 7 main menu items, including the home page.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nMore often than not, the footer menu is a duplicate of the main menu. If there is an important but secondary page that\n does not fit in the main menu or elsewhere, the footer menu could be the place for it, tentatively. It's a good place to\n park a page in order to resolve an argument.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nThe utility menu is where to put 'verb' items; if the main menu has nouns like 'About' or 'Products', then the utility\n menu would be best for 'Contact us' or 'Schedule an appointment'. Overall, the utility menu is a great place for contact\n information.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nThe copyright menu holds legal and technical documentation links. This is stuff you have to have, but not that anybody\n clicks into with any regularity.
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \nThe site's content can be put into the following buckets for use throughout:
\n\nAll content on the site can be described (for keyword SEO purposes) and grouped together using two different vocabularies:
\n\n\n Personas, as used in UX, are useful for testing and heuristics where empathizing with the motivations of a particular\n user or segment could yield insights about the IA and UI of a site or app. The following personas are applicable to a wide\n range of applications.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n Barry is a 65-year-old from a rural area. He's curious, deliberate, and prefers things kind of slow. His primary behavior\n on websites is skimming and browsing. He's likely to peruse 5 or more pages on the site before bouncing,\n read some passages in depth, and eschew the search functionality in preference to the navigation and other information scents.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n Stephanie is 24, a Sagittarius, lives in a suburb, and works in the city. She grew up with the internet, and is not inclined\n to waste time. She got to the site from a search engine, will use site search to narrow and refine results, and will even\n Ctrl+F
on pages to find what she's looking for. She's more likely to bounce quickly, but may return to a\n different page via organic.\n
\n Legendary usability author of Don't make me think! Steve Krug is a 70-year-old in the suburbs. He has high\n proficiency with tech, combines information-seeking techniques, and judges sites harshly for problems with IA and content.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n Felicia is 33 years old. She was absolutely clobbered in her career by the Great Recession. She lives in a suburb in an\n overpriced rental, has remaining student debt, and has come to terms with her situation not getting much better any time\n soon. Still, she remains optimistic that technology and societal progress will improve her lot in life by the time she'd\n want to retire.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n Dominique is 49 and living in an assisted living facility just outside of the city. She is not defined by her numerous\n sensory, cognitive, and motor difficulties, but certainly has to grapple with them every day. Dominique wants to get through\n the computer work so she can get back to her non-computer crafts and hobbies.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n This platform relies on the principles of discount usability testing\n that the Nielsen/Norman Group has promoted for the last 3 decades:\n
\n\n\n More than any other piece of testing guidance, the most important thing to ensure when doing discount/guerilla testing\n is that you're not leading the user. The simple test script should be open-ended, and the test\n should be to get the user telling you what they're doing rather than telling them what to do next (after all, a user getting\n stuck is a useful result!).\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n See the UX principles docs page for the\n heuristic and Gestalt priorities for the platform.\n
\n\n\n To save test subjects' time and to clear up obvious potential issues, the UX practitioner should perform heuristic analysis\n following the insights of a test. The team should then update the site based on those analyses before performing more user\n tests.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n Here's a script that can be copy/pasted and adapted to the particulars of the test you're looking to run:\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n \"Navigate to the FAQ page, then read out loud the second question on that page. Please describe out loud what\n you're doing as you do it.\"
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n As the user describes what they are doing, note what they describe for any navigation dead-ends, ambiguous links or impediments,\n and other usability issues that the user describes. Seek clarification or expansion if there's anything they say that isn't\n totally clear. Repeat the test with up to 6 users to get a variety of results.\n
\n\n\n If there is agreement between two or more users (or a single user makes an easy-to-fix insight) about a particular usability\n issue, it is likely worth addressing.\n
\n", "id": "/docs/user-experience/user-testing", "url": "/docs/user-experience/user-testing/", "path": "_docs/user-experience/user-testing.html", "relative_path": "_docs/user-experience/user-testing.html", "excerpt": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n The Laws of UX site is a fantastic resource for learning in depth about mental models,\n heuristics, and immutable laws of human behavior that undergird the practice of user experience design.\n
\n\n\n Whereas the Laws of UX site presents in a numerical order, that order is just alphabetical with numbers. For the purpose\n of this site, the ordered list establishes an opinionated priority, with 1 being more important than 2,\n and so forth. In the event that two solutions or even their underlyring principles conflict, the answer abiding to the\n lowest-number law in the list is the one that should be chosen.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\nAmong competing hypotheses that predict equally well, the one with the fewest assumptions should be selected.
\n Especially where users' attention is concerned, less is more. If a single form field can do, don't split it into 3.\n If a section can be a heading, some text, and a little bit of space, avoid a complex layout. Keep it simple.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nUsers spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know.
\n When you can stick to convention, reuse obvious patterns, and avoid reinventing the wheel, it's better for eveyone\n to do so.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nThe time to acquire a target is a function of the distance to and size of the target.
\n Fitts' Law seems underappreciated compared to other interaction guidance. On this site, important interactive elements\n should always be big and nearby. Any two elements should have adequate spacing to prevent misses.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nObjects that are near, or proximate to each other, tend to be grouped together.
\n We are strongly inclined to group related content together: at the page and menu level, on a page via sections and\n the heading outline, and in smaller ways both visually and syntactically.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nUsers have a propensity to best remember the first and last items in a series.
\n We want the starts and ends of things to be the best parts. People derive value from the middle of a story or a section\n containing supplementary information, yes, but they retain the headline and the call to action. Prioritize this over\n Miller's Law, slightly.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nThe average person can only keep 7 (plus or minus 2) items in their working memory.
\n This, coupled with the serial position effect, should be the basis for navigation menus. Each level of menu (with\n Occam's Razor driving toward a minimal number of levels) should start and end with the most important items, and should\n number no more than 9 items, ideally 7 or fewer.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nElements tend to be perceived into groups if they are sharing an area with a clearly defined boundary.
\n Useful to keep in mind when making a small part of an interface, like a fieldset or layout column. The use of a background,\n border, or tactical spacing can yield benefits for making an element or elements easier to understand.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nProductivity soars when a computer and its users interact at a pace (<400ms) that ensures that neither\n has to wait on the other.
\n We set a performance budget to ensure that everything\n on the site is as snappy as can be. Where practical, such as the moodboard and\n identity documentation, we also specify that transitions and animations remain within the Doherty Threshold.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nBe liberal in what you accept, and conservative in what you send.
\n It's vitally important, especially in the context of inputs, that we accept user inputs liberally. In the context of\n Falsehoods programmers\n believe about names and the CRM/MA convention of splitting name fields, we want to fight back and let users be\n their authentic selves. And receiving data means respecting users' privacy.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nUsers often perceive aesthetically pleasing design as design that’s more usable.
\n This principle is less important in a decision-making framework because aesthetic can derive from simplicity, from\n convention, and via detail work rather than foundationally. Aesthetic is also more subjective than other laws and\n effects in this list.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n All laws from the reference site are included, though some are under-emphasized and others deemed redundant or harmful.\n The remaining laws in the list below should not directly drive decision-making.\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\nFor many events, roughly 80% of the effects come from 20% of the causes..
\n This is a useful mental model and certainly a strong effect. For largely-static sites rather than contributory efforts\n (such as wikis), though, the 20% of causes is largely known and internal to the brand.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nPeople judge an experience largely based on how they felt at its peak and at its end, rather than the\n total sum or average of every moment of the experience.
\n We want to keep this in mind, especially when telling stories; a good story takes great care to make a satisfying\n climax and ending. For a website, we have to battle serial position and \"the fold\" against the peak-end, since bounces\n can mean very quick starts, peaks, and ends for some user segments. Defer to the serial position effect ten times\n for every application of the Peak-End rule.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nAny task will inflate until all of the available time is spent.
\n Less a driver of decision-making and more a joke about project management... We should aspire to provide maximum value\n for available time. Perhaps the lesson from this 'law' is to always have an enticing backlog!\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nWhen multiple similar objects are present, the one that differs from the rest is most likely to be remembered.
\n Prioritize this effect, wherein a combo-breaker helps drive user engagement (see \"Amazon recommends\") over implying\n patterns via the Law of Similarity. At the same time, do not overuse this effect, since it can lead to the \"if everything\n is bold then nothing is bold\" feeling.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nThe human eye tends to perceive similar elements in a design as a complete picture, shape, or group,\n even if those elements are separated.
\n An interesting effect, certainly. However, if a design relies on similarity and difference rather than being\n simply enhanced by the effect, it is a likely sign of too much visual complexity driving the design.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nFor any system there is a certain amount of complexity which cannot be reduced.
\n Yet another corollary of Occam's Razor, albeit insightful. We want to convey meaning to users as simply as possible.\n Any simpler and the meaning falls apart. Any more complex and the conveyance is inefficient. We want as simple as we\n can, but no simpler.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nElements that are visually connected are perceived as more related than elements with no connection.
\n Another corollary, this time of the law of proximity. Things that are connected are by definition proximate. Let's\n Occam this and keep in mind how important proximity is.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nPeople will perceive and interpret ambiguous or complex images as the simplest form possible, because\n it is the interpretation that requires the least cognitive effort of us.
\n Both a corollary of Occam's Razor and a fairly-minute effect compared to regular-old clear communication. All Gestalt\n demonstrates that humans recognize and process perceived patterns with innate biases. If an interface relies on Prägnanz\n in a meaningful way, it's likely too complex of a design to begin with.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nPeople remember uncompleted or interrupted tasks better than completed tasks.
\n Some psychological principles are true, but not necessarily pleasant. This effect enhances memory while increasing\n anxiety. We don't want our visitors to feel anxious about completing tasks, and we don't want users to feel like a\n first-year marketing intern is sending them a \"time's running out\" email. Just note that this is a tool in the black-hat\n UX box and move on.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nThe time it takes to make a decision increases with the number and complexity of choices.
\n This is a corollary of Occam's Razor; while true, in the interest of abiding by our first principles we'll de-prioritize\n it.\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n