Marko Anastasov wrote this on January 22, 2020

The Semaphore Guides to CI/CD

When you’re in a field for a long time, you start to believe that what you’re doing is common knowledge.

As the first ever blog post here shows, Rendered Text has been doing test-driven development for ten years now. We were also doing continuous delivery, deploying to production multiple times per day. We knew that we were ahead of the curve; the Ruby on Rails community was by far the most progressive. Surely by now this would be commonplace?

Not so fast.

Here’s the thing: over 50% of all software developers today have learned to program less than 10 years ago, as reported by StackOverflow. Over 40% have less than 5 years of professional experience. The number of newcomers is larger than the number of seasoned professionals. The task of preserving the craft across the industry is not trivial.

There are more people who are yet to learn a software development process such as continuous delivery, than those who have mastered it.

This is what led us to take some time in 2019 to write concise, modern guides to continuous integration and delivery (CI/CD). They reflect our own, as well as the experience of serving thousands of customers of a hosted CI/CD service.

Continuous Integration (CI) Explained: Shows how the process works, the reasons it exists, technical prerequisites, benefits and best practices.

CI/CD Explained: Describes the full-circle process for effectively delivering software from code to production. Covers the principles, example workflows, relation to DevOps, and provides a roadmap for adoption.

CI/CD Pipelines: A Gentle Introduction is all about the practical aspect of delivering bug-free code at high velocity. Automation is not enough, and this article goes in-depth of what a productive code pipeline looks like.

The best way to stay up to date on Semaphore’s CI/CD articles is by following @semaphoreci on Twitter or subscribing to the weekly newsletter.

Ivana Urošević wrote this on November 1, 2018

The First Customer Service Meetup in Novi Sad

As our customer success team grew, we recognized the need to meet people from the same field to share experience and knowledge, get to know each other better and, most importantly, create a community. Meetups are a great format for pulling a community together, so in September we organized our first customer service meetup in Novi Sad.

First Customer Service Meetup in Novi Sad

The meetup was in the form of a panel discussion with three speakers - Petar Atanasovski from MVP Workshop, Miloš Jević from ActiveCollab and our very own Filip Brdarić. The whole conversation was moderated by our colleague Sonja Samardžić, and the meetup was coordinated by Ivana Urošević.

During an one-hour discussion, the speakers talked about the importance of being customer service-oriented, the most interesting situations they’ve encountered, their teams' goals, and the future of customer service.

First Customer Service Meetup in Novi Sad Talk

After the panel discussion, visitors had many questions for the speakers. They wanted to know how customer service teams can measure how much they contribute to company revenue. We also talked about the most important thing to look for in candidates at job interviews. All three speakers agreed that the key thing for someone to be successful at customer service is having empathy.

Filip said that empathy, along with the desire and willingness to help users are the most important characteristics his team looks for in a candidate. Petar added that technical knowledge and English fluency are also crucial for their team. Miloš agreed, and added that English fluency is the first thing they test when selecting candidates.

First Customer Service Meetup in Novi Sad Questions

At the very end, everyone was mingling, enjoying snacks and drinks, sharing their ideas for future meetups, and getting to know each other, which means that our mission was accomplished. :)

First Customer Service Meetup in Novi Sad Mingling

We’re looking forward to building the Customer Service community and meeting fellow customer service enthusiasts again very soon!

If you’d like to keep up with the news about future Customer Service meetups, join our Customer Service Meetup group, and follow @RenderedText on Twitter.

Marko Anastasov wrote this on July 31, 2018

Semaphore 2.0: Unleashing the full power of CI/CD

Last week we launched Semaphore 2.0, our new cloud-based continuous integration and delivery (CI/CD) product. Featuring fully customizable pipelines and a whole new look, it represents the next step in our mission to enable all developers to build great products at high velocity.

Every year or so, hardware companies have the opportunity to design a new device from scratch. In SaaS, continuous deployment allows us to deliver updates to customers several times per day. So the default approach is to add new things to the existing base. Reduction is so difficult for technological and social reasons that it’s rarely done.

Six years after introducing Semaphore, we thought that we’d come up with a far better product if we took everything we’ve learned along the way and designed a new one without restrictions. If you ship code, we think you’re going to love it.

You can apply for an early invite today.

Marko Anastasov wrote this on July 2, 2018

