At Buzzvil, we are keeping track of activities of more than 17 million user in more than 30 nations. Such activities include various screen-related activities, AD impressions, AD clicks, AD conversions and beyond. These data comes from multitude of sources and usually get stored in different types of databases ( MySQL, DynamoDB, Redis, and even S3). By having these data in a single storage, we were able to analyze cross-service and cross-platform metrics with ease.
Says on a funny/scary sticker a coworker gave me on my first day of work. Like the sticker said, my days at Buzzvil entailed plenty of server downtime and hard work, day and night, on weekdays and weekends. One year has passed and that one year has taught me a lot. In fact, I am still coding and learning but a little more better positioned to inform those interested in the start-up scene of what working at a Korean startup as a developer entails and what it takes to succeed there. I would like to take this opportunity to share things I experienced / learned / did right and wrong. If you take away a small “aha moment” or a click in your mind, I will be pretty flattered.
Honeyscreen, a key product of Buzzvil, serves not only ads which give reward point to users, but also various content. Users can see breaking news and hot content in their lock screen without opening social or portal apps. Likewise, serving high quality content to users is a very important task to solve to provide an improved Honeyscreen UX. To serve content efficiently, we focused on clustering content by category through machine learning. There are two approaches to cluster content: Clustering based on the semantics of content (i.e. body/title). Clustering based on the collaborative filtering. We are trying to solve the problem using various […]
One of the main products of Buzzvil is Honeyscreen which is a lockscreen rewards app. Honeyscreen users can get points by participating in advertisement campaigns on our lockscreen or offerwall, or by simply unlocking the device. Points can be used to purchase goods from the store. As this so-called “points system” is the core of this product, it is very important that we save accurate data about how many points a user has deposited and spent.
At Buzzvil, we have an internal ads serving product called “BuzzAd”. Its main role is to serve ads and content articles in a highly optimized way. Optimization can come in lots of flavors. At their core, however, all such approaches use some scoring model to rank candidates. Take, for an example, a scenario where the HoneyScreen application must allocate K (<= N) items out of a pool of size N. Selecting K items at uniformly random is one way.
My first project at Buzzvil was to develop a system to reliably render images at scale with PhantomJS. The result of my efforts was Ghost Town: simple queued & clustered PhantomJS processing in a tiny Node.js module. Problem PhantomJS is not an easy library to work with. Crashing and freezing is common. High memory usage and slow startup time is expected, and scaling must be done manually. Ultimately, PhantomJS and phantomjs-node are neglected projects, so these issues can be expected to remain indefinitely. At Buzzvil, we needed the ability to reliably render a wide variety of images, with low latency […]