Testing is an important part of software development. Although testing is still sometimes regarded as an afterthought, especially in time-critical projects, methodologies like Test-driven development (TDD) and improved tooling for testing have done a lot in recent years to rectify this.
There are great testing frameworks out there for writing unit tests, component tests, and end-to-end tests in web projects. For UI testing end-to-end testing frameworks like Cypress or Selenium are often used. As with all things, there are good and bad things about end-to-end tests:
Progressive Web Apps (PWA) are a hot topic on the web right now. No wonder, they promise a user experience that should not be inferior to native apps for Android and iOS. At the same time, it should no longer be necessary to develop a separate app for each platform (especially Android and iOS), which of course involves more costs and effort.
Google defines three main features of PWAs: they must be reliable (i.e. they must work even on a bad network), fast and appealing (from the UX perspective). …
However, the more your app grows, the longer your compilation times may become. This makes writing code more cumbersome and reduces your developer productivity. You shouldn’t have to wait two minutes for compilation to be finished just to see whether this one line of changed code did the trick.
Sure, if your app is the size of a to-do app, you might be satisfied with the compilation times. …
Over the last three years I have published blog posts related to software engineering. Personally, I believe that the best posts are coming from topics you’re invested in. Recently, I dug up some of my favorite blog posts of engineering blogs I’m following. As the response was quite positive (thank you!) I figured I might as well review some of my favorite blog posts I have written. Not only does it help me to refresh my memories but it’s also nice for me to see how my writing style has evolved.
It’s rewind time.
People who have read some of…
At this point, there’s hardly any bigger tech company that does not have an engineering blog.
In my opinion there are a few characteristics of a good engineering blog:
In this post I want to share blogs I follow to stay up to date regarding software engineering. Of course, there are way more interesting blogs out there.
Instagram is a widely used platform. Hence, it faces a lot of tough engineering challenges (e.g. regarding scalability, data protection). …
CI/CD allows developers and organizations to move faster. By automating tasks like building, testing, and deploying software, we spend less time on mundane tasks and have more time to work on our actual applications instead. Solutions offered by the likes of GitLab, CircleCI, and GitHub allow us to easily create CI/CD jobs.
In general, a CI/CD job should run in a separate, isolated Docker container. This way, you can have a reproducible build environment. For example, you can use a Node.js image that is hosted on Docker Hub. Your job then runs in a container that is based on the…
On many websites, you’ll find yourself scrolling through lists. Some are more simplistic, while others are fancier (e.g. e-commerce websites). Modern websites feature a lot of content, yet nobody likes slow-to-respond experiences. Users will likely bounce off if performance is poor. Hence, we strive to make the user experience as pleasant as possible.
Rendering large lists of content can be a challenge for multiple reasons:
Nowadays, software gets shipped more often than in the past. Both small and big companies have realized that continuous deployment brings many benefits, like faster feedback loops. Thanks to platforms like Netlify, web apps can be shipped and served by a global CDN without much configuration.
One thing that can get in the way of continuous deployment is long deployment times. There can be many reasons why deployments can take a long time:
We have a new microservice that has a special endpoint tailored for reporting use cases. Since we don’t want to load hundreds of thousands of items at once, we implemented pagination for this endpoint. Still, even when returning 10,000 items, the JSON response was around 9MB. This is a lot of data — especially on slower connections.
In recent years there have been various software-based products where you could easily follow their progress. This hasn’t always been the case. Many products were and are still being created behind closed curtains, only released to the public once they are somewhat ready. Surely, this is not always a bad idea: some projects and environments are highly sensitive (e.g. in intelligence agencies).
Nowadays, there’s been a noticeable shift when it comes to building products, especially among tech companies. Companies want to deliver as fast as possible. Thanks to CI/CD, code can be easily shipped multiple times a day. …