Three out of ten visitors to your website are malicious bots. Crazy, right? A report from Incapsula states that humans only account for 44 percent of website traffic. So what makes up the other 56 percent? Bots, mostly bad ones.

“Bad” bots are those involved in a variety of malicious activities such as taking down servers through denial service attacks, stealing data from servers, hijacking servers, spamming ads, and more. How can you defend your sites/servers against these bots? Through basic network security practices, including Intrusion Detection/Prevention Systems (IDS/IPS). Here’s some information on our setup, and how to install one yourself.

Incapsula report

2014 Bot Traffic Report by Incapsula

Read More →

Love technology? High school student in grade 11 or 12 or self-taught? Live in BC?

Hootsuite’s Engineers would love to help you develop your technical skills and knowledge about people, process, and technology by working with you over the summer. You’ll pair with a mentor and work at our Vancouver office side-by-side with a passionate, egoless team of Engineers having fun building something bigger than themselves. Experience what it’s like to make a difference in people’s lives by building the products that turn messages into meaningful relationships.

There are opportunities at Hootsuite in all aspects of Engineering including software (both mobile and web), operations, security, and IT.

This is a paid position with a competitive salary.

Application instructions are at the end of this post.

Passive learning creates knowledge. Active practice creates skill.James Clear

Photo courtesy of @jaimestein

Read More →

Hootsuite sends millions of messages to social networks every day. This is our bread and butter, so any unexpected errors sending these messages requires that we quickly detect, diagnose and fix the problem. For example, was it because of a recently deployed code change, or a change in behaviour on the social network? Logs are an invaluable tool for debugging issues like this in production, but without easily searchable information about the context of the error, we could find ourselves looking in the wrong direction.

r0r252VR6WqPRsxngGUE_telefoon politie

By Davey Heuser via Unsplash.com

Read More →

A year and a half ago, I had never written a line of code. I didn’t know what a class or boolean was, or how you’d go about turning an idea into an actual working application. Fast forward to now: writing and shipping software every day as a co-op Software Engineer.

What is most unexpected about my takeaways from my co-op experience? The most important lessons are surprisingly not related to a specific technology or tool. My biggest takeaways from this experience are more abstract than these tools: they’re ideas that have redefined my expectations of what a job should and can be.

Photoshop work for my first personal coding project

Photoshop work for my first personal coding project

Makers Unite

I was always enticed by the idea of creating things. As a kid I used to draw a lot. I loved playing around with Photoshop, making logos and designs for ideas I had. I even learned a bit of HTML to put some of these on the web. There’s an innate beauty in putting time and work into something and having a tangible result to show for it at the end. There’s also those amazing moments of just pure happiness working in that iterative process.

Most of my coworkers share this same passion – everyone here seems to have a side project or hobby that involves creation in one way or another. There are musicians, podcasters, writers, artists, cooking enthusiasts, photographers, app developers, beer reviewers; this constant creative inspiration makes for an amazing work environment.

Read More →

It can certainly be puzzling. I can’t see how the pieces fit together and don’t know how to solve the problem, but I can always count on finding some clues online. I learn the most when I discover my own solution to a problem. I refine my knowledge by observing the solutions of others. Time melts when I’m working away.

Was that last paragraph about Rubik’s Cubes, or computer programming? Read it twice and you might see how it applies to both. It may not immediately be apparent, but I will show you how lessons I’ve learned from cubing apply to programming.

Cubing

From my Lightning Talk on Cubing (click to view on YouTube)

There’s No Secret Knowledge

Knowledge is not hidden. It’s not in a library on the other side of the world. It’s not behind a lock and key. You don’t need to achieve a certain rank to gain access to it. Knowledge is everywhere.

