how-to-start-a-blog-using-hugo

Hugo is a great tool to start a blog.

I use Hugo myself in this blog, since more than 2 years. I have a few reasons for loving using Hugo.

It is simple, boring, flexible, fast.

The main reason is that it is simple. There’s not much you have to learn to get started.

You write content in Markdown, a format that lets me use my favorite editor (Bear) to write posts.

Hugo is boring. Don’t get me wrong, this is a very positive thing. As a developer I am tempted to tweak things here and there all the time. There’s no fancy technology underlying Hugo. It’s built using Go, one of the languages I love the most, but that does not mean I want to dive into the internals of Hugo and change how it works.

And it does not surface any cool or next-generation stuff like many JavaScript frameworks tend to do.

Hence it is boring, which gives me a lot of time to do what is really useful when working on a blog: writing content. I focus on the content, not on the content container.

That said, Hugo is pretty darn flexible. I started my own blog with an open source theme, then changed it completely over time. Sometimes I want to do things in my website that are out of the scope of a simple blog, and Hugo allows me to create those things.

Finally, another reason I love Hugo is that it is fast. Why? First, it has Go at the core, which is known to be a very fast language. And in the Go ecosystem, there’s no concept of 100 megabytes dependencies. Things are made to be as fast as possible. Plus, Hugo does not need to do some of the fancy stuff that is needed when using fancy technology. This is a by-product of being boring.

Anyway, enough with words.

Hugo is amazing, especially if you are a developer and you’re willing to write in Markdown. Non-tech people might just refuse to use Markdown, and it’s perfectly understandable.

Also, you have to be prepared for a Git-centric workflow to make things really click.

What you do is that you write a post using Markdown, then commit your changes to a Git repository, most commonly on GitHub, and some glue technology deploys the changes on the server that hosts the site.

Hosting a Hugo website

A Hugo blog is completely static. This means you don’t need to host your own server, or use a special service for it.

Netlify, Now and GitHub Pages are 3 great places where you can host a Hugo blog, for free.

The only cost is the one you have to sustain for the domain name. I can’t stress more the importance of having your own domain name. No .github.io or .netlify.com or .now.sh sites, please.

My own Hugo sites are hosted on Netlify.

Choose a domain

Put your blog under your own domain. Pick one. Use your own name. And use .com or .blog. Don’t try to be clever by using a localized domain, don’t use .io. .com just gives a better impression and it’s reusable for all your future projects, not just to host your blog. I picked that.

Oh and if you have an old domain lying around, just use that. Why? The older your domain is, the better.

Note on subdomains: every subdomain, to Google, is a different website. So if your domain is flaviocopes.com, and you create your blog in blog.flaviocopes.com, then that’s a completely new website to Google, and it will have its own ranking separate from the main domain.

My suggestion is to avoid subdomains completely.

Install Hugo

To install Hugo on macOS, from your terminal run

brew install hugo

The brew command does not exist on your Mac? Check the Homebrew guide

For Windows and Linux, check the official installation guide.

Create a Hugo site

Once Hugo is installed, you can create a Hugo site by running

hugo new site myblog

I suggest to run this into a www folder in your Home directory, because the command will create a new myblog folder where you run it.

Pick a theme

Now before you can start you need to pick a theme. I wish Hugo included a default theme to make things straightforward, but it does not.

There’s a lot of choice on https://themes.gohugo.io. My personal recommendation is to start with https://themes.gohugo.io/ghostwriter/ and tweak it later.

I also recommend to avoid the git clone workflow they suggest on that page, because you’ll be surely tweaking the theme in the future, and I find it best to have a single repository for both content and theme. It simplifies deployment.

So, go to https://github.com/jbub/ghostwriter/archive/master.zip to download the current version of the theme.

Then unpackage it in the themes/ghostwriter folder in your newly created Hugo website:

Notice there is a exampleSite folder in the themes/ghostwriter. Open it, and open its content subfolder. In there, you can see the page, post and project subfolders.

Copy page and post in the content folder of the site:

The configuration

