Systems | Development | Analytics | API | Testing

Logging

How to Write Unit Tests for Kotlin

Writing tests is an underappreciated part of software development. It usually distracts us from our primary goal and makes us feel we aren’t being productive. However, these tests are a great way to ensure our code works as expected, and they can save us plenty of headaches when we don’t have full control of certain parts of a project (for example, when we are working on the client app and another colleague is working on the server).

Add the Bugfender SDK to an iOS app

With Bugfender you can debug your app remotely, find the bugs faster and provide better customer service. Follow this guide to add Bugfender to your iOS app using cocoapods. Thanks to new languages like Kotlin and Swift we can see more and more web programmers jumping into the native development. We started this series of videos with basic tutorials to help new developers and also experienced developers coming from other platforms (React Native, Xamarin, Ionic…). This video can be used as a guide to start creating a new Xcode project and integrating the Bugfender SDK with cocoapods, but if you want to go further we have a lot of tutorials and articles in our docs and in our blog. As you can see, having a remote console for your apps is a 5-minutes task that can save you hours of debug in production. See you in the next video. Happy debugging!

Four Logging Best Practices for Production Applications

Logging is an essential part of just about any PHP-based application; whether in a script or a larger application. However, how little is too little and how much is too much to log? If we don't log enough information, when something goes wrong, as it invariably does, then we won't have enough information available to determine what went wrong so that we can fix the problem. However, if we have too much information, then we'll be unable to filter out the white noise.

Real-time log aggregation with Flink Part 1

Many of us have experienced the feeling of hopelessly digging through log files on multiple servers to fix a critical production issue. We can probably all agree that this is far from ideal. Locating and searching log files is even more challenging when dealing with real-time processing applications where the debugging process itself can be extremely time-sensitive.

The Tech Stack Behind Bugfender

Whenever I meet an engineer and chat with him about Bugfender, one of the questions I get asked most often is: what does it take to build a log aggregation tool like Bugfender? What’s behind it? When processing millions of log lines per day for several thousand users, coming from millions of devices, good architecture is key to enabling uninterrupted high-speed processing and growing the platform as new users sign up.

Robust Development with git-flow, Bitbucket Pipelines and Bitrise

When you start a new project, everything is very easy and agile. You can develop, commit code and publish new versions quickly, without much testing. You probably don’t have a QA team, your test data is similar to your production data and you don’t develop multiple features at the same time. But as the project grows, it starts to become more and more complex.

Bugfender compatibility with SwiftUI and Project Catalyst

When Apple introduced SwiftUI back in July we immediately knew it was going to generate a lot of expectations. As app developers ourselves, we are very aware about the complexity of User Interface development in iOS. UI has been keeping apps especially expensive and error prone along the years. Many frameworks were created to improve this situation like ComponentKit, Texture or even React Native.

Bugfender Growth: from side-project to a sustainable $20k MRR business

It’s nearly five years since we started Bugfender as an offshoot of our software company Mobile Jazz. We’d gotten tired of chasing users who were experiencing problems with our apps and wanted to build an internal remote logging tool that would feed the information straight to us. It really was a garage project back then. We were running code sprints on our own time, so we wouldn’t have to dig into our savings. But we soon realized this could be much more than an internal experiment.