Hello Web Books RSS Feedhttp://hellowebbooks.com/news/News, articles, and tutorials from Hello Web Booksen-usMon, 27 Apr 2026 15:12:41 +0000The new Hello Web Books website has launched!http://hellowebbooks.com/news/new-hello-web-books-website-backend-has-launched/<div class="block-paragraph"><p>Over the last few months, I've been <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Fmoved-hellowebbookscom-static-site-generator-full-django-site%2F">slowly increasing</a> the <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Fnew-hello-web-books-website-nearly-completed%2F">capabilities of this website</a> with the ultimate goal of replacing several external services I was depending on. I'm excited to say that work has finally finished!</p> <p><strong>HelloWebBooks.com now has a full educational site back-end.</strong> You can order my book packages, which will prompt signing up for an account, and on this account you can access your downloadable files, and (new) the full book content online, split up by chapter. This will include embedded videos, if your package includes them.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fdashboard.png" alt=""/> <figcaption>The new book/course dashboard.</figcaption> </figure></div> <div class="block-paragraph"><p>Previously, if you bought a video package for <a href="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Flearn-design">Hello Web Design</a>, you would be prompted to create an account on Gumroad to access your files, which included a janky hack — a text file with the URL of a 100% coupon for Podia, where you would sign up for an account <em>again</em>, to access the video files hosted there. I liked the Podia experience, but Podia had no way of embedding a signup button or form on an external site, so this was my workaround. Blech.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fdashboard-1.png" alt=""/> <figcaption>Embedded videos with the content.</figcaption> </figure></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fdashboard-2.png" alt=""/> <figcaption>Books can be read online (and updated easily!)</figcaption> </figure></div> <div class="block-paragraph"><p>Since I was in a mood to replace services, <strong>I also replaced Gumroad with a custom Stripe/Stripe Checkout experience.</strong> If you don't mind me geeking out over details, this was a huge hullabaloo I didn't (but should have) expected. I started out thinking, "Oh, I'll just embed the Stripe Checkout form and I'll be done!" But of course, there were so many other details to consider. What about coupons? What about gifting? What about applying coupons automatically if someone is logged in? Gah! This was harder to figure out, with so many edge cases, but in the end it was a fun experience.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fdashboard-4.png" alt=""/> <figcaption>Stripe checkout for payments.</figcaption> </figure></div> <div class="block-paragraph"><p>What's next?</p> <ul> <li><strong>Tracking down bugs!</strong> I'm sure there are more.</li> <li>Everyone who owns a book/course already <em>and</em> is still on my newsletter list will be automatically imported into the system today. <strong>If you are a previous customer and unsubscribed (which is totally fine) or bought on Kindle, please forward me your receipt and I'll be happy to give you access.</strong> (I have purchases from almost all of my sale sites saved on customer data in the newsletter, which is why I am doing it this way.)</li> <li><strong>I will be updating the book landing pages / this website in general</strong> to promote this new feature.</li> </ul> <p>I'm also looking into using print-on-demand for books moving forward (at least after an initial Kickstarter run.) Once this is completed, I will be considering a price-hike across all packages to reflect the additional functionality I added with this site. So if you're considering buying, do it now before the hike increase!</p> <ul> <li><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Forder%2F%23hwa">Order <em>Hello Web App</em>, a two book set, starting at $34.95</a></li> <li><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Forder%2F%23hwd">Order <em>Hello Web Design</em>, starting at $24.95</a></li> <li><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Forder%2F%23all">Or get both! Packages start at $49.95</a></li> </ul> <p>All packages include access to the educational site.</p> <p>Thanks friends, excited that this is officially out!</p></div>http://hellowebbooks.com/news/new-hello-web-books-website-backend-has-launched/Does your inbox feel too quiet? The hidden consequences for temporarily breaking your email.http://hellowebbooks.com/news/does-your-inbox-feel-too-quiet-hidden-consequences-temporarily-breaking-your-email/<div class="block-paragraph"><p><strong>A month ago, an error with my business's email address caused it to bounce. Even after I discovered and fixed the issue, this led to a still-unknown amount of emails to silently be suppressed while I carried on unaware. </strong></p> <p>Email suppressions <em>should</em> be something everyone should be aware about but I've found over the last few weeks that no service provider was aware their mail API services (e.g., Mailgun, Sendgrid, and others) would suppress bounced emails.</p> <p>I'm writing this article not only to share my experiences, but hopefully raise awareness for this sort of problem with both customers and service providers so no one will have to go through this very annoying mess like I have.</p> <h2>Making a dumb mistake and breaking my email, causing issues I didn't anticipate.</h2> <p>As I am a person who runs this web app, I wanted a personal email address using the domain — [email protected].</p> <p>Of course, setting up an email address requires some logistics, and I originally went the easy-but-pricey way of setting up Google Apps and paying $5/month. I set up my personal Gmail to receive emails sent from [email protected] and promptly moved onto other things. This was probably done in mid 2018.</p> <p><strong>In February 2019, I noticed the $5 monthly charge on my credit card and decided to kill my Google Apps account to save myself some pocket change, completely forgetting that that was what powered [email protected].</strong> I have a bunch of other emails that were set up using a legacy, free, version of Google Apps that forward to my Gmail account, and in a short-sided moment, I failed to remember that this email address was not set up that way as well, nor that it wouldn't fall back to this behavior after cancelling the paid subscription.</p> <p><strong>All emails from any service that was using that email would now bounce, and of course, I had no idea this was happening.</strong></p> <p>Later, a kind soul emailed me to let me know my email address was bouncing, leading to a frantic few hours discovering that I broke my email when I disabled Google Apps, leading me to set up a temporary mail server, and then setting up Google Domains for future forwarding. Voila, [email protected] worked again! I moved forward with my life confident that I fixed the issue.</p> <h2>My inbox felt quieter, but <em>some</em> emails worked.</h2> <p>Weeks again later, I started to notice something weird. I received fewer emails than before, and I would wonder if the email was still working. But when sending myself an email from an outside source, the email would arrive successfully so I would put it out of my mind again.</p> <p>It wasn't until I few days ago I realized that I wasn't receiving <em>any</em> emails from Gumroad, which was particularly worrying, as I needed to ship physical products after receiving a product payment notification.</p></div> <div class="block-html"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">(Yes, notifications are enabled. No, they’re not in spam. Yes, other emails from Gumroad are working.) <a href="proxy.php?url=https%3A%2F%2Ft.co%2F40TRaSaE7R">pic.twitter.com/40TRaSaE7R</a></p>&mdash; Tracy Osborn (@tracymakes) <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Ftracymakes%2Fstatus%2F1104117667844288518%3Fref_src%3Dtwsrc%255Etfw">March 8, 2019</a></blockquote> <script async src="proxy.php?url=https%3A%2F%2Fplatform.twitter.com%2Fwidgets.js" charset="utf-8"></script></div> <div class="block-paragraph"><p>Gumroad responded that they were having issues with Gmail, so I blamed the whole thing on some disappearing Gmail email bug with Gumroad, and not my fault or responsibility, and put it out of my mind yet again.</p></div> <div class="block-html"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Just to add: it&#39;s super weird because they don&#39;t effect all emails nor do they go into spam. They just don&#39;t show up (and then sometimes they do a while later).</p>&mdash; Sahil Lavingia (@shl) <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Fshl%2Fstatus%2F1104117855358861312%3Fref_src%3Dtwsrc%255Etfw">March 8, 2019</a></blockquote></div> <div class="block-paragraph"><p>Then I noticed that mailing-list exports weren't arriving in my email from ConvertKit, nor password reset requests. And <em>yet again</em> I sent myself test emails, which arrived promptly, and I reassured myself that my email address was indeed working.</p> <h2>Fixing my own mail service led me to realize that mail API services were silently suppressing my email.</h2> <p>It wasn't until I was working on the new version of this web app when I finally discovered what was actually happening. I launched the new version, and in testing, ran into a 500 error. This should have emailed me a report, which never arrived (of course), so I hustled over to Mailgun to see if my web server actually sent the email.</p> <p><strong>It was there I discovered how mail API services will silently suppress bouncing emails, and I hadn't been receiving emails from my <em>own</em> mail service for about a month.</strong></p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fmailgun.png" alt="Mailgun screenshot showing suppressed emails"/> <figcaption>Suppressed emails over the last month.</figcaption> </figure></div> <div class="block-paragraph"><p>Seeing [email protected] suppressed by my own mail service caused a big <em>a ha</em> moment: <strong><em>All</em> web services I used with that email were silently suppressing my emails.</strong> It explained why I received some emails, but not others; why emailing from another email address worked fine while emails and notifications from services I used were silently failing.</p> <p>And web services themselves weren't often aware of this issue, like Gumroad above, who blamed it on Gmail.</p> <p>I now have the task of pinging <em>every single service I signed up for with this email address to see if my emails are being suppressed.</em></p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Feful.png" alt="Screenshot of my email featuring a convo with eFulfillment Service, who was suppressing my emails."/> <figcaption>Screenshot of my email featuring a convo with eFulfillment Service, who was suppressing my emails.</figcaption> </figure></div> <div class="block-paragraph"><h2>Web services and support forget that this is a feature offered by their mail API services.</h2> <p>For example, on <a href="proxy.php?url=https%3A%2F%2Fwww.mailgun.com%2Fdeliverability%2Fbounce-management-software">Mailgun's features page</a>: </p> <blockquote> <p>The 2 Types of Email Bounces: (...) Hard bounce: messages may permanently fail because the email address doesn’t actually exist or is no longer valid. For this bounce type, <strong>bounce management software can automatically suppress these emails from your email lists.</strong> This will help you keep a clean email list and a positive email reputation.</p> </blockquote> <p>On <a href="proxy.php?url=https%3A%2F%2Fmandrill.zendesk.com%2Fhc%2Fen-us%2Farticles%2F205582937-About-Bounces">Mandrill's side</a>:</p> <blockquote> <p><strong>After a bounce occurs for a recipient email address, Mandrill stops attempting delivery of the email.</strong> Further email to that address will be rejected temporarily.</p> <p>Rejections shouldn't be removed in bulk, but if you know that a bounce was temporary or you've resolved an issue with the receiving server, <strong>you can remove individual rejections for a small hit to your account's reputation.</strong></p> </blockquote> <h2>Increasing awareness that this is something someone should check out if they suspect email issues.</h2> <p>The original problem was solely my fault, for making a quick, silly decision to cancel a service I was using and not thinking through the consequences. </p> <p>However, figuring out and fixing the issue has been made <em>so much more difficult</em> due to the services I used forgetting to check their email suppression lists when I emailed in asking for support. </p> <p>I had also asked several very computer- and web-savvy friends for help figuring out my email issues and they also failed to remember that email suppression lists could have been the cause of my email issues </p> <h2>Fixes if this happens to you.</h2> <ol> <li>Of course, don't make changes to your email provider that could potentially cause bounces. Prevention is the best medicine.</li> <li>Password resets are a great way to quickly trigger an email to test whether your email address is being suppressed.</li> <li>If you're using an email provider like Gmail, you can add +WORD to your email address (for example, [email protected] will still go to [email protected]). You can switch out the email used on a website and trigger a password reset to see if an email will then arrive. If they do, that likely means your original email is suppressed by their system.</li> <li>Ask support to remove your email address from their email suppression lists, and be prepared to walk them through the process as quite a few I conversed with weren't aware this could be an issue. </li> </ol> <hr> <p>This has been a <em>fun</em> issue to diagnose and fix over the last few weeks and I've learned a lot in that time. Here's hoping it helps you as well!</p></div>http://hellowebbooks.com/news/does-your-inbox-feel-too-quiet-hidden-consequences-temporarily-breaking-your-email/The new Hello Web Books website is nearly completedhttp://hellowebbooks.com/news/new-hello-web-books-website-nearly-completed/<div class="block-paragraph"><p>I've been having a fun few months of missed notifications/emails in some form or another.</p> <p>A few weeks ago, I realized I messed up something with my domain and emails to [email protected] weren't arriving. Explained why my inbox was being particularly quiet! (This has been fixed.)</p> <p>Well ALSO... I thought my book sales through my website plummeted in the last month. I wasn't getting any email notifications of sales, and actually was one of my motivating factors behind launching this Patreon ("egads, how will I make rent?!") </p> <p>Last week I got the weekly rundown email from Gumroad (the system I use to sell books on my website) and realized it said I sold a paperback book. What? When? I need to be on top of those because I need to ship the book and I didn't receive any notification email of the sale on the day it said it was sold.</p> <p>At first I raged as I thought it was related to my previous email problem, but after some investigation, looks like Gmail is selectively hiding some Gumroad emails. No, they're not in spam. Maybe something to do with blocking Gumroad's mail server IPs. </p> <p>So, hey! It's not my fault! I can stop being so down on myself for a lack of sales since it turns out I've still been making sales!</p> <p>Buuuut this has definitely motivated to work double-time on the new Hello Web Books website, where I was already replacing Gumroad with a custom Stripe integration, so I don't have to worry about outside services breaking in quiet ways.</p> <p>(I should be clear that I'm not really mad at Gumroad (though their normal support was less than useful or apologetic. Sahil, the founder, contacted me on Twitter and was much more helpful.) I'm glad I was able to use them successfully for so many years.)</p> <p>And (crossing fingers), the new website should launch next week!</p> <p>The new book dashboard that readers will get access to after buying:</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fdashboard.png" alt=""/> <figcaption>The new book dashboard that readers will get access to after buying.</figcaption> </figure></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fdashboard-1.png" alt=""/> <figcaption>The book content page, if you have the videos included.</figcaption> </figure></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fdashboard-2.png" alt=""/> <figcaption>The content area, if you don't have videos included.</figcaption> </figure></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fdashboard-3.png" alt=""/> <figcaption>You can also buy my books/videos as a gift for others.</figcaption> </figure></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fdashboard-4.png" alt=""/> <figcaption>And the new order page, using Stripe Checkout v1.</figcaption> </figure></div> <div class="block-paragraph"><p>This has been a fun project! I still don't think it was the best use of my time as everything was mostly working (other than missing Gumroad sale notification emails.) But this coding project helped drag me out of some signification depression and has motivated me to work again. 🎉</p> <p>So if all goes to plan, I'm spending the rest of the week figuring out how to onboard folks onto the new system, fix the rest of the small bugs, and figure out my deployment plan, so it's up by early next week.</p> <p>There are a lot of big things I want to work on after launching (I really want dedicated landing page URLs a la Wes Bos, so hellowebapp.com is the HWA landing page, hellowebdesignbook.com is the HWD landing page, etc.)</p> <p>But (omg broken record) I will BE WORKING ON THE GIT ZINE FIRST by golly. I gotta get this MVP super website up so I start getting payment notifications again, and then the zine(s). I promise. </p> <p>Phew. </p> <p>Thanks for following the story and hope you enjoyed the progress shots!</p> <p>(<a href="proxy.php?url=https%3A%2F%2Fwww.patreon.com%2Fposts%2Fnew-hello-web-is-25320445">This was originally published on my Patreon account</a>. Become a Patron to get these updates early!)</p></div>http://hellowebbooks.com/news/new-hello-web-books-website-nearly-completed/Updates! Dug myself into a very big (and fun) programming holehttp://hellowebbooks.com/news/updates-dug-myself-very-big-and-fun-programming-hole/<div class="block-paragraph"><p>One of the things I wanted to accomplish this week (in honor of the Patreon launch) was an update to one of the zines; either getting the art done for the Windows or Linux command line zine or working more on the content for the git zine.</p> <p>BUT that programming project I mentioned in the last update is STILL ONGOING. It has been the giant-est of giant yak shave-y projects. </p> <p>Turns out replicating <a href="proxy.php?url=https%3A%2F%2Fgumroad.com%2F">Gumroad</a>'s functionality isn't a week-long project! (Duh.)</p> <p>I'm having a ton of fun with it, even though it's taking a lot of time. I lost my love for programming last fall and it lasted up until this project. The funk I was in meant I didn't feel like working on book stuff either. Now I'm super excited to figure out how to make my own coupon system and get Stripe Checkout to work and oh lordy I started all this work and then realized there is a <a href="proxy.php?url=https%3A%2F%2Fstripe.com%2Fdocs%2Fpayments%2Fcheckout">whole new version</a> of Stripe Checkout and WHAT Stripe has an <a href="proxy.php?url=https%3A%2F%2Fstripe.com%2Fdocs%2Forders">Orders API</a> when did that happen? This is basically my brain every day.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Fcheckout.png" alt="Stripe Checkout on HelloWebBooks.com"/> <figcaption>Since the last update, I ripped out that custom credit card form and started using Stripe Checkout. Probably will launch with this, and then migrate to Stripe Checkout Beta.</figcaption> </figure></div> <div class="block-paragraph"><p>In other news...</p> <h3>The Command Line Zine can now be ordered as a physical book from Amazon</h3> <p>Back in the fall I chatted with another self-published author who made the very good point that, while my physical books are gorgeous, I probably could have saved a ton of money and pain if I went with print-on-demand, like he did. I grumbled and got defensive, and then thought about it, and then realized he was probably right.</p> <p>Going forward, I'll probably do a small print run (500, likely) for Kickstarter and pre-orders using my fancy pants custom designed books, and then use Amazon's printing service (CreateSpace, though I think it's now bundled under Kindle Direct Publishing now) for orders after launch. This'll save me the pain of having a fulfillment warehouse that I pay minimum $22 weekly (UGH) and returns and re-orders and damaged books and all that.</p> <p>To prep for this, I decided to make a print-on-demand version of my zine and see what the Amazon process was like. <a href="proxy.php?url=https%3A%2F%2Famzn.to%2F2EoXsGY">You can see it on Amazon here.</a></p></div> <div class="block-html"><figure class="caption"> <a href="proxy.php?url=https%3A%2F%2Famzn.to%2F2EoXsGY"><img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2019%2Famazon.png" alt="Really Friendly Command Line Intro on Amazon"/></a> <figcaption>Really Friendly Command Line Intro can be ordered as a small paperback on Amazon</figcaption> </figure></div> <div class="block-paragraph"><p>Pricing is hard. It's only 24 pages, but Amazon's greediness means I actually only get about $1 per sale when it's sold for $5.95, so I can't really do less. Also, will probably update the cover design with color — currently it is black and white for people to print at home, but that doesn't look too snazzy on Amazon. Also also, the description needs a huge revamp.</p> <p>(Also it's driving me nutty that the product page isn't connected with the Kindle version but apparently the automated system needs more time and I can't complain for another 48 hours. Sigh, Amazon.)</p> <p>Traveling for the next two weeks</p> <p>I'm off traveling for the next couple weeks! I had hoped to get my MVP version of the new hellowebbooks.com out before I left but there are still big things to do, so hopefully I can get some work done while I'm away from home. </p> <p>ALSO: I owe a few packages of the physical command line zine to a few of you. Since I'm coming to the US in the latter half of the trip, I'm hoping to ship them then. Stay tuned!</p> <p>(<a href="proxy.php?url=https%3A%2F%2Fwww.patreon.com%2Fposts%2Fupdates-dug-into-24879359">This post was originally published on my Patreon account</a>.)</p></div>http://hellowebbooks.com/news/updates-dug-myself-very-big-and-fun-programming-hole/Support me/Hello Web Books on Patreon!http://hellowebbooks.com/news/support-mehello-web-books-patreon/<div class="block-paragraph"><p>I've launched a Patreon for myself/Hello Web Books! (Since we're one and the same at the moment.) </p> <p><a href="proxy.php?url=https%3A%2F%2Fwww.patreon.com%2Ftracyosborn">https://www.patreon.com/tracyosborn</a></p> <p>I'm working on the baby beginnings of several new books and zines and wanted a better place to do small, quick updates on progress (Twitter is a bit too ephemeral/noisy, I don't want to spam my email list, little updates weekly seems like too much work for blogging.) Not to mention it would be helpful to even out my personal revenue in-between product launches, and support more free / community projects (like my <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-command-line.">Learn Command Line zine</a></p> <p>If you have a dollar or two to spare a month, I appreciate any and all support you can give! :cheers:</p></div>http://hellowebbooks.com/news/support-mehello-web-books-patreon/50% off all Hello Web Books packages and products for Black Friday + Cyber Mondayhttp://hellowebbooks.com/news/all-hello-web-books-packages-and-products-black-friday-cyber-monday/<div class="block-paragraph"><p>Oh hey it's Black Friday time again!</p> <p>Use the coupon code BLACKFRIDAY2018 on the <a href="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Forder">order page</a> to receive 50% off all products and packages. Coupon code will work until Monday the 26th at midnight ET. </p> <p>Enjoy!</p></div>http://hellowebbooks.com/news/all-hello-web-books-packages-and-products-black-friday-cyber-monday/Updated package needed for Hello Web App deploymenthttp://hellowebbooks.com/news/updated-package-needed-hello-web-app-deployment/<div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fhwa-deploy.png" alt=""/> <figcaption>hellowebapp-deploy's package location on pypi.org</figcaption> </figure> <p>I was recently alerted to the fact that one of the packages I use in <i><a href="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Flearn-django%2F">Hello Web App</a></i>, waitress, had been updated to a version that is backwards incompatible with the book. This package was installed by my own package (<code>hellowebapp-deploy</code>), where I didn't specify version numbers.</p> <p>This is a quick update to let y'all know that I've updated the <a href="proxy.php?url=https%3A%2F%2Fpypi.org%2Fproject%2Fhellowebapp-deploy%2F"><code>hellowebapp-deploy</code> pypi package</a> to specify the correct, non-breaking version number and that I've added this to my list of things to update in a new version of the book.</p> <p>If anyone would like to reinstall to get the correct version number, use this (which’ll also prevent install from the old/cached version):</p> <pre><code> pip install hellowebapp-deploy --no-cache-dir </pre></code> <p>I should have a new release for <i>Hello Web App</i> soon using the newest version of the whitenoise package. Stay tuned!</p></div>http://hellowebbooks.com/news/updated-package-needed-hello-web-app-deployment/Moved HelloWebBooks.com from a static site generator to full Django sitehttp://hellowebbooks.com/news/moved-hellowebbookscom-static-site-generator-full-django-site/<div class="block-paragraph"><p>This website got a big update!</p> <p>This is where I would usually show a screenshot of the new website except, in this case, the changes are 99% invisible.</p> <p><strong>I created this website way back in the day using a <a href="proxy.php?url=https%3A%2F%2Fpypi.org%2Fproject%2FCactus%2F">static site generator named Cactus</a></strong>, which worked okay for what I wanted to do. Back then, my concerns were more about time to get things launched and making things as easy as possible to deploy, since I was more concerned about getting the books released.</p> <p>But a staticly-generated site has some major limitations and I started to feel like my hands were tied behind my back. Blogging became more of a chore. People often asked me for Wes Bos-style discounts (price parity, selling my courses for cheaper based on country), and that’s harder to build without a backend. I’m also paying a lot for various services, including a video host, but that service doesn’t have a way to insert a “buy” button on my own website, so I’m using <em>another</em> service for that, meaning that people who buy my books tend to create <em>two</em> accounts, which is plainly annoying. </p> <h2>HelloWebBooks.com moved from a static site generator to full Django</h2> <p><strong>If I wanted to address any of the above, I needed to migrate this website to a full Django system.</strong> The hardest part was figuring out what to do with the static files I had for the blog. For WeddingLovely, my startup, I used Wordpress for the blog and it runs on a completely different system, and I here I hoped for better integration between my site and my blog.</p> <h2>Blog moved from static files to Wagtail</h2> <p>I ended up using <a href="proxy.php?url=https%3A%2F%2Fwagtail.io%2F">Wagtail</a>. There actually wasn’t a ton of thought put into this — I’ve heard a lot about Wagtail from my friends in Django, and I missed Wordpress-like features for blogging, like scheduling posts. This whole new website started out as an experiment at home that I didn’t anticipate finishing, just a test to see if it was doable to run Wagtail for just the blog portion of my website and easily migrate my files over. I managed to get everything looking exactly the same as it did before, locally, using Wagtail for everything under <em>/news/</em>, so I decided to plow forward with launching the site.</p> <p>For the website/book portion of the website, I haven’t used the backend at all (files are still just static files with no database involvement), but at some point I’m going to start building some fun stuff.</p> <h2>I learned a lot about server administration</h2> <p>Doing all this was also a fun excuse to finally get more comfortable with setting up servers. In the past, for complicated deploys, I usually whined for my husband (hi Andrey) to help me out since he’s really awesome like that. But it was time for me to fly on my own.</p> <p>The following is not a tutorial, just the process I went through:</p> <h3>DigitalOcean</h3> <p>I was doing all of this without a deadline, so I felt comfortable trying a few different server solutions. I started with <a href="proxy.php?url=https%3A%2F%2Fwww.digitalocean.com%2F">DigitalOcean</a>. <a href="proxy.php?url=https%3A%2F%2Fwww.digitalocean.com%2Fcommunity%2Ftutorials%2Fhow-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04">I mainly used this tutorial</a>, but ran into issues at the point where tutorial walks you though creating Django site from scratch within the server, not pushing an existing local Django site (which I find kind of silly, since who does that.) </p> <p>I found some other tutorials which walked me through using git on the server to pull my site from a public repo. Here’s where I spent a few hours using GitLab, and then just falling back to GitHub because I’m lazy and I already have accounts there, then trying not to be lazy and moving all my private into to environment variables, then forgetting about git history when I pushed to the public GitHub repo, then scrubbing everything and updating all my passwords and secret keys and starting over. Phew. That was fun.</p></div> <div class="block-html"><blockquote class="twitter-tweet tw-align-center" data-lang="en"><p lang="en" dir="ltr">Hi, I’m Tracy, and I just accidentally committed with secret keys in git history to a public git repo. <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Fhashtag%2Fderp%3Fsrc%3Dhash%26amp%3Bamp%3Bref_src%3Dtwsrc%255Etfw">#derp</a></p>&mdash; Tracy Osborn (@limedaring) <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Flimedaring%2Fstatus%2F1062369496269275136%3Fref_src%3Dtwsrc%255Etfw">November 13, 2018</a></blockquote> <script async src="proxy.php?url=https%3A%2F%2Fplatform.twitter.com%2Fwidgets.js" charset="utf-8"></script></div> <div class="block-paragraph"><p>Finally, my site was was pushed into DO, I went back to the original tutorial to set up nginx and gunicorn, and went through a few hours of finding an error, fixing an error, finding a new error, fixing the new error, etc, etc.</p> <p>I finally reached a point where I thought, “Well, this is why Heroku exists, maybe I should use that instead.” Not to mention I need to fix something within the <em>Hello Web App</em> book anyways that in (coming this week), so I thought it would be good for me to reacquaint myself with Heroku.</p> <h3>Heroku</h3> <p>I popped over to <a href="proxy.php?url=https%3A%2F%2Fheroku.com">Heroku</a> and tried going through the process of deploying the site there. It ended up being more frustrating because I was getting some of the same errors I got with DO, but it was harder for me to figure out how to fix because everything is abstracted away. Heroku’s documentation also drove me up the wall (especially after using some of DO’s documentation) so after a day of frustration, I decided that I was going to stick with DO. Oh, and deployment is sloooow.</p> <p>I recommend Heroku for my <em>Hello Web App</em> readers precisely because I don’t want to burden new devs with all that server mumbo jumbo, and will continue to do so. But for me, I like having more control since I’m a bit farther along in my dev-itude.</p></div> <div class="block-html"><blockquote class="twitter-tweet tw-align-center" data-lang="en"><p lang="en" dir="ltr">Today I played around with Heroku and guess what: SAME UNKNOWN 500 ERROR. And restarting dynos isn’t working. Probably different error. Yay servers and deployment!</p>&mdash; Tracy Osborn (@limedaring) <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Flimedaring%2Fstatus%2F1062120317676589058%3Fref_src%3Dtwsrc%255Etfw">November 12, 2018</a></blockquote></div> <div class="block-paragraph"><h3>DigitalOcean again</h3> <p>Back I went to DO today, fresh and ready to fix the last few errors I ran into. One of my big issues was that I filled out my local database with my blog posts, thinking, “Oh, Django’s <a href="proxy.php?url=https%3A%2F%2Fdocs.djangoproject.com%2Fen%2F2.1%2Fref%2Fdjango-admin%2F%23dumpdata">dumpdata and loaddata looks easy</a>, I’ll just do that.” I should have known better — postgres and Wagtail were not playing nicely and it took me a few hours to debug the issues and get my data loaded into my production database (still with errors, but nothing that stops me from working.) I learned a lot here about how Wagtail works and learned about all the things I don’t like about it, but hey, going to keep using it for now.</p></div> <div class="block-html"><blockquote class="twitter-tweet tw-align-center" data-lang="en"><p lang="en" dir="ltr">Day three of working solely on server administration.<br><br>What is it like outside?<br>Will I ever see sun again?</p>&mdash; Tracy Osborn (@limedaring) <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Flimedaring%2Fstatus%2F1062418545663971329%3Fref_src%3Dtwsrc%255Etfw">November 13, 2018</a></blockquote></div> <div class="block-paragraph"><h3>Fabric for deployment</h3> <p>One last technology that I’ve never used. Since I ditched Heroku, I needed an easier way to deploy my site after making local changes, and was recommended creating a <a href="proxy.php?url=http%3A%2F%2Ffabfile.org">Fabric</a> file (fabfile) to run the commands I was doing manually (ssh into the server, change to the correct directory, running <code>git pull</code>, then restarting gunicorn.)</p> <p>Things got tricky since Fabric has moved to a new version with different commands and most tutorials references the first version, but after a few hours I figured out how to create a <a href="proxy.php?url=https%3A%2F%2Fgithub.com%2Fhellowebbooks%2Fhellowebbooks-website%2Fblob%2Fmaster%2Ffabfile.py">very basic fabfile for deployment</a>.</p> <h3>Setting up scheduled posts with systemd timers</h3> <p>I’m familiar with cron (and have a whole chapter on Django management commands and cron in my <em><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-django%2F">Hello Web App: Intermediate Concepts book</a></em>) so I started setting it up before I realized I would have issues running the <code>publish_scheduled_posts</code> Wagtail command since my settings files need to have environment variables set and I didn't (obviously) want to hard code those.</p> <p>Andrey pointed me in the direction of using systemd timers (<a href="proxy.php?url=https%3A%2F%2Fwww.tutorialdocs.com%2Farticle%2Fsystemd-timer-tutorial.html">Here’s the best tutorial I found on the subject.</a>), which would have been just great had I not named my timer <em>cron.timer</em> and guess what! That’s already used by the system and nothing would happen and I tore my hair out for hours before I renamed my files and then they worked. Don’t be clever with names, folks.</p></div> <div class="block-html"><blockquote class="twitter-tweet tw-align-center" data-lang="en"><p lang="en" dir="ltr">Man, learning so much in the last few days. <br><br>Today: systemd things<br><br>The programming hole is so deeeeep</p>&mdash; Tracy Osborn (@limedaring) <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Flimedaring%2Fstatus%2F1063113545683030016%3Fref_src%3Dtwsrc%255Etfw">November 15, 2018</a></blockquote></div> <div class="block-paragraph"><h2>Updates to the current site</h2> <p>I didn’t change much on the front-end. The main visible difference now is that the blog posts in the blog have multiple categories, rather than being limited to just one.</p> <p>Other than that, the site is probably slower, since it’s not static. Funny that I spent days making these changes only to make the site slower. 😅</p> <h2>Upcoming</h2> <ol> <li><strong>Hopefully I’ll blog more.</strong> I love being able to schedule posts in Wordpress, so I can set up good content at my own pace and schedule things to go live at an appropriate time, and Wagtail appears to be able to do this. I say “appears” because I actually haven’t tested this until this blog post. </li> <li><strong>A better shopping cart system.</strong> I’ve been using <a href="proxy.php?url=https%3A%2F%2Fgumroad.com%2F">Gumroad</a> for the last three or so years, but have been itching to roll my own system using <a href="proxy.php?url=https%3A%2F%2Fstripe.com%2F">Stripe</a>. I love having video courses, and use <a href="proxy.php?url=https%3A%2F%2Fwww.podia.com%2F">Podia</a> for hosting those, but it’s expensive and doesn’t let me allow people to buy memberships from my own website or allow for physical products (and capturing shipping addresses), so I use Gumroad for all my sales and then punt to Podia using coupon codes, and both of those services make you create an account, which is… not ideal. It bugs me, it probably bugs my customers. </li> <li><strong>Related to the above — hosting my own videos.</strong> I’m using <a href="proxy.php?url=https%3A%2F%2Fwesbos.com%2F">Wes Bos</a> as inspiration and love how he runs his website and courses. Of course, hosting videos will be a whooole mess of potential additional issues but would be pretty baller.</li> <li><strong>Price parity.</strong> Another Wes Bos inspiration. I get emailed a lot from folks in Africa or India asking for a coupon code since $15 USD is a whoooole bunch of money there. And while I make probably 10x less than Wes Bos and kind of need to save all the pennies I can, I also don’t want to be a dick. So I’ll look into rolling something like this hopefully soon.</li> <li><strong>More authors! More books! Maybe!</strong> This big website update will make it easier to move from self-publisher to publisher territory.</li> </ol> <h2>In conclusion: Development is fun!</h2> <p>Well, the last three days of work didn’t directly make me money (and I’m rather poor right now) but they were fun, I learned a lot, and hopefully this new infrastructure will improve my future revenue flow. At the very least, hopefully it’ll good for my career in general.</p></div>http://hellowebbooks.com/news/moved-hellowebbookscom-static-site-generator-full-django-site/Library, bulk, and educational discounts available for Hello Web App and Hello Web Designhttp://hellowebbooks.com/news/library-bulk-educational-discounts/<div class="block-html"><figure class="full video"> <iframe width="560" height="315" src="proxy.php?url=https%3A%2F%2Fwww.youtube.com%2Fembed%2FjJl-3AHs8FQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen="allowfullscreen"></iframe> </figure></div> <div class="block-paragraph"><p>I've gotten a few questions lately about bulk, library, and educational discounts for all Hello Web Books, so I thought I'd write a quick note here.</p> <p><strong>Of course, I'm happy to give a discount for the above use-cases — just write me at <a href="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fmailto%3Atracy%40hellowebbooks.com">[email protected]</a> and I'll set up a special order form with a discount.</strong> While my <a href="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Forder">order page</a> sells the paperback book with the digital files included, I'm also happy to send just paperbacks (at a reduced price) for bulk/educational orders as well.</p> <p>I've also set up Amazon to allow for bulk discounts. I vastly prefer to sell directly (since Amazon takes a <em>ridiculous</em> amount of money from me, so the books I sell through Amazon are essentially at-cost) but I know some organizations are set up to use Amazon easily. The only other issue is that I can't sell Hello Web App as a set on Amazon, so each HWA book will have to be bought separately. See the listings here: <a href="proxy.php?url=https%3A%2F%2Famzn.to%2F2M3T7ub">Hello Web Design</a>, <a href="proxy.php?url=https%3A%2F%2Famzn.to%2F2yrSo42">Hello Web App</a>, <a href="proxy.php?url=https%3A%2F%2Famzn.to%2F2yvoBYf">Hello Web App: Intermediate Concepts</a></p></div>http://hellowebbooks.com/news/library-bulk-educational-discounts/Hello Web App 2.0's Kickstarter was successful! Thank you.http://hellowebbooks.com/news/hello-web-app-2-kickstarter-end/<div class="block-html"><figure class="caption video" style="padding-bottom: 50%;"> <iframe width="560" height="315" src="proxy.php?url=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fl8QgJGuq8_4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen="allowfullscreen"></iframe> <figcaption>Video thank you!</figcaption> </figure></div> <div class="block-paragraph"><p>The new <em><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-django">Hello Web App</a></em> just finished its <a href="proxy.php?url=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F1868398473%2Fhello-web-app-20-build-your-first-web-app-with-dja%2F">Kickstarter campaign</a> making over 200% of goal!</p></div> <div class="block-html"><figure class="full"> <a href="proxy.php?url=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F1868398473%2Fhello-web-app-20-build-your-first-web-app-with-dja"><img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2F03%2Fks.png" alt="Hello Web App 2.0 on Kickstarter"/></a> <figcaption>Super duper awesome.</figcaption> </figure></div> <div class="block-paragraph"><p>Thank you <em>so much</em> to everyone who backed the campaign, shared it with friends and family, and supported the re-release of my first book.</p> <p>The files have been at the printer for awhile already, so I should be getting the paperbacks soon to send out to everyone. I'm also finishing up the videos and will be releasing the digital packages super soon.</p> <p>Thank you again! Super excited to get this out. 🎉</p></div>http://hellowebbooks.com/news/hello-web-app-2-kickstarter-end/First free zine on command line basics has launched todayhttp://hellowebbooks.com/news/command-line-zine-launch/<div class="block-html"><figure class="caption"> <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-command-line"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2F03%2Fcmd-line-page.png" alt="Really Friendly Command Line Intro" style="border-color: #000;"/> </a> </figure></div> <div class="block-paragraph"><p>Today I'm releasing my first project, <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-command-line">A Really Friendly Command Line Intro</a> for MacOS! For free! This is a great addition to <em>Hello Web App</em> (and will be bundled with it moving forward). I walk through all the basic UNIX/command line commands that a beginner might need to learn when they start coding for the first time.</p> <p>Right now, you can:</p> <ul> <li><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-command-line">Read the HTML online here.</a></li> <li><a href="proxy.php?url=http%3A%2F%2Fhellobks.com%2Fcmd-line-pdf">Download the PDF.</a></li> <li><a href="proxy.php?url=http%3A%2F%2Fhellobks.com%2Fcmd-line-printable">Download the printable PDF</a>, set up to be folded together and stapled.</li> <li><a href="proxy.php?url=https%3A%2F%2Fleanpub.com%2Freally-friendly-command-line-intro">Buy .mobi/.ePub versions on Leanpub for $2.99.</a></li> </ul> <p>Upcoming, I'm working on some additional formats (like a video) as well as creating Windows and Linux versions of the zine.</p> <p>Thanks friends! Go check out <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-command-line">A Really Friendly Command Line Intro</a>.</p></div>http://hellowebbooks.com/news/command-line-zine-launch/Hello Web App 2.0 is now fundraising on Kickstarterhttp://hellowebbooks.com/news/hello-web-app-2-kickstarter/<div class="block-html"><figure class="full"> <a href="proxy.php?url=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F1868398473%2Fhello-web-app-20-build-your-first-web-app-with-dja"><img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fks.png" alt="Hello Web App 2.0 on Kickstarter"/></a> <figcaption>Hello Web App on Kickstarter — go back the campaign!</figcaption> </figure></div> <div class="block-paragraph"><p>The first book I wrote was <em>Hello Web App</em>, teaching web app development using Python and Django. It's since been read by thousands of readers around the world, and I'm super excited to announce a new edition of the book, fundraising on Kickstarter!</p> <p><a href="proxy.php?url=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F1868398473%2Fhello-web-app-20-build-your-first-web-app-with-dja">https://www.kickstarter.com/projects/1868398473/hello-web-app-20-build-your-first-web-app-with-dja</a></p> <p>Some of the big changes:</p> <ul> <li>The books are now packaged together as a unit, no longer selling them individually.</li> <li>The content has been updated to Python 3 + Django 2.0.</li> <li>The videos are getting a complete revamp.</li> <li>Various bits of pieces of the content has been updated as well.</li> <li>The Kindle edition has some snazzier graphics.</li> </ul> <p>I love Python and Django because I find them way simpler than Javascript to launch web apps — Python is easier for me to read and parse and Django includes most of the parts you need for a web app (with login, registration, etc) by default. It's been a joy working with these two technologies over the years (especially since I'm a designer with no computer science background).</p> <p>If you've been curious about working with Python or creating your own web app from scratch, I wrote this book for you. Any help or shares you can give are super appreciated!</p> <p><strong>Kickstarter campaign, products will start shipping in April: <a href="proxy.php?url=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F1868398473%2Fhello-web-app-20-build-your-first-web-app-with-dja">https://www.kickstarter.com/projects/1868398473/hello-web-app-20-build-your-first-web-app-with-dja</a></strong></p> <p>Thanks everyone, I hope you share and back!</p></div>http://hellowebbooks.com/news/hello-web-app-2-kickstarter/New Hello Web Books websitehttp://hellowebbooks.com/news/new-website/<div class="block-html"><p>After a few <strike>weeks</strike> months of work, I'm super excited to release the new Hello Web Books website design to the world!</p> <figure class="caption video" style="padding-bottom: 50%;"> <iframe width="560" height="315" src="proxy.php?url=https%3A%2F%2Fwww.youtube.com%2Fembed%2FnDSxdjNgOYE" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen="allowfullscreen"></iframe> <figcaption>Video/vlog of this post. In it, I go through a bit of why I updated everything and before/after screens.</figcaption> </figure> <p>In <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-design"><i>Hello Web Design</i></a>, one of my biggest points for a nicer looking website design is to <em>reduce clutter</em>. And then I'd come back to this website and get annoyed at past-me for creating such a clutter-y website.</p> <p>When I originally designed this website, I stepped out of my comfort zone and added a <em>lot</em> of photos, banners, fonts, and colors &#8212; I'm terrible at designing the "little details" so I relied on a lot of extra <em>things</em> to make the website feel more polished.</p> <p><strong>In this design, I stripped most of that out.</strong> No more Typekit (oh man do I love Freight Text Pro but Typekit was just a bit too slow for me), no more custom fonts (Mrs Onion was fun, but in the end, a bit hard to read) &#8212; all hail <a href="proxy.php?url=https%3A%2F%2Ffonts.google.com%2Fspecimen%2FLato">Lato</a>, the only typeface used now. It's plain, but pretty, and comes with tons of weights.</p> <p><strong>The <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2F%23packages">landing pages</a> for the books also have been improved.</strong> A lot of the imagery has been removed and a lot more text content added, like FAQs and more descriptions of the package contents.</p> <p>Last but not least, I've increased prices on all my products. This was a hard decision, but the last couple years I've had <em>really</em> low income for the amount of work I put into the videos/books. I've been severely undercharging for the amount of work I've put in. Of course, existing buyers will still get all product updates for free.</p> <p>Things aren't done though! I am <em>thisclose</em> to launching my next announcement but not quite yet, which is why <i>Hello Web App</i> isn't available to be ordered right now (it might be a big obvious what the announcement is about). Gotta get my ducks in a row before I can turn that back on. I know this website has some bugs and kinks to work out, so I'm launching it sooner rather than later.</p> <p>On the topic of bugs! <strong>If you see anything wonky, please let me know!</strong> I appreciate anyone who can help me test and debug the website.</p> <p><strong>What do you think? See anything you like or dislike?</strong> Let me know in the comments below or on <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Flimedaring">Twitter</a>!</p></div>http://hellowebbooks.com/news/new-website/Hello Web Design’s Product Hunt launch recaphttp://hellowebbooks.com/news/product-hunt-recap/<div class="block-paragraph"><p>On January 19th (after fretting for at least two weeks), I finally <a href="proxy.php?url=https%3A%2F%2Fwww.producthunt.com%2Fposts%2Fhello-web-design">launched <em>Hello Web Design</em> on Product Hunt</a> (You know, my <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-design%2F">book/video course teaching design for non-designers</a>.</p></div> <div class="block-html"><figure class="caption video" style="padding-bottom: 50%;"> <iframe width="560" height="315" src="proxy.php?url=https%3A%2F%2Fwww.youtube.com%2Fembed%2FRe_G20COq7s%3Frel%3D0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen='allowfullscreen'></iframe> <figcaption>Video/vlog version of this post! Trying to get better at speaking on camera so I'm doing a video version of all my posts.</figcaption> </figure></div> <div class="block-paragraph"><p>The post did <em>way</em> better than I hoped, becoming the #5 product of the day.</p> <p>Here’s my recap of the process and what I learned from this go-around.</p></div> <div class="block-html"><figure class="caption"> <a href="proxy.php?url=https%3A%2F%2Fwww.producthunt.com%2Fposts%2Fhello-web-design"><img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fph%2Fph.jpg" alt="Hello Web Design on Product Hunt"/></a> <figcaption><em>Hello Web Design</em> on Product Hunt</figcaption> </figure></div> <div class="block-paragraph"><h2>Pre-launch</h2> <p>It’s been quite awhile since I launched on Product Hunt and the community has evolved quite a bit.</p> <p><strong>Thankfully <a href="proxy.php?url=https%3A%2F%2Fblog.producthunt.com%2Fhow-to-launch-on-product-hunt-7c1843e06399">Product Hunt has their own guide on launching on Product Hunt</a>, which was super helpful</strong> (I recommend checking it out first) but even so, I was still confused by a couple major things.</p> <h3>On when to post</h3> <p>One of the questions I had was <strong>what time of the day (and what day) to post?</strong> Since your accumulate points throughout the day, you need to post early enough to start building momentum and traction.</p> <p>The Product Hunt guide is very clear I shouldn't worry about this, but I still did (such like me). Other guides on the internet advocated for posting at ridiculously early times like 3am ET. I knew it didn’t matter <em>too</em> much about when I posted, but I also wanted to post it as early as possible <em>just in case</em>.</p> <p><strong>In the end, I set up my listing the night before and posted right when I woke up, at 7am ET/4am PT.</strong> It was a little worrisome since there were quite a few other posts with a bunch of points by the time I woke up but in the end I still did well.</p> <h3>Setting up the post and missing fields</h3> <p>It’s been so long since I did a PH listing so I was unfamiliar with the process.</p> <p>I took a look at a few other successful Product Hunt pages (like <a href="proxy.php?url=https%3A%2F%2Fwww.producthunt.com%2Fposts%2Fmarketing-for-developers-2-0">Marketing for Developers</a>) and worked on my content in Google Docs for a few days perfecting what I wanted the sub-title, description, and introduction post to look like.</p> <p><strong>A major point of confusion was that you can’t set the description when you’re going through the four application screens to submit your product.</strong> Turns out, after the application is submitted, the description field and a bunch others pop in (like social media, which I originally put in as links in the application). Not the best UX but I figured it out in the end.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fph%2Fapp.png" alt=""/> <figcaption>The four pages to go through before submitting your product don't include a description field (seen on other listings), which confused me.</figcaption> </figure></div> <div class="block-paragraph"><p>As soon as the post was up, I sent a newsletter to my ~5,000 newsletter subscribers.</p> <p>I believe this is the reason why the post did so well — <strong>I'm lucky to have a small audience built up already over the years.</strong> In the post, I asked them to check out the listing and ask any questions they might have for me. I didn't ask for upvotes, but I'm sure anyone who knows Product Hunt read between the lines.</p> <p>I also posted to Twitter several times during the day. I'm not the biggest fan of Twitter nowadays and the tweets didn't get <em>that</em> much traction, but it's one of those things that I might as well do.</p> <p>I'm a member of a few communities for makers (like <a href="proxy.php?url=https%3A%2F%2Fmegamaker.co%2Fclub%2F">MegaMaker Club</a>) and I shared the campaign in those Slack's as well</p> <p>That was pretty much the extent of my sharing efforts — I mostly relied on my newsletter friends.</p> <h2>Post-launch</h2></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fph%2Fphboard.png" alt=""/> <figcaption>Woohoo, 5th most upvoted!</figcaption> </figure></div> <div class="block-paragraph"><p><strong>In the end, my post hit #5 for the day.</strong> I actually didn’t think it would, as in the list for the day, Hello Web Design was actually at #6 — I completely missed that one of the posts above mine was a sponsored post, and apparently ineligible for that ranking.</p> <h3>Traffic</h3></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fph%2Fganal.png" alt=""/> <figcaption>Pretty good traffic bump.</figcaption> </figure></div> <div class="block-paragraph"><p>Before I wrote this post, I was disappointed in the amount of traffic, but after looking at <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Fhow-i-launched-my-learn-to-code-book-and-made-nearly-5000-in-pre-orders%2F">my old post on launching on Product Hunt</a>, I realized it was just about normal. Phew.</p> <h3>Revenue</h3> <h4>Direct sales (using Gumroad)</h4></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fph%2Fgumroad.png" alt=""/> <figcaption>Made about $2,000 the first day, and kept up a bit of momentum afterwards.</figcaption> </figure></div> <div class="block-paragraph"><p><strong>The biggest surprise here is that I didn't sell as many video packages as I've done in the past for Product Hunt — the majority of the sales were for the paperback book.</strong> Not sure why. Maybe people have video/course fatigue? For <em>Hello Web App</em>, the majority of my sales was for the video product, and that listing didn't have photos (wasn't a feature then), whereas for the <em>Hello Web Design</em> listing, I had a ton of photos (gotta show off that gorgeous book, yo.) Who knows, but I found this interesting.</p> <h4>Indirect sales (Amazon paperbacks and Kindle sales)</h4></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fph%2Famazon.png" alt=""/> <figcaption>The back-end of Seller Central, where I sell the paperback books.</figcaption> </figure> <figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fph%2Fkdp.png" alt=""/> <figcaption>The back-end of Kindle Direct Publishing, where the Kindle sales are.</figcaption> </figure></div> <div class="block-paragraph"><p>Even though I didn't link to them directly from my Product Hunt page, <strong>my other sales channels thhrough Amazon got a small boost.</strong></p> <p>Unfortunately since then, Amazon has "temporarily removed" my paperback listing as "a customer reported details don't match the product" and that they're "investigating." Sigh. This is why I hate dealing with Amazon.</p> <h2>Conclusion and lessons learned</h2> <p>I'm glad I was able to get a little chunk of money through the PH launch because it's tax season and I'm going to owe a few thousand dollars (yeehah, #entrepreneurshiplife.) <strong>This launch was pretty crucial so I could buffer my bank account a bit and I'm glad it did as well as it did.</strong></p> <p>Some takeaways from this experience:</p> <ul> <li><strong>It's really great to have people who seem to be true fans and will support what I do without asking.</strong> I got a number of positive reviews on the post that were completely unexpected (and wonderful) and I am so grateful to have this community around me.</li> <li><strong>As usual, when these things are going on, it's impossible for me to do any other work.</strong> I refresh the page like every five minutes and can't stay concentrated on any other task.</li> <li><strong>Posting at 7am ET and on a Thursday seemed fine.</strong> I got lucky that there weren't any other huge launches that day to compete with mine.</li> <li><strong>Why did no one ask questions in the comment section?</strong> Still baffled by how quiet it was.</li> </ul> <p>And a quick run-down of my suggestions for anyone else preparing for their PH launch:</p> <ul> <li><strong>Look at other successful Product Hunt pages</strong> in your space and use them to inspire your content and how you'll set up your own listing.</li> <li><strong>Work on your content and get it perfect.</strong> Especially your sub-headline.</li> <li><strong>Make sure your icon/photos/imagery looks great.</strong></li> <li><strong>Post it as early in the day as you can</strong> but don't lose sleep over it.</li> <li><strong>Write a great introduction</strong> about yourself and your product as a comment.</li> <li><strong>Answer every comment</strong> you can to keep the comments section looking active (also, to be polite and all that).</li> <li><strong>Don't ask for upvotes</strong>, but share with your fans.</li> </ul> <p>Any other questions? Ask me anything in the comments below!</p></div>http://hellowebbooks.com/news/product-hunt-recap/Shipping and fulfillment for my self-published books (update since I’ve moved to Canada)http://hellowebbooks.com/news/fulfillment-updates/<div class="block-html"><figure class="caption video" style="padding-bottom: 50%;"> <iframe width="560" height="315" src="proxy.php?url=https%3A%2F%2Fwww.youtube.com%2Fembed%2FZ-BwLmkdAeg%3Frel%3D0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen='allowfullscreen'></iframe> <figcaption>Video/vlog version of this post. Experimenting with formats!</figcaption> </figure></div> <div class="block-paragraph"><p>Back when I was in California, I got a pretty good system down for fulfilling books (<a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Fmy-adventures-and-advice-on-fulfilling-orders-for-a-printed-self-published-book%2F">which you can see here</a>).</p> <p>Since I’ve moved to Toronto, Canada, I’ve had to set up a completely new fulfillment system, so now that blog post is completely out of date. My current solution still has some kinks but lately I’ve had a few big “ah ha” moments (and a few shipping disasters, costing me $$$) that I thought it was time to give an update.</p> <p><strong>Current system: Amazon FBA for fulfillment to the US and self-packed Canada Post for Canada/overseas.</strong> I’m in the process of sending books to Amazon.ca so I can sell there as well (and Amazon.com is already set up with Amazon FBA). Generally, the majority of my revenue comes from selling on my website (HelloWebBooks.com) using <a href="proxy.php?url=https%3A%2F%2Fgumroad.com">Gumroad</a> as the selling middleman.</p> <h2>On Amazon FBA and lessons learned</h2> <p>Moving to Canada meant I was forced to find a fulfillment center, as it wouldn’t make sense for me to pack and ship books to the US anymore (you know, since it’s international and all.)</p> <p>Finding a fulfillment center was way more annoying than I thought it would be. I first turned to <a href="proxy.php?url=http%3A%2F%2Fwww.printninja.com%2F">Print Ninja</a>’s fulfillment service, which was great — until they shut down that part of their business. Sigh.</p> <p>They had a preferred partner to transfer my fulfillment to, but this partner charged <em>extra</em> for objects shipped using USPS’s Media Mail option (a much cheaper way to ship books in the US) which annoyed me so much that I immediately took them out of my fulfillment search. I would already pay a fulfillment/handling fee per book — why charge me extra for shipping when it shouldn’t be more work on their end?</p> <p>In the end, I decided to go with a big wig fulfillment center — <a href="proxy.php?url=https%3A%2F%2Fservices.amazon.com%2Ffulfillment-by-amazon%2Fbenefits.html">Amazon FBA</a>. The downside is that I’m dealing with a <em>huge</em> corporation, so I don’t have a rep I work with directly to answer questions. And believe me, the Amazon FBA backend experience is one of the most confusing websites I’ve ever used.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Ffba.png" alt=""/> <figcaption>My Amazon Seller Central dashboard.</figcaption> </figure></div> <div class="block-paragraph"><p>(I also used to use <a href="proxy.php?url=https%3A%2F%2Fwww.amazon.com%2Fgp%2Fseller-account%2Fmm-product-page.html%3Ftopic%3D200329780">Amazon Advantage</a>, which is more like consignment and has an even more terrible back-end system, but now I’m 100% using the FBA system. The advantages/disadvantages between the two systems is still mostly a mystery to me but at least things are slightly more streamlined.)</p> <p>A month ago, I noticed that I wasn’t making any revenue on FBA. Instead of getting a check at the end of the month, I was charged $600.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Femail.png" alt=""/> <figcaption>Not what you want to see when you're trying to make money, not lose money.</figcaption> </figure></div> <div class="block-paragraph"><p>Because I don’t have a dedicated rep, I had to navigate support who kept answering questions I didn’t ask and ignoring the ones I did ask. But eventually I got a refund for my fees and the correct information entered for my account.</p> <p>To this day, I don’t know whether I put in the wrong info or they did, but at least it’s fixed now.</p> <p><strong>Lesson learned: Scrutinize the charges on your credit card and whine until errors get fixed. Amazon was certainly not going to catch this error (or care) unless I brought it up.</strong></p> <p>Overall, I’m mostly happy with fulfillment through Amazon FBA, but I’m keeping my eye out for better solutions still.</p> <h2>Lessons learned for overseas/Canadian fulfillment and shipping with Canada Post</h2> <p>My original plan was to use Amazon FBA for every shipment, Canada/overseas included. That was until I shipped some books using it, and it not only <em>took forever</em> to arrive (I could only choose ground/boat shipping), I got no tracking numbers AND it cost buckets. And at least two books got lost during this time.</p> <p>It was a happy day when I discovered that <a href="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Feasypost.com">EasyPost</a> has a Canada Post API, so I switched to fulfilling all Canada/overseas orders myself. So I keep boxes of books, pack them up, pay and print labels at home, and lug them over to the nearest Canada Post kiosk to ship.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Feasypost.png" alt=""/> <figcaption>Yay shipping APIs!</figcaption> </figure></div> <div class="block-paragraph"><p>USPS First Class International worked well for me in the US, so I chose to ship out my Kickstarter international orders through the equivalent with Canada Post — Canada Post Ground.</p> <p>Alas, I didn’t realize how horribly slow it would be! Orders shipped on 10/31/2017 are only <em>now</em> starting to arrive in Australia — three months later.</p> <p>I now ship using their slightly more expensive Air shipping, and cuts the shipping time from months to around 10 days. I only regret I didn’t know about this when I shipped out my books to my Kickstarter backers.</p> <p><strong>Lesson learned: Really, really investigate shipping speeds vs. cost. The cheapest rate might be ridiculously slow.</strong></p> <hr> <p>After 1.5 years of living in Toronto (sheesh, time flies), I’m finally getting my logistics nailed down for sending books. I keep wondering whether it would be better if I went all digital (like most courses online), since I’d save myself a lot of time and money with designing and shipping… but it truly is nice to have a real book and be able to share something physical with my readers.</p> <p>Thanks everyone! If you have any questions about writing a book, leave me a comment below.</p></div>http://hellowebbooks.com/news/fulfillment-updates/Hello Web Design is on Product Hunt todayhttp://hellowebbooks.com/news/hello-web-design-product-hunt/<div class="block-paragraph"><p><a href="proxy.php?url=http%3A%2F%2Fwww.producthunt.com%2Fposts%2Fhello-web-design">Hello Web Design is on Product Hunt today, check it out!</a></p></div> <div class="block-html"><figure class="caption"> <a href="proxy.php?url=http%3A%2F%2Fwww.producthunt.com%2Fposts%2Fhello-web-design"><img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2018%2Fproduct-hunt.jpg" alt=""/></a> <figcaption>Woohoo!</figcaption> </figure></div> <div class="block-paragraph"><p><a href="proxy.php?url=http%3A%2F%2Fproducthunt.com%2F">Product Hunt</a> is a community celebrating new products and they're incredible in sending a ton of traffic and new users. It's a great place to find awesome new things, so it's an honor to be up for voting today. <a href="proxy.php?url=http%3A%2F%2Fwww.producthunt.com%2Fposts%2Fhello-web-design">If you get a chance, please check out the discussion too!</a></p></div>http://hellowebbooks.com/news/hello-web-design-product-hunt/Design for non-designers: Part 3http://hellowebbooks.com/news/tutorial-design-for-non-designers-part-3/<div class="block-paragraph"><p><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-nondesigners%2F">Part 1</a> of this design series dealt with the visual design, and <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-non-designers-part-2%2F">Part 2</a> delved into user experience, content, and testing.</p> <p>Here, we’re going to jump into a bit about theory and reassurances that will <strong>help you become a better designer</strong>.</p> <h2>Steal like an artist.</h2> <p>Imagine June—she’s a developer who needs to build a new personal homepage to showcase her open source design work. June sits down at her desk and wipes it clear, then pulls out some paper and pens and starts sketching her ideas. :e</p> <p>Sounds great in theory, right?</p> <p>It’s far more likely that June will sit and twiddle her fingers, sketch some ideas, get frustrated, try sketching again, then ball her paper up and throw it away.</p> <p>I know this because <em>I go through this process every time myself</em> if I try to design without researching and finding inspiration first.</p> <p><strong>Simply put, sitting down to try to sketch ideas from scratch without using any sort of inspiration is a lot like trying to program without having Google or Stack Overflow at your fingertips.</strong></p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd3%2Fmeme.png" alt="Not sure if good developer or good at Googling." style="border-width: 0;"/> <figcaption>Designing without inspiration is like programming without Google or Stack Overflow. </figcaption> </figure></div> <div class="block-paragraph"><p><strong>Think of inspiration like visual debugging.</strong> Looking at great design and inspiration will help you figure out solutions to problems you may run into when creating your own designs.</p> <p>Where to find inspiration? For web design, there are tons of websites that simply collect and share good designs.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd3%2Finspiration.jpg" alt="Inspiration options" style="border-width: 0;"/> <figcaption>CSSMania, Unmatched Style, Awwwards, and Site Inspire are just a few options to find web design inspiration.</figcaption> </figure></div> <div class="block-paragraph"><p>Of course, <strong><em>do not rip off designs</em></strong>. If you find something you like, you can do something similar but ripping off something verbatim is a very big no-no.</p> <p>My Hello Web App books are inspired by the wonderful <em>A Book Apart</em> books:</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd3%2Fbooks.jpg" alt="Hello Web App vs. A Book Apart" style="border-width: 0;"/> <figcaption>The A Book Apart books have such a beautiful design, which inspired my typography and colors.</figcaption> </figure></div> <div class="block-paragraph"><p>I’m particularly proud of the design I made for <em>Hello Web App</em>, but I sincerely don’t think they would have turned out as nice as they did without being heavily inspired by <em>A Book Apart</em>. Seeing those books helped me determine what I liked in terms of size and thickness, not to mention the flat wonderful colors inspired my own graphic treatment of the <em>Hello Web App</em> cover.</p> <p>When you find something you love, something that you’d like to do yourself—whether it’s layout, colors, font choices, etc—use that as inspiration to <strong>build something similar but not exactly the same</strong>.</p> <h2>Train your design eye and intuition.</h2> <p>One of the most useful activities you can do to make yourself better at design is to <strong>look at other designs and think critically about what it’s doing well and what it’s doing poorly.</strong> Great process to practice while you’re looking for inspiration!</p> <p>The more you do this (with good designs as well as bad), the more you’ll train your “design eye” and design intuition, making it easier for you to create good designs from scratch.</p> <p>Let’s use the an old Slack homepage design as an example:</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd3%2Fslack.jpg" alt="An old Slack homepage" style="border-width: 0;"/> <figcaption>Slack consistently has great looking homepage designs, great for practicing picking out good design decisions.</figcaption> </figure></div> <div class="block-paragraph"><p>Using the principles we went over above, what would you say they’re doing well? Some of the details I’ve picked out:</p> <ul> <li><strong>Lots of whitespace.</strong> It doesn’t feel like a lot since the background “fills in” the space, but check out the space between the headline and the top of the page — it’s actually quite an airy design.</li> <li><strong>Unique headline effect.</strong> In the live version of the site, the headline actually animates in. Even in the static version above, the“hand-drawn” underline effect is an unusual element which draws the eye.</li> <li><strong>Important words are bolded in the content.</strong> Both “NASA’s Jet Propulsion Laboratory” and “Slack” are bold, so you see them first which associates Slack with the prestigious organization.</li> <li><strong>Main button is a bright, stand-out color.</strong> The background is brown and the “Create a new team” button is a lovely contrasting light green. It’s complementary and yet eye-catching.</li> <li><strong>Main form has a dark background.</strong> This ensures the text on top is easy to read (since it’s smaller) as well as making the form more eye-catching.</li> </ul> <p>What else can you see that are good design decisions?</p> <p><strong>Start browsing the web a bit more mindfully and think critically about what designs are doing and your design intuition will improve.</strong> Making this a practice will make it easier for you to make better designs naturally.</p> <p>This is especially important when you’re actively working on a new design. Start out by looking for inspiration in examples of good design in your field as well as looking at your competitors. Pick out what they’re doing well and implement those ideas in your own design. Pick out what you think isn’t working well (especially in your competitor’s designs) and make sure you avoid those things in your own design.</p> <h2>Remember: Design will never feel easy.</h2> <p>I’ve been building websites since I was twelve (20 years of website development!) and I hold an Art &amp; Design degree… and without fail, this is the thought process I have every time I start to work on a new design:</p> <blockquote> <p>“crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap crap … yes!”</p> </blockquote> <p><strong>The first sketches, the first iterations of a design always feel terrible.</strong> I stress and worry about how bad my designs feel when I start, until the magical moment when something works and the design starts to come together. Sometimes it isn’t “yes!”, sometimes it can be “maybe?” But it’s never “yes!” right from the start.</p> <p>If you’re new to design and you feel like your initial iterations are awful — it doesn’t mean you’re a bad designer. <strong>It means you’re a designer.</strong></p> <hr> <p>This is a three part series on design for non-designers. <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-nondesigners%2F">See Part 1 about design and clutter here</a> and <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-non-designers-part-2%2F">See Part 2 about user experience here</a>.</p></div> <div class="block-html"><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-design"><img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2FIMG_6545-xsmall.jpg" alt="Hello Web Design" style="max-width: 300px; float:left; margin-right: 40px;"/></a> <p><strong>You can get even more info and tips in my book!</strong> <i>Hello Web Design</i> will contain not only the above information but also theory and best-practices in down-to-earth and easy-to-understand terms aimed at programmers and non-designers.</p> <div style="margin: 1em 0"> <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-design" class="btn btn-primary">Buy Hello Web Design</a> <br/><small><em>Prices start at $14.95 for the eBook.</em></small> </div></div> <div class="block-paragraph"><p>Thanks everyone! For any questions, <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Flimedaring">follow and message me on Twitter</a>.</p> <p>Thoughts? Questions? Let me know in the comments below!</p></div>http://hellowebbooks.com/news/tutorial-design-for-non-designers-part-3/Design for non-designers: Part 2http://hellowebbooks.com/news/tutorial-design-for-non-designers-part-2/<div class="block-paragraph"><p><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-nondesigners%2F">Part 1</a> of this article series focused on the visual (since that’s usually what folks are looking for help with when it comes to design), <strong>but it’s important to remember that usability trumps beauty</strong>.</p> <p>The most gorgeous website in the world is useless if folks using that website can’t achieve what they want to do.</p> <h2>Don’t forget the user experience.</h2> <p>It’s more important that your design <em>works well</em> than how it looks. How to tell whether your design is working well?</p> <p>To illustrate this, think of a form.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd2%2Fform.png" alt="Basic form" style="border-width: 0;"/> </figure></div> <div class="block-paragraph"><p>We can use design tricks like reducing clutter and better typefaces to make the form <em>look</em> nicer, but we also need to make sure it’s easy to read and fill out.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd2%2Fform2.png" alt="Usability nightmare" style="border-width: 0;"/> <figcaption>Technically the form on the left uses all the tactics we discussed in Part 1, but it’s a nightmare for usability. The one on the right is more usable, meaning our conversion rate should go up, which is more important than just design.</figcaption> </figure></div> <div class="block-paragraph"><p>Of course, this tip really depends on what you’re designing, so here are some general thoughts to help you keep thinking about user experience.</p> <h3>Determine the purpose of your site.</h3> <p>For a personal website, perhaps you want folks to visit as many pages as possible. For a form, the number of submissions is probably the most important metric.</p> <h3>Make sure you’re thinking about that purpose when making your design.</h3> <p>Make decision decisions that make it easier for folks to fulfill that purpose you determined for what you’re designing. That’s why the most important buttons (the ones we want folks to see and click on) are bright, clickable colors.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd2%2Fcolorpop.png" alt="Images with pops of color." style="border-width: 0;"/> <figcaption>Bright buttons or bright widgets catch the eye and tell the user “this is the thing I want you to see and use.” </figcaption> </figure></div> <div class="block-paragraph"><p>Think about what you want people to do, and focus on building a design that helps, not hinders, folks from completing that purpose.</p> <p>A lot has been written about improving usability and the number of visitors who achieve a goal (otherwise known as “conversion rate”). Here are some great articles:</p> <ul> <li><a href="proxy.php?url=https%3A%2F%2Fwww.quicksprout.com%2F2014%2F08%2F08%2F8-ways-to-improve-the-usability-of-your-website%2F">8 Ways to Improve the Usability of Your Website</a> on Quicksprout</li> <li><a href="proxy.php?url=https%3A%2F%2Fvwo.com%2Fblog%2Fdesign-principles-increase-conversions%2F">5 Design Principles To Instantly Boost The Conversion Rate Of Your Website</a> on VWO</li> <li><a href="proxy.php?url=https%3A%2F%2Fblog.kissmetrics.com%2Fpsychological-principles-converting-website%2F">5 Psychological Principles of High Converting Websites (+ 20 Case Studies)</a> on Kissmetrics.</li> </ul> <h2>Content matters.</h2> <p>Your headlines, paragraphs, form labels, button text—your content matters just as much as your visual design. What you write can drastically affect whether your visitors understand what you’ve designed and whether they complete the purpose of your design.</p> <p>Some basic rules of thumb:</p> <h3>Less is more. Cut down on text clutter.</h3> <p>In <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-nondesigners%2F">Part 1</a> of this series, we talked about design decisions we can make to reduce clutter. Guess what — clutter matters when it comes to content as well!</p> <p><strong>Big paragraphs of text are intimidating.</strong> Folks on the web primarily skim websites, so giant paragraphs of text are more likely to be completely skipped than read thoroughly.</p> <p>This sentence is long and wordy:</p> <blockquote> <p>Please note that although Chrome is supported for both Mac and Windows operating systems, it is recommended that all users of this site switch to the most up-to-date version of the Firefox web browser for the best possible results.</p> </blockquote> <p>Same sentence, rewritten for simplicity:</p> <blockquote> <p>For best results, use the latest version of Firefox. Chrome for Mac and Windows is also supported.</p> </blockquote> <p>(Thanks to <a href="proxy.php?url=http%3A%2F%2Fwww.peachpit.com%2Farticles%2Farticle.aspx%3Fp%3D1636692%26amp%3Bamp%3BseqNum%3D20">Peachpit</a> for the example.)</p> <p>In a nutshell, <strong>shorten and simplify your writing.</strong> Avoid the temptation to use large words or wordy sentences to cover all the bases — the shorter and simpler your sentences, the more likely they’ll be read, understood, and even translated into different languages.</p> <h3>Rewrite your headlines to talk benefits, not details.</h3> <p>Improve the excitement and interest in what you’re “selling” by writing headlines that tell users why they should be excited. When you’re writing a headline, the first thing to pop in your head might be to explain what the product does. <em>“So-and-so is a designer.” “This thing is a widget.”</em></p> <p><strong>Revamp that headline into talking benefits for the person reading it.</strong> <em>“So-and-so designs usable and beautiful websites.” “This thing improves website conversions by 30%.”</em></p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd2%2Fheadline.jpeg" alt="Before and after headline change."/> <figcaption>Left, what the book is about. Right, what the book does for the reader. Benefits are more compelling than details! </figcaption> </figure></div> <div class="block-paragraph"><p>Content changes like this can drastically improve conversions (the amount of people who hit your website that does what you want them to do), making what you design <em>more effective.</em></p> <p>For more reading about content, check out these resources:</p> <ul> <li><a href="proxy.php?url=https%3A%2F%2Fmedium.com%2F%40limedaring%2Ffive-tips-for-improving-your-technical-writing-and-documentation-47353723c8a7%23.2dlbspbta">Five tips for improving your technical writing and documentation</a></li> <li><a href="proxy.php?url=https%3A%2F%2Fwww.webprofits.com.au%2Fblog%2Fcase-study-headline%2F">Case study: How a simple headline change improved conversions by 52.8%</a></li> <li><a href="proxy.php?url=http%3A%2F%2Fwww.copyengineer.com%2Fpost_benefit_headlines%2F">Always Use a Benefit Headline</a></li> </ul> <h2>How to check your design for usability problems.</h2> <p>The best way to find problems with the user experience and usability of your design is to run quick usability tests. This can be tough psychologically, because you’ll need to show what you’ve designed to others and get feedback, and sometimes that feedback might hurt.</p> <p><strong>Divorce your feelings from your design.</strong> It might be hard not to take negative feedback personally, but fixing the issues you might find with the usability of your site is more important. The more you reach out to others for feedback, the easier it’ll be.</p> <p>My step-by-step process for finding usability errors in my designs:</p> <h3>1. Take a break and look at the design with fresh eyes.</h3> <p>Since you made your design, it’s going to be hard to see any usability issues — after all, you know where everything is and how to use everything because you’re the one who built it.</p> <p>Taking a break from the design, a couple hours or, even better, overnight, means you can look at the design with fresh eyes and catch some problems you might have missed earlier.</p> <h3>2. Run your design by friends and family.</h3> <p>The least intimidating folks to ask for help will be your friends and family, but keep in mind they’ll also be resistant to giving you any sort of negative feedback. Make sure to remind them that you want more feedback than just, “Looks awesome, good job!”</p> <h3>3. Run your design by strangers and watch them use your site.</h3> <p>The most honest feedback will come from folks you don’t know, but this is also the hardest feedback to get. For small stuff like your personal website, you can probably skip this step, but if you’re working on a website for a project you want customers to use, this step can find crucial issues.</p> <p>Here’s a great article on <a href="proxy.php?url=http%3A%2F%2Fwww.creativebloq.com%2Fquick-and-dirty-usability-testing-9134469">running quick and dirty usability tests</a>.</p> <h2>In conclusion, make sure your design works as well as it looks.</h2> <p>The best looking design means nothing if your users can’t achieve what they or you want them to do.</p> <ul> <li><strong>Think about the purpose of your design</strong>, whether it’s getting someone to fill out a form, to find information, or something use.</li> <li><strong>Make sure your designs support that purpose</strong> and improve the user experience with that in mind.</li> <li><strong>Don’t forget about your content</strong> — simplify your words and write content and headlines that talk benefits, not details.</li> <li><strong>Show your designs to others</strong> and get feedback to find where user experience issues might be hiding.</li> </ul> <hr> <p>This is a three part series on design for non-designers. <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-nondesigners%2F">See Part 1 about design and clutter here</a> and <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-non-designers-part-3%2F">Part 3 about training your design intuition here</a>.</p></div> <div class="block-html"><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-design"><img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2FIMG_6545-xsmall.jpg" alt="Hello Web Design" style="max-width: 300px; float:left; margin-right: 40px;"/></a> <p><strong>You can get even more info and tips in my book!</strong> <i>Hello Web Design</i> will contain not only the above information but also theory and best-practices in down-to-earth and easy-to-understand terms aimed at programmers and non-designers.</p> <div style="margin: 1em 0"> <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-design" class="btn btn-primary">Buy Hello Web Design</a> <br/><small><em>Prices start at $14.95 for the eBook.</em></small> </div></div> <div class="block-paragraph"><p>Thanks everyone! For any questions, <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Flimedaring">follow and message me on Twitter</a>.</p> <p>Thoughts? Questions? Let me know in the comments below!</p></div>http://hellowebbooks.com/news/tutorial-design-for-non-designers-part-2/Black Friday weekend Hello Web Books dealshttp://hellowebbooks.com/news/black-friday-2017/<div class="block-paragraph"><p>Black Friday (and Cyber Monday, and Small Business Saturday, and all those other things) is almost here!</p> <p>From Friday starting 12:01am until Monday 11:59pm, I'll be selling all three of my video courses for 25% off <strong>(only $59 for each package)</strong>.</p> <ul> <li><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.withcoach.com%2Fhello-web-app-video-course">Hello Web App</a>, my videos + eBook teaching beginner web app development with Django.</li> <li><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.withcoach.com%2Fhello-web-app-intermediate-concepts-video-course">Hello Web App: Intermediate Concepts</a>, which teaches intermediate Django concepts.</li> <li><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.withcoach.com%2Fhello-web-design-video-course">Hello Web Design</a>, my <strong>brand new</strong> video + eBook series teaching design for non-designers.</li> </ul> <p>I'll share the coupon code here as soon as it's time!</p> <p><strong>Also</strong> I'll be sharing an <em>even better</em> coupon code to anyone who is on the Hello Web Books newsletter list. If you're not on the list yet, you can join at the bottom of the page.</p> <p>Happy Thanksgiving to all my fellow Americans!</p></div>http://hellowebbooks.com/news/black-friday-2017/Design for non-designers: Part 1http://hellowebbooks.com/news/tutorial-design-for-nondesigners/<div class="block-paragraph"><p>Even if you’re not a designer, I’d bet that at some point in your career you’ll need to do something visual, whether it’s making a landing page for your project, designing a form, creating your personal website, or making slides.</p> <p>So, part one — <strong>what’s the one main thing to remember when designing?</strong></p> <h3>Reduce clutter.</h3> <p>That’s it. Focus on just this one thing. If you want your design to feel more beautiful, <em>reduce visual clutter.</em></p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2F2.0----2_0_image_0.png" style="max-width:400px; border-width: 0;" alt="Ugly widget"/> <figcaption>Our ugly widget that we’re going to apply design concepts to.</figcaption> </figure></div> <div class="block-paragraph"><p>I made these little widget to help illustrate these clutter-busting tips. As we go through the concepts below, we’ll apply them to the widget and see how it starts to look more cohesive and visually appealing.</p> <p>Let’s get started!</p> <h2>Reduce clutter by adding a grid to line things up.</h2></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Ffoundation.png" alt="Foundation front-end framework"/> <figcaption>Image via the Foundation front-end framework.</figcaption> </figure></div> <div class="block-paragraph"><p>There’s an anecdote often told about the strife between designers and front-end developers: A designer gives a mockup to a developer, who implements the design in code. The designer then complains that so-and-so element is two pixels off, causing the developer to roll their eyes — two pixels? That’s so small it shouldn’t matter! Silly designers and their nitpicking!</p> <p>However, <strong>small misalignments might be hard to see, but contribute to a feel of “clutter” within a design</strong>. Elements can feel randomly placed and not harmonious when they’re not aligned with each other.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Fforward.png" alt="Before/after lining things up"/> <figcaption>Which looks more cohesive?</figcaption> </figure></div> <div class="block-paragraph"><p>It’s easy to add accidental misalignments by accidentally adding extra padding and margins to headlines and content. In the example above, the screenshot on the right has even margins and padding, and all the elements are aligned to the same left grid, leading to a more cohesive and professional-looking design.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Fwidget.png" alt="Lining up stuff in our widget" style="border-width: 0;"/> <figcaption>Lining up the left and right edges of everything makes the widget look a bit more cohesive.</figcaption> </figure></div> <div class="block-paragraph"><p>In our example widget, the left and right margins were all over the place. Aligning those margins instantly makes the widget feel less chaotic.</p> <p><strong>In short, reduce the clutter-y feeling by lining things up.</strong></p> <p>For web work, use shortcuts by using front-end web frameworks that include a grid, such as <a href="proxy.php?url=http%3A%2F%2Ffoundation.zurb.com%2F">Foundation</a>, <a href="proxy.php?url=http%3A%2F%2Fgetbootstrap.com%2Fcss%2F">Bootstrap</a>, <a href="proxy.php?url=http%3A%2F%2Fgetskeleton.com%2F">Skeleton</a>, and <a href="proxy.php?url=http%3A%2F%2Fpurecss.io%2F">PureCSS</a>, which’ll make it near-impossible to use random placement of HTML elements.</p> <p>For non-web-design work and mockups, you can also use grids and guides within design programs like <a href="proxy.php?url=https%3A%2F%2Fwww.sketchapp.com%2Flearn%2Fdocumentation%2Fcanvas%2Frulers-guides-grids%2F">Sketch</a>, <a href="proxy.php?url=https%3A%2F%2F1200px.com%2F">Photoshop</a>, and <a href="proxy.php?url=https%3A%2F%2Fdocs.gimp.org%2Fen%2Fgimp-view-show-grid.html">Gimp</a>.</p> <h2>Reduce clutter by limiting the colors in your design.</h2> <p>It can be super tough to choose colors, one of the reasons why color theory is often a semester-long class at design schools.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Fgodaddy.jpeg" alt="GoDaddy before and after"/> <figcaption>Old GoDaddy site versus current.</figcaption> </figure></div> <div class="block-paragraph"><p>One thing we can see in the old GoDaddy site above is the sheer numbers of colors used throughout the design. Red, green, orange, dark grey, light grey, yellow, and blue all are featured — and this rainbow display of colors contributes (along with other factors) to a severe feeling of clutter.</p> <p>The current GoDaddy website is much cleaner, using the same shades of black, green, and orange throughout the design. The photo is also mostly gray, allowing it to fade to the background and let the green button on the form stand out.</p> <p>There is a lot of theory and best practices behind choosing colors that would overwhelm this article, which is why here especially I advocate for using shortcuts.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Fadobecolorcc.png" alt=""/> <figcaption>The Adobe Color CC website has a great point-and-click interface to build complementary color palettes.</figcaption> </figure></div> <div class="block-paragraph"><p><strong>Choosing a color palette from scratch is a tricky business, which is why I like to rely on websites that showcase pre-built color palettes or help you build palettes from a base color,</strong> such as <a href="proxy.php?url=http%3A%2F%2Fcolormind.io">Colormind</a>, <a href="proxy.php?url=https%3A%2F%2Fcolor.adobe.com%2F">Adobe Color CC</a>, and <a href="proxy.php?url=http%3A%2F%2Fcolorblendy.com%2F">Colorblendy</a>. These sites will help you build a palette that contains a small number of colors that work well together.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Fcolor.png" alt="Applying a color palette to our widget" style="border-width: 0;"/> <figcaption>Applying a color palette.</figcaption> </figure></div> <div class="block-paragraph"><p>For our widget, we grabbed a palette and applied it to the widget. Note that not all colors have to be used, and the neither does the exact colors specified in the palette. The new “Download” button is not quite the same dark peach as in the palette, but the palette gave us a great starting point.</p> <p>If you’d like to learn more about the process of building colors, I’d recommend this excellent article on Smashing Magazine: <a href="proxy.php?url=https%3A%2F%2Fwww.smashingmagazine.com%2F2016%2F04%2Fweb-developer-guide-color%2F">A Simple Web Developer’s Guide To Color</a>.</p> <h2>Reduce clutter by reducing the number of fonts you use.</h2> <p>Thank goodness we have more fonts available to us now! Gone are the days of only having a few fonts to choose from.</p> <p>Typography is another big subject that can be overwhelming. Serif, sans-serif, monospace, display, web-safe, and slab are all terms used to describe and categorize fonts and typefaces (terms which are generally used interchangeably for non-typographers).</p> <p>There are a lot of guidelines when it comes to choosing a font but I like to recommend just two to start: <strong>Use only two fonts per design and avoid fancy/display fonts.</strong></p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Ftype.png" alt="Updating the typefaces on our widget." style="border-width: 0;"/> <figcaption>Using only two typefaces makes the widget look and feel cleaner.</figcaption> </figure></div> <div class="block-paragraph"><p>Our original widget on the left uses four different fonts, and our refreshed widget on the right uses just two. The new widget uses styles like italics and all-caps which still lends a feeling of difference between different elements but overall feels more cohesive.</p> <p>But choosing two fonts with all the options we have available can still be overwhelming. Sites like <a href="proxy.php?url=https%3A%2F%2Ftypekit.com%2F">Typekit</a> (free to $99/year) and <a href="proxy.php?url=http%3A%2F%2Ffonts.google.com%2F">Google Fonts</a> (free) are great resources for professional, beautiful fonts, but contain hundreds of options to choose between them.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Ffontservices.png" alt=""/> <figcaption>Use sites that curate free fonts like <a href="proxy.php?url=https%3A%2F%2Fwww.typewolf.com%2Fgoogle-fonts">Typewolf</a>, <a href="proxy.php?url=http%3A%2F%2Fchad.is%2Fbeautiful-web-type%2F">Beautiful Web Type</a>, <a href="proxy.php?url=http%3A%2F%2Ffontpair.co%2F">Font Pair</a>, and <a href="proxy.php?url=https%3A%2F%2Ftyp.io%2Flibraries%2Fgoogle">Typ.io</a>.</figcaption> </figure></div> <div class="block-paragraph"><p>Reduce choice by using a font-curation site to see a more limited number of fonts and see them in action. A number of websites list the best Google Fonts available, including <a href="proxy.php?url=https%3A%2F%2Fwww.typewolf.com%2Fgoogle-fonts">Typewolf</a>, <a href="proxy.php?url=http%3A%2F%2Fchad.is%2Fbeautiful-web-type%2F">Beautiful Web Type</a>, <a href="proxy.php?url=http%3A%2F%2Ffontpair.co%2F">Font Pair</a>, and <a href="proxy.php?url=https%3A%2F%2Ftyp.io%2Flibraries%2Fgoogle">Typ.io</a>. <strong>No longer will you need to scroll through hundreds of fonts—simply browse these sites until a combination feels right for you and your situation.</strong></p> <p>For more about choosing typefaces, check out this excellent Smashing Magazine article: <a href="proxy.php?url=https%3A%2F%2Fwww.smashingmagazine.com%2F2011%2F03%2Fhow-to-choose-a-typeface%2F">How To Choose A Typeface — A Step-By-Step Guide</a>.</p> <p>A Book Apart also has an excellent book that goes into web typography in detail: <a href="proxy.php?url=https%3A%2F%2Fabookapart.com%2Fproducts%2Fon-web-typography">On Web Typography</a></p> <h2>Reduce the feeling of clutter by adding whitespace.</h2> <p><strong>Whitespace is the ultimate clutter reducer.</strong></p> <p>We have a tendency as beginning designers to push too much information close together. Large, empty gaps feel uncomfortable and unnatural and beginners often have the urge to fill empty space (otherwise known as whitespace or negative space) with information and elements.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Fpersonalsite.jpeg" alt="Before and after adding whitespace to my personal website."/> <figcaption>Before and after adding white-space to my personal website.</figcaption> </figure></div> <div class="block-paragraph"><p>However, whitespace in design (the margins and padding around our elements as well as space between our text and letters) makes our words more readable, our interfaces less chaotic, and our designs feel more professional.</p></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Fwhitespace.png" alt="Before and after of adding whitespace to the widget." style="border-width: 0;"/> <figcaption>Adding whitespace (and normalizing the space between elements) makes the widget feel more professional.</figcaption> </figure></div> <div class="block-paragraph"><p><strong>By adding whitespace in a number of places in our widget</strong> — between the content and the edges of the green background, between the headline and the paragraph, between the individual lines of text, and within our form — <strong>our widget feels more professional and is easier to read.</strong></p> <p>There isn’t a good shortcut to use here, just a reminder: <strong>Use more whitespace than you think you need.</strong> Make sure your elements in whatever you’re designing has plenty of margins and space between them, that your text has plenty of space/line-height between the individual lines, and that your design has plenty of space between the content and the edges of the space.</p> <p>For more, check out these excellent articles:</p> <ul> <li><a href="proxy.php?url=http%3A%2F%2Fblog.teamtreehouse.com%2Fwhite-space-in-web-design-what-it-is-and-why-you-should-use-it">Whitespace in Web Design: What It Is and Why You Should Use It</a></li> <li><a href="proxy.php?url=https%3A%2F%2Fwebdesign.tutsplus.com%2Farticles%2Fusing-white-space-or-negative-space-in-your-designs--webdesign-3401">Using White Space (or Negative Space) in Your Designs</a></li> </ul> <h2>In conclusion, remember to reduce clutter for a better looking and feeling design.</h2></div> <div class="block-html"><figure class="caption"> <img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2Fbeforeafter.png" alt="The progress on our widget." style="border-width: 0;"/> <figcaption>Each of the clutter-reducing principles applied to this widget has vastly improved its looks.</figcaption> </figure></div> <div class="block-paragraph"><ul> <li>Line things up and use a grid.</li> <li>Limit the number of colors in your design and use a complementary color palette.</li> <li>Reduce the number of fonts used.</li> <li>Add whitespace.</li> </ul> <p>In short, aim for a “clean” and orderly design.</p> <p><strong>Of course, design isn’t just how it looks — more importantly, it’s how it works.</strong> Stay tuned for part two and part three of this article series, going into user experience as well as looking into the design process and tactics on how you can train your design eye.</p> <hr> <p>This is a three part series on design for non-designers. <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-non-designers-part-2%2F">See Part 2 about user experience here</a> and <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Fnews%2Ftutorial-design-for-non-designers-part-3%2F">Part 3 about training your design intuition here</a>.</p></div> <div class="block-html"><a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-design"><img src="proxy.php?url=https%3A%2F%2Fhellowebapp.com%2Fstatic%2Fimages%2Fblog%2F2017%2F11%2Fdfnd1%2FIMG_6545-xsmall.jpg" alt="Hello Web Design" style="max-width: 300px; float:left; margin-right: 40px;"/></a> <p><strong>You can get even more info and tips in my book!</strong> <i>Hello Web Design</i> will contain not only the above information but also theory and best-practices in down-to-earth and easy-to-understand terms aimed at programmers and non-designers.</p> <div style="margin: 1em 0"> <a href="proxy.php?url=https%3A%2F%2Fhellowebbooks.com%2Flearn-design" class="btn btn-primary">Buy Hello Web Design</a> <br/><small><em>Prices start at $14.95 for the eBook.</em></small> </div></div> <div class="block-paragraph"><p>Thanks everyone! For any questions, <a href="proxy.php?url=https%3A%2F%2Ftwitter.com%2Flimedaring">follow and message me on Twitter</a>.</p> <p>What do you think? Anything I missed? Let me know in the comments below!</p></div>http://hellowebbooks.com/news/tutorial-design-for-nondesigners/