The sample data also provide a sample config.toml file in themes/ghostwriter/exampleSite/config.toml. This is the Hugo configuration file, which tells Hugo some details of the configuration without you having to hardcode information in the theme.

I recommend you to not copy that, because it has too many things, and instead use this:

baseurl = "/"
title = "My blog"
theme = "ghostwriter"

[Params]
    mainSections = ["post"]
    intro = true
    headline = "My headline"
    description = "My description"
    github = "https://github.com/XXX"
    twitter = "https://twitter.com/XXX"
    email = "XXX@example.com"
    opengraph = true
    shareTwitter = true
    dateFormat = "Mon, Jan 2, 2006"

[Permalinks]
    post = "http://www.webdesignernews.com/:filename/"

You can freely customize the information in this file, later.

Now from the command line, run:

hugo serve

Open http://localhost:1313 in your browser, and you should be able to see the site live!

This is the site home page.

There is a list of posts that is taken from the content/post folder of your website:

Click the first, called “Creating a New Theme”:

You can open the file content/post/creating-a-new-theme.md to change anything in the post.

If you save, the website will automatically update with the new content.

This is pretty awesome, right?

You can create a new post by creating a new .md file, prefixing it with anything you want. You can use incremental numbers, if you prefer. Or use a date.

If something is not looking like you want, you can open the themes/ghostwriter/layouts folder and tweak it.

The “post” template is defined in themes/ghostwriter/layouts/post/single.html:

Hugo uses Go templates. The syntax can be pretty unfamiliar but the Hugo website does a very good job at explaining them in this Go templates introduction.

However, try to not look at customizing your template now.

If you want to tweak the colors, add a

Focus on the content instead.

Remove the existing files, and write 2-3 posts to start with.

It’s too easy to get trapped in making things perfectly like you want, but the important thing is the content.

And the cleaner your site is, the better for your readers.

Let me now write a little about deployment.

Deploy the Hugo site to Netlify

I want to showcase how to deploy a Hugo site in 2 of the services I enjoy the most: Netlify and Now.

First, I’m going to create a GitHub repository to host the site.

I open GitHub Desktop, an app I use every day and is part of my workflow. It’s the simplest way to use Git.

From the File menu, I pressed the “New Repository” option:

The same screen can be generated by simply dragging the myblog folder into the app.

I gave the myblog name to the repository, and picked the correct path for the repo.

The process automatically makes the first commit:

Now we can click the “Publish repository” button to push the repo to GitHub:

You can keep the repo private, of course.

Once the repo is in GitHub:

we can move to Netlify.

From my Netlify dashboard I pressed the “New site from Git” button:

Pressed GitHub, authorized Netlify to access my private repositories, then I picked the repo I just created:

Netlify automatically identified it as a Hugo repo, and entered the build command automatically:

Clicking “Deploy site” starts the deploy process:

On a real site, I would set up a custom domain. Netlify has the option to purchase a domain through them, and it’s a very (VERY) straightforward process. I highly recommend it. The site can be live in just a few minutes from purchasing the domain.

A random .netlify.com subdomain is attached to the site, in this case pedantic-engelbart-500c9a.netlify.com, and HTTPS is automatically enabled.

We can therefore immediately see the site live:

Now if you try to edit something in your local version, you just push the changes to GitHub, and Netlify will automatically update the site. You can see it building the site in the “Overview” panel of the site:

To know more about Netlify I recommend you check out my Netlify tutorial.

Deploy the Hugo site to Zeit Now

Another awesome platform you can use for your Hugo blog is Zeit Now.

Once you sign up, from the dashboard you press the New Project button.

The first time you deploy from GitHub you have to first install the GitHub app clicking “Install Now For GitHub”:

This brings you to the GitHub page for the app, where you can authorize it for all your repos, or just for some:

Once you get back, click the “New Project From GitHub” button:

Select the project and click “Import”:

In the meantime, go into the main folder of mysite and add a package.json file with this content:

{
  "scripts": {
    "build": "hugo"
  }
}

This tells Now how to deploy the site.

When you get back to the dashboard, the new deploy should start soon, and you will see the site working live:

