<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
>

<channel>
	<title>The Haystack</title>
	<atom:link href="http://www.the-haystack.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.the-haystack.com</link>
	<description>Web. Design. Web design.</description>
	<lastBuildDate>
	Tue, 13 Feb 2018 20:11:29 +0000	</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.1.1</generator>
<site xmlns="com-wordpress:feed-additions:1">1077846</site>	<item>
		<title>Sketch and Destroy</title>
		<link>http://www.the-haystack.com/2018/01/30/sketch-and-destroy/</link>
				<pubDate>Tue, 30 Jan 2018 19:27:24 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[deliverables]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[sketch]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=709</guid>
				<description><![CDATA[Designers love their tools and processes. Many verbal battles have been fought about code or images, Photoshop or Sketch, paper or screen. And these discussions are serious. You&#8217;d think they were about whether to kill all kittens in the world. &#8220;Why don&#8217;t you name your layers?&#8221;, asks Designer A, looking in disgust at her coworker&#8217;s &#8230; <a href="http://www.the-haystack.com/2018/01/30/sketch-and-destroy/" class="more-link">Continue reading <span class="screen-reader-text">Sketch and Destroy</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p>Designers love their tools and processes. Many verbal battles have been fought about code or images, Photoshop or Sketch, paper or screen. And these discussions are <em>serious</em>. You&#8217;d think they were about whether to kill all kittens in the world.</p>
<p>&#8220;Why don&#8217;t you name your layers?&#8221;, asks Designer A, looking in disgust at her coworker&#8217;s latest instance of <em>Artboard Copy 05</em>. Designer B shrugs. Designer A visibly shakes, in the throes of obsessive compulsions.</p>
<p><em>Kittens are dying.</em></p>
<p>While I <em>understand</em> Designer A—after all, I wrote a <a href="https://responsivedesignworkflow.com/">book</a> about a particular way of working—I often tend to side with Designer B. Here&#8217;s why.</p>
<p>Imagine two Sketch files. Both yield the exact same static image. In our example, stakeholders don&#8217;t see the Sketch file. Developers don&#8217;t see the Sketch file. They don&#8217;t see the layers; they don&#8217;t have to deal with the layers. In this case, <em>it doesn&#8217;t matter how the layers are named</em>.</p>
<p>Now imagine a relatively small design change. One designer makes a high fidelity mockup in Sketch with full spec. It takes an hour. Another designer opens the page in the browser, open the browser&#8217;s developer tools, makes some changes, and screenshots or saves the change and the dev tools CSS. It takes 10 minutes. Both communicate the same thing clearly, one takes less time.</p>
<p>Or a high-fidelity mockup where a super-quick Invision Freehand sketch and a couple of notes will suffice. Or a hand-drawn sketch on a sheet of paper and a 5-minute sit-down with a dev.</p>
<p>As designers, we&#8217;re good at asking critical questions. But often, we forget to do the same when it comes to our personal preferences regarding work tools and processes. Some of these questions will help provide direction about things such as naming conventions:</p>
<ul>
<li>How can I communicate this clearly, through the most effective application of my time and effort?</li>
<li>Is this an <a href="https://articles.uie.com/artifacts_and_deliverables/">artifact or a deliverable</a>?</li>
<li>Will others need to use it in non-exported form?</li>
<li>Will this need to be reusable? To what degree?</li>
</ul>
<p>The end result of a design effort, not including a product itself, is the <em>communication of intent</em> to those realising the production. Developers, for example. And usually non-technical stakeholders. <strong>This communication of intent, in whatever form, is your deliverable</strong>. All other <em>side-effects</em> leading to that deliverable are, arguably, artifacts. You could, in many cases, <em>destroy them</em> when you&#8217;re finished—without consequence.</p>
<p>How many of your Sketch files are <em>really</em> reused by other designers? How many are ever opened again? Do you work in a deeply data-informed environment, where myriads of A/B tests mean you&#8217;ll have to rework parts of a previous mockup that are irrelevant to your design changes? Is it quicker to take a screenshot of a current screen, and overlay changes? Are you putting effort into ways of working that make you feel good, but are irrelevant to communicating your intent?</p>
<p>It can be helpful for designers to ask themselves questions about the communication of intent. The following are in order. If you answer no to the first, then you ask yourself the next:</p>
<ol>
<li>Will a [quick] conversation suffice?</li>
<li>Will a [quick] sketch suffice?</li>
<li>Will a screenshot with annotations suffice?</li>
<li>Will a low-fi mockup suffice?</li>
<li>Will a hi-fi mockup suffice?</li>
<li>Any combination of the above?</li>
<li>I need a prototype. At what level of fidelity?</li>
</ol>
<p>Of course, ideally you&#8217;d come up with questions that fit your own circumstances. These are just examples.</p>
<p>I get it. I do. Emacs vs vim. Gulp vs Grunt. React vs Vue. Sass vs LESS. Spaces vs tabs. (The answer is spaces.) <em>Everybody</em> has preferences, ways of working that are effective for them. But think critically about whether you&#8217;re solving the right problem. Those particularities of your own working style might not add much to your actual goal.</p>
<p>Sometimes we present ourselves with the illusion that we&#8217;re doing something important. But the biggest waste of time is doing that which need not be done at all.</p>
]]></content:encoded>
									<post-id xmlns="com-wordpress:feed-additions:1">709</post-id>	</item>
		<item>
		<title>How I prepare data-merged designs for print using open source software</title>
		<link>http://www.the-haystack.com/2016/05/16/data-merged-print-design-with-open-source/</link>
				<comments>http://www.the-haystack.com/2016/05/16/data-merged-print-design-with-open-source/#comments</comments>
				<pubDate>Mon, 16 May 2016 14:21:08 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[ghostscript.cli]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[inkscape]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[print]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=696</guid>
				<description><![CDATA[I co-organize some popular conferences in Amsterdam with a few friends/colleagues. As the resident designer, I&#8217;m often tasked with making the name badges that everybody wears. I used to make these in Adobe InDesign, which has a mail merge function that, while kind of weird (I seemed to be required to use UTF-16 CSV files &#8230; <a href="http://www.the-haystack.com/2016/05/16/data-merged-print-design-with-open-source/" class="more-link">Continue reading <span class="screen-reader-text">How I prepare data-merged designs for print using open source software</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p>
I co-organize some popular conferences in Amsterdam with a few friends/colleagues. As the resident designer, I&#8217;m often tasked with making the name badges that everybody wears. I used to make these in Adobe InDesign, which has a mail merge function that, while kind of weird (I seemed to be required to use UTF-16 CSV files to merge with), worked pretty well.
</p>
<p>
Since I switched my OS to Ubuntu a while back, I haven&#8217;t had a need for InDesign. Really, the only thing I ever used it for was for making badges. That doesn&#8217;t justify the cost to me, not only financially, but also in disk space. :-) So I&#8217;ve set out to make these badges in one of my favorite drawing tools: Inkscape. Since Inkscape is an SVG drawing program, and SVGs are text, I figured there might be some flexibility there.
</p>
<p>
That flexibility and freedom have a price, though. Instead of doing everything in one GUI app, a few different programs are involved. The workflow involves using the command line. It&#8217;s not a perfect process, but it works fairly quickly and well for me. That said, feel free to laugh at my awkward process. Open your copy of InDesign now. By the time you&#8217;ve finished reading this, InDesign should be open and ready to go.
</p>
<p>Note that I&#8217;m not doing book design here; my use case is fairly simple. If print design were still my profession, I would most likely use the best software for the job.</p>
<p>
My biggest problem with this workflow is that I kept forgetting what I did the previous time. That&#8217;s the main reason for me writing this, and for a couple of people who requested it. It&#8217;s essentially documentation for me, so I don&#8217;t forget again. That said, someone else somewhere might find it useful. This is for informational purposes only, and may not work on your system. I am unable to provide any support. It&#8217;s probably best not to follow along at all if you&#8217;re not somewhat comfortable in the command line.
</p>
<p>
I mainly work on a Linux machine, and this description is written from that point-of-view. Anyone following along on other systems might have to work out discrepancies or weirdness in their own environment.
</p>
<p>
With the disclaimer out of the way, let&#8217;s look at the process. This might seem a bit complex, but from my perspective the process is simple, and the following things are true:
</p>
<ol class="org-ol">
<li>I draw my artwork in Inkscape.</li>
<li>I have a CSV with attendee data.</li>
<li>I type one command to generate a file for each badge.</li>
<li>I type one command to combine those files into a single PDF.</li>
<li>I send the PDF to the printer.</li>
</ol>
<p>
Note that in a GUI, instead of typing a command, I would probably choose various commands from one or more menus. So, to be clear, from my perpective, <em>this is not more work than doing this all in a GUI program</em>. I will concede to the fact that there is more complexity in the tools I use, as you have to install three, and they might not work the same on every OS. This process assumes a Linux-like OS, and enough knowledge on your part to recognize things you might need to change to get them to work on you particular OS. Instead of InDesign (and a tool to convert a UTF-8 CSV into UTF-16), I need three tools, which I&#8217;ll describe below. These tools are freely available and don&#8217;t take up much space. The time it takes to generate the badges is not longer (and often shorter) than doing the same with commercial tools.
</p>
<p>
Badges are made in Inkscape, and data from CSV is merged using a Ruby gem called <a href="https://github.com/borgand/inkscape_merge">inkscape merge</a>. It&#8217;s not ideal, but it works fairly well in that Inkscape can be used and I&#8217;m not locked in to a specific software vendor&#8217;s software and workflow. The process outlined here is simple and has kinks, but lots of things could be scripted to do more complex stuff, like customizing visual differences between speaker badges and attendee badges, etc.
</p>
<div id="outline-container-orgheadline1" class="outline-2">
<h2 id="orgheadline1"><span class="section-number-2">1</span> Things you&#8217;ll need</h2>
<div class="outline-text-2" id="text-1">
<p>
We&#8217;re using the following open source tools (please refer to the individual sites for installation instructions):
</p>
<ul class="org-ul">
<li><a href="https://inkscape.org/en/">Inkscape</a>, for doing the badge artwork in SVG</li>
<li><a href="https://github.com/borgand/inkscape_merge">inkscape merge</a>, a Ruby gem, for doing a &#8220;mail merge&#8221; of a CSV file with the artwork, which results in separate files for each (side of each) badge</li>
<li><a href="http://ghostscript.com/">Ghostscript</a>, to merge all the files you generated into a single PDF, if you&#8217;ve exported those files themselves as PDFs. If you&#8217;re on OS X or Linux, there&#8217;s a good chance this is already on your machine.</li>
<li><a href="https://imagemagick.org/script/index.php">ImageMagick</a> (specifically `convert`), to merge all the files you generated into a single PDF, if you&#8217;ve exported those files as bitmaps, e.g. PNG.</li>
</ul>
<p>
If you&#8217;re using OS X or Linux, there&#8217;s a good chance Ghostscript is already on your machine. The last three tools are command line tools, and even Inkscape can be run from the command line (and in fact, <code>inkscape_merge</code> does exactly that). Don&#8217;t be afraid to try it out, if you&#8217;re so inclined. That&#8217;s how one gets more comfortable with the command line.
</p>
</div>
</div>
<div id="outline-container-orgheadline2" class="outline-2">
<h2 id="orgheadline2"><span class="section-number-2">2</span> Creating the Inkscape and CSV files</h2>
<div class="outline-text-2" id="text-2">
<p>
Badges are made in Inkscape any way you want. You&#8217;ll have to have a separate file for each side of the badge, unless both sides will be identical.
</p>
<p>
I draw my own crop marks for the printer in my document, put them in their own Inkscape layer, and lock it. Then I draw the rest. You can also do this after the artwork, but I like to get it out of the way at the beginning. If I want to show my colleagues what a badge will look like, I&#8217;ll make a selection of the printed area and use Inkscape&#8217;s &#8220;Export bitmap&#8221; function to make a PNG of it to show. Obviously, I&#8217;ve already consulted with the printer about what they need to receive from me before I even start. I&#8217;ve worked with printers for whom InDesign was literally the only option. We like our current printer.
</p>
<figure id="attachment_698" aria-describedby="caption-attachment-698" style="width: 672px" class="wp-caption alignnone"><img src="http://www.the-haystack.com/wp-content/uploads/2016/05/inkscape01.png" alt="Conference name badge in Inkscape GUI" width="672" height="763" class="size-full wp-image-698" srcset="http://www.the-haystack.com/wp-content/uploads/2016/05/inkscape01.png 672w, http://www.the-haystack.com/wp-content/uploads/2016/05/inkscape01-264x300.png 264w" sizes="(max-width: 672px) 100vw, 672px" /><figcaption id="caption-attachment-698" class="wp-caption-text">A layout in Inkscape with variables</figcaption></figure>
<p>
Text that is to be replaced by CSV data should be indicated like so: <code>%VAR_csvColumnName%</code>, where <code>csvColumnName</code> corresponds to a column in the CSV. The CSV might look like this:
</p>
<div class="org-src-container">
<pre class="src src-txt">name,company,twitter,
Stephen,Zero Interface,@stephenhay,
PPK,Quirksmode,@ppk,
Krijn,Qontent,@krijnhoetmer,
Martijn,,@Martijnvduuren,
</pre>
</div>
<p>
This is essentially the following structure:
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">name</th>
<th scope="col" class="org-left">company</th>
<th scope="col" class="org-left">twitter</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Stephen</td>
<td class="org-left">Zero Interface</td>
<td class="org-left">@stephenhay</td>
</tr>
<tr>
<td class="org-left">PPK</td>
<td class="org-left">Quirksmode</td>
<td class="org-left">@ppk</td>
</tr>
<tr>
<td class="org-left">Krijn</td>
<td class="org-left">Qontent</td>
<td class="org-left">@krijnhoetmer</td>
</tr>
<tr>
<td class="org-left">Martijn</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">@Martijnvduuren</td>
</tr>
</tbody>
</table>
<p>
If I were to have a bit of text in my Inkscape SVG file with <code>%VAR_name%</code>, then when I run <code>inkscape_merge</code> with the above CSV file, that variable would be replaced with &#8220;Stephen&#8221;, &#8220;PPK&#8221;, &#8220;Krijn&#8221;, and &#8220;Martijn&#8221;, each in their own file.
</p>
<p>
The CSV file should be UTF-8 encoded.
</p>
</div>
</div>
<div id="outline-container-orgheadline3" class="outline-3">
<h3 id="orgheadline3"><span class="section-number-2">2.1</span> A caveat about the CSV file</h3>
<div class="outline-text-2" id="text-2-1">
<p>
Some weird bug I&#8217;ve been getting using <code>inkscape_merge</code> prevents me from changing the column separator to something other than a comma, which is the default. This is a pain, because sometimes you&#8217;ll have a field in the CSV that uses commas, like &#8220;ACME, Inc.&#8221;.
</p>
<p>
I don&#8217;t know enough Ruby to figure it out. For future reference, this is an example of the type of error I get:
</p>
<div class="org-src-container">
<pre class="src src-bash">inkscape_merge --csv_col_sep=<span style="color: #8b2252;">'|'</span> -f badge.svg -d data.csv -o batch/badge_%d.pdf
/var/lib/gems/1.9.1/gems/inkscape_merge-0.1.3/bin/inkscape_merge:33:in <span style="color: #ff00ff;">`block (2 levels) in &lt;top (required)&gt;': undefined method `</span>csv_options<span style="color: #8b2252;">' for #&lt;OptionParser:0x00000002322088&gt; (NoMethodError)</span>
<span style="color: #8b2252;">        from /usr/lib/ruby/1.9.1/optparse.rb:1360:in `call'</span>
        from /usr/lib/ruby/1.9.1/optparse.rb:1360:in <span style="color: #ff00ff;">`block in parse_in_order'</span>
<span style="color: #ff00ff;">        from /usr/lib/ruby/1.9.1/optparse.rb:1347:in `</span>catch<span style="color: #8b2252;">'</span>
<span style="color: #8b2252;">        from /usr/lib/ruby/1.9.1/optparse.rb:1347:in `parse_in_order'</span>
        from /usr/lib/ruby/1.9.1/optparse.rb:1341:in <span style="color: #ff00ff;">`order!'</span>
<span style="color: #ff00ff;">        from /usr/lib/ruby/1.9.1/optparse.rb:1432:in `</span>permute!<span style="color: #8b2252;">'</span>
<span style="color: #8b2252;">        from /usr/lib/ruby/1.9.1/optparse.rb:1453:in `parse!'</span>
        from /var/lib/gems/1.9.1/gems/inkscape_merge-0.1.3/bin/inkscape_merge:11:in <span style="color: #ff00ff;">`&lt;top (required)&gt;'</span>
<span style="color: #ff00ff;">        from /usr/local/bin/inkscape_merge:23:in `</span>load<span style="color: #8b2252;">'</span>
<span style="color: #8b2252;">        from /usr/local/bin/inkscape_merge:23:in `&lt;main&gt;'</span>
</pre>
</div>
<p>
The only workaround I have right now, since I currently don&#8217;t encounter many fields containing commas, is to create separate SVGs with hand-entered data for each row in the CSV that uses in-field commas, and convert these separately. It&#8217;s an awful workaround, but my last set of badges only had two instances, so no one dies.
</p>
<p>
BTW, no, using double-quotes in the CSV doesn&#8217;t work, as <code>inkscape_merge</code> seems to skip rows containing them. Joy.
</p>
</div>
</div>
<div id="outline-container-orgheadline5" class="outline-2">
<h2 id="orgheadline5"><span class="section-number-2">3</span> Running inkscape_merge</h2>
<div class="outline-text-2" id="text-3">
<p>
First, make sure there&#8217;s a directory to put the batch input. <code>inkscape_merge</code> is going to create one file for each row in the CSV. This might be a lot. Let&#8217;s say that directory&#8217;s name is <em>batch</em>.
</p>
<p>
<code>inkscape_merge</code> is then run as follows:
</p>
<div class="org-src-container">
<pre class="src src-bash">inkscape_merge -f sourcefile.svg -d datafile.csv -o batch/badge_%d.pdf
</pre>
</div>
<p>
Where <em>sourcefile</em> and <em>datafile</em> are the names of your SVG artwork and CSV file, respectively. The <code>%d</code> will be replaced, for each file, by the number of the CSV row.
</p>
<p>
This will put as many files in the <em>batch</em> directory as there are rows in your CSV. Remember that rows containing in-field commas should simply be exported by hand from handmade SVG copies of the artwork in which you&#8217;ve entered the actual data of that row instead of <code>%VAR_whatever%</code>. You can do that from the command line:
</p>
<div class="org-src-container">
<pre class="src src-bash">inkscape --without-gui --export-pdf=outputfile.pdf --export-dpi=300 sourcefile.svg
</pre>
</div>
<p>
where <em>sourcefile</em> is the specific SVG file and <em>outputfile</em> is the name of the file you want to end up with.
</p>
<p>
A little trick I use is to leave double-quotes around fields containing commas in the CSV. Since <code>inkscape_merge</code> doesn&#8217;t output these, I know which ones I have to do manually, and I also know how I should name them according to row, and these filenames are missing from the <em>batch</em> directory since they haven&#8217;t been generated.
</p>
</div>
<div id="outline-container-orgheadline4" class="outline-3">
<h3 id="orgheadline4"><span class="section-number-3">3.1</span> A caveat about exporting to PDF</h3>
<div class="outline-text-3" id="text-3-1">
<p>
Inkscape allows you to do lots of stuff with SVGs, and these things don&#8217;t always export well to PDF. It&#8217;s hard to say exactly what, but sometimes I notice problems with transparency and masking/clipping. If you run a batch to PDF and open one and see that it&#8217;s not as you intended, you can export all your rows to PNG instead. Since the DPI is set to 300, this should suffice for most print work:
</p>
<div class="org-src-container">
<pre class="src src-bash">inkscape_merge -f sourcefile.svg --format png -d datafile.csv -o batch/badge_%d.png
</pre>
</div>
<p>
This will give you a bunch of PNG files instead of PDF. You&#8217;ll also have to export your infield-comma exceptions to PNG manually.
</p>
</div>
</div>
</div>
<figure id="attachment_699" aria-describedby="caption-attachment-699" style="width: 583px" class="wp-caption alignnone"><img src="http://www.the-haystack.com/wp-content/uploads/2016/05/4badges.png" alt="OS window containing 4 files" width="583" height="306" class="size-full wp-image-699" srcset="http://www.the-haystack.com/wp-content/uploads/2016/05/4badges.png 583w, http://www.the-haystack.com/wp-content/uploads/2016/05/4badges-300x157.png 300w" sizes="(max-width: 583px) 100vw, 583px" /><figcaption id="caption-attachment-699" class="wp-caption-text">A separate file is created for each row in the CSV file.</figcaption></figure>
<div id="outline-container-orgheadline9" class="outline-2">
<h2 id="orgheadline9"><span class="section-number-2">4</span> Combining the batch files into a single PDF</h2>
<div class="outline-text-2" id="text-4">
<p>
Printers generally want PDFs, so whether our batch consists of PDFs or PNGs, we&#8217;re combining them into a PDF.
</p>
<p>
<em>Make sure you&#8217;re in the batch directory first.</em>
</p>
</div>
<div id="outline-container-orgheadline6" class="outline-3">
<h3 id="orgheadline6"><span class="section-number-3">4.1</span> Combining multiple PDFs into a single PDF</h3>
<div class="outline-text-3" id="text-4-1">
<p>
To do this with PDFs, we use ghostscript:
</p>
<div class="org-src-container">
<pre class="src src-bash">gs -sDEVICE=pdfwrite <span style="color: #8b2252;">\</span>
    -dNOPAUSE -dBATCH -dSAFER <span style="color: #8b2252;">\</span>
    -sOutputFile=combined.pdf <span style="color: #8b2252;">\</span>
    <span style="color: #ff00ff;">`ls`</span>
</pre>
</div>
<p>
For more info and variations, see <a href="https://www.linuxjournal.com/content/tech-tip-using-ghostscript-convert-and-combine-files">https://www.linuxjournal.com/content/tech-tip-using-ghostscript-convert-and-combine-files</a>.
</p>
<p>
The <code>`ls`</code> turns the output of the <code>ls</code> command into input for the <code>gs</code> command. You could also use <code>*</code> or <code>$(ls)</code> instead, in this case. If you&#8217;re in the batch directory, the output of <code>ls</code> is a list of all the files that we generated before.
</p>
</div>
</div>
<div id="outline-container-orgheadline7" class="outline-3">
<h3 id="orgheadline7"><span class="section-number-3">4.2</span> Combining multiple PNGs into a single PDF</h3>
<div class="outline-text-3" id="text-4-2">
<p>
For PNGs, we&#8217;ll use ImageMagick&#8217;s <code>convert</code> command:
</p>
<div class="org-src-container">
<pre class="src src-bash">convert -limit memory 2MB <span style="color: #ff00ff;">`ls`</span> combined.pdf
</pre>
</div>
<p>
We&#8217;re limiting memory usage to 2MB here, because otherwise with many files, sometimes the system will kill the process because it&#8217;s using too much memory.
</p>
</div>
</div>
<figure id="attachment_700" aria-describedby="caption-attachment-700" style="width: 743px" class="wp-caption alignnone"><img src="http://www.the-haystack.com/wp-content/uploads/2016/05/badges-combined.png" alt="Window of a PDF viewer program showing 4 pages" width="743" height="898" class="size-full wp-image-700" srcset="http://www.the-haystack.com/wp-content/uploads/2016/05/badges-combined.png 743w, http://www.the-haystack.com/wp-content/uploads/2016/05/badges-combined-248x300.png 248w" sizes="(max-width: 743px) 100vw, 743px" /><figcaption id="caption-attachment-700" class="wp-caption-text">The separate files are now combined into a single PDF file</figcaption></figure>
<div id="outline-container-orgheadline8" class="outline-2">
<h2 id="orgheadline8">Finally&#x2026;</h2>
<div class="outline-text-3" id="text-5">
<p>
That&#8217;s it! This is how we&#8217;ve been making most of our conferences badges for over a year now (except for one which involved HTML, CSS and PHP). The above process is pretty painless once you&#8217;ve run through it a few times, and generating a file with about 300 badges only takes a few minutes. Since SVGs are text, and <code>inkscape_merge</code> variables can replace any text in the SVG, you can customize colors per badge or practically anything else. You could potentially do any kind of scripting you like. And of course, you could wrap all of this in a tidy <code>bash</code> script for easy execution.
</p>
<p>
<del datetime="2016-06-28T10:30:16+00:00">I&#8217;m in the process of making a demo video of this workflow, in which I also demonstrate using variables for colors. This should be done in a day or two, and I&#8217;ll post a link here when it&#8217;s done!</del>
</p>
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
<div class='embed-container'><iframe src='https://www.youtube.com/embed/dG7IDvkrmVw' frameborder='0' allowfullscreen></iframe></div>
</div>
</div>
</div>
]]></content:encoded>
							<wfw:commentRss>http://www.the-haystack.com/2016/05/16/data-merged-print-design-with-open-source/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
						<post-id xmlns="com-wordpress:feed-additions:1">696</post-id>	</item>
		<item>
		<title>Reality is messy</title>
		<link>http://www.the-haystack.com/2016/01/05/reality-is-messy/</link>
				<comments>http://www.the-haystack.com/2016/01/05/reality-is-messy/#comments</comments>
				<pubDate>Tue, 05 Jan 2016 16:05:57 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[Babble]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=686</guid>
				<description><![CDATA[We like to believe that the right framework, method, approach, or conventions will allow us to create perfect projects. Our code will be beautiful, pure, performant, and maintainable. Outside of some developer blogs however, this is often not the case. Reality is messy. Some people are fortunate enough not to have to deal with this &#8230; <a href="http://www.the-haystack.com/2016/01/05/reality-is-messy/" class="more-link">Continue reading <span class="screen-reader-text">Reality is messy</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p>We like to believe that the right framework, method, approach, or conventions will allow us to create perfect projects. Our code will be beautiful, pure, performant, and maintainable. Outside of some developer blogs however, this is often not the case.</p>
<p>Reality is messy.</p>
<p>Some people are fortunate enough not to have to deal with this reality on a daily basis. There are people who work for browser-makers. Their projects are not most projects. There are people who work for large-scale and popular &#8220;startups&#8221;, who have the luxury of focusing on a limited number of components. Their projects are not most projects. Although we can (and do) learn a lot from posts on Medium about month-long experiments in link underlining, many of us have pressing deadlines. Processes can be messy because they involve other people and limited resources, tight budgets, difficult stakeholders and ridiculous time constraints.</p>
<p>Outside of the product world, many of us work in creative and/or technical services. Our job is to help our clients. These clients have concerns during the design and development process that we need to address. Sometimes, we can&#8217;t do everything exactly as we would like. Client needs trump our own.</p>
<p>I&#8217;ll give you an example: a project I worked on where my job was to help take an existing desktop-centric design and make it responsive. My task was to determine exactly how everything would work responsively. My deliverable was a series of more than 20 design comps built with HTML and CSS. The comps were themselves responsive, so stakeholders and the developers knew what the end result should be.</p>
<p>Here&#8217;s the thing: there were extreme time constraints. We basically had two months to get this fairly complex website responsive. In order to do this, the developer would change as little HTML as possible, as this would mean rewriting components all over the place. Yes, we wanted to see that happen, but it wasn&#8217;t feasible. So I used the existing HTML whenever possible, and I cringed while doing it, because <em>holy shit, this HTML</em> (with all due respect to the developers; you know CMSes). But it was practical and allowed the developer to reuse a lot of my CSS. Which was a <em>lot</em> more CSS than I would have had to write if I were able to rewrite the HTML.</p>
<p>Could I have said no? Sure, but I wouldn&#8217;t have been helping anyone, least of all myself, by doing so. This client has interesting challenges, and I wasn&#8217;t willing to just say no to four months of work with them because of a tight deadline.</p>
<p>Another issue I had to deal with was working in weekly (!) sprints. Coming up with responsive strategies for each component of certain screen types and then prototyping them <em>in one week</em> was not easy. In order to do it without creating conflicts and still get things done on time, I had to <em>namespace</em> each logical group of components, like this:</p>
<pre>
<code>
.product {
  /* Styles, including media queries, here. */
}

.account {
  /* Same idea, different logical group */
}
</code>
</pre>
<p>While doing this for each round of logical prototype groups allowed me to avoid conflicts with prototypes I had done or those I would do in future sprints, it made me repeat myself across those blocks, since I had literally no time to constantly refactor. And it was not my job to create the front-end code, though I knew the developer was using and altering snippets from my CSS to save time. Result: my comps had way too much CSS.</p>
<p>Could I have an approach like BEM? Yes, I could have. But since some CSS methodologies eschew inheritance, I lose a huge time benefit. And remember, HTML changes were required to be minimal, and that&#8217;s not feasible when choosing a CSS approach that involves moving the dirty work into class attributes.</p>
<h2>What&#8217;s your goal?</h2>
<p>In the project above, the thing that kept me sane was focusing on the specific reason I was asked to join the project: to decide how everything should look and work responsively, and to visualize this for stakeholders and the developers, in such a way that they could actually experience it on actual devices so that it is clear what needs to be done.</p>
<p>That had to be my focus.</p>
<p>We finished the work in two months with just a few people. And a phase two was planned to go in and refactor, to improve lots of things, including performance. That&#8217;s the right time for optimizing HTML and CSS, and improving things like performance. Ideal? Certainly not. Realistic based on the needs of the client? Absolutely. This particular client sees their website (100% of their revenue comes from the website) as a <em>process</em> rather than a <em>product</em>. I think that&#8217;s a healthy way of looking at things. It means they have a responsive site, built within two months time, that customers could enjoy right away. That site, even with sub-optimal HTML and CSS, performed twice as well as the previous desktop version. Customers don&#8217;t care about what the source looks like, and phase two, almost underway, is intended for code optimization and other quality improvements.</p>
<p>Messy, isn&#8217;t it? It certainly is. But really, it&#8217;s often the reality of a service business. It&#8217;s natural to try and find processes or approaches that work for every project, but you won&#8217;t. And they don&#8217;t. Embracing this fact is one step toward pleasing clients, and also helps deal with the frustration that we can&#8217;t always make everything as perfect as we&#8217;d like it to be. Of course, that shouldn&#8217;t keep us from trying.</p>
<p>I start every project with a lofty goal of achieving perfection. I&#8217;ve never reached it. I make mistakes <em>all the time</em>. I look back and immediately see things I would have done differently. I try to learn from those mistakes. I try to remember that making those mistakes and dealing with the messy reality of the work, while still trying to do my best work, puts me on a path of constant improvement. </p>
<p>We need to give ourselves a break. I hope I&#8217;m learning more and becoming just slightly better every day. I hope you are, too. In our line of work, where everything moves so quickly, that&#8217;s something to be happy about.</p>
<p>Here&#8217;s to a better imperfect year than the last one.</p>
]]></content:encoded>
							<wfw:commentRss>http://www.the-haystack.com/2016/01/05/reality-is-messy/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
						<post-id xmlns="com-wordpress:feed-additions:1">686</post-id>	</item>
		<item>
		<title>Choosing between min-width and max-width media queries</title>
		<link>http://www.the-haystack.com/2015/12/23/choosing-between-min-and-max-width/</link>
				<comments>http://www.the-haystack.com/2015/12/23/choosing-between-min-and-max-width/#comments</comments>
				<pubDate>Wed, 23 Dec 2015 07:01:26 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Responsive]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=674</guid>
				<description><![CDATA[I&#8217;m often asked a variation of the following question: Should I use min-width or max-width media queries? The obvious answer is, of course, &#8220;yes&#8221;. But you know what they&#8217;re asking: which of the two is better? Those for whom responsive design has become second nature might find it an odd question, and will know that &#8230; <a href="http://www.the-haystack.com/2015/12/23/choosing-between-min-and-max-width/" class="more-link">Continue reading <span class="screen-reader-text">Choosing between min-width and max-width media queries</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p>I&#8217;m often asked a variation of the following question:</p>
<blockquote><p>Should I use min-width or max-width media queries?</p></blockquote>
<p>The obvious answer is, of course, &#8220;yes&#8221;. But you know what they&#8217;re asking: which of the two is <em>better</em>?</p>
<p>Those for whom responsive design has become second nature might find it an odd question, and will know that the answer is, &#8220;it depends&#8221;. But having seen lots of responsive design implementations, it&#8217;s clear to me that many designers and developers aren&#8217;t quite sure. And I&#8217;m happy to share my own opinion of what &#8220;it depends&#8221; means regarding this particular question.</p>
<h2>Desktop first and max-width</h2>
<p>There&#8217;s a decent number of designers/developers that still think of &#8220;the desktop&#8221; as their primary design manifestation, with other (generally smaller) sizes as secondary; often these appear as afterthoughts, since there can be significant visual clues as to the amount of effort that has gone into these other screen sizes when compared to their desktop counterparts. Often, when one examines the CSS of these sites, `max-width` is the media feature of choice.</p>
<p>This makes sense. If a design is built desktop-first, then all the CSS for the desktop-ish version of the design has been written, and must be overridden with more CSS for any other breakpoints. If a given desktop-ish width is our baseline and we are unwilling or unable to refactor our CSS, then it seems logical to override what is now our base CSS for <em>all</em> viewport widths with those we only want to apply to smaller widths.</p>
<p>This can lead to a situation I&#8217;ve often joked about: <em>writing styles only to undo them later</em>. This is an example I often use (assume <code>.related</code> takes the form of a sidebar):</p>
<pre>
<code>
.content {
  width: 60%;
}

.related {
  width: 40%;
}

@media screen and (max-width: 37.4em) {
  .content,
  .related {
    width: 100%;
  }
}
</code>
</pre>
<p>The above example omits a lot, but I&#8217;m sure you get the idea. This approach, when used over a bunch of components, can greatly increase the amount of CSS needed to complete the project. But the main problem is how illogical it is, because when embracing the fact the block-level elements are 100% of their parent by default, then the following makes much more sense:</p>
<pre>
<code>
@media screen and (min-width: 37.5em) {
  .content {
    width: 60%;
  }

  .related {
    width: 40%;
  }
}
</code>
</pre>
<p>Here, we&#8217;re making use of the default state of block-level elements, and <em>overriding them when they need to change from the default</em>. Again, it might seem clear to some readers, but it doesn&#8217;t take looking at the source of many websites before you understand why I&#8217;m clarifying it here.</p>
<h2>Using max-width against your better judgement</h2>
<p>There are a couple of reasons why, even when you know better, you might deliberately choose to use an approach similar to <code>max-width</code> approach above:</p>
<ol>
<li>You&#8217;re a developer and you received desktop-only, desktop-first, or other-sizes-as-an-afterthought comps from the designer. How can you know? If you&#8217;ve only designed or received designs for desktop-ish widths, this is what you&#8217;re dealing with. If you&#8217;ve got nice detailed desktop-ish designs with a few &#8220;mobile&#8221; or &#8220;tablet&#8221; examples thrown in there, this is what you&#8217;re dealing with. In these cases, may the <code>max-width</code> be with you, unless you have a budget and/or schedule that allows you to refactor during development.</li>
<li>You&#8217;re making an <em>existing</em> website responsive, and the existing CSS is design baggage you&#8217;ve inherited and cannot change, for whatever reason.</li>
<li>You&#8217;re compensating for the fact that we don&#8217;t currently have element queries, and you&#8217;re handling this with CSS instead of using a JavaScript polyfill for a non-existent spec.</li>
</ol>
<h2>So, what&#8217;s the best to use?</h2>
<p>Here&#8217;s my clarification of &#8220;it depends&#8221; for this particular question. And remember it&#8217;s just my own opinion based on my own experiences: look at default display of a given element. If you have to override this default for smaller screens, use <code>max-width</code>. If the default is usable on small screens, use <code>min-width</code>, and only when the element needs to deviate from the default. And of course, I recommend letting the content determine where that happens.</p>
<p>A good example of using <code>max-width</code> to override an element&#8217;s default display so that it works better on smaller screens is when using tables. Imagine a table that contains too much content to display in its default form on small screens. One approach might be:</p>
<pre>
<code>
@media only screen and (max-width: 30em) {
  .big-table tr,
  .big-table td {
    display: block;
  }
}
</code>
</pre>
<p>This turns each row (and cell) into a block on narrow screens. The table can become quite long vertically and more styling is usually required, but it&#8217;s often better than the back-and-forth horizontal scrolling that would otherwise be required to read the content.</p>
<p>In this case, it makes all the sense in the world to leave the table in default form, except for in browsers that understand the media query and where the screen is no larger than, in this case, <code>30em</code>.</p>
<p>Other elements (I would venture to say <em>most</em> other elements) that have defaults that work fine on smaller screens, only need changing when necessary on <em>larger</em> screens; using <code>min-width</code> is then a solid choice.</p>
<p>In short: let element defaults help determine which media feature to use in your media queries.</p>
<p><small>Thanks to <a href="https://twitter.com/brad_frost">Brad Frost</a> for reviewing this. He also has a post with <a href="http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/">related topics</a>.</small></p>
]]></content:encoded>
							<wfw:commentRss>http://www.the-haystack.com/2015/12/23/choosing-between-min-and-max-width/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
						<post-id xmlns="com-wordpress:feed-additions:1">674</post-id>	</item>
		<item>
		<title>Put the &#8220;designers should code&#8221; debate to rest</title>
		<link>http://www.the-haystack.com/2015/09/02/put-the-designers-should-code-debate-to-rest/</link>
				<comments>http://www.the-haystack.com/2015/09/02/put-the-designers-should-code-debate-to-rest/#comments</comments>
				<pubDate>Wed, 02 Sep 2015 19:43:28 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[Babble]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=666</guid>
				<description><![CDATA[Note (September 14, 2015): this post has also been translated into Chinese. My acting coach in college used to say something to the effect of, &#8220;Be. Don&#8217;t show.&#8221; It was frustrating. He wanted us not to do the things that symbolized what was supposed to be happening in the scene; he wanted us to live &#8230; <a href="http://www.the-haystack.com/2015/09/02/put-the-designers-should-code-debate-to-rest/" class="more-link">Continue reading <span class="screen-reader-text">Put the &#8220;designers should code&#8221; debate to rest</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p><ins datetime="2015-09-24T09:10:38+00:00">Note (September 14, 2015): this post has also been <a href="http://yuguo.us/weblog/designers-should-learn-code/">translated into Chinese</a>.</ins></p>
<p>My acting coach in college used to say something to the effect of, &#8220;Be. Don&#8217;t show.&#8221; It was frustrating. He wanted us not to do the things that symbolized what was supposed to be happening in the scene; he wanted us to <em>live</em> the scene. A good example is acting like a drunk person. We see drunk people, and a natural tendency when doing a scene as a drunk person is to act the way you&#8217;ve seen drunk people act. But in many cases, that comes across as fake and obvious. <em>Because people who are drunk often try to act sober.</em></p>
<p>I worked in an art gallery when I was in college, and once a year we would put on an exhibition of children&#8217;s art. One thing you notice when hanging hundreds of paintings and drawing by kids, especially the younger ones, is that many tend to draw <em>symbols</em> of what they see. The don&#8217;t draw the sun, they draw a circle with lines around it. Or squiggles. Mountains are triangles. Basic forms are used as symbolic depictions of objects.</p>
<p>This often continues into adulthood, unless one learns to draw at least at a basic level. And while perhaps repeated once too often, it is true to an extent that learning to draw realistically is learning to see. Learning to look carefully at <em>what&#8217;s really there</em>. What&#8217;s really happening. Circles on a wine glass become ellipses. The hard lines of the sun become gradations of color. Are you unable to draw, and don&#8217;t think you can? Grab an image, turn it upside-down, and draw what you see exactly. Don&#8217;t symbolize the image by thinking about the subject of it. Draw what&#8217;s actually there. For those inexperienced with drawing, it will be one of the best drawings you&#8217;ve ever made up to that point.</p>
<p>As designers for the web, depending on what type of designer you are, you are researching, structuring, adapting, testing, laying out, wireframing, setting type for, composing, and [fill in the blank]ing something that people will read, interact with, love, hate, tell others about, and perhaps take with them everywhere they go. And <em>the medium is right in front of you, every day</em>, so you as a designer for this medium have the opportunity to <em>use it to prototype what you&#8217;re designing</em>. </p>
<p>I&#8217;ve gotten my share of criticism for being one of those people to publicly state that it might be a good idea for web designers to learn some code. It took me several years to come to that opinion and it hasn&#8217;t changed much, but it wasn&#8217;t the <em>coding</em> that was important. It was the <em>movement away from symbolic representations of that which we were designing</em>. It was about not using flat images as a poor proxy for something that&#8217;s different for different people on different devices in different browsers. When I wrote <em>Responsive Design Workflow</em>, which describes a content and prototype-based approach to responsive design, people either loved it or hated it. Those who hated it did so because it was outside of their comfort zones, and because it involved learning basic HTML and CSS and getting into the browser as quickly as possible.</p>
<p>You can&#8217;t give me a wireframe, detailed as it may be, and tell me that you&#8217;ve designed the interaction of a particular product. You&#8217;ve just drawn a circle with squiggly lines around it, and you hope that reality will match. Good luck with that. Visual design influences interaction. Typography influences interaction. <em>Content</em> influences interaction. You either work together, as a team, or your bubble will burst at some point. You want to influence interaction? Get the thing into a browser and <em>interact</em> with it. Sculpt it. Shape it. Tweak it. Be, don&#8217;t show.</p>
<p><em>That&#8217;s</em> what it&#8217;s about. Not about coding for the sake of coding. During the period of time leading up to my book&#8217;s publication, a lot of the tools we have available today to get into the browser quickly didn&#8217;t exist. I advocated code because I literally could not find tools that would get me to useful and realistic prototypes as quickly as code would. I had to use JavaScript and the command line to automate screenshots. We have tools that do that today. They do the same thing I did in the past, but they do it behind the scenes. There are now tools all over the place that can help get you get your product into the browser quickly. Even two years ago, we didn&#8217;t have many of those tools. <em>That&#8217;s</em> why many of us advocated learning to code.</p>
<p>Every so often there are articles and tweets about whether designers should learn to code. I think very little of it is constructive anymore; arguments swirl down into sewers of discussions on semantics, like whether coding is a profession or a trade, or whether HTML and CSS can actually be considered coding. It doesn&#8217;t matter.</p>
<p>Must designers learn to code? No. Would it benefit them in some ways? Yes. Is the code needed for much of prototyping more difficult than learning something like Photoshop? No. Can it become more difficult than Photoshop if I decide to dive deep? Yes. Are there ways to prototype effectively <em>without</em> learning to code? There are now. Can you still keep using Photoshop (or Sketch, or whatever) even if you learn some code? Absolutely.</p>
<p>It&#8217;s not about the code. It&#8217;s not even about the tools. Prototyping is about asking reality for feedback.</p>
]]></content:encoded>
							<wfw:commentRss>http://www.the-haystack.com/2015/09/02/put-the-designers-should-code-debate-to-rest/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
						<post-id xmlns="com-wordpress:feed-additions:1">666</post-id>	</item>
		<item>
		<title>On diverse speaker lineups at conferences</title>
		<link>http://www.the-haystack.com/2015/08/21/on-diverse-speaker-lineups-at-conferences/</link>
				<comments>http://www.the-haystack.com/2015/08/21/on-diverse-speaker-lineups-at-conferences/#comments</comments>
				<pubDate>Fri, 21 Aug 2015 08:08:21 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[Babble]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=653</guid>
				<description><![CDATA[There&#8217;s been a lot of discussion on Twitter about diversity in speaker lineups at web conferences. Lea Verou wrote about the blindness of blind reviews, and while she was looking at the process of anonymized reviews in general, some tweets in and around this conversation debate whether anonymizing the speaker selection process eliminates bias. Zach &#8230; <a href="http://www.the-haystack.com/2015/08/21/on-diverse-speaker-lineups-at-conferences/" class="more-link">Continue reading <span class="screen-reader-text">On diverse speaker lineups at conferences</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p>There&#8217;s been a lot of discussion on Twitter about diversity in speaker lineups at web conferences.</p>
<p>Lea Verou wrote about <a href="http://lea.verou.me/2015/08/on-the-blindness-of-blind-reviews/">the blindness of blind reviews</a>, and while she was looking at the process of anonymized reviews in general, some tweets in and around this conversation debate whether anonymizing the speaker selection process eliminates bias. Zach Leatherman <a href="https://twitter.com/zachleat/status/631875875542335488">tweeted</a>:</p>
<blockquote><p>I don’t believe an anonymous conference speaker selection process eliminates bias any more than “not seeing race” eliminates racism.</p></blockquote>
<p>I think Zach makes a good point. Not only does an anonymous selection not eliminate bias, but the <strong>only thing it guarantees is that the curators don&#8217;t know who they&#8217;ve selected</strong>.</p>
<p>This does not guarantee a diverse speaker lineup.</p>
<p>What anonymizing does is put a responsibility-absolving blindfold on biases, so one can inadvertently end up with a totally non-diverse lineup and then can say, &#8220;Hey, it was a fair selection because we anonymized.&#8221;</p>
<p>That&#8217;s a weak position, in my opinion. And yes, I know that some people &#8220;de-anonymize&#8221; in round 2 of their selection process. Kudos. For now, we (the team I work with) prefer invite-only for events with a small lineup, but that&#8217;s a post for another time.</p>
<p>We all have biases. But when it comes to biases regarding people, it&#8217;s what we do with them that counts. One approach could be to face those biases and consciously act against them in order to get the type of speaker lineup we want. What lineup that is might be different for everyone. You want an all-female lineup? Great. 50/50 split? Also great. Choose what you want and <strong>take responsibility for it</strong>. Own the selection process rather than hiding behind it.</p>
<h2>One possible approach</h2>
<p>I don&#8217;t have all the answers, but I&#8217;ve been a part of conference organizations for many years and maybe the approach we used for two editions of <a href="http://dsgnday.nl">dsgnday</a> and this year&#8217;s <a href="http://cssday.nl">CSS Day</a> could be useful to some. Again, I&#8217;m not saying &#8220;we did it right&#8221;. I&#8217;m just saying that we owned our process and got the lineups we wanted, and someone out there might benefit from our approach. It might not fit with <strong>your</strong> idea of the right approach. That&#8217;s fine. Anonymized curation is okay; I simply have reasons for not preferring it. Please read that again. Also, note that our team consists of four men. This is purely coincidental, something we&#8217;re acutely aware of, and is part of the reason we&#8217;re thinking so much about these issues. </p>
<p>We started with the goal of the conference itself, of course, which is a range of topics on web <strong>design</strong> in a broad sense of the word, since the day is meant to be something of a counterweight to the larger number of developer conferences we have here in the Netherlands. However, that doesn&#8217;t mean &#8220;no code&#8221;, so we have a huge base of speakers to pull from, including non-technical speakers.</p>
<p>Right away, our longlist included people we knew would be a good fit for the conference. Krijn, PPK, Martijn, and I kept a simple text file in a Dropbox that any of us could add to at any time when we thought of someone we thought would fit. (Disclaimer: I&#8217;m speaking at the event, and while I hope my talk is well-received, that&#8217;s in part a financial move since it&#8217;s not the most-attended conference in Europe and paying for speakers and their travel is very expensive.)</p>
<h3>Setting the goals</h3>
<p>While some conferences have a primary or secondary goal of creating a platform for new or less experienced speakers, we currently do not. It&#8217;s perfectly valid to require a certain level of speaking ability or experience for an event. There are plenty of calls for papers and other platforms for willing new speakers at other events.</p>
<p>We had also set a specific gender diversity goal for this conference: <em>at least</em> a 50%/50% male/female split. An uneven split in favor of female would have been fine as well. Note that this is a <em>goal</em>, not a <em>quota</em>.</p>
<p>I have to admit that several years ago, I would have found this approach to be ridiculous. I&#8217;ve even openly opposed this type of thing. But years in the industry and hearing more viewpoints and a bunch of other factors led to me completely changing my mind. If I just say to myself, &#8220;Write out a list of potential speakers&#8221;, mostly men come to mind. That&#8217;s not a bad thing, but it&#8217;s a true thing. Call it a built-in bias. I might just happen to know more male speakers. But it is a fact, at least right now. And to get the lineup we want, we have to consciously combat that tendency. Setting the goal is the first step.</p>
<h3>Battling built-in bias</h3>
<p>So while I had a couple of people I <strong>really</strong> wanted to speak (not only men, BTW), I left them on the longlist and did the following thinking exercise:</p>
<p><em>What if the entire world only consisted of women? Who would I like to have come and speak at this conference?</em></p>
<p>Names came easily, because we had <em>consciously</em> removed our natural bias by way of a simple thinking exercise. And no one can say that these are <em>&#8220;token&#8221;</em> (I hate that term) female speakers designed to fill a quota, because they were the people we honestly thought would do a great job and fit the subjects we wanted handled at the conference. Note that it&#8217;s getting easier and easier to think of female speakers without resorting to bias-removal thinking exercises. This is partly due to us knowing more female speakers, and also because <em>when you consciously and consistently work to remove bias, it slowly starts to go away</em>. At least, that&#8217;s how I experience it.</p>
<p>Anyway, we had several names, and we curated the final lineup based on the quality of each speaker&#8217;s work and presentation abilities, and how their varied expertise would combine into a day-long program.</p>
<p>This process might not be great, and the conference is not a big one, but we are really proud of the three lineups of fantastic, qualified women and men we&#8217;ve put together so far (we love you, speakers!). And there is no way we could have <em>guaranteed</em> this result with an anonymized process. Without taking responsibility and making conscious choices. </p>
<p>It&#8217;s hard to do. That&#8217;s why they call it <em>work</em>. :-)</p>
]]></content:encoded>
							<wfw:commentRss>http://www.the-haystack.com/2015/08/21/on-diverse-speaker-lineups-at-conferences/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
						<post-id xmlns="com-wordpress:feed-additions:1">653</post-id>	</item>
		<item>
		<title>My name is Stephen, and I&#8217;m a generalist</title>
		<link>http://www.the-haystack.com/2015/07/03/my-name-is-stephen-and-im-a-generalist/</link>
				<comments>http://www.the-haystack.com/2015/07/03/my-name-is-stephen-and-im-a-generalist/#comments</comments>
				<pubDate>Fri, 03 Jul 2015 14:20:29 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[Babble]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=649</guid>
				<description><![CDATA[This week I had something akin to an existential crisis. The whole thing was solely in my head, and alarming in intensity. If you ask me what triggered it, I couldn&#8217;t tell you. Though it might have been that potential client that needs to learn about how to deal with potential contractors, but that&#8217;s another &#8230; <a href="http://www.the-haystack.com/2015/07/03/my-name-is-stephen-and-im-a-generalist/" class="more-link">Continue reading <span class="screen-reader-text">My name is Stephen, and I&#8217;m a generalist</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p>This week I had something akin to an existential crisis. The whole thing was solely in my head, and alarming in intensity. If you ask me what triggered it, I couldn&#8217;t tell you. Though it might have been that potential client that needs to learn about how to deal with potential contractors, but that&#8217;s another post entirely.</p>
<p>Part of this mental hurricane was me questioning what it is that I actually do. What is my job, exactly? I&#8217;ll spare you the worries about how this question might tie in to age discrimination and how I must remain my own boss in order to continue working. No. I can hear you thinking about it. Stop it. </p>
<p>In the 20 years I&#8217;ve been designing and developing for the web, I&#8217;ve considered myself a designer. A designer who can code, but still a designer. And indeed, when I started, I designed <em>a lot</em>. I came from print design. Design, especially typography, was what I loved to do. In the work realm, at least.</p>
<p>I wrote my first BASIC program when I was 12 years old. On a Commodore PET. Yes, I see you oldies nodding. We had an Apple II in a special room at school. One Apple II. Programming was like magic. Someone wrote code and made these computers do amazing things!</p>
<p>I was fairly good at math(s), roughly two years ahead of my fellow students, but I&#8217;m also easily bored. So after advanced trig, I kind of lost interest in both math(s) and programming.  I liked it well enough, but I encountered a dull patch. Other things, like art and theatre, grabbed my interest.</p>
<p>Programming never did let me go. I came to realize that some things are simply more effectively done in code, and that there was space in my brain for both the technical and the creative. But people seem to fight against that particular brand of collaboration between the different parts of the mind. We&#8217;re told to specialize. You can&#8217;t just specialize in JavaScript; you must specialize in a particular aspect of JavaScript, such as performance. Or a particular library (good luck with that). You also can&#8217;t be a &#8220;designer&#8221;, because what exactly does that entail? Do you do interaction design? Visual design? Or as ambiguous as they come, <em>user experience</em> design?</p>
<p>If I put 10 people in a room and asked them to describe user experience design, I&#8217;d get 10 different answers. 11 if it&#8217;s a really creative group. While speaking recently at <a href="https://www.ux-lx.com/">UXLx</a>, I encountered UX designers who don&#8217;t draw. &#8220;I only do research&#8221;. Others design the user experience of websites without venturing into the browser. Graphing software is enough; after all, they&#8217;re <em>UX</em> designers, not <em>UI</em> designers. (Oops there&#8217;s another one for you.) Some UX designers did more visual design. Confusion ensued.</p>
<p>Not that these disciplines are bad or unnecessary. On the contrary. Nor is the fact that we might soon need a <em>complex table</em> to map out the various types of design we&#8217;ve created and their relationships to one another. But where we can complicate things, we tend to complicate things. And when specialization means money, we&#8217;re quick to specialize.</p>
<p>And now we&#8217;re entering a period in which the spectrum of specialists is just a bit too large for some projects. Like a feature film, all the disciplines need a lot of overhead to work together smoothly. And we look to the generalists. We might call them &#8220;product designers&#8221; or &#8220;full-stack [insert title here]&#8221;. Proficient in many areas, expert in one or two. For me, I&#8217;m an art director at heart with a <em>lot</em> of experience in graphic(visual) design, interaction, design processes and dealing with large-org project politics. And I can code.</p>
<p>When people ask me for a portfolio of recent design work, I&#8217;m shocked to discover that I really don&#8217;t have a clear one. The work I&#8217;ve done since going freelance five years ago is mostly front-end development combined with design and interaction work. Which all, believe it or not, is part the user experience. Thus, I&#8217;ve done <a href="http://zerointerface.nl/">front-end design and development consulting</a> work. <a href="http://versie2.webrichtlijnen.nl/norm/">Accessibility work</a>. <a href="http://lanyrd.com/profile/stephenhay/">Speaking</a>. <a href="http://www.amazon.com/Responsive-Design-Workflow-Stephen-Hay/dp/0321887867">Writing a book</a>. <a href="http://dsgnday.nl/">Co-organizing conferences</a>.</p>
<p><em>Holy hypertext, Batman, I&#8217;m a generalist.</em></p>
<p>The thing that&#8217;s both scary and exciting at the same time is that no generalist is the same. This week I came to realize that <em>I have no clue how to market myself effectively</em>. (No that is not an invitation.) I&#8217;m an expert in a few things, and proficient in several more. But for every project, emphasis shifts within those areas.</p>
<p>This week, a friend told me that he doesn&#8217;t know what to call himself. Then he said, in his typical manner of a man who believes that every workday is just a holiday that starts with a &#8220;W&#8221;:</p>
<p>&#8220;Embrace the chaos.&#8221;</p>
<p>I like code. I like design. I like the place where design and technology meet. Where art and technology meet. It&#8217;s a special place. It exists and we should embrace it.</p>
]]></content:encoded>
							<wfw:commentRss>http://www.the-haystack.com/2015/07/03/my-name-is-stephen-and-im-a-generalist/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
						<post-id xmlns="com-wordpress:feed-additions:1">649</post-id>	</item>
		<item>
		<title>Conditional multi-column sublists</title>
		<link>http://www.the-haystack.com/2015/03/05/conditional-multi-column-sublists/</link>
				<comments>http://www.the-haystack.com/2015/03/05/conditional-multi-column-sublists/#comments</comments>
				<pubDate>Thu, 05 Mar 2015 15:45:22 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=638</guid>
				<description><![CDATA[Some designers are able to operate in that universe where anything goes, where the practicalities of implementation don&#8217;t exist. This can actually be a good thing at the beginning of the creative process; without this no-limit thinking, the design process might yield less creativity. Then again, many designers are fantastic at working within constraints. At &#8230; <a href="http://www.the-haystack.com/2015/03/05/conditional-multi-column-sublists/" class="more-link">Continue reading <span class="screen-reader-text">Conditional multi-column sublists</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p>Some designers are able to operate in that universe where anything goes, where the practicalities of implementation don&#8217;t exist. This can actually be a good thing at the beginning of the creative process; without this no-limit thinking, the design process might yield less creativity. Then again, many designers are fantastic at working <em>within</em> constraints. </p>
<p>At some point, though, either designers are confronted with constraints and must accommodate them, or this is implicitly tasked to developers. The latter is often the case, unfortunately. This almost always leads to a series of little development puzzles. &#8220;How might I implement this?&#8221;</p>
<p>We can do a lot with CSS, but sometimes we need a little help from JavaScript. I consider myself a <em>designer who codes</em>, which, to be clear, means &#8220;not a programmer&#8221;. Lucky for me, I have programmer friends, and I read a lot.</p>
<p>So while working on a recent project, I encountered a design comp that called for a few adjacent lists of &#8220;filters&#8221; (read: tags or categories). Each list had a heading above it.</p>
<p>(Note that the following examples are not indicative of the visual design. Note also that they no sense on narrow screens, where the lists could simply flow vertically.)</p>
<p><a class="jsbin-embed" href="http://jsbin.com/tehulu/2/embed?output">Lists.</a><script src="http://static.jsbin.com/js/embed.js"></script></p>
<p>Being as creative as the designer in the sense that I didn&#8217;t burden myself with such practicalities as browser support (yet), I figured I could mock this up with Flexbox. Each section containing a header and a list becomes a flex item, and let&#8217;s let those wrap if they need to wrap. Easy enough.</p>
<p><a class="jsbin-embed" href="http://jsbin.com/tehulu/4/embed?css">Lists with Flexbox applied (CSS).</a><script src="http://static.jsbin.com/js/embed.js"></script></p>
<p><a class="jsbin-embed" href="http://jsbin.com/tehulu/4/embed?output">Lists with Flexbox applied (output).</a><script src="http://static.jsbin.com/js/embed.js"></script></p>
<p>In the design, some lists were longer than others. Lists with many items were to be <em>split into multiple columns</em>. Flexbox was taking care of the necessary flexibility of the main lists, but what to do about the <em>sub</em>lists that are too long? And can we have any flexibility in determining what &#8220;too long&#8221; means?</p>
<p>A simple solution for splitting a list into multiple columns is CSS Multi-Column Layout. Implementations aren&#8217;t totally consistent, and I wrote some time ago about <a href="http://www.the-haystack.com/2012/06/01/multi-column-confusion/">some of those inconsistencies</a>, but the very basics are pretty usable right now as a progressive enhancement to normal content. Lack of multi-column simply yields a one-column list.</p>
<p>If one were to set a specific height to the containing element, multi-column would do it&#8217;s thing automatically. But I didn&#8217;t like the idea of setting a specific height on anything. A more content-centric approach would be to determine how many items a list may have before it was split into columns.</p>
<p>I&#8217;m fairly sure that determining the number of columns as a condition of the number of children is not currently possible with CSS. So in this case, it&#8217;s JavaScript to the rescue.</p>
<p>I needed a function that takes whatever element I&#8217;m using as a list, plus a maximum number of list items per column, as parameters. It should look at each list, count the number of items in it, and if the maximum number of list items is exceeded, it should add a class to that list. The class allows application of the correct number of columns via CSS.</p>
<p>Here&#8217;s the function, after too many iterations, a beer, and another pair of eyes:</p>
<p><a class="jsbin-embed" href="http://jsbin.com/tehulu/1/embed?js">Here is the function.</a><script src="http://static.jsbin.com/js/embed.js"></script></p>
<p>And here&#8217;s the result:</p>
<p><a class="jsbin-embed" href="http://jsbin.com/tehulu/1/embed?output">Here is the result.</a><script src="http://static.jsbin.com/js/embed.js"></script></p>
<p>This is not completely bulletproof, but it does allow for some flexibility (&#8220;let&#8217;s allow 10 items per column instead of five&#8221;).</p>
<p>This was a fairly simple problem to solve (though I won&#8217;t be competing in the <code>Array.prototype</code> Olympics anytime soon). But I&#8217;d like to say this: <em>designers and developers should think about these types of implementation issues together</em>, and that should happen during the design process. Not afterward, when stakeholders have fallen in love with the design comps. This would allow for consensus on the baseline experience (<strong>stakeholders tend to see design comps as the baseline</strong>). Quick mockups in browser-based tools such as JSBin (which I used for this example) or CodePen could help solidify these types of design decisions, and allow both designers and developers to experience these decisions on actual devices and to design for contingencies as well.</p>
<p><small>Special thanks to <a href="http://twitter.com/jaffathecake">Jake</a> and <a href="http://twitter.com/heydonworks">Heydon</a> for being kind enough to review my example.</small></p>
]]></content:encoded>
							<wfw:commentRss>http://www.the-haystack.com/2015/03/05/conditional-multi-column-sublists/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
						<post-id xmlns="com-wordpress:feed-additions:1">638</post-id>	</item>
		<item>
		<title>(Visual) design influences interaction</title>
		<link>http://www.the-haystack.com/2015/02/17/visual-design-influences-interaction/</link>
				<comments>http://www.the-haystack.com/2015/02/17/visual-design-influences-interaction/#comments</comments>
				<pubDate>Mon, 16 Feb 2015 23:50:03 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=631</guid>
				<description><![CDATA[I&#8217;ve never hidden my opinion of those design workflows that involve interaction designers toiling over intricate, interactive wireframes as a primary deliverable and the inevitable hand-off to the &#8220;visual&#8221; designer who proceeds to &#8220;color by numbers&#8221; on the wireframe. To be clear, I find these workflows are ineffective. I&#8217;m not implying that all interaction designers &#8230; <a href="http://www.the-haystack.com/2015/02/17/visual-design-influences-interaction/" class="more-link">Continue reading <span class="screen-reader-text">(Visual) design influences interaction</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p>I&#8217;ve never hidden my opinion of those design workflows that involve interaction designers toiling over intricate, interactive wireframes as a primary deliverable and the inevitable hand-off to the &#8220;visual&#8221; designer who proceeds to &#8220;color by numbers&#8221; on the wireframe. To be clear, I find these workflows are ineffective. </p>
<p>I&#8217;m not implying that all interaction designers work this way, nor that all design firms work this way. But it is absolutely a common practice, especially in larger, waterfall-style organizations and teams.</p>
<p>The assembly line workflow is a death punch to effective interaction. The reason this is so: <em>you simply can&#8217;t separate visual design from interaction design</em>. The visual designer (boy, do I dislike that term) likely has a background in graphic design, a legitimate and non-trivial field of study. Graphic designers are trained to solve problems, and a primary goal of the designer is to <em>communicate</em> something. The goal of the interaction designer is to find the most effective ways that people can interact with the thing we&#8217;re designing. Interaction designers and visual designers should either have both of these roles combined, or they should work together. A lot. </p>
<p>Many visual designs are built upon the foundation of complex wireframes. Why not the other way around? Arguably, the interaction designer&#8217;s insight might be best utilized as <em>part of the visual design process</em> with the most valuable insights occurring on a completed visual design comp, based on real content and <em>in a browser</em>, when the actual thing can be interacted with, as opposed to a black-and-white, hopeful proxy.</p>
<p>The fact is that when an interaction designer creates a wireframe, they&#8217;re inevitably making visual design choices. When these wireframes are used as client deliverables, clients can&#8217;t &#8220;unsee&#8221; these decisions. Similarly, visual designers make decisions that can heavily influence interaction, no matter what the interaction designer <em>theorized</em>. So, we&#8217;ve got two disciplines, possibly trained differently, making decisions <em>for</em> one another instead of <em>with</em> one another.</p>
<h2>The influence of the visual</h2>
<p>I&#8217;d like to offer a simple illustration on how visual design can influence interaction. <a href="https://twitter.com/ThisIsSethsBlog">Seth Godin</a> wrote a great little post entitled <a href="http://sethgodin.typepad.com/seths_blog/2015/02/the-first-rule-of-web-design.html">The First Rule of Web Design</a>, which he says is &#8220;tell me where to click&#8221;. <small>(Regardless of whether this is or should be the first rule of web design, I do take issue with the word &#8220;click&#8221;. Godin&#8217;s later clarification, &#8220;What do you want me to do now?&#8221; is much more effective.)</small></p>
<p>Seth illustrated his point with two images. Please go and read his post to understand the context. Both are examples of how visual design can heavily influence how the user interacts with the sites in question, and how either clarity or confusion is created by design choices.</p>
<figure id="attachment_633" aria-describedby="caption-attachment-633" style="width: 800px" class="wp-caption alignnone"><img src="http://www.the-haystack.com/wp-content/uploads/2015/02/seth01.jpg" alt="A form with the least important actions styled as buttons, most important as a simple link." width="800" height="498" class="size-full wp-image-633" srcset="http://www.the-haystack.com/wp-content/uploads/2015/02/seth01.jpg 800w, http://www.the-haystack.com/wp-content/uploads/2015/02/seth01-300x187.jpg 300w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption id="caption-attachment-633" class="wp-caption-text">This component is all about the refund, but the link to get it is visually one of the least important items on the page.</figcaption></figure>
<p>If you examine the first image, a screenshot of part of the process to get a refund, the <em>conscious</em> choice to present <em>the most important thing relating to the purpose of this component</em> as a simple link (text), which has to compete with huge (size) green and gray buttons (color). These buttons are placed where one would normally expect to act on the preceding text (placement/layout). These design choices make for stunted interaction. This is either inappropriate design, or someone did a nice job of making it slightly harder to get a refund.</p>
<figure id="attachment_632" aria-describedby="caption-attachment-632" style="width: 800px" class="wp-caption alignnone"><img src="http://www.the-haystack.com/wp-content/uploads/2015/02/seth02.jpg" alt="Form with poorly placed next action button" width="800" height="340" class="size-full wp-image-632" srcset="http://www.the-haystack.com/wp-content/uploads/2015/02/seth02.jpg 800w, http://www.the-haystack.com/wp-content/uploads/2015/02/seth02-300x128.jpg 300w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption id="caption-attachment-632" class="wp-caption-text">The &#8220;Next&#8221; button is more important to this form than &#8220;Regenerate Token&#8221;.</figcaption></figure>
<p>The problem with the second example is not so much related to color as it is to the choices as to what should be a form element and what should not. The word &#8220;Next&#8221; offers an action to continue the current process, and should at the very least be structurally and visually closer to the input field. In my opinion, &#8220;Regenerate Token&#8221; could either be a link, or a less competing color and placed where the &#8220;Next&#8221; button is currently.</p>
<p>In both examples, wireframes <em>could</em> have, but would not have necessarily anticipated or solved the interaction problems created here. Wireframes or not: once we have these things in the browser, it&#8217;s time to go and revisit the interaction after visual design has either helped it or hurt it.</p>
]]></content:encoded>
							<wfw:commentRss>http://www.the-haystack.com/2015/02/17/visual-design-influences-interaction/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
						<post-id xmlns="com-wordpress:feed-additions:1">631</post-id>	</item>
		<item>
		<title>Some thoughts on “designing in the browser”</title>
		<link>http://www.the-haystack.com/2014/12/23/some-thoughts-on-designing-in-the-browser/</link>
				<comments>http://www.the-haystack.com/2014/12/23/some-thoughts-on-designing-in-the-browser/#comments</comments>
				<pubDate>Tue, 23 Dec 2014 11:21:56 +0000</pubDate>
		<dc:creator><![CDATA[Stephen]]></dc:creator>
				<category><![CDATA[Babble]]></category>
		<category><![CDATA[Creativity]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=590</guid>
				<description><![CDATA[Ever since Andrew Clarke&#8217;s presentation The Walls Come Tumbling Down—which is the first time I heard of the term—the idea of “designing in the browser” has increasingly become a point of discussion and debate. As one of those crazies who doesn&#8217;t use an image editor (like Photoshop) to create design comps, I&#8217;m often lumped into &#8230; <a href="http://www.the-haystack.com/2014/12/23/some-thoughts-on-designing-in-the-browser/" class="more-link">Continue reading <span class="screen-reader-text">Some thoughts on “designing in the browser”</span> <span class="meta-nav">&#8594;</span></a>]]></description>
								<content:encoded><![CDATA[<p>Ever since Andrew Clarke&#8217;s presentation <a href="http://www.stuffandnonsense.co.uk/blog/about/walls_come_tumbling_down_presentation_slides_and_transcript/">The Walls Come Tumbling Down</a>—which is the first time I heard of the term—the idea of “designing in the browser” has increasingly become a point of discussion and debate.</p>
<p>As one of those crazies who doesn&#8217;t use an image editor (like Photoshop) to create design comps, I&#8217;m often lumped into the design-in-the-browser category. So let&#8217;s clear things up a bit with my take on this approach.</p>
<h2>You don&#8217;t actually design in the browser</h2>
<p>Okay, you <em>can</em> design in the browser, meaning you open up a blank HTML file in both a text editor and a browser and have at it. But why would you? Some people really mean this when they speak of designing in the browser. But in my experience, that&#8217;s often not what we&#8217;re really talking about.</p>
<p>When I speak of designing in the browser, I mean <em>creating browser-based design mockups/comps</em> (I use the terms interchangeably), as opposed to static comps (like the PSDs we&#8217;re all used to). So it&#8217;s not the <em>design</em>. It&#8217;s the <em>visualization of the design</em>—the one you present to stakeholders. It&#8217;s not the only deliverable, but it&#8217;s the one that&#8217;s most important to show in the browser. Before that, I sketch. On paper. Other people I know who “design in the browser” actually use Photoshop. For sketching. But when we say “designing in the browser”, we mean <em>the comp is in the browser</em>.</p>
<h2>We sure do like our comfort zones</h2>
<p>Creating comps like this puts many designers out of their comfort zones. Many feel they have to learn to code, or “think in HTML and CSS”. Those who know that isn&#8217;t true can still feel awkward pairing up with a developer to visualize designs. That said, I think that learning CSS can be a <em>useful addition</em> to a designer&#8217;s toolbox. Note that in all my talks and in my book, I&#8217;ve only ever stated my opinion that browser-based comps are preferable to Photoshop-based comps. I have never stated that code should replace Photoshop.</p>
<p>That said, I&#8217;m increasingly frustrated by the articles, talks and discussions defending Photoshop comps, almost all of them citing Dan Mall&#8217;s idea of “deciding in the browser” rather than “designing in the browser”. I do agree with Dan; in fact, designers should already have been &#8220;deciding in the browser&#8221;, for years, <em>especially</em> when doing static image comps. If you design for the browser, you decide in the browser.</p>
<p>So much effort is being put into stating the case for static image comps, almost as if to justify the current (which is also the past) way of working. “Let me tell you why I want to stay in my comfort zone.” “Let me tell you what you other disciplines need to do for me so that I can continue to stay in my comfort zone and do things the way I&#8217;ve always done.”</p>
<p>It would all be fine, if it weren&#8217;t complete bullshit. And that is partly due to the flimsy premises of the arguments given.</p>
<h2>Flimsy arguments</h2>
<p>I don&#8217;t mean to pick on any specific article, but I&#8217;m compelled to provide an example and <a href="http://inspectelement.com/articles/the-8020-hybrid-approach-to-designing-in-the-browser">this particular article</a> really got to me. Probably because I&#8217;m sure the author is skilled and talented, and thus many folks who read the article might swallow the premises whole. But looking at the points made, I&#8217;m inclined to disclose a couple of fallacies.</p>
<ol>
<li>The author states that the desire to increase the speed of design and development is the driving force behind designing in the browser. While speed may be a factor, it&#8217;s arguably not the main factor, and certainly not the only one. More important, for example, is bridging the traditional gap between what the client sees in a comp versus the end result.</li>
<li>The implication of the sentence that follows is that web-based comps help speed but reduce the quality of the design work being produced. Tell that to <a href="http://www.theguardian.com/uk">The Guardian</a>.</li>
<li>The author then proceeds to make the case for Photoshop instead of code (albeit with an 80/20 split). Nothing wrong with that, but the author&#8217;s personal experience with code yielding “dull” designs does not mean that code yields dull designs. It most likely means that the author tried getting into code too soon, or skipped sketching altogether, or is simply not as comfortable in code. I would agree that might not work out well. But in that case it&#8217;s the design process at fault, not the fact that code is used <em>at all</em>.</li>
</ol>
<h2>Code can support the creative process</h2>
<p>Fabulous, creative things are being done with code. Just because some of us are more comfortable with graphical tools doesn&#8217;t negate that fact. It simply means that we&#8217;re less comfortable with code because we don&#8217;t know it as well as the tools we&#8217;ve been using for years and years. Which is logical, if you haven&#8217;t learned to code yet use Photoshop daily. And if you&#8217;re in my age range, you&#8217;ll remember that we didn&#8217;t always use Photoshop to create design comps. We had to get out of our comfort zone and learn it. And learn it we did, eventually. </p>
<p>For every person who tries opening a text editor and typing code from scratch before claiming “FAIL”, there are scores of us who actually <em>sketch</em> before even touching code. And I know designers who don&#8217;t code, but team up with developers to create design comps in the browser. </p>
<p>If you prefer using graphical tools, that&#8217;s fine. Nothing wrong with it. No one&#8217;s attacking you. But don&#8217;t say web-based comps are about speed when they&#8217;re not, that the process is less creative when your own approach to it is the problem. Photoshop is neutral. Code is neutral. It&#8217;s what you <em>choose</em> do with them and how.</p>
<p>I think code is a valuable tool, and I think web-based comps offer a plethora of benefits to the design process, clients, and teams. But again, I said web-based <em>comps</em> offer benefits as compared to Photoshop <em>comps</em>. Not “code is better than Photoshop”. That&#8217;s a huge difference. Designers know Photoshop; not all of them know the benefits of code as a design tool. I feel it&#8217;s important to talk about that.</p>
<p>Nobody is going to take your copy of Photoshop away from you. So since no one&#8217;s attacking, perhaps there&#8217;s no real need to defend. With false statements at that. In fact, for every defensive article or talk or tweet against code, I think about how time could have been spent learning some.</p>
<p>Creativity is tool-independent.</p>
]]></content:encoded>
							<wfw:commentRss>http://www.the-haystack.com/2014/12/23/some-thoughts-on-designing-in-the-browser/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
						<post-id xmlns="com-wordpress:feed-additions:1">590</post-id>	</item>
	</channel>
</rss>
