-
MVI in Skroutz android app
Our codebase is over 10 years old. Like every other project that started at that period, it adopted Model View Presenter as its architecture. Over the years, both the app and the team grew. This created a need to shift to an architecture resembling ‘clean architecture’. At that point, MVP became the presentation pattern of the app. A decision that served us well all these years.
-
One Screen to Rule Them All
What’s the excitement about one screen being the ultimate solution? Presenting the new Listing Screen, an update to the legacy version that now supports sections, ready to transform how we manage listings in our app. The Home Screen of the Android Skroutz app already uses sections, setting the stage for a dynamic user experience. This article will explore the challenges we encountered during the implementation process, the solutions we developed, and how we successfully executed a smooth release.
-
Growing the documentation of our android project using Dokka
In the last few years the android team has grown significantly and with that so did our codebase. We are at a state that the lack of documentation has become an issue but not for what you might think. Documenting a class as to how it works is not as essential as making the same class easy to discover!
-
The Importance of Having a Healthy Chapter
At Skroutz, every product engineer belongs both to a product team and a chapter. A product team contains people from all crafts and is responsible in delivering new features to our users. A chapter on the other hand contains only engineers of a certain craft and is responsible for all technical aspects of a project.
-
Handling inertial scroll in combination with scroll snapping
A tricky bug during a key redesign in fashion pages led us down an engineering rabbit hole in an effort to achieve an excellent user experience.
-
Core Web Vitals Real-time Monitoring at Skroutz.gr
A symbiotic relationship for continuous, real-time monitoring and improving user experience on a large scale application with millions of users.
-
Skroutz contributes to Hotwire's upstream
How we contribute to the evolution of Hotwire
-
Monolith Diaries: Upgrading Rails
Streamlining the Rails upgrade process.
-
Hotwire @ Skroutz: Lazy load data with minimum effort
Take advantage of Hotwire features to achieve a lazy loading experience without boilerplate code
-
SEO at Skroutz.gr: Our Top 5 Principles & Values
A summary of the SEO values that helped Skroutz.gr΄s significant growth.
-
Refactoring a React app to progressively load its data
Providing a more user friendly UI while waiting for your data to be fetched
-
How we classify products at Skroutz
How to analyze and classify more than 80,000 products / day
-
Uncovering a 24-year-old bug in the Linux Kernel
How a failing rsync run led to the discovery of a long-standing bug in the Linux TCP implementation.
-
Speed: The Journey to Delivering a Faster Experience at Skroutz.gr
Α technical post about Rendering Performance of Skroutz.gr.
-
Process Optimization
How to keep your business processes lean and efficient
-
Hiring engineers while working from home
Or: How We Learned to Stop Worrying and Love the Engineering Interview Process
-
Performance Management @ Skroutz
How we transitioned from semi-annual feedback meetings to a continuous performance management framework.
-
[Case Study] How we optimized our Crawl Budget
How we optimized our Crawl Budget by removing 72% of Skroutz indexed URLs while growing to 30M sessions/month.
-
Agile Summit Athens 2019
We were at Agile Summit 2019 in Athens here are our notes.
-
Entropy changes in Debian or 'why a VM boots in 5 minutes?'
Debian Buster made our VMs boot up in over 5 minutes. That's how we fixed it.
-
Searching at Skroutz: from Kafka to Elasticsearch
How we built a robust and scalable pipeline for streaming MariaDB data changes to Elasticsearch
-
Speeding Up Our Build Pipelines
Introducing mistry - an open source, general-purpose build server.
-
Experience Fighters #EXF19
We were at Experience Fighters 2019 in Madrid here are our notes.
-
Eliminate Content Repaints
How we eliminated content repaints caused by animations
-
Mo, the forking stranger at Skroutz
How we optimized our shop scanning performance without redesigning.
-
Introducing Kafka to a Rails application
Laying the foundations for robust consumers & producers.
-
Smashing Conference Barcelona 2017
We were at Smashing conference 2017 in Barcelona, here are our notes.
-
Frontend United Conference Athens 2017
We were at Frontend United conference 2017 in Athens, here are our notes.
-
Rewriting our web analytics tracking infrastructure in Go
A tale of web beacons, Rails and Go
-
How we migrated our Javascript stack to Webpack
Our journey from Rails asset pipeline and RequireJS to Webpack
-
Upgrading Puppet 3.x to Puppet 4.x
Getting upgrade-ready for Puppet 4.x
-
Smashing Conference Barcelona 2016
We were at Smashing conference 2016 in Barcelona, here are our notes.
-
EuRuKo 2016
EuRuKo 2016 - Sofia
-
Skroutz Analytics
Big Data at Skroutz
-
Our take on Fuzzy Auto-Completion
Integrating fuzzy suggestions in a manner that makes sense
-
Skroutz Redesign: how we designed and implemented our own Design System
Interesting things behind the Skroutz 2016 major Redesign
-
Optimizing Continuous Integration at Skroutz
Continuous Integration at Skroutz
-
2015: An amazing Front-end year at Skroutz
What we learned as a Skroutz Front-end team during 2015
-
On Prototyping
How to use prototyping to evaluate your assumptions.
-
Skroutz infrastructure at a glance
What does Skroutz run on?
-
CSS at Skroutz
A summary of how we organise, structure and reuse style sheets at Skroutz.
-
The Skroutz Feed Validator
A tool for verifying xml feeds from eshops
-
Working with the ELK Stack at Skroutz
How we use the ELK stack to visualise and analyse visitor behaviour in real-time
-
Digitized 2013 - It Was... Double Rainbow Awesome!
A summary of 2013 Digitized conference in Athens
-
CSSDAY 2013 - Amsterdam
CSSDAY conference in Amsterdam, a conference about CSS technologies and techniques.
-
EuRuKo2013 - design
Euroku Ruby conference 2013 that took place in Athens
-
Baruco 2012
Baruco 2013 Barchelona Ruby Conference
-
Removing wildcard routes
Removing wildcard routes on ruby on rails
-
How we manage to manage
How Skroutz manage teams & development
-
Implicit design patterns
design decissions on Skroutz redesign
-
Kowalski, progress report!
Kowalski Progress report
-
Skroutz architecture in bullet points
An overview on Skroutz basic architecture
-
Crafting newsletters on Rails
Newslettters on a Ruby on Rails app
-
Skroutz + Warden
Enable the usual social authentication methods
-
Building a headless web site screenshot server
Installing
-
Implementing spell checking at Skroutz
Spell checker libraries based on dictionaries (like aspell) have two major drawbacks:
-
Queue Helpers for Resque
We use our own fork of Resque, Resque-Mongo which uses Mongo instead of Redis and it works extremely well.
-
MySQL slave monitoring wihth Munin
We have a couple of MySQL slave servers running debian here at Skroutz and I was searching for a way to monitor the service’s status. I run munin agents on all servers so I wrote a small python script to graph the slave’s status.
-
BlackholeStore: a /dev/null rails cache store
Before BlackholeStore
-
Static Files With Nginx + Passenger
Normally, when you setup Nginx and Passenger to serve your rails application, all static files are served by Nginx without hitting Passenger. What really happens is that all static files that do exist are served by Nginx and the rest are passed on to passenger.
-
Acts_as_tree_on_steroids plugin
We’ve been using a home-made extension of acts_as_tree on our production site for quite some time. We finally found some time to release it as a plugin. You can find it on github. It’s not anything special, but it may give you some ideas for doing similar things.