Hi, I am

François Rouault


🇫🇷 🐦 🐙 👔

iOS developer
Next.js fan, ex Android dev.

Projects

Lembot, a micro-SaaS that automatically exports your Lemlist campaign results to Google Sheets
Resizer.dev, a webapp to visualize websites responsive design and share it.
PromiseLite, a Swift library that simplifies iOS asynchronous programming (= JavaScript Promise).
Google Chrome Profile, a Raycast extension that makes it super easy & fast to launch and navigate thought your Chrome Profiles and Bookmarks.
next-markdown, a nextjs library to generate pages from markdown files with 0 effort and dynamic routes.

Blog

It's all about development. I want my blog posts to be concise, quick to read, with sample codes rather than thousand words. For more details or to form your opinion, you will find references at the bottom of each article.

Cover Image for How to build eco-friendly mobile apps
Green IT |

How to build eco-friendly mobile apps →

Let's try to think about the climate impacts of a mobile app and solutions to reduce them.

Cover Image for Adding markdown in your nextjs project - in seconds
Nextjs |

Adding markdown in your nextjs project - in seconds →

Introducing `next-markdown` allowing you to start fast with markdown files in your nextjs project, without all the hassle.

Cover Image for layoutIfNeeded vs setNeedsLayout
iOS |

layoutIfNeeded vs setNeedsLayout →

Stated succinctly, layoutIfNeeded says "update immediately please", whereas setNeedsLayout says "update in the next UI update cycle".

Cover Image for How to generate SSL certificate
Server |

How to generate SSL certificate →

Secure your website with SSL certificate. In this post, let's generate SSL Certificate with Lets Encrypt.

Cover Image for Minimal nodejs project with typescript
Nodejs |

Minimal nodejs project with typescript →

A Github repository with a minimal nodejs server : Express, Typescript, Live Reloading, Environment Variables.

Cover Image for How to let your users try before they buy
Fullstack |

How to let your users try before they buy →

In this post I describe how to set up a subscription with a 14-day trial period, no credit card required to sign up. With Stripe as payment platform.

Cover Image for How to declare an array of weak references in Swift
Swift 5 |

How to declare an array of weak references in Swift →

It can be achieved in one line of code. No need to create extra classes or structs.

Cover Image for How to prevent Jenkins from launching a build every time a MR is approved
CI |

How to prevent Jenkins from launching a build every time a MR is approved →

Let's be green 🌳, for free. In this post I show you how to avoid an unnecessary launch of your CI.

Cover Image for How to avoid the "Non-breaking space used instead of regular expression" warning in Xcode
Xcode 12.3 |

How to avoid the "Non-breaking space used instead of regular expression" warning in Xcode →

I have this warning everytime I type a closure. In this post I tried various solution. Sorry I found nothing satisfying.

Cover Image for Does lazy var capture self?
Swift 5 |

Does lazy var capture self? →

No. Immediately applied closure is automatically considered @noescape.

The source code for this blog is available on GitHub.