Note that in Now you have 3 URLs you can use to access the site:

  • myblog.flaviocopes.now.sh
  • myblog-alpha-swart.now.sh
  • myblog-git-master.flaviocopes.now.sh

You can choose the one you prefer.

Plus, each deployment has its own URL, too. In this case I had myblog-h8xks5jhn.now.sh but it changes with every deployment.

And of course you can add your domain, too. Zeit has a great service to purchase your domain directly from them, available at https://zeit.co/domains.

And if you prefer working with the command line, the now command lets you purchase domains from there, as well.

I highly recommend you check my Zeit Now tutorial.


I am writing a book on how to create a successful blog as a developer. I will be released late February.

Signup to my newsletter
to get 2/3 free chapters in your inbox in the next few weeks!

start-learning-from-your-competitors-by-user-testing-them

Use competitive usability tests to improve your own product.

Daniël De Wit

You don’t have to copy your competitors, or ignore them instead. By using two user testing methods explained in this article, you can see what your competitors are doing right and wrong instantly to start learning from them.

When I started my career in UX, people were always telling me how they liked this function at service X that they had used or seen. Then they asked me to copy it. That made me feel bad, because it was basically like stealing work from other people.

Other people were telling me that I should never even consider copying functions from existing services, because the fact that it worked for them did not mean that it would work for me. But that also felt wrong, because if someone else had already spent time inventing the wheel, why would I try to do it all over again?

For a long time I didn’t know what to do with this. I copied some functions other people had already made, trying to see if that would work for me. I also tried to come up with new stuff that no one had ever done before, trying and see if that would work.

That was until I started to do competitive usability tests. And it worked really well. I had already done my fair share of regular usability tests. So I knew how to come up with a hypothesis, make a user scenario, set up a user test and collect results to analyze and report. Doing this with competitors was easy.

One thing that is really important to know when it comes to testing with your competitors is that you should be collecting comparitive data. You’re always collecting data when you are doing a usability test, but this time you need to be able to compare the data from a competitor with the data of your own service.

When I started testing competitors, I had the luck that my colleagues pointed me in the right direction. We had mapped main functions in the website of our client and two important competitors as a benchmark, and we were wondering what these functions were worth. But we also wanted to have some statistics that we could show to our client in order to convince them.

So in the usability test, I asked users if they could try and find these functions in the websites of our client and their competitors. For every user that could find a function on a website I would add a point to that website. After five tests, I could calculate the exact scores for every website, and compare them to each other.

This technique is called a traffic light usability test. There are a number of ways to use these kind of usability tests. You can also look at how long it takes a user to perform an action for example, to measure and compare how hard it is for a user.

So far I have tried two kinds of competitive usability tests, and they both worked really well for me. I will explain for each of them how they work and when you would use them to do research on your product or service.

The first test is used for when you need to find out how your product is performing compared to its competitors. You want to know how far ahead or behind you are compared to other products, or you want to know where your focus should be. I had the following hypothesis in my case.

My marketing website about my kitchen store has a lot of functionality compared to the websites of my competitors, but a lot of users still choose their services over mine. I think their functions are easier to find compared to the functions on my website.

Preparation

To test this hypothesis, we began with a list of all the functionalities on the website of our client and those of two competitors. We didn’t think it would matter if there were functions on our list that were not on the website of our client. If they were on the website of competitors, we still wanted to know if users could find them and why.

Next, we chose two competitors that were most relevant to our client. There were actually a lot more competitors, but we couldn’t make users look at all of them, that would simply have taken too long.

We also set up screen-recording and eye-tracking.

Testing

We invited five users for our tests. We explained to them that they were going to get a list with functions that they needed to find on three different websites.

Because we didn’t care about how long it took them to find a function, they did not have to follow any particular order. They could just browse the website like they would normally do, and tick off any functionality on the list they came across. While they were browsing, we asked if they could tell us what they were doing and why.

After looking at each website, we made sure our users checked the list one more time to see if they didn’t forget any functions. We recorded their answers digitally, so we could easily collect the results in a spreadsheet and calculate the scores.

Analysis

