Improved Artifacts; Like Dinosaurs, But Cooler

Dan Buch,

Dan has been a long-time contributor to Travis CI, including not only our Go support, but also features within our cookbooks, as well as how we originally supported uploading artifacts after a build. We're very honored to have him not only help us ship this feature, but also write this blog post, which I'm sure you'll all enjoy. ~ Josh Kalderimis

If the builds you're running on Travis CI produces artifacts, you'll no doubt be thrilled to hear that we want to make saving these artifacts super easy for you.

The first supported tool for doing this was travis-artifacts, a handy gem-installable tool for shipping artifacts to Amazon S3. This was a great start, and solved the immediate need, but we knew we could do better.

Among the problems we hoped to address were the lengthy installation process of runtime dependencies and the lack of first-class support in one's .travis.yml.

What we ended up building comes in two parts. First, there is a binary executable called artifacts. This binary may be downloaded and used directly by following the installation instructions.

In addition to this binary, an artifacts addon was tacked onto travis-build so that you can use it via your .travis.yml. More details are available in the docs, for example, all you need is to add the following to your .travis.yml:

addons:
  artifacts:
    bucket: my-special-bucket
    key:
      secure: SyaIXy6OKDaYiew+...5vgAldy3jkmKA=
    secret:
      secure: X19eaiiFZobD3uCk...X8cY+ohT8WkQ0=

And you should then see at the bottom of your log:

Artifacts upload in
action

The above screenshot is from travis-build.

You can also set ARTIFACTS_KEY and ARTIFACTS_SECRET environment variables via the repository settings in order to keep your .travis.yml more slim, for example:

Artifacts env vars in repository
settings

Setting such environment variables would reduce the valid addons configuration to the following:

addons:
  artifacts:
    bucket: my-special-bucket

By default, any files found using git ls-files -o within your repository directory will be uploaded to S3. If you want to upload a different set of files, you can specify these using the following config:

addons:
  artifacts:
    # ...
    paths:
    # arbitrary shell commands are supported, but the output should be
    # converted to a ':'-delimited string.
    - $(ls /var/log/*.log | tr "\n" ":")
    # singular paths work fine, too
    - $HOME/some/other/path.log

We have some great improvements in the works to make artifacts even better, but consider this the first of many.

We're looking forward to hearing what you think!


Berlin Coffee Office Hours on September 9, 2014 at Silo Coffee

Mathias Meyer's Gravatar Mathias Meyer,

It's a well known fact that the Travis CI team is very appreciative of great coffee, and that we love sharing our enthusiasm. We also enjoy meeting our customers and chat about all things continuous integration, shipping, production and, of course, coffee.

We love combining those things into an opportunity for you to grab a coffee with and on us, and to have a little chat in a relaxed atmosphere.

Next week, just before Josh starts his journey back to the southern hemisphere, literally dozens of timezones away, he'll be stopping by in Berlin for a few days.

Next Tuesday, September 9 2014, we'll be hanging out at Silo Coffee, one of our favorite shops in Berlin, in the morning hours from 9:00-11:30 (okay, maybe even longer than that, it's kinda our second office).

Coffee is on us, so do come by for a chat and a cup of the greatest coffee around. Hint: they're serving the greatest breakfast at Silo Coffee as well!


10 Things I Do Every Day To Stay Productive

Mathias Meyer's Gravatar Mathias Meyer,

I used to be a very chaotic worker, embracing the unpredictable nature of every working day, piling things on my plate, jumping on emerging problems, tasks or questions right away.

About a year ago, I grew frustrated with my personal lack of progress and by feeling overworked because I started my day chaotic and because it had an open end, sometimes having me sit in front of my computer from 9:30 in the morning until 23:00 in the evening.

Towards the end of the year the frustration grew into unhappiness, which made me realize that I need to change my habits, to restore a certain work life balance to become a happier person again.

Here are the steps that I've taken since then that not only restored my personal happiness, they've helped me be more productive.

Plan your day, plan your week

Without the slightest idea what I'd do on any day, without a plan, I found myself unhappy because I didn't feel like I accomplished anything. I may very well have done and shipped things during any particular day, but it was usually so busy that I forgot what it was by the end of the day.

Now I sit down every Monday to think about what I want to achieve that week, and every day I decide on three things I want to get done that day.

Having a list of these helps giving focus to anything you're doing that day or week. If you're doing something that's not on your list, that's not necessarily a bad thing, but it should give you more insight for planning the following day.

Keep a notebook

The written word is powerful, even more so when you write something down with your own hands. Whenever something pops up in your head while you're focusing on a task, write it down.

When you sit together with someone to discuss something, write down the results.

You can use your computer for these things too, but the nature of having lots of application to call for your attention even while you're typing has the potential of distracting you from dumping your thoughts or, even worse, away from the people you're meeting and discussing with.

A notebook literally keeps people on the same page, it's the least possible distraction, and whenever you're discussing a relevant topic with someone, writing down your takeaways shows that you care.

Read every day

I like devouring books. I don't read a lot, but I try to finish a book every two weeks or so. I find great inspiration in them for life, work, productivity and for my own writing.

Throughout the day, I found there's less and less time to focus on reading until the evening, when being tired quickly overwhelmes my ability to focus on a book.

So I implemented a habit to read first thing in the morning. Right after I get up, I make myself a cup of coffee, grab my Kindle and read for at least 30 minutes, ideally 45.

This made a big difference in my reading habits, allowing me to read some 20 pages every day, helping with my reading addiction.

Block out a big chunk of time in the morning

I do my best work in the morning hours, until around noon. Distraction increases as more people wake up, come online, support tickets come in and general chatter in our team chat room increases.

Plus, I know I'm not a night owl and that working late hurts my health and my productivity the following days.

I used to check email first thing in the morning and I felt drained after going through them, almost unable to start focusing on an important task afterwards.

Now I do my important, creative work in the morning. Whether that's writing a blog post (like this one, written before 10:00 on a Monday morning), cranking out code, or thinking through a problem, I tackle those first thing in the morning.

I've gone as far as making this time a block in my calendar, that's reserved just for myself. That means I can't get invites for this block, and people see that I'm busy. Most things that call for an appointment can wait until noon or the afternoon hours.

Ideally, during this block of time, there's no email contact, no Twitter or Facebook open, even instant messaging and team chat is closed to reduce distractions. As a bonus, shut off your phone (gasp).

Process email twice a day, only at specific times

A mentioned above, email is my personal impediment of being productive. Leaving an email client open is a continuous trigger of stress but also excitement whenever you get a new email.

Initially I only allowed myself to read emails after noon, 12:00 being the first time I was able to open it. I still found myself leaving my email open and continuously checking it in the afternoon hours, affecting my ability to focus.

I've adjusted this to give myself two timeslots throughout the day explicitly meant to process and empty out my inbox. They're marked in my calendar with a reminder, giving me more ample time to focus on other things but also specific times to focus solely on email.

Go for a walk or a bike ride

When you sit in front of your computer for 12 hours every day, it's not just creativity that's suffering, it's your body's health too.

At some point, while taking a walk, I realized that after walking for a few minutes, my mind frees up from what's kept it busy before, starting to let random thoughts flow more freely.

I have a daily habit of going outside for either a walk or a bike ride. I don't count it as exercise, but more as a means to free up my brain to focus on the important things again when I'm back.

Disable Push Notifications

Push notifications are really push interruptions, adding a pile of buzzing noise to your already ever-increasing pile of distractions. Apps scream for your attention, of which you already have little to spare.

Most of these notifications are irrelevant to your daily work. They're friends liking your photos, sending you messages, uploading their own photos, or sending you food pictures of questionable quality.

Ask yourself which ones are really relevant to your day to day. Do you need to respond to a new chat message immediately? Do you need to pick up the phone while you're busy or conversing with someone just to see what's been happening?

Your addictive mind tells you that you do. Your rational mind tells you that you don't.

Try to listen to the rational part and disable all push notifications except for the real essentials. For me the latter is only new iMessages (of which I don't get a lot) and production alerts. When you're on call, every additional push notifications from another app adds to the noise in which a real production issue can easily drown.

Better yet, turn on "Do Not Disturb" mode.

Write a journal

For the last two years, I've been writing a journal of my every day. Sometimes long posts, sometimes only short glimpses into what I've done on any particular day. Since then it's evolved into something where I keep notes on my daily routines, how I'd like to improve them, links to articles with my thoughts added or notes on books and complete reviews on them too.

This has helped me realize and improve a few things. First, actively thinking about what I've done on a particular day helps me realize if I've done anything at all, what I haven't done and what I can do better the next day or the next week.

On the flip side, it's a creative outlet. I enjoy writing a lot and have also found that writing about a problem that's on my mind helps me form my thoughts and opinions on it, whether it's related to my personal or work life, or if it's about our company, the team and how we work. All that ends up in my journal. I've been using Day One for my journal with great joy.

Close all browser tabs at the end of the day

Don't you just hate it when you have a ton of tabs open in your browser all the time with things that you want to read at some distant point in the future? Me too, so I never let that happen in the first place.

My browser gets closed before I shut my computer, and so do all other apps that would immediately call for my attention the next day, team chat, Skype, instant messaging, Twitter.

When I want to read something later, it goes onto a separate list in my Wunderlist.

End the day at a reasonable hour

Working from home, the line between life and work is very blurry. I found this to add to my personal stress levels and to affect my ability to focus on a task.

So I started implementing official end of day hours. No more computering, internetting or work-related things after that, only family and my personal business.

I started setting my end of the day at 18:30.

These constraints have more benefits than reducing stress. When you set yourself a specific time window when you can do your work, you aim for using that time in the best and most effective ways you can find. It forces you to adjust your work behaviour during the day to get the most out of the hours you have.

How do you force yourself to end the day at the same time every day? Easy, set a calendar entry with an alert 15-30 minutes before so you can wrap up what you're currently working on.

Bonus: Take a real vacation

A few weeks ago I went on a trip to France with my family for three weeks. Initially I thought I'd work a few hours a day to make up for the time I'm away.

Over time I figured that way it won't be a real holiday. My mind will be busy with work things and unable to fully rest and recover.

So I instead decided to be offline for the entire time, not reading emails, not reading Twitter, posting nothing on any social sites.

Instead I focused my time on my family, on the ocean and reading lots of books. Thoughts on work-related topics came up every now and then, but I tucked them away in my journal to clear my head.

A vacation isn't a real vacation when you're still in contact with your work. You need to switch off completely to fully recover. It's something that's so hard to imagine these days, yet it's so good for body and your mind.

Structure and routine increase productivity and happiness

Structuring your day into chunks can be a scary and unfamiliar thing to do, especially for a remote worker where your team is spread out across multiple timezones. But it pays off manifold for both your own productivity and happiness.

Increasing your productivity and happiness is a gradual and a learning process. Just like we're flexible in the tools and processes we pick to get our work done, personal productivity should be subject to review regularly.