Photo: team retreat at Balaton

At the end of May the Rendered Text / Semaphore team went to a three-day retreat at lake Balaton in Hungary.

Rendered Text / Semaphore team in 2018

In the past 18 months we’ve become an increasingly distributed and international company. In that context, team retreats become an essential part of operation. You can certainly perform the work and communicate with your immediate coworkers remotely without any issues. But only through face to face time we can create a deeper connection.

Balaton is a beautiful place. We visited at a point when the weather was just right to spend all time outside, do yoga on the water on a paddle board, or jump into the (huge) lake. And the tourist season hadn’t started yet, so everything felt very relaxed and cozy. Good times.

Marko Anastasov wrote this on June 5, 2018

Who we're hiring, June 2018 edition

It’s an exciting time to join Rendered Text as we’re in a transition on multiple levels:

  • From office-based to a fully remote work environment. Right now a third of us are working remotely from 7 countries.
  • From people usually wearing many hats to specialized teams with dedicated and autonomous leadership.
  • From scaling up a proven product to building new things.

This is who we’re hiring at the moment to work on Semaphore:

  • Customer Success Representative: build strong relationships with our customers and contribute to product improvements and revenue growth.
  • Head of Marketing: lead strategy and execution, scale up the team, and take our marketing to the next level.
  • Head of People Operations: ensure that Rendered Text is always an environment in which smart, ambitious people can do their best work and grow professionally.
  • Technical Support Engineer: provide first-class service and tech support to our customers (that is, awesome DevOps engineers and developers across the world).

All positions are remote, and because of time overlap we’re considering candidates based in Europe.

If you see yourself in any of these roles, please get in touch. If you know someone who’d be interested, send them the job page.

We also announce on Twitter — @renderedtext or @semaphoreci — when we have a new job opening, so make sure to follow us over there for real-time updates.

Marko Anastasov wrote this on May 30, 2018

Public speaking tip: one slide per minute

Marko spoke at the BalkanRuby conference last week about his experience working on Ruby Bench. In an internal post on our message board:

At first, while preparing my slides for the talk, I wanted to go out there with up to 7 slides for a 30-minute talk. I knew that I have enough to speak about the project round and round. Darko advised me not to show up without a minimum of 20 slides, because I would awkwardly finish my talk in less time than allocated by organizers. Which is, yeah, awkward. [That] saved my ass. I wasn’t actually aware how different it is when you speak to one person, comparing to talking in front of an audience of unknown people 🙈. I had 20 slides prepared with a lot of points. These were really helpful to guide me throughout the talk. You must have a lot of them.

Marko Anastasov wrote this on May 28, 2018

Rails Testing Handbook

A new ebook on building test-driven Rails apps with RSpec and Cucumber.

At Rendered Text, we have a long history with Ruby on Rails. Checking the blog archive reminds me that we published first posts about working with Rails way back in 2009.

Many years and thousands of lines of code later, I’m proud to announce that we’ve published our first ebook. It’s called Rails Testing Handbook and it distills the essence of building Rails apps with tests, doing continuous integration and collaborating via pull requests. It’s the workflow which has served us well over the years, most notably in creating and scaling Semaphore without losing our minds.

Early reader feedback has been overwhelmingly positive. Some lead developers have shared that they got a few new tricks from it. Newcomers said that the book has helped them finally understand behavior-driven development (BDD).

So if you’re working with Rails, I encourage you to download the book — it’s free! — check it out, share it with your friends and send us any feedback you may have. Enjoy!

Dunja Radulov wrote this on January 24, 2017

Semaphore Winter '16 Hackathon

The end of each year is a time to make plans for the following year and get inspired to work on new and exciting things in the year ahead. In December, we decided to organize a Semaphore hackathon for the entire company to celebrate the end of 2016 by getting creative.

People pitched their ideas and others voted with their feet by joining the projects they were most interested in. We split into multidisciplinary teams that had three days to capture new ideas and have fun making them a reality. Keep reading to find out what are the projects we came up with, what we learned working on them, and what are some of the outcomes of our first internal hackathon.

Semaphore 2016 hackathon at Rendered Text

Improving the Semaphore SSH session

Team members: Ervin, Igor, Marko, Milan, Milica and Sneha