We looked back at our eye-tracking and recording data to see what users did. Often, users told us that they found a certain functionality while they found something else. Or they told us that they did not see a function, but their eyes actually went over it. In that case it probably just didn’t seem interesting to them at the time.

Because we had recordings we could rewatch the tests later to see if users checked off any functionalities incorrectly. Knowing about this was vital information because it told us something about why they could not find certain functions.

Results

In the end, we had three scores for every website that we wanted to compare. We knew which website performed best, which functions were easy to find, and which were not. But most importantly, we knew why functions were hard to find because we asked the right questions and analyzed our recordings.

We were able to confirm that despite our clients website having more functionality, the functionality on the websites of competitors was easier to find. But more importantly, we were able to tell why those functions were hard to find.

We discovered that functionality was scattered across the website of our client, while competitors offered their funcionality in organised flows, resembling the way people find inspiration for their new kitchen in real life.

We even discovered that men and women prefer different flows when it comes to buying a new kitchen. While men want to start planning and visualising, women are more likely to look for inspiration and respond to personal style.

The second test is for when your competitors are offering a functionality that your website does not have, and you want to know if your users could benefit from this functionality on your website. In my example, where we wanted to check if product reviews would be relevant to our users, I had the following hypothesis.

My pet food webshop does not enable users to leave reviews and read reviews of other people, but other pet food webshops do offer this functionality to their users. I think my users will also be interested in this functionality.

Preparation

Normally when you would like to test a new function, you would need to build a design or a prototype that users can see and use before they can tell you anything insightful. But when your competitors already have similar functionality that you can access, you can just use that to show to your users in a usability test.

In my case our client gave us a list with competitors that offered similar webshops. We chose two competitors that had the product reviews we wanted to test, and where those product reviews worked well in our experience.

I also set up screen recording and eye-tracking.

Testing

I asked five users to take a look at product pages on each website, and decide whether they would be interested in buying the products offered on those pages. I did not explicitly tell them to look at the reviews, because I wanted to know if they would focus on the reviews by themselves.

For comparison, I also added a product page at the webshop of our client for users to look at, but without the product reviews. That way I could see how users would react if there were no product reviews, in contrast to the product pages with reviews.

During each test, I would ask users what they were looking at, why they were looking at it, and how it influenced their choice in deciding to buy a product. After each test, I would only ask users to fill out one quesion: Would they be interested in buying the product, and why.

Analysis

Often, their choice didn’t stroke with what their behavior showed according to the scores, eye tracking and recordings. But when they were asked to choose, they opened up and started telling more because they thought they were given control of the research.

Tricking your users like this can bring you insights that you wouldn’t have been able to expect. This way you can find out what else you can look into for new research. Or you can come up with new unexpected concepts you can now also test.

When I was done testing, I could see on which pages my users most likely wanted to buy a product. By looking back at the questions I had asked from my notes, the sceen recordings and eye-tracking data, I could see that users almost always looked at the reviews if they were present.

Results

I found out that most of the time users didn’t base their choice on the product reviews primarily. But they still looked at the reviews for a number of users. They wanted to see whether their own choice would be confirmed by other users, or whether there would be positive reviews from users who had a pet animal similar to theirs.

But sometimes my users would tell me they didn’t think reviews were relevant to look at, because they had already been advised by their vetirinarian to buy a specific product for a disease of their pet. In the test however, those users still looked at the reviews because they found the reviews entertaining to read.

The users also told me what they liked about the presentation of the reviews on the product pages. Some aspects made things more clear to them, while others were disturbing to them.

So after the test, I could advice our client not only about the relevance of product reviews to them, but also about how to implement this feature. Even though I hadn’t designed or prototyped anything myself.

When I started my career in UX, I didn’t know about competitive usability tests, or even about usability testing in general. Because of that, I also didn’t want to feel bad because of looking at competive products and copying their functionality.

But now that I do know about these techniques, I know how to learn from competitive websites and I have found a way to tell clients exactly what they should and should not copy.

I hope that you, after reading this article, also know what to do with competitors and you can really start learning from them instead of just copying functionality that your clients have seen and like.

If you have any questions about these kind of usability tests, feel free to ask me and I’ll try to answer as best as I can. If you still think functionality of competitors should never be copied and have good reasons for this, I’m also welcoming you to let me know by commenting.

