Your website’s bounce rate, or the rate at which people leave shortly after arriving, is used by search engines as a measure of the fit of the site with the user’s query. If people leave the site quickly, search engines use that as a vote of no confidence in the content and downrank your site. Conversely, “sticky” sites that keep visitors longer are given higher rankings – and they’re more likely to convert visitors to customers. Here are 9 easy ways to keep your website visitors for longer.
Don’t Drive Them Away by Design
If your website takes too long to load, people will bounce away from it. And the patience of the average viewer is falling. You used to lose 10% of your potential visitors every second. You’ll now lose a fair percentage if the page isn’t starting to show results in three seconds.
One way you drive away visitors as soon as they arrive is with pop-ups and interstitials. Think about landing on a webpage, and instead of the content you expect, there’s a pop-up ad. That drives visitors away. Another mistake is putting an interstitial or partial block on the page, whether asking them to sign up for your newsletter or promoting your newest product. Remove all obstacles between your visitors and your content and you’ll retain more of them.
Don’t Accidentally Tease Them
If your website is still using Adobe Flash, your site could play a few seconds of rich multimedia before erroring out. You’ve just guaranteed they’ll leave your site and never return. Don’t show up in search results for informational queries and then take them to a spammy landing page with too many ads. They’ll abandon the site again and avoid it forever.
Be an Open Book
Ensure that your text is readable on every screen size without visitors having to resize the text. Don’t forget to check the readability and usability of buttons and menus. And don’t use weird fonts that visitors have to download.
Adjust Your Search Engine Optimization
One common cause of bounces is the fact that your content isn’t a fit for the search. The solution here is to study the customer segment arriving on the site versus the focus of the content. One solution is to leave your page’s SEO as it is but tailor the content to better answer the question visitors are asking. Another is to alter the key terms on the page so that it ranks higher in the searches that your content answers.
Improve Your Answer
One reason people bounce away from websites is that the page isn’t answering the question. This is where a long introduction before answering the user’s question causes them to quit the page. The solution is to answer at least a partial answer like a yes or no before going into detail further down on the page. This at least keeps the reader on the page and reading a while longer.
Use Smart Formatting
Smart formatting makes it easy to read your content. This takes the form of bulleted lists, FAQ formats, suitable images, short paragraphs and frequent subheadings. The benefit of smart formatting is that it makes it easy for someone to skim the content to find what they want.
Lead Them On to Other Content
Another way to keep visitors on your pages is to embed links to related content on your website. For example, you’re showing the pros and cons of the Model A product. Provide a link on the same page to take them to the specifications for Model A or a comparison of Model A to its main rival. If people follow internal links to other content, search engines see this as an endorsement for your content. If someone is seeking advice on how to fix a problem with your product, give them your link to the repair kit you recommend instead of letting them look for it elsewhere.
Use Intuitive Navigation
Intuitive navigation is a navigation structure that users understand immediately. If you have an ecommerce page, design the product structure so that someone looking at a blue short sleeved sweater by brand B can tell how to see other sweaters by brand B or your other short sleeved sweaters. This keeps them on the site as they browse instead of abandoning your site for someone else’s. A web design company can help you implement this if it isn’t already set up on your website.
Be Mindful of Their Needs
One variation of this is creating targeted pages that are optimized to answer questions the users are asking, so they don’t have to hunt for answers. Another variation is using a few, high quality images that are directly relevant to the query but minimizing bandwidth demands, whether you use content delivery networks or have a lazy load of third party content.
Conclusion
Keeping your visitors on page is all about understanding their needs and improving their user experience. You also have to design your site for maximum readability and make the navigation as seamless as possible.
In an increasingly international business climate, it is becoming more important to make your website accessible to all of your customers, regardless of the language they speak. Here are 7 essential SEO elements to keep in mind for multi-lingual web design. We’ll give specific tips instead of platitudes while making the advice as generally applicable as possible.
Have an International Web Marketing Strategy
It is amazing how many people look at the international market and assume that having a website with content in that language is enough. They ignore the fact that Google isn’t the dominant search engine in every other part of the world. For example, Baidu dominates Asia while Yandex is strong in Russia. So, work with the search engines and social media sites that your international customers will be using in order to reach them.
Create Well Crafted Content for Each Audience
One solution is having separate web domains for each of your customers’ languages. This adds to the number of sites you have to maintain and do SEO for, and dilutes your company’s homepage in search engine results, but it gives each linguistic group a website designed for their language and culture. You can thus have buttons, content and support information in their native tongue instead of hoping they can run it through a translation website. If you’re creating separate company websites to target each country’s customers, use the country code in the top level domain to garner trust and rank higher in searches in those countries.
Another option is having content in several languages on each website. Create a separate page for each language, for example yourwebsite.com/ru and submit each of these pages in Google webmaster tools just like you submit every other site you might have. Tip: Use hreflang code which specifies the language for each of your pages. This will help search engines better understand your website and get better rankings in specific countries. Call to action buttons help with conversion. It is recommended that the CTA buttons are also translated in the specific languages you are targeting.
In any of these cases, it is wise to hire an SEO agency that understands truly universal web design and can create quality content in every language you want your customers to read.
Design with the International Customer in Mind
Ecommerce sites found that shopping cart abandonment rates are lower if the prices are presented in someone’s own currency instead of an intermediate currency. You should design your website to show someone the currency based on where they are connecting to the site. Make your international shipping policies clear with information on delivery time and product tracking if you’re not shipping products from a hub within their country.
Use the Key Search Terms They Are Using
It is amazing how many businesses build key search terms into their content and on-page SEO in English even when translating the content to Spanish, French or Arabic. Integrate the key search terms searchers in those languages are using into each page, whether building them into the title, tags or content.
Consider Customer Support in Their Language
One issue that trips up many international businesses is the lack of support for customers in their own language. Perhaps they find they are unable to order the product; you’ll lose their business forever if they cannot reach someone to help them complete the order that can actually answer their questions. Make sure the Q and As are in their language so they rank properly. Contact an SEO agency to not only create this content but apply the right SEO in the customer’s language so that your Spanish language tech support page comes up for Spanish speaking searchers, for instance.
Select Hosting Strategies that Suit Your Users
You should not assume that your customers are best served by a server in their own country, though there are times this is the best option. Consider whether or not you want mirrored servers in their country or you want to rely on local content delivery networks instead.
Generalize All of the Design as Much as Possible
Your website design should be based on logos and branded colour schemes that don’t rely on language to communicate whose site it is. Where possible, use universally accepted images of your product in use. Ikea, for example, created assembly instructions with gender neutral figures assembling its furniture so that no one was offended by an uncovered woman assembling furniture. Many websites focus on someone’s hands holding or assembling the product instead of images of the whole person; this may have the side benefit of reducing the size of the image and its load time, as well.
Conclusion
Multi Lingual can seem intimidating at first, but it doesn’t have to be. You need to have an international marketing strategy if you’re going to reach your ideal foreign customers. And, make sure that you design your website to provide answers and content geared towards an international audience.
As 2017 comes to a close, as we do each year, let’s take a numbers-based glance back at CSS-Tricks. And more importantly, tip our collective hat to all y’all that come here and read the site.
We really do think of the site as somewhere you come and read. While a lot of people’s experience with CSS-Tricks is a place that shows up in search results to find the answer to some web design/dev question (and that’s awesome), another way to experience the site is to read it like a magazine. We publish an article (or a couple) nearly every day, from a variety of authors, with the hope that it’s interesting and exposes us all to new ideas.
According to Google Analytics, which we’ve had installed and reported from anonymously since day 1 around here, we had 75 million pageviews this year. Very little of CSS-Tricks makes use of any kind of „single page app” type tech, so that’s pretty accurate to people visiting and clicking around. It’s down from 77 million last year. I’d like to think that’s because of ad blockers, which often block Google Analytics, are up in usage for the visitors of CSS-Tricks, but it’s just as likely we’re just down a smidge this year. Sessions are also down a smidge at 54 million but Users steady at 21 million.
We were on a publishing role though! We published 595 posts, blowing away last year with only 442, the previous record. We also published 50 pages (i.e. snippets/videos/almanac entries) beating 43 last year. Certainly, we’re in favor of quality over quantity, but I think this is a healthy publishing pace when our goal is to be read, in a sense, like a magazine. That has been more clear to me this year. We produce content with complementary goals and one of those goals is that of a magazine. We hope the site is worth reading day after day and week after week. The other is that the content lasts and is referenceable for many years to come. Hopefully thinking of things that way can be a guiding light, balancing news and reference content, while avoiding stuff that is neither.
I always wished there was an easy way to figure out what the most popular articles published that year were, but I still don’t have a great way to do that. The top 10 is dominated by our big guides, things like our Guides to Grid, Flexbox, SVG, and centering.
Those top 10 make up about 15% of total traffic, which is a massive slice, but that leaves 85% of traffic as part of the „long tail”. That’s a satisfying thought when you’re in it for the long haul as we are. Not every article is a huge top 10 smash hit, but does contribute to the long tail which is a much bigger slice collectively anyway.
For the last bunch of months, we’ve been using Algolia for search. My plan only has 7 days of analytics retention, which isn’t enough data to expose major trends. In looking at a week of data though, you can see some surprising top terms like React, SVG, grid, flexbox, font, border… Another thing that’s clear is that on-site search is quite important. Algolia reports ~15,000 queries a day. I don’t think that represents „user typed in a thing and submitted it” because the search happens in real-time, so each character typed can result in a query. Still, likely hundreds or low-thousands of searches a day.
I’m going to convert us back to using Google search. I think Algolia is a fantastic product, I just don’t have the developer time right now to give it the work it needs.
The location of y’all seems to be spreading out internationally little by little. The United States is down to 22% of traffic from 23% and India back to down to 11% from 12% (meaning more traffic came from elsewhere). Those are the top 2, then it goes UK, Germany, Canada, France, Netherlands, Poland, Russia, Brazil. What would be really interesting is to figure out visitors per-capita. For example, Singapore has a population of 5.6 million and had 111,319 unique users, so you could say about 2% of Singaporeans visited CSS-Tricks last year. Lols probably not, but hey that’s what the back-of-the-napkin math shows. Whereas with the 4.6 million unique visitors from the US compared to the 323 million population means only 1.5% has visited.
We gained about 10,000 newsletter subscribers this year for a total of 31,376. That’s about a third of the entire list size. I love our newsletter. I think it has a ton of potential and is always worth reading. To be perfectly honest I’d like to see our newsletter subscriber numbers be higher than our Twitter followers, but that’ll be a tall hill to climb.
Search is the origin of 86.6% of the traffic we get. Direct visits and referral links result in another 5% each. Social media just 2.5%. Whenever I look at that I’m reminded of the disproportionate amount of energy spent on it. Still, it aligns with our goal of being a publication people regularly read and being a source of news, so it feels worth it.
Speaking of social media, we rose 44,000 follows on Twitter last year, again an astonishing number, but it’s down year-over-year for the last several years. 71,900 likes on Facebook, only rising about 3,000, which isn’t bad considering we do hardly anything at all on Facebook. Growth is much more explosive on YouTube. We’re at 40,123 subscribers there from 32,174 last year, despite only posting a paultry 6 videos.
This is a classic loop in my head: maybe we should have a dedicated social media person! But even part-time employees are expensive… is it worth it? How much more potential is there? Could they add so much value they pay for themselves? What else could they do? And then the questions swirl around in my head so quickly the idea fizzles out. I guess I’ll just say if that kind of thing interests you, reach out!
For once, mobile traffic is actually up. 6.2% this year from below 5% last year. Industry-wide, that’s rock bottom. CSS-Tricks is just weird that way. A lot of developers b searching stuff at work, unsurprisingly. Less than 1% is tablets. 30% of the mobile traffic is iPhones.
Y’all left about 5,040 comments on the site this year, which is a smidge down year over year from the past few years, but it actually feels significantly up to me, since we’ve been much more stringent about what comments we publish this year. I do the vast majority of comment moderation and I trash a lot more than I used to. Anything that off-topic, rude, or unhelpful doesn’t see the light of day. I hope that doesn’t scare you off from commenting. In fact, I hope it encourages it. Anything on-topic and helpful will absolutely be published and won’t be lost in a sea of junk.
We’ve had 20,238 people use our contact form. Don’t worry, I love email.
Goal Review
Double newsletter subscribers. We didn’t double but we grew by a third, which is pretty strong. Especially since we did little to nothing to promote it. We probably need to do a better job of promoting it and somehow incentivizing signups, especially since it’s such a good way to reach people.
More pairing videos. Pretty hard fail here. The main difficulty is scheduling multiple people together, combined with the pressure of producing something worth watching. It’s one thing for an audio podcast like ShopTalk where we can schedule someone and just chit-chat about tech. It’s another thing to ask someone to pair with you and essentially do live coding. It’s still a good idea, it just needs a more serious time commitment and leader. And honestly, probably a sponsor so that it can be worth everyone’s time.
Maintain a mostly-daily publishing schedule. Check and check! This is the first year we’ve actually kept an honest to god schedule, structured after daily posting. We’ll be moving forward with that for sure.
Assemble content in more useful ways. We got a good start on this with Guides. We haven’t done a ton with them yet, but we have given ourselves a way to build these without too much effort, and I think the potential in them is fantastic.
New Goals
Publish something in a new format. We have a lot of publishing power around here with lots of writers and a solid platform. Let’s use it to publish a book or something book-like.
More editorial vision. Admittedly, what we published each day is a bit random. That’s not a terrible thing since the site has a niche anyway, but I’d call it a good goal to exert some editorial guidance to what we publish and when. Meaning commissioning and shepherding work that is a good fit for this site and publishing it with timing that makes some sort of sense.
Interesting sponsorship partners. The most rewarding and powerful partnerships between sponsors and publications are ones of mutual respect and admiration. There are loads of businesses out there I think are doing a terrific job of building what the build, and I’d like to forge relationships with them to promote what they do. And do that promotion in a way that we are uniquely able to do. Get in touch if you think you’re a part of that company.
Create another very popular page. It’s just a matter of time and topic. I’d like to find at least one web development topic that could really use a strong reference page and spend a good amount of time making what we consider a perfect fit for that, with the goal of it really resonating with developers.
Most importantly
Thank you, again, for being a part of this community.
What I was feeling when I wrote that was a little tired of endless discussions on tech minutia and yearning for more focus on what we are building and discussion about why.
If you’re a reader of this site, you and I live in the same bubble. It’s a nice bubble. It’s full of smart people who like to chat about web design and development. I live it and love it.
It’s easy to get into a heated discussion about frameworks, what type of class names make the most sense, which optimization techniques are most important, or what part of your code base is should be responsible for styling. Those are great discussions that guide our industry.
But what is more important? The naming convention you chose or if your user can actually book a flight? Which state store library you picked or if you actually had the scarf your user was looking for? Which command line tool pulled your dependencies or whether someone was able to find and read the instructions to send in their court appeal?
I was trying to encourage people to build and think about what they are building rather than get too discouraged about the how. You’re building things for people and that’s such a big responsibility. One that outweighs technical choices, as important as they seem.
I enjoyed the pushback I got on it though.
Most of it centered around the fact that if you make poor tech choices, that limits the quality of what you build and slows your ability to change and adapt to changing user needs. Fair enough.
Good tech just might lead to directly better features and UX for your users. Fair enough. Good tech might be a differentiator between you and your competition. Fair enough.
My favorite was calling out the story of the three little pigs. If you aren’t familiar, there is a Big Bad Wolf that is trying to eat the piggies. Each of them built a house to protect themselves. I imagine you can guess which of the pigs did better: the one who built their house out of hay, or the pig who built their house out of bricks.
Fair enough.
Drew McLellan gets into this in All That Glisters, but focuses on the old vs new tech issue:
There are so many new tools, frameworks, techniques, styles and libraries to learn. You know what? You don’t have to use them. You’re not a bad developer if you use Grunt even though others have switched to Gulp or Brunch or Webpack or Banana Sandwich. It’s probably misguided to spend lots of project time messing around with build tool fashions when your so last year build tool is already doing what you need.
And this gem:
Software, much like people, is born with a whole lot of potential and not much utility. Newborns — both digital and meaty — are exciting and cute but they also lead to sleepless nights and pools of vomit.
He goes on to say that what you are building might help dictate your tech choices. Ah yes, the what. Not only is what your things does litearlly the only thing people care about, it also helps guide tech choices.
A beautifully designed resume can spell the difference between securing that interview or being tossed onto a pile of overlooked applications. While a jazzy design might be appropriate for some creative roles, most employers will be looking for a CV that’s pleasant to look at and easy to read.
Here we’ll create a timeless resume design with a minimal, pared-back style in Adobe InDesign. Once you’ve created the layout, you can also easily customise the color scheme and fonts to adapt the resume to any job application.
Less is more when it comes to resumes. All you will need is two legible, professional fonts—one sans serif to use for subheadings, and one serif to use for your name and the body text.
To recreate the design pictured here, you’ll need to download and install the following fonts:
Before you start designing your resume, it’s really important to establish a grid for the page, to help you guide the placement of text. Here, we’ll use guides to create a two-column grid.
Step 1
Open up Adobe InDesign and go to File > New > Document.
With the Intent set to Print, uncheck the Facing Pages box, to create a single sheet document.
From the Page Size menu, choose Letter*.
Add a Bleed of 0.25 in and click OK to create your new document.
* This is the standard US resume size. For Europe, Australia, and elsewhere, A4 tends to be the standard size. You can adapt the page size and position of the grid lines, described below, accordingly.
Step 2
Structuring your layout around a grid will be key to making this classic resume look really professional.
First up, make sure the rulers are visible (View > Show Rulers).
Then drag out a vertical guide from the left-hand ruler. In the Controls panel at the top of the workspace, you’ll be able to see the X position of the guide as you drag it across. Bring this first guide along to X:1.08 in.
Step 3
Drag out two more vertical guides to X:2.89 in and X:3.29 in.
Then drag another out to X:7.5 in.
Step 4
From the horizontal ruler running along the top, drag down three guides to Y:1.5 in, Y:2.01 in, and Y:3.16 in.
Drag down one more guide to Y:9.52 in.
Step 5
Expand the Layers panel (Window > Layers), and double-click on the Layer 1 name. In the Options window that opens, rename the layer Main Grid and click OK.
Choose New Layer from the panel’s drop-down menu (accessible at the top-right corner). Name this layer Type and click OK.
Lock the Main Grid layer so as not to disturb the position of your grid while you work.
2. How to Format Typography on Your CV
Paying attention to the details of your text formatting will ensure that your resume will really shine.
Step 1
Zoom into the top of your resume. Take the Type Tool (T) and drag onto the page to create a text frame. Type in your name and allow the baseline of the text to sit on the top horizontal guide.
From the Character panel (Window > Type & Tables > Character), set the Font to Cormorant SemiBold, Size 45 pt. Increase the Tracking (letter-spacing) to 90.
From the Paragraph panel (Window > Type & Tables > Paragraph), adjust the text to Align Center.
Step 2
Take the Type Tool (T) again and create a text frame below the first, resting the baseline on the next guide down.
Type in your role (e.g. ‘Illustrator and Designer’) and set the Font to Charlevoix Pro Regular, Size 13 pt, Tracking 100 and flush the text to Align Center. From the Character panel’s main menu (at top-right), choose All Caps.
Step 3
Now it’s time to start building up sub-headings and sections on your resume. Create a text frame that fits snugly underneath the next horizontal guide down, and against the third vertical guide, as shown below.
Type in ‘BIO’ and set the Font to Charlevoix Pro Bold, Size to 12 pt, and Tracking to 140.
Create a larger text frame below the first, with a little spacing between the two. Type in your bio text, setting the Font to Cormorant Regular, Size to 11 pt, and Leading (line-spacing) to 15 pt.
Step 4
Return to the Layers panel and create a New Layer above Type, naming it Line Spacing Grid. On this layer you can place extra guides to help you space out the sections of text evenly.
Step 5
Lock the Type layer to avoid disturbing the text frames.
Drag three guides down from the top ruler to mark out the baseline of the ‘BIO’ sub-heading and the top and bottom of the body text frame.
Select all three guides and Edit > Copy, Edit > Paste, before dragging them down to sit below the text frames.
Then unlock the Type layer and Copy and Paste the two bio text frames, moving them to fit onto the guides you’ve just created.
Step 6
You can edit the sub-heading of this copy to read ‘EXPERIENCE’. To create another sub-heading for the job title, delete the body text frame, and create a text frame with the job title set in Charlevoix Pro SemiBold, Size 10 pt, Tracking 140.
From the Swatches panel (Window > Color > Swatches), you can adjust the Tint of the default [Black] color of the text, bringing it down to around 65%.
Copy and Paste the body text frame under ‘BIO’, above, and move below this tinted sub-heading.
Step 7
Bring down two more guides to mark out the baseline of the tinted sub-heading and the top of the body text frame beneath it.
Select and Copy all the guides marking out the ‘EXPERIENCE’ section…
… and move them below, resting the top guide in the group over the baseline of the body text frame.
Copy and Paste the tinted sub-heading and body text frame, moving this below, using the guides to position it accurately.
Step 8
Use two guides to mark out the spacing between the ‘BIO’ and ‘EXPERIENCE’ sections.
Then select all the guides which mark out the spacing, as well as the position of all the sub-sections under ‘EXPERIENCE’, and Copy them.
Move them below, sitting the top guide of the group on the baseline of the last line of body text.
Then Copy and Paste all the text frames from the Experience section, moving them below.
Adjust the pasted sub-heading to read ‘EDUCATION’, and edit the tinted sub-headings and body text to list your qualifications and details about them.
Step 9
With the text frames in the large column now formatted, you can start working on the sections in the left-hand, narrow column. This is a great place to put smaller items of info that need to be found by the interviewer quickly and easily, like contact details and references.
Copy and Paste the ‘BIO’ sub-heading and body text frame below, moving them over to the top of the left-hand column, and reducing the length to fit inside it, as marked out by the two vertical guides.
Edit the text to read ‘CONTACT’, and in the text frame below, type in your email address, phone number, etc. Increase the Leading (line-spacing) of the text to around 20 pt, to visually separate each line.
Step 10
Reduce the width of the body text frame so that there’s a little space available to the left side of the frame. Here you can place some optional icons to make the contact section more memorable and easy to read at a glance.
Switch to the Rectangle Frame Tool (F) and drag onto the page, creating a small frame to the left of the top line.
Go to File > Place and choose one of the vector icons from the icons bundle you downloaded earlier. Click Open, and allow it to fill the frame.
If the icons are set to a black color, you can pare down the boldness of them by selecting the image frame and going to Object > Effects > Transparency. Bring the Opacity down to around 40%.
Place more icons down along the length of the ‘CONTACT’ section.
Step 11
Select the two guides marking out the spacing between the ‘BIO’ and ‘EXPERIENCE’ sections, and Copy them.
Paste them, moving them down to mark out the same spacing between the ‘CONTACT’ section we’ve just created and the next section down, which is going to be ‘SKILLS’.
Edit the ‘SKILLS’ text to read a list of skills, like software you can use, for example.
Step 12
Highlight the list of skills you’ve typed up, and click on the Bulleted List icon in the top Controls panel to add bullet points to the list.
You can edit the look of the bullets by going to the menu at the top-right corner of the workspace (under the search bar) and clicking Bullets and Numbering.
In the window that opens, choose New Character Style from the Character Style drop-down menu.
From here, you can format the style of your bullets.
To create a very simple tinted bullet style, click on Character Color in the window’s left-hand menu. Bring the Tint of the [Black] swatch down to 60%, and click OK. Then click OK again to exit the window.
Step 13
Copy the two guides marking out the spacing between the ‘CONTACT’ and ‘SKILLS’ sections, and Paste them, moving them to sit below the ‘SKILLS’ section.
Copy and Paste the ‘SKILLS’ section, and move it below, editing the text to read ‘INTERESTS’.
Step 14
You can also add a ‘REFERENCES’ section below interests.
Try setting the name of the reference in Cormorant Bold Italic to create a bit of hierarchy.
3. How to Add a Touch of Color to Your CV
Step 1
Create a new layer sandwiched between Main Grid and Type. Name it Color, and lock all other layers.
Step 2
Take the Rectangle Tool (M) and drag across the top of the page, extending the shape up to the top, left and right edges of the bleed, and halfway down the name text below.
Step 3
Expand the Swatches panel (Window > Color > Swatches) and choose New Color Swatch from the panel’s drop-down menu (at top right).
Name the swatch Baby Blue, and set the Color Type to Process and Mode to CMYK. Adjust the percentage levels below to C=33 M=9 Y=9 K=0. Click Add and then OK.
Apply the Baby Blue swatch to the Fill Color of the rectangle shape.
Step 4
With the rectangle selected, head up to Object > Effects > Transparency. Bring the Opacity down to 80% to create more of a watermark effect.
Step 5
Copy and Paste the rectangle, moving it down to the bottom of the page.
Reduce the height of the rectangle so that only a small margin of color can be visible along the bottom edge.
Your CV design is finished—great work!
All that’s left for you to do is export it ready for printing. Read on to find out how…
4. How to Export Your CV for Printing
Note: These steps show you how to export your resume for professional printing. This is recommended if you want to print your CV to a high standard. If you’d rather print from a home printer, you can go straight to File > Print in InDesign.
Step 1
Go to File > Export.
In the window that opens, choose Adobe PDF (Print) from the Format drop-down menu, and hit Save.
In the Export Adobe PDF window, select [Press Quality] from the Adobe PDF Preset menu at the top.
Step 2
Click on Marks and Bleeds in the window’s left-hand menu.
Check All Printer’s Marks and Use Document Bleed Settings, before clicking Export at the bottom.
Ta-dah! Your CV is now ready for sending straight off for printing.
Conclusion: Your Finished CV
Awesome job—your resume’s ready to be sent off in the post. Fingers crossed you’ll get that interview!
In this tutorial you’ve picked up a range of handy print design skills you can apply to other print projects. You now know how to work with advanced grids and section spacing, and how to format type to a high standard.
Today we will create an illustration of an elderly man. We’re going to do this by using some basic geometric shapes combined with the power of some simple tools in Adobe Illustrator.
And to keep our love for grandparents, remember that grandparents’ day is in September, and this tutorial could result in a beautiful card for them.
After opening your Adobe Illustrator and creating a new document with 850 x 850 px Width and Height, we will start to create the man’s head. Using the Rounded Rectangle Tool, create a beige rounded rectangle. In the image below, you can see which fill color you need.
To get a rounded rectangle with very rounded corners, create a small rounded rectangle first, and then stretch it while holding down the Shift key. Or you can go to View > Show Corner Widget and modify the corners by dragging them inside.
Now, we can draw the hair. Start by creating a grey rounded rectangle. To place it behind, hit Control-X, Control-B. Now add two smaller rounded rectangles to the sides of the head.
Step 2
In this step, we will create the ears and neck.
First, add another thin vertical rounded rectangle and attach it to the left side of the head behind the small grey rounded rectangle and in front of the large grey rounded rectangle.
Now, while holding the Shift and Alt keys, move this ear to the right. You will get another copy of the ear to complete the ears.
Using the Ellipse Tool (L), create an oval with the same beige color and place it under the face to create the neck.
Step 3
Let’s add the eyebrows. Using the Ellipse Tool (L), create a thin, horizontally aligned, light grey oval. Then take the Direct Selection Tool (A), select by dragging the top and bottom anchor points of the oval, and slide them up. This will be the eyebrow. Place the left eyebrow over on the left side. While keeping the left eyebrow selected, hold the Alt and Shift buttons, and move it to the right. Now you have two eyebrows.
Step 4
Let’s make the nose. Place a new vertical light brown ellipse. Using the Direct Selection Tool (A), select the left and right anchor points and then move them down. Create a new copy of this shape in front (Control-C, Control-F), and change its fill color to beige using the Eye Dropper Tool (I). To take the color you want, select the necessary object (the one you want to change color), take the Eyedropper Tool (I), and click on the necessary object.
Make the new beige copy a bit thinner, so you can see just the sides of the previous light brown shape. The nose is done! Group it for your convenience: right-click > Group.
Next, we will add eyes. Using the Ellipse Tool (L), draw a dark brown circle for the left eye. To make an even circle, draw an oval using the Ellipse Tool (L) while holding down the Shift key. Select the left eye and, while holding the Shift and Alt keys, move it to the right to get another copy of it. Now you have two eyes.
Step 5
Next, we will create the mouth and mustache.
First, create a light grey rounded rectangle and place it under the man’s nose. To have this rectangle under the nose, just select the nose and place it over the rounded rectangle: Control-X, Control-F.
Now, we will cut the bottom half of the rounded rectangle: using the Rectangle Tool (M), create a rectangle and cover the bottom part of the rounded rectangle. The rectangle will be used as a cutter; therefore its color is not important. Select both shapes and press the Minus Front button on the Pathfinder panel (Window > Pathfinder). This action leaves us with half of the rounded rectangle, which looks like a mustache. (Just something interesting: do you have some ideas how else you can create mustaches in any other shape?)
Next, create a light brown ellipse and place it behind the mustache. Then create a copy of this ellipse in front (Control-C, Control-F), make it a bit smaller, and change the fill color to the same as the color of the face.
Step 6
To make the glasses, create an even circle. It needs to have an almost black stroke color and a light fill color, as shown in the image below. Place this circle in front of the left eye. Hold the Shift and the Alt keys together, and move this circle to the right to duplicate it.
Now we need to add a transparency to the fill color and keep the stroke color unchanged. For this, we will lower the opacity of the fill color: on the Appearance panel (Window > Appearance), you have to click on the word “Fill” then “Opacity” and in the pop-up menu, decrease its Opacity to 50%. Remember: you need to change the Opacity just for the Fill, not for the Stroke. That’s why we use the Appearance panel and not the Transparency panel, which will change the Opacity of the whole circle, fill and stroke.
Then, using the Arc Tool, add an arc between the two glasses as a bridge. Make sure you delete the fill color and leave just the stroke color.
With the help of the Arc Tool again, draw the left and right temples of the glasses. Be sure to check Round Cap on the Stroke panel.
2. How to Create the Body and Legs
Step 1
Let’s make the body. Delete the stroke color and set the fill color presented below. Using the Rounded Rectangle Tool, create a red rounded rectangle and attach it to the head. Place it behind the head.
Now, using the Bulge effect, we will slightly deform this rounded rectangle. Select the rounded rectangle and go to Effect > Warp > Bulge. In the new window, adjust the presented options. Expand this shape (Object > Expand Appearance).
Step 2
To create the arms, we will start with an arc. First, delete the fill color and set the stroke color the same as the body color, or just press Shift-X. Check Round Cap on the Stroke panel and make the Weight of this stroke very thick (around 30-40 px).
Now, using the Arc Tool, draw the man’s left arm. Move the handles of the anchor points using the Direct Selection Tool (A) to achieve the result you need. To make a copy of the arm, select it, right-click your mouse, and select Transform > Reflect. Once you get a dialogue box, select Axis Vertical, Angle 90 degrees, and press Copy. Move the newly created arm to the right.
Step 3
For the left hand, create an oval and attach it to the left arm. Keep the same fill color as for the face. Take the Direct Selection Tool (A), select the bottom anchor point, and move it up to get a result similar to the image below. Make a copy of this shape and attach it to the right arm.
Step 4
Create a dark grey rounded rectangle and attach it below the body. Hide a part of this rounded rectangle behind (use Control-X, Control-B).
Using the Rectangle Tool (M), draw a rectangle for the left leg. Then take the Direct Selection Tool (A) and move the lower right anchor point to the left.
Make a copy of the leg: select it, right-click your mouse, and select Transform > Reflect.In the dialogue box, select Axis Vertical, Angle 90degrees, and press Copy. Move the created copy to the right.
Step 5
For the shoes, make a copy of the shape of the mustache, which we created before. Add a thin, horizontally aligned, rounded rectangle for the shoe sole. Set the necessary fill color for the shoe. While holding the Alt and Shift keys, move the whole shoe to the right leg.
3. How to Create the Walker
Step 1
Create a rounded rectangle using the Rounded Rectangle Tool with no fill color and a greyish-blue stroke color. Select the Scissors Tool (C) and click on the left and right parts of the rounded rectangle, marked in the image below. Delete the bottom part of the rounded rectangle by pressing the Delete button on your keyboard.
Step 2
Place the shape below the left hand (use Control-X, Control-B). And place a copy of it below the right hand (to have them horizontally aligned, move the left copy to the right while keeping the Shift and Alt keys pressed).
Finally, join the two sides of the walker with a horizontal line (match the thickness of the line to the thickness of the vertical lines) using the Line Segment Tool (\).
Step 3
Using the Rectangle Tool (M), draw a dark grey rectangle. Then, using the Direct Selection Tool (A), move the upper anchor points to the center. Attach four copies of this shape to the bottom of the walker to create the tips.
4. How to Create the Background
Step 1
Create a light green square with 850 px Width and Height, by using the Rectangle Tool (M). First select this tool, and then click on your artboard and enter the necessary width and height in the new dialogue window, and press OK.
Step 2
Place the image of the man with the walker in front of the background.
Step 3
To finalize the image, add a few dark green rounded rectangles below as shadows.
Conclusion
And we are finished! Well done! I hope you enjoyed learning some of the processes and shortcuts during the creation of this image in Adobe Illustrator.
Always respect your elders—they made it through school without Google or Wikipedia!
There are so many little gems in this piece by Yevgeniy Brikman all about documentation. He digs into a lot more than simply documenting code though and focuses on how we can document every phase of our work, from design to process and beyond.
Here’s my favorite lines that made me sit back and shout “Wahoo!”:
When a developer uses your code, they are really learning a new language, so choose the words in it wisely.
…programs must be written for people to read, and only incidentally for machines to execute.
I like how Yevgeniy suggests that there are kinda two different mindsets that we have to get into when writing code: one for making the dang thing work in the first place, and another for explaining how and why we did a specific way. There’s context-switching that takes place between those different stages of work.
Anyway, when seen in this light, documentation could be much more than a nice-to-have. Instead, it might just be 50% of the work.
Ever discussed with your designer friends about which countries have the best designers? This kind of argument will always be heated as pretty much any point of view will be biased. Now, thanks to the World Design Rankings, we have a statistic base to discuss upon.
The World Design Rankings provide a listing with the ranking of all countries based on the number of designers that have been granted with the A’ Design Award, so it’s basically what Olympics are to Sports. Like in the Olympics, where athletes are rewarded for their performances and ranked by categories, designers get to be ranked in the Designers Rankings website.
It comes as no surprise that the countries with the biggest economies came first, as there is usually more money there to finance bigger projects. Here is the top three design countries according to these rankings. Enjoy a sample of work!
1. The USA
The most awarded design studio from the USA is the design department of a company that you know pretty well for making your kids and yourself fat: Pepsi Co. Working as a designer for them seems quite fun, as the designers get room for experimenting and producing great designs.
Bottles designed by the multi-awarded PepsiCo design department.
Pip Tompkin Design is the second most awarded agency from North America, with a lot of awards to their credit. Among other things, they designed this cool Polycom conference phone.
Cangshan is ranked third among the design studios in the USA, they designed these amazing cooking knives.
2. China
In China, the country that comes second in the Design Olympics, Kris Lin is the most awarded designer with his spectacular architectural work, you can see an example of it here with the Origami Real Estate Agency.
Johnson Li of Lenove Ltd. in China is another great producer of high-quality designs, like this Ideapad.
If you like good architecture, you will enjoy the work of the next Chinese designer: Raynon Chiu.
3. Japan
Japan is a country known for its amazing aesthetics, so it may come as a surprise that this country doesn’t finish at the first place. They are represented by a large number of top-notch designers, such as Katsumi Tamura and his flower calendar.
Yasumichi Morita is another example of a great Japanese designer and artist, his Life is a Flower porcelain artwork is just stunning.
With a different spectrum of work, Shunmyo Masuno creates memorable landscape designs like the one he did for the Hofu City Crematorium.
I draw an oval shape for the goat’s head, using the HB graphite pencil.
Step 2
I add the shapes of the ears and pointed horns. Keep the elements simple and stylized; we’ll refine them later.
Step 3
I draw the neck of the goat; it is basically a simple elongated shape.
Step 4
I add the rough shapes of the chest and the rump; they are the building blocks of the goat’s body.
Step 5
I join the shapes of the body, outlining the back of the goat. It has a prominence that marks the hip bone.
Step 6
I draw the framework of the goat’s limbs, marking the joints with big circles.
At this stage, we can already mark the bottom line of the goat’s body.
Step 7
I refine the shape of the goat’s forelimbs; they are thicker in the knee area and end with a hoof.
Goats also have dewclaws on the back side of the limbs, which are rudimentary hooves.
Step 8
I draw the contours of the hind legs. They have hocks—the joints between the knee and the fetlock that point backwards.
Step 9
It’s time to draw the goat’s face. I sketch a vertical core line, and then add three horizontal lines for the eyes, nose, and mouth.
Step 10
I draw the eyes with horizontal pupils. The eyes of a real goat are relatively small, but I want my drawing to look cute, so I make them slightly bigger.
Then I add the nose and the mouth with a hint of a smile.
Step 11
I refine the shape of the ears, adding a deep shadow.
Step 12
I add several contour lines to each horn and draw the beard. Both male and female goats have beards.
Step 13
The body of a goat is covered with hair; its coloring can vary from white to grey or black.
I draw the hair along the contours of the goat’s body, using long hatches.
Step 14
I add the rounded udder with two prominent teats.
Step 15
I draw a short tail and create an illusion of its texture, using long graphite lines.
Step 16
Let’s give some completeness to our sketch by adding values. With the HB pencil, I draw relatively long hatches that imitate hair.
With the 3B pencil, I darken the sides of the goat’s head to make the drawing more realistic.
Step 17
I continue to add long hatches to the front part of the goat’s body, using the HB pencil.
It’s the right time to accent small details like the cloven hooves or the longer strands of hair.
Step 18
I complete creating the illusion of hairy texture, working in the same technique.
I also strengthen the core shadows, applying an additional layer of hatching with the 3B pencil.
As a finishing touch, I add light hatches that imitate grass at the goat’s feet, using the HB pencil.
2. How to Draw a Baby Goat
Step 1
I draw the rounded shape of the head, and then add the ears. The head of a baby goat is relatively big in comparison to the body; it is also shorter than the head of an adult goat.
Baby goats don’t have horns as adult goats do, but they have so-called 'horn buds.’ These are small bumps on the top of the head, between the ears and above the eyes. Our goat is too young, so we don’t need to overload the drawing with information.
Step 2
I add the rough shape of the chest. The neck of a baby goat is shorter than this part of the body of an adult animal.
Step 3
I draw the framework of the front legs.
Step 4
I add the contours of the limbs, accentuating the knees.
Step 5
It’s time to draw the reference lines of the animal’s face. I sketch the vertical core line, and then add lines for the eyes, nose, and mouth. Leaving enough space for the forehead is important.
I also refine the shape of the ears.
Step 6
I draw the eyes with horizontal pupils. Then I add the nose and a smiling mouth.
Step 7
I add the back and the hind legs of the baby goat. The foreshortening doesn’t allow us to see much of the animal’s back, but we should mark it to make the drawing look realistic.
Step 8
With the HB pencil, I add long hatches that imitate hair.
As a cute addition, I draw a floral diadem on the head of the baby goat. There is no need to draw all the tiny petals or other details; just create something that looks like small flowers.
Step 9
I create an illusion of hair, using the HB pencil, just as we did with the adult goat.
I darken the eyes, the neck, and the back limbs to increase the contrast and make the drawing more credible.
Your Artworks Are Complete
Congratulations! You’ve created two beautiful drawings of charming goats. I hope you’ve enjoyed the process, and no animal seems too difficult to draw now!
These features have not landed in any stable browsers at the time of writing. However, everything discussed is already in Firefox Nightly by default and key parts are in Chrome Canary (with the Experimental Web Platform Features flag enabled), so I recommend using one of those browsers (when reading this article) to see as many of the features in action as possible.
Regardless your preferred method of animation on the web, there will be times that you need to animate the same property in separate animations. Maybe you have a hover effect that scales an image and a click event that triggers a translate — both affecting the transform. By default, those animations do not know anything about the other, and only one will visually be applied (since they are affecting the same CSS property and the other value will be overridden).
element.animate({
transform: ['translateY(0)', 'translateY(10px)']
}, 1000);
/* This will completely override the previous animation */
element.animate({
transform: ['scale(1)', 'scale(1.15)']
}, 1500);
The second animation in this Web Animations API example is the only one that would be visually rendered in this example as both animations play at the same time and it was the last one defined.
Sometimes we even have grander ideas where we want a foundational animation and then based on some user interaction change in state we smoothly modify the animation a bit midway without affecting its existing duration, keyframes, or easing. CSS Animations and the current Web Animations API in stable browsers today cannot do this out of the box.
A New Option
The Web Animations specification introduces the composite property (and the related iterationComposite). The default composite is 'replace' and has the behavior we have had for years now where an actively animating property’s value simply replaces any previously set value — either from a rule set or another animation.
The 'add' value is where things change from the previous norms.
Now both animations will be seen as the browser on the fly figures out the appropriate transformation at a given point in the element’s timeline accounting for both transformations. In our examples, the easing is 'linear' by default and the animations start at the same time, so we can break out what the effective transform is at any given point. Such as:
0ms: scale(1) rotate(0deg)
500ms: scale(1.25) rotate(60deg) (halfway through first animation, 1/3 through second)
1000ms: scale(1.5) rotate(120deg) (end of first, 2/3 through second)
An individual animation does not just consist of a start state and end state — it can have its own easing, iteration count, duration, and more keyframes in the middle. While an element is mid animation you can throw an additional transformation on it with its own timing options.
This example lets you apply multiple animations on the same element, all affecting the transform property. To keep from going all out in this example, we limit each animation to a single transformation function at a time (such as only a scale), starting at a default value (such as scale(1) or translateX(0)), and ending at a reasonable random value on that same transformation function, repeated infinitely. The next animation will affect another single function with its own randomized duration and easing.
element.animate(getTransform(), //e.g. { transform: ['rotate(0deg), 'rotate(45deg)'] }
{
duration: getDuration(), //between 1000 and 6000ms
iterations: Infinity,
composite: 'add',
easing: getEasing() //one of two options
});
When each animation starts, the browser will effectively find where it is in its previously applied animations and start a new rotation animation with the specified timing options. Even if there is already a rotation going in the opposite direction, the browser will do the math to figure out how much a rotation needs to happen.
Since each animation has its own timing options, you are unlikely to see the exact same motion repeated in this example once you have added a few. This gives the animation a fresh feel as you watch it.
Since each animation in our example starts at the default value (0 for translations and 1 for scaling) we get a smooth start. If we instead had keyframes such as { transform: ['scale(.5)', 'scale(.8)'] } we would get a jump because the didn’t have this scale before and all of a sudden starts its animation at half scale.
How are values added?
Transformation values follow the syntax of in the spec, and if you add a transformation you are appending to a list.
For transform animations A, B, and C the resulting computed transform value will be [current value in A] [current value in B] [current value in C]. For example, assume the following three animations:
Each animation runs for 1 second with a linear easing, so halfway through the animations the resulting transform would have the value translateX(5px) translateY(-10px) translateX(150px). Easings, durations, delays, and more will all affect the value as you go along.
Transforms are not the only thing we can animate, however. Filters (hue-rotate(), blur(), etc) follow a similar pattern where the items are appended to a filter list.
Some properties use a number as a value, such as opacity. Here the numbers will add up to a single sum.
Since each animation again is 1s in duration with a linear easing, we can calculate the resulting value at any point in that animation.
0ms: opacity: 0 (0 + 0 + 0)
500ms: opacity: .35 (.05 + .1 + .2)
1000ms: opacity: .7 (.1 + .2 + .4)
As such, you won’t be seeing much if you have several animations that include the value 1 as a keyframe. That is a max value for its visual state, so adding up to values beyond that will look the same as if it were just a 1.
Similar to opacity and other properties that accept number values, properties that accept lengths, percentages, or colors will also sum to a single result value. With colors, you must remember they also have a max value, too (whether a max of 255 in rgb() or 100% for saturation/lightness in hsl()), so your result could max out to a white. With lengths, you can switch between units (such as px to vmin) as though it is inside a calc().
When you are not doing an infinite animation (whether you are using a composite or not) by default the animation will not keep its end state as the animation ends. The fill property allows us to change that behavior. If you want to have a smooth transition when you add a finite animation, you likely will want a fill mode of either forwards or both to make sure the end state remains.
This example has an animation with a spiral path by specifying a rotation and a translation. There are two buttons that add new one second animations with an additional small translation. Since they specify fill:'forwards' each additional translation effectively remains part of the transform list. The expanding (or shrinking) spiral adapts smoothly with each translation adjustment because it is an additive animation from translateX(0) to a new amount and remains at that new amount.
Accumulating animations
The new composite option has a third value — 'accumulate'. It is conceptually in line with 'add' except certain types of animations will behave differently. Keeping with our transform, let’s start with a new example using 'add' and then discuss how 'accumulate' is different.
Which will visually push an element to the right 50px and then scale it down to half width and half height.
If each animation had been using 'accumulate' instead, then the result would be:
transform: translateX(50px) scale(.5)
Which will visually push an element to the right 50px and then scale it down to half width and half height.
No need for a double take, the visual results are in fact the exact same — so how is 'accumulate' any different?
Technically when accumulating a transform animation we are no longer always appending to a list. If a transformation function already exists (such as the translateX() in our example) we will not append the value when we start our second animation. Instead, the inner values (i.e. the length values) will be added and placed in the existing function.
If our visual results are the same, why does the option to accumulate inner values exist?
In the case of transform, order of the list of functions matters. The transformation translateX(20px) translateX(30px) scale(.5) is different than translateX(20px) scale(.5) translateX(30px) because each function affects the coordinate system of the functions that follow it. When you do a scale(.5) in the middle, the latter functions will also happen at the half scale. Therefore with this example the translateX(30px) will visually render as a 15px translation to the right.
I mentioned before that there is also a new related iterationComposite property. It provides the ability to do some of the behaviors we have already discussed except on a single animation from one iteration to the next.
Unlike composite, this property only has two valid values: 'replace' (the default behavior you already know and love) and 'accumulate'. With 'accumulate' values follow the already discussed accumulation process for lists (as with transform) or are added together for number based properties like opacity.
As a starting example, the visual result for the following two animations would be identical:
The first animation is only bumping up its opacity by .5, rotating 50 degrees, and moving 2vmin for 2000 milliseconds. It has our new iterationComposite value and is set to run for 2 iterations. Therefore, when the animation ends, it will have run for 2 * 2000ms and reached an opacity of 1 (2 * .5), rotated 100 degrees (2 * 50deg) and translated 4vmin (2 * 2vmin).
Great! We just used a new property that is supported in only Firefox Nightly to recreate what we can already do with the Web Animations API (or CSS)!
The more interesting aspects of iterationComposite come into play when you combine it with other items in the Web Animations spec that are coming soon (and also already in Firefox Nightly).
Setting New Effect Options
The Web Animations API as it stands in stable browsers today is largely on par with CSS Animations with some added niceties like a playbackRate option and the ability to jump/seek to different points. However, the Animation object is gaining the ability to update the effect and timing options on already running animations.
Here we have an element with two animations affecting the transform property and relying on composite:'add' — one that makes the element move across the screen horizontally and one moving it vertically in a staggered manner. The end state is a little higher on the screen than the start state of this second animation, and with iterationComposite:'accumulate' it keeps getting higher and higher. After eight iterations the animation finishes and reverses itself for another eight iterations back down to the bottom of the screen where the process begins again.
We can change how far up the screen the animation goes by changing the number of iterations on the fly. These animations are playing indefinitely, but you can change the dropdown to a different iteration count in the middle of the animation. If you are, for example, going from seven iterations to nine and you are seeing the sixth iteration currently, your animation keeps running as though nothing has changed. However, you will see that instead of starting a reverse after that next (seventh) iteration, it will continue for two more. You can also swap in new keyframes, and the animation timing will remain unchanged.
Modifying animations midway may not be something you will use every day, but since it is something new at the browser level we will be learning of its possibilities as the functionality becomes more widely available. Changing iteration counts could be handy for a game when a user get a bonus round and gameplay continues longer than originally intended. Different keyframes can make sense when a user goes from some error state to a success state.
Where do we go from here?
The new composite options and the ability to change timing options and keyframes open new doors for reactive and choreographed animations. There is also an ongoing discussion in the CSS Working Group about adding this functionality to CSS, even beyond the context of animations — affecting the cascade in a new way. We have time before any of this will land in a stable major browser, but it is exciting to see new options coming and even more exciting to be able to experiment with them today.