- Taboola Blog
- Engineering
My First Time Running a Hackathon I’ve planned events before – but never anything like this 48-hour marathon spanning 200 participants across 3 continents and 2 time zones! When I was given the opportunity I was extremely excited, but at the same time somewhat anxious. Would I succeed in matching everyone’s energy and meeting their expectations? The task was daunting, but I took it slow and steady, step by step. First, I designed (with help from our talented graphic designer) a cool and eye-catching theme that would decorate all of our hackathon materials. Decorating slide decks, headers, banners, and t-shirts, our hackathon branding quickly became an R&D favorite. With the event only a month away, we held the official Taboola R&D Hackathon kickoff. Immediately, all of our participants – from engineers to designers to managers – began to gather in groups and cultivate project ideas. To encourage creativity and tech […]
I have not always worked at large scale companies such as Taboola. I have started my career in a small startup, where I was a full stack developer in a student role. As a first time developer, it was very important that I will be teamed-up with someone more experienced to learn from. Lucky for me, I was the only employee, working under the two founders – the CEO and CTO. Having a lot of one-on-one time with the CTO, working closely on bugs and features and discussing ideas, helped me improve my skills as a developer. Today, when I have more experience, I know how important it is to influence others who work with you. I try to spread the knowledge I have earned in the last few years, and help new and old employees as much as I can. In the day-to-day job, you mostly grow your skills […]
Discover the journey of creating synchronized analog clocks using microcontrollers. Learn about power-efficient design, NTP synchronization, and more.
A few years ago, one of my friends suggested me to become a cybersecurity teacher in high school once a week as part of a program called Gvahim. I have not planned that it will contribute to my professional career, but I find a lot of analogies to my day to day role. I hope you will enjoy a different angle of management 101 guidelines. Program overview The program’s goals were to increase the knowledge of high school students in cybersecurity and increase the number of girls who study computer science. For three years in the program, students studied about Assembly, networks and operating systems, with an emphasis on security. Unlike traditional materials learned in high school, the lessons in the program put an emphasis on self-learning. The first two semesters were dedicated to learning the theoretical background using self-reading and small coding exercises. The last semester of the […]
As a content discovery product, we need to be able to pace the campaign through its life on real time – spending the budget entirely without overspending. The team I am leading is responsible for serving Taboola’s video content. Our main goal is to enable growth of our business. Owning the entire serving process of the video content can be crucial to this end. Depending on 3rd parties serving systems with the core process would leave us vulnerable to rising prices, compromised features, serving latency, reduced performance and so on. In order to serve the video on our own we had to come up with a way to pace the amount of times we want to display the video and prevent instances in which the entire budget of the video would drain in a few seconds – common scenario in Taboola’s scale when the video is not targeted aggressively. We […]
In the following article, I describe how we came up with a way to improve the chances that our SDK library gets smoothly integrated in our customers’ Applications and reduce issues when going to production. The main idea is to take a number of significant clients’ applications and replace your existing SDK code with a new code, allowing you to see how the apps perform before you release a new SDK version. Why releasing a reliable SDK is so important Developing an SDK for mobile apps is very different from developing a standalone app. You can think of an SDK as a guest in someone else’s house. You need to behave, you can’t put your legs on the table or wipe your hands on the sofa (well, in most countries you can’t). So what I mean is that you can’t interfere with the app’s normal behavior, break some flows or […]
On our day to day lives, professional relationships matter. Theoretically, how QA should handle themselves with developers is very obvious. Or is it? Well, it’s not. Reporting to developers about an issue and leave it like that is not a good enough approach. It’s way too basic and distant. Professional relationship should include talking to the developer about the issue. Sometimes it requires further explanations. Other times, it will require helping them reproduce it. It will also have to involve a good set of interpersonal communication skills. “Us” vs. “Them” From the early days of my career, I never stopped hearing about the “Us” (QA) vs “Them” (developers) perception. I never joined those calls. Not because I feared to speak up my voice, but rather because I could never relate to it, even to this day. I think this perception is useless and has nothing to do with teamwork. The […]
About 8 months ago my team and I were facing the challenge of building our first Deep Learning infrastructure. One of my team members (a brilliant data scientist) was working on a prototype for our first deep model. The time arrived to move forward to production. I was honored to lead this effort. Our achievements: we built an infrastructure that ranks over 600K items/sec, our deep models have beaten the previous models by a large margin. This pioneer project has led the way for the subsequent Deep Learning projects at Taboola. So the prototype was ready, and I was wondering: how to go from a messy script to a production ready framework? In other words, if you are into establishing a deep model pipeline this post is for you. This blog post is focused on the training infrastructure, without the inference infrastructure. Prerequisites Assume you have basic knowledge in: Python […]
Delivering good product to live environment requires big effort from R&D. Under the software development life cycle, we can find 6 basic phases: Understanding the requirements, design, coding, testing, deployment (incl. A/B test, if necessary) and maintenance. But how can we measure product quality? By its stability? Scalability? Easy to maintain? Bug free code? There are probably many definitions for what is a good product, but in my opinion, the two foundation stones are product behavior & functionality as defined (be aligned with the product manager’s requirements), and zero critical bugs. The product can serve many goals, but if it doesn’t achieve the main one, it might not have a reason to exist. Naturally, customers are always expecting high quality from the product, so before releasing it to production QA should make sure that indeed critical bugs don’t exist. In order to respect these two, both R&D and QA should […]
Writing features as added chunks into an ever growing one bulk of code is unorganized and messy. Overtime, the tasks of testing new behaviors becomes harder and harder. Why is that? Chunky Code is hard to Navigate When working with developers on a new feature, we have to identify what we need to test. As the code grows, the challenge of finding the parts that were modified and should be tested is increasing. If a feature becomes problematic or irrelevant, reverting it becomes more difficult, since we need to go back to every line of code we changed. This way we endanger production environment and are affecting our end-users. Last but not least, it is irritating to impossible to manage when dealing with “legacy” code, that needs to be reverse engineered to find how to control. Coming to compare a buggy behavior with its intended fix or testing a new […]