should-you-start-a-creative-agency?


How to Decide if You Should Start a Creative Agency

Starting a creative agency is not something that most people have the stomach for. There are crucial hiring and marketing decisions to be made, important cash flow and time management issues to figure out, and (since you’re human) the inevitable flood of self-doubt the moment any of the above goes awry.

Spoiler alert: It will.

For most people, the decision to break away and make it on their own follows many years of freelance work or climbing the ladder inside of other organizations, and brings with it a whole new world of opportunities and challenges. In our Agency Founder Series, which delve into the backgrounds and beginnings of some of the most accomplished creatives working today, we ask each person a simple question: “What made you decide to start your own agency?” The answers differ in their deliberations and details, but the journey from seed to sprout usually follows a familiar pattern.

With that in mind, we’ve rounded up four questions you should ask yourself before deciding it’s time to start an agency of your own.

1. Why do you want to do this?

Identifying your why is the first step in figuring out how to achieve your goals and create the life and career that you want for yourself. As German philosopher Friedrich Nietzsche once said, “If we have our own why in life, we shall get along with almost any how.” There’s no record of Nietzsche’s own why for growing a mustache so flamboyantly large that it’s rumored to have scared strangers who saw him on the street— but sound advice nonetheless.

A common thread among the founders we’ve spoken with is that each one has had a strong belief in themselves and their ability to succeed on their own — no matter how overwhelmed and underprepared they may have seemed to others at the time. For some, being young and naïve was actually beneficial in their decision to start their own agency. “We thought starting a business was a bit like traveling around the world — do it while you’re young because once you start having kids or a demanding career, the time and money are hard to find,’’ says Kristen Morrison, one of the founders of Red Six Media.

Gravitywell founder Simon Bos was blunter in assessing his decision making process: “After a year of work in the real world, I arrogantly assumed that I could do a better job of running an agency than the people who were actually doing it. Not surprisingly, the first few years were the hardest!”

Not everybody has the wherewithal to start a business when they’re young and inexperienced, however. For most people, the decision to start their agency came only after gaining years of industry experience and making valuable connections. “I’d been in the agency world for more than a decade, and the most frustrating part was not being able to control the quality of your own work,” says Anton Zykin, co-founder of Clay. “Things would get rushed, clients would often change their mind, etc. I grew tired of it and decided to start a new kind of digital product agency, one that focused on quality and craftsmanship.”

Here’s the bottom line: Your “why” is just for you. If you can’t think of at least one solid reason why it would be a good idea to upend your personal and professional life and try to make it on your own, you’re never going to have the discipline to stick with it for the long haul. Save yourself a lot of sleepless nights and heartache if this isn’t something you’re 100% sure of.

The Gravitywell team putting the whiteboard to good use. 

2. How will you bring in new business?

So you’ve quit your job, found the perfect space for your new agency, hired your staff, bought a ficus for the new office (hell, maybe you bought three ficuses for the office ???), and now you’re ready to hit the ground running.

Just one little problem. Who’s going to hire you?

A 2018 WordStream survey found that attracting new clients is overwhelmingly the top challenge facing creative agencies today. That’s certainly true for the majority of founders we’ve spoken with, as many found themselves barely scraping by in those early days, or forced to take on work that was out of their comfort zone. “People knew us, but nobody had heard of Clay. Instead of giving up, we doubled down on our marketing activities, which ultimately helped us a lot. We were also very aggressive in how we priced projects, trying to get as much work as possible to stay afloat,” says Zykin.

“Our first two years were hand-to-mouth,” recalls Ronnie Duncan, one of the founders of Meerkats. “We had to keep our egos in check as we attracted project-based, entrepreneurial-style clients with resources well below their ambitions.”

For others, though the transition from working for someone else to working for themselves went about as smoothly as it possibly could have. “There is definitely a slight weirdness when you’re used to having a 100 person agency behind you, and then suddenly it’s just you. We tried to communicate to the market that, despite our size, we were experienced leaders and a safe pair of hands,” says Adam Morris, co-founder of Today. “People love to share in the story of stepping out, taking some risks, and starting something new. We were genuinely surprised by how many people wanted to support it and be a part of it.”