Programming is retrieving knowledge and using it. As a co-op Software Engineer at Hootsuite, programming involves scouring the web for relevant Stack Overflow posts, and reading documentation on frameworks. Programming involves applying that general information to a very specific problem. This pattern of learning has been familiar to me long before I started programming: when I started solving Rubik’s Cubes in 2008. With no internet access through a smartphone, I carried three sheets of paper detailing everything I needed to know about the puzzle. These described 57 OLL and 21 PLL cases, and the algorithms to solve them. If I didn’t know a case, I’d look it up and use it. I learned that the world has answers for our questions, even before they’ve formed.

Read More →

“First day of your first job ever, no pressure”, said my mother. I was in a new city, going to a ‘big’ company and into a new role. That morning, I walked out of my apartment very excited and nervous, and promptly… got on the wrong bus (just like my sister predicted). Thanks, sis :|

Luckily, I’m overly punctual so I still arrived at the office an hour early. I walked inside a little tentative but soon relaxed because everyone was so welcoming. I began to feel at ease. Here I am, my first job and Hootsuite’s first IT Department co-op!

shameen-gill

Me & IT: Three Lessons

Like many 90’s kids, I grew up playing classic MS-DOS games which led me into being a computer hobbyist. As I grew up, I went through multiple phases, and it wasn’t until high school that I got the chance to reconnect with computers again. I learned that my school was offering a Java elective, and I was absolutely ecstatic to enroll in that course. This, ladies and gentlemen, was the beginning of a beautiful friendship with computer science.

Read More →

I’m sure you’ve had that sinking feeling in your stomach. You know, the one that hits you after you realize you are unintentionally responsible for something catastrophic … like your site going down right after you’ve deployed to Production. We’ve all been there. We’re all human, and we all make mistakes. In spite of our human nature, there’s a simple way to prevent disaster: checklists. Checklists are a wonderfully simple antidote to our own imperfections.

A checklist eliminates ambiguity and is a great way to ensure that you don’t forget the important parts of a task. Airline pilots use checklists as a standard during every stage of the flight to ensure maximum safety. Doctors use them as reminder of simple, routine actions that can be forgotten in a stressful situation: a simple checklist during major surgeries was found to improve patient survival by nearly 40% in a worldwide study. Software Engineers can use checklists, too – we use Git pre-commit hooks programmatically for peace of mind, to improve our system reliability and bolster our confidence about production readiness of our code.

Surgical Safety Checklist Example, British Columbia Medical Journal - June 2010, Taken from Flickr, CC All Rights Reserved

Surgical Safety Checklist Example, British Columbia Medical Journal – June 2010, Taken from Flickr, CC All Rights Reserved

Read More →

How do you support the ecosystem that supports you? By giving away your expertise.

This is the story of our Scala Study Group: an experiment in training and community building.

Scala Study Group

Tests vs. Types

Scala is our go-to language for our back-end services because it’s proven, reliable, and performant (and it’s really fun to work with). It’s a young language that is still gathering traction in universities, colleges, and industry so our interest was in trying to grow our local community of Scala enthusiasts through experiential education: free hands-on mentorship and social learning.

The Experiment

We ran the free Study Group using the “flipped classroom” model popularized by Khan Academy: students watch the videos at home and do the assignment in preparation for coming to our office once a week. To keep it simple, we opted to piggyback on existing course material and parallel Coursera’s Functional Programming Principles in Scala.

At each session, participants took part in group code reviews and worked through their challenges or the assignments in a group setting. They drove the questions and the agenda, and received guidance from their fellow students and their mentors: Hootsuite Scala software engineers who are actively writing code.

“Nice! I was signed up for the Coursera already. But now I am glad to find a bunch of folks to sync with!” – Johnny H.
Read More →

“An error occurred, please try again.” Hmm – PC Load Letter? This perfectly nondescript error message came up only in Production, and only in a specific scenario. What do you when faced with limited information and a bug you can’t reproduce locally?

This was my first significant challenge as a co-op student. Fixing it involved equal parts debugging tools, intuition, and continuous delivery. Today, I’m sharing how I reached the root of the problem and resolved it.

Default Template Error

Generic errors are the best

Read More →