The Semaphore SSH session proved to be a popular asset for debugging builds and deployments. From the start, there were things we wanted to improve, but the team was short on time, and these changes weren’t very high on our list of priorities, so our team decided to work on some improvements during the hackathon.

The most obvious thing we wanted to improve was the lack of contextual information, e.g. the build which is currently checked out in the session and time until completion. We decided to add a few extra touches which would provide this information right off the bat. Another pain point we wanted to address is copy-pasting the build commands into the SSH environment. The utility addressing this shortcoming is soon to be released.

Improved SSH session on Semaphore

We played around with a few other ideas which didn’t see the daylight, but the hackathon was a great team effort and bonding experience for everyone in the team.

Finding trends in support request messages

Team members: Milana, Marija, Filip, Nemanja and Jovan

Our team was interested in finding trends in support request messages sent by our users. For this purpose, we collected a set of our messages from Intercom, and applied various machine learning techniques to it.

We spent our hackathon time playing around with the messages, clustering them based on topic using different algorithms and trying out sentiment analysis on them. We mostly relied on Python and its rich machine learning libraries as our tools.

After three days, we ended up with a prototype which tracks the rate of occurrence of current topics and visualizes this with Kibana. The hackathon provided us with a wonderful opportunity to step outside of our everyday tasks and tools and develop ideas that otherwise might not have been considered worth our time. Combining this with a mini-vacation-like atmosphere, the entire event proved to be refreshing, fun, and a great prelude to the upcoming holiday season.

Making the TV great again

Team members: Marko, Nemanja, Nikola, Stefan and Misel

Our team looked around the office and asked ourselves, what is there that we can improve and make great again? As it often turns out, you don’t need to look far. There was a spare TV sitting turned off in the office lobby, so we decided to make it show a dashboard that would be fun and useful for everyone.

The Semaphore TV now shows things like a photo from the place our latest customer hails from, recent tweets to @semaphoreci, and a world map of recently active users. Best of all, it plays a different music theme every time we get a new customer.

On the tech side, we played with serverless architecture and implemented the dashboard and all supporting endpoints as microservices running on AWS Lambda. Recent support for running Express.js apps on Lambda has been very useful. Overall, it was a really fun experience!

Improving employee experience

Team members: Katarina, Milica, Filip and Marija

Our team had many ideas simming in their heads on what would help improve our employee experience, so we decided to work on two different projects.

We wanted to explore different employee engagement tools for a while now, so the hackathon presented the right opportunity to do so. For the first project, we created a new Slack channel named ‘Humans and Bots’, and picked three tools seemed most promising. We decided to test drive Leo from the Office Vibe, Polly chat bot and Captain Feedback. Each tool has different merits. We found the Polly to be the most engaging one. Polly is currently a free tool, and it’s easy to use straight from the start. It has predefined questions on ‘Team Happiness’, and you can choose the frequency of questions asked, as well as set your answers to be completely anonymous if you wish so.

The second project was to create a simple static site for our internal use with interesting links for the team and a Google form questionnaire on team happiness. This was a fun project to do, and it included some coding. The content included were useful slideshares, interesting books to read, and links to events to attend. All in all, the hackathon was a great learning experience and a nice opportunity for teamwork.

The path to TDD enlightenment

Team members: Nemanja, Tamara, Milica and Dunja

Since we had a multidisciplinary team including a developer, a designer and two marketers/editors/writers, we decided to use our combined skills to create an interactive experience (i.e. a game) that plays with the pitfalls of software development and the true path of TDD.

The Path to TDD enlightenment game

The game puts the player in the shoes of a developer chosen to lead a team cleaning up a tricky project, an app left behind by a developer that’s rumoured to have gone insane. The code is complex, unreadable and ridden with bugs, and the deadline is tight, so the player needs to use TDD and common sense in order to manage the chaos without spilling too many tears. Working on the game helped us remember and better understand why testing and TDD matter, and allowed us to get creative and have fun together as a team.

All in all, the hackathon was a fun experience during which we played with some new ideas, bonded as a team, and got energized for a creative and fun year ahead of us.

Browse Archive

If you like what you are reading, subscribe to our RSS. You can also follow us on @renderedtext for updates.


Rendered Text is a software company. For questions regarding Semaphore, please visit Otherwise, feel free to get in touch any time by sending us an email.