Nick Ellis and Vern Edmonds add, “When we started Halo we didn’t have a single client, and no clue what we were doing. But we knew we could make it up as we went along and wing it until we figured it out. We were also stupid enough to believe that was true.”

Here’s the bottom line: Starting a new agency is hard work. You have to dig your heels in and get after it during those first few weeks, months, and even years if you’re going to survive. To quote a misquote often attributed to Abraham Lincoln: “Great things may come to those who wait, but only the things left by those who hustle.”

The wall of knowledge at the Meerkats office. 

3. How will you address your weaknesses?

Everybody makes mistakes

Everybody has those days

Everybody knows what I’m talkin’ ’bout

Everybody gets that way

Everybody makes mistakes

Abraham Lincoln spoke those words at the White House in the summer of 1864 to the One Hundred Sixty-Fourth Ohio Regiment, who were on their way home from the front lines of battle.

Just kidding.

Those are lyrics from the opening verse of Hannah Montana’s “Nobody’s Perfect”, a song by a fictitious television pop star, who would later catapult (wrecking ball?) her way to fame as a real-life pop star.

As a matter of fact, nobody is perfect. When you start a new agency, whether on your own or with partners, your responsibilities grow exponentially. There will be things that you love doing and be great at (e.g., long-term strategy) or loath and suck at (e.g., anything HR-related). “In the early days, I was not a good manager. My background was in freelance, and I was used to working with other freelancers without much structure. So when I started Ueno my plan was just to hire good people and let them do their stuff. It took me a while to figure out that we needed to be more structured if we wanted to scale up to the level where we want to be,” says Halli Thorleifsson. “For the record, I’m still not a great manager, but I think I’m improving.”

Most of the founders we’ve spoken with were able to recognize their weaknesses early on, and either set out to improve them or handed off the responsibility to someone better suited. “Starting an agency is relatively easy, but sticking it out for years (decades even) means consistently going the extra mile,” says Andrew Hoyne, founder of Hoyne. “Recognize that you’re not that great, but if you stay hungry and work your guts out, perhaps you will be one day.”

Here’s the bottom line: You won’t be great at everything right away (or even good for that matter). That’s okay. As long as you stick to your strengths, acknowledge your weaknesses, and aren’t afraid to delegate responsibilities to your team, you’ll be doing more than most.

The team at Ueno gather around for (the last) supper. 

4. Is now the right time?

Unfortunately, there is no hard and fast rule to live by when it comes to starting your own creative agency. There may not be an “aha” moment for you—no light bulb will appear out of thin air above your head, no swelling of music before your triumphant declaration, and no bat signal in the night sky signaling that duty calls.

Some of the founders we’ve talked to felt that they’d simply outgrown their lots in life and it was time for something new. “We were too ambitious and curious to carry on working for someone else, and we craved variety and felt the need to take control of our own future,” note Will Pepperrell and Ben Richardson. “It was a brave leap forward, but we thought we’d gained enough essential experience and that we had all the tools we needed to start Stepladder.”

For others, the decision was collaborative and well thought out. “Validating your ideas means you need human interaction. If starting up feels lonely, you probably aren’t speaking to enough people. Get experienced friends, people you’ve met on forums, consultants, family, etc. that understand your objectives and are able (and unafraid) to give you constructive criticism,” recommends Jonathan Smith of Catch.

Perhaps Justin Tan, co-founder of Turtle, sums it up best: “Ultimately, we asked ourselves, ‘What’s the worst that can happen?’, and there really wasn’t an answer that scared us!”

Here’s the bottom line: While everyone’s experience is different, there will be a moment when you look around at your life and your career and you realize that starting your own creative agency is not such a far-fetched idea any longer. The decision is yours whether or not you choose to act on it.

To find out more about what it’s like to run your own agency, straight from the mouths of the people who are actually doing it, check out the full interviews at Agency Founders Series.

If you’re interested in a simple, fast, and visual resource planning tool for your team, try Float free for 30 days.