Johan Ronsse

  • Home
  • Projects
  • Blog
  • Closing down Screenshot to Layout

    September 30, 2025 - Posted in bootstrap build-in-public screenshot-to-layout

    We’re closing down our project Screenshot to Layout. Sometimes a project has to come to an end.

    We plan to run the functionality until November 30, 2025. After this, the plugin will cease to work. We will then shut down the servers running the project.

    We first released this plugin in the Summer of 2023. Figma generously supported Screenshot to Layout to grow with the Creator Fund program at the end of 2023.

    I personally put hundreds of hours of work into this plugin.

    The plugin was featured at Figma’s Config 2024 conference in the Creator Fund space. There’s been 17,700 Figma users who tried it out.

    Currently, the project costs around €10 per month for Azure costs and around €33 a month for Supabase to run for a total of €516 per year. We’re also paying for a domain name and hosting with a total cost of about €50 per year.

    We’ve investigated in March this year if it would be possible to evolve the project further. That investigation also cost us €650 for a researcher’s day of work as well as my own time.

    Our conclusion was that there was little to do without spending a lot more money on R&D to make the dream behind Screenshot to Layout real.

    The core technology that this project is based did not continue to evolve. The last update to Microsoft’s Document Intelligence APIs was in November 2024.

    We had hoped that Microsoft’s APIs would have gotten better, faster and improved, but they did not.

    We briefly explored changing the core technology to an LLM-based approach, where we would get layout data via the LLM to build out better layouts (also see this blog post, but this specific way of working would a) lead to a lot of more work and R&D that was unfeasible given the project budget and within our early experiments, we found this method a) very slow and b) unreliable. Furthermore, it would also lead to higher server costs.

    While the costs mentioned above are not so big in the bigger picture, maintaining this plugin when it’s not going to be evolved anymore doesn’t make that much sense to me.

    We considered making the plugin a commercial plugin. To cover server costs, we could transition the plugin to a freemium model. There, we run into some roadblocks in the logic within Figma behind commercializing plugins.

    Figma does not allow free plugins to transition paid plugins, so we would have to release a new version to do so and remove functionality from our old version, leading to an awkward transition.

    In general, trying to make some money from this simply wouldn’t be worth it from an effort and accountancy perspective. We estimate we could make €500 to €2000 a year from this plugin per year with its current success.

    The technology behind Screenshot to Layout can be purchased by interested parties. If you are interested to talk, let us know. For a fee we can transfer the IP as well as all strategies and research behind the project to a new owner. We’d love for this project to continue to exist in the right hands.

    I’d like to thank Gavin and Marina for helping with their part of this project.

    If you used Screenshot to Layout, thanks for being a user! We learned a ton building this and personally, it felt like the first time I built a tool for designers that had some real potential behind it.

  • Combining puma-dev (for RoR projects) with regular localhost (for Next.js and node-type projects)

    September 17, 2025 - Posted in development workflow

    This is a blog post that I wish I didn’t have to write because it’s one of those annoying things that you just want to work.

    Anyway, I am working on a Ruby on Rails project where I am using puma-dev.

    But to prepare the templates, I spun up a little project using Pug and a combination of chokidar and browsersync to write the initial code in my preferred way.

    I ran into a roadblock where I can run either my Rails project using puma-dev, or my node-based project, but not both at the same time.

    When accessing the node-based project when puma-dev was running, I would run into this browser error:

    This site can’t provide a secure connection
    localhost sent an invalid response.
    ERR_SSL_PROTOCOL_ERROR

    The general idea behind puma-dev is that you would access your Ruby on Rails projects by linking their folders, and resolving them to a test domain.

    For example the folder is called banana and you would be able to access your Ruby on Rails project at https://banana.test . It’s similar to an older project the old schoolers might know called dnsmasq.

    Now, installing puma-dev messes with how IP addresses resolve on your system. When you follow the base instructions on their Github, you might find yourself in the same position as me: that your Next.js/Svelteki/regular node projects/or whatever that runs on localhost:xxx does not work anymore.

    The culprit is that as part of the installation process, puma writes a file called test to /etc/resolver with the following contents:

    # Generated by puma-dev
    nameserver 127.0.0.1
    port 9253

    If I comment out this file, my setup works again. In general it’s good to know which symlinks exist, which you can check here:

    cd ~/.puma-dev
    ls

    Normally this folder will contain a symlink to your project folder (which you previously linked with puma-dev link in the folder itself.

    You can stop puma-dev with this command:

    puma-dev -stop

    You might get an error, after which you can try:

    pkill puma-dev || true

    It could be loaded in launchd (depending on how you set it up):

    launchctl list | grep puma
    # If you see io.puma.dev loaded:
    launchctl remove io.puma.dev

    In this situation, your Next.js/Sveltekit/Node.js projects will work.

    If you then want to get back:

    sudo puma-dev -setup
    puma-dev -install
    puma-dev

    Now, how do we make both things work at the same time?

    Well, turns out the solution is actually quite simple. Since puma-dev is hijacking 127.0.0.1 aka localhost, visit something else than localhost but point it to localhost.

    To achieve this, add an entry to your /etc/hosts file:

    127.0.0.1 localhost-workaround

    Then, instead of visiting http://localhost:3000 – when Puma is on, visit http://localhost-workaround:3000. Done!

  • Hollow Knight

    September 17, 2025 - Posted in games nederlands

    Nooit geprobeerd en nooit het punt gezien, maar met de release en de hype rond Silksong heb ik de originele Hollow Knight gekocht, voor de Nintendo Switch.

    En t’is betrekkelijk moeilijk: over de 1e “grote” baas heb ik toch een goed uur gedaan. En die verslaan gaf dan wel enige voldoening.

    Silksong zou nog een pakje moeilijker zijn dan Hollow Knight.

    Dit vond ik wel een goede video essay:

  • Een dagje verlof

    September 15, 2025 - Posted in lifelog

    Ik zou eigenlijk wat meer verlof moeten nemen. Een “normaal” werkmens heeft minstens 20-tal dagen verlof.

    Maar de laatste 9 maanden heb ik amper verlof genomen — en waar ik kon ook soms in het weekend doorgewerkt.

    Dat begint zich wat te wreken, denk ik.

  • Ambitieniveau

    September 4, 2025 - Posted in agency-life entrepreneurship obra-studio

    Ik denk sinds kort veel na over welk ambitieniveau ik wil nastreven. Uiteraard ben ik geïnteresseerd in mijn eigen business uit te bouwen. Ik werk er elke dag aan.

    We gaan in het eerste jaar van Obra naar een omzet van €250 000 en een fulltime equivalent van gemiddeld 2,5 personen.

    Ik hoop die cijfers volgend jaar te verdubbelen.

    Maar afhankelijk van nog te nemen beslissingen kan het ook meer of minder zijn. Ik stel me de vraag: is €150 000+ ook niet meer dan oké voor een eerste jaar met een klein team?

    Na eerst zeven maanden hard timmeren, ondertussen trotse vader te zijn en het een maand of twee uit noodzaak nét iets rustiger aan te doen, komt het besef dat er ook wel een leven naast werk is.

    Als ik voor mijn medewerkers nastreef dat ze 38u per week werken, of zelfs wat minder, waarom zou ik dat voor mezelf niet nastreven?

    Mijn zoon is maar één keer in zijn leven 2 maanden oud. Sommige momenten wil je niet missen.

    Als iemand die al sinds 2011 zelfstandige is, zit het billable hours-principe er bij mij ingebakken als heilig: er moeten en zullen factureerbare uren zijn. Dat is de enige manier om aan je omzet te komen.

    Nu denk ik daar toch anders over, en zet ik steeds vaker een businesshoedje op: marge op een project met een vaste prijs, marge op werkuren van anderen. Het is expliciet de bedoeling om van Obra een groter vehikel te maken dan mezelf.

    Ik werk met een een heel team waar ik dankbaar voor ben.

    Eén streefdoel dat in mijn hoofd zit, is om met een team van elf te zijn. We zijn op weg om dat te bereiken, maar het is een meerjarenplan – en natuurlijk is headcount niet alles.

    Ik stel vast dat ik toch op een heel andere manier dan vroeger werk. Ik werk véél meer aan het bedrijf dan in het bedrijf.

    Ik faciliteer projecten; ik help ervoor te zorgen dat ze slagen. Ik hoef niet noodzakelijk de uren zelf te werken, zolang het werk maar op een goede en vlotte manier gebeurt.

    Ik help met de kwaliteitsnorm. Hoe kwalitatief moet het project zijn, en waar steken we aandacht in? Hoe leveren we waarde voor de klant? Hoe kan een medewerker groeien in het project zonder in de kwaliteit van het project te snijden. Waar betaalt de klant voor en wat is een interne kost?

    Ik help met tooling. Welke taken nemen veel tijd in beslag? Waar kunnen we iets doen met een goede template? Waar kan een Figma-plugin ons veel tijd besparen?

    Uiteraard werk ik ook zelf aan projecten. Maar eigenlijk probeerde ik dat tot voor kort zoveel mogelijk te vermijden. Recent heb ik wel beslist om daar meer een nieuw midden in te vinden.

    Ambitieniveau, dus.

    Ik denk vaak aan de parabel van de Mexicaan en de Amerikaan.

    Ik weet niet meer waar ik dit gehoord heb, maar het gaat ongeveer als volgt: de Mexicaan zit rustig te vissen. Om 10:30 gaat hij naar huis, naar zijn familie. De Amerikaan zegt: “Je zou toch beter de hele dag doorvissen? Dan kan je je vis verkopen.” De Mexicaan zegt: “Waarom zou ik dat doen?” Waarop de Amerikaan zegt: “ja, zodat je geld hebt voor meer jezelf en je familie.“

    Wat zou ik doen met wat meer vrije tijd?

    Ik mis op de racefiets zitten en mijn fietsvriendjes, en ik zou eigenlijk wat meer in de keuken willen staan. De receptjes van Jonathan Zaragoza eens proberen.

    Het zou ook niet slecht zijn om nog eens een date te hebben met vrouwlief; en om nog eens naar de cinema te gaan. Al is er lately een gebrek aan goede films in de bioscoop.

    Uiteindelijk gaat het om het vinden van een correcte balans. En die balans wordt constant gezocht.

    Met Obra Studio helpen we softwarebedrijven om het volgende niveau te bereiken. We helpen start-ups met het valideren van hun idee, en scale-ups om design systemen en front-ends te bouwen om op een goede manier te kunnen groeien.

  • Baby op de arm

    August 31, 2025 - Posted in accessibility lifelog nederlands

    Er is die bekende graphic van Microsoft dat we toch allemaal ook tijdelijk een beperking kunnen hebben.

    Je kan bijvoorbeeld maar 1 arm hebben omdat je maar 1 arm hebt, je arm hebt gebroken – of ook omdat je een baby op de arm hebt.

    Dat is nu exact de situatie waar ik mij in bevind deze ochtend. Een baby op de arm, flesje in de hand, zondagochtend, geen zin om nóg eens passief YouTube te kijken.

    Ik ben dan maar in de settings van iOS gegaan om de tutorial rond voice dictation/voice control te lezen.

    Ik gebruikte de dictatie feature al regelmatig om berichten te dicteren. Soms de native feature en soms via Wispr Flow.

    Maar nu dus een nieuw element: via voice control kan ik mijn iPad met mijn stem bedienen.

    In mijn beperkte ervaring werkte dit redelijk goed om de kranten te lezen. De Standaard en De Tijd kon ik goed lezen door tegen mijn iPad mini “scroll up”, “scroll down” en dergelijke te zeggen.

    Een blog post schrijven ging wat minder goed.

    Maar voor iemand die graag gestimuleerd is en dus bored wordt van een 20 minuten een flesje geven, is dit een goede ontdekking: ik kan de krantensites lezen tijdens flesje geven.

    Het is tegelijk professioneel ook een goede ontdekking om de accessible names op knoppen die enkel een icoon hebben na te kijken met een eenvoudig stemcommando.

    Nu hoop ik dat niemand mij hier komt betichten om niet 100% aandacht aan mijn kind te geven. Ik hou van mijn kind, het is een schatje, maar ik denk dat elke ouder de inherente saaiheid van een newborn wel snapt.

  • From a revenue goal to a profit goal

    August 25, 2025 - Posted in bootstrap entrepreneurship

    I’ve read the phrase “revenue is vanity, profit is sanity” and that triggered me to write this post.

    Up until 2 weeks ago I had been chasing a specific revenue goal for the first year of Obra.

    The theory was that if we hit a certain growth stride and headcount, we would be set up for the future.

    As the founder, I could sacrifice my own wage for long-term growth.

    But recently, running the numbers, I believe that creates a problem. Not having profit affects my own motivation. Not enough profit also affects cashflow in general.

    I decided to turned the revenue goal I had into a profit goal. The only way we will last as a company is if we are profitable from the start.

    The next few months, I aim to be working much more in the company then on the company.

    In other words, it’s time to make some money working on projects instead of too much marketing, pseudo-sales and tinkering with too many side projects.

    With Obra Studio we help software companies reach the next design level. We help startups validate their ideas, and scale-ups to build design systems that scale with their businesses.

  • Optimally presenting Figma-based designs with SwitchResX and the right shortcuts

    August 22, 2025 - Posted in figma workflow

    This is one of those nerdy things that I keep coming back to.

    In this remote world, we are often screen sharing designs. I believe you need to be accutely aware of how the other side is receiving your output.

    Next to making sure you output good sound (a good microphone helps) and while presenting, being wary of not too much “swaying” around, there is one thing that is not that apparent, until you see it on the receiving side. That thing is how your own screen resolution affects how you are able to present designs.

    Basically, many designers work on a 27″ desktop screen. If you present directly from a 27″ screen without doing anything specific, the other party is going to have a hard time seeing things from their laptop. The same counts for recording screencasts.

    This topic is top of mind because I’ve been recording some videos for the shadcn/ui docs.

    So how do you find a good middle ground?

    I use this macOS app called SwitchResX which allows you to bind a resolution switch to hotkeys.

    I bound the regular resolution of my 27-inch display to F16. This creates the visual equivalent of 2560×1440 (even though the display is actually 4K). I use this when doing actual design work and working.

    But when I have a meeting, or I am recording a screencast, I like to hit F17, which I bound to setting up the display for the visual equivalent of 1920×1080. This makes it much clearer to the viewer what is going on.

    I also give workshops about Figma often. When screen sharing an app like Figma, and discussing the intricacies of the UI, it makes a world of difference to the viewer that the controls are slightly bigger.

    The receiving side might be on a laptop, watching your screen share in a Google Meet meeting, already reducing the visible size once again.

    Depending on what you are doing, there’s more you can do:

    • For presenting designs: You can hide the Figma UI using ⌘+/ and use N or ⇧+N to jump between designs
      • Jumping between designs helps create a static image that then has time to get uploaded, for clarity on the other side – swaying around too much while sharing creates a blurry image when network conditions are bad
    • You can zoom completely into specific frames using ⇧+2 to Zoom to Selection
    • For talking about Figma itself: you can also change the size of the Figma UI itself. There’s a shortcut for this: ⌥⌘⇧+ or ⌥⌘⇧-.

    I hope this helps someone in their workflow to present designs in a smoother way!

  • Op en neer

    August 20, 2025 - Posted in agency-life obra-studio

    We gaan bijna onze negende maand in als agency.

    En ik stond weer voor een moeilijke keuze: iemand aannemen, super veelbelovend, maar toch telkens een beetje een risico – of kiezen voor stabiliteit.

    Normaal gezien zou ik een risico nemen, maar de nachten zijn kort en de dagen onderbroken.

    Als nieuwe papa is het zoeken naar een nieuw ritme.

    Daarnaast zal het toch nog hard werken zijn om voor dit jaar als bedrijf toch ietwat betere punten te halen: de omzet en de klanten zijn er wel, maar er zijn voorlopig te veel kosten, en te weinig marge.

    Dus, met bovenstaande in het achterhoofd, is de keuze stabiliteit geworden. Ik kies ervoor om met iemand samen te werken waar ik echt op kan rekenen. Welkom in het team, Marina! Of welkom terug moet ik misschien zeggen: Marina was onze eerste werknemer bij Mono.

    Er was deze week ook een ander de-cirkel-is-rond moment: iemand die ik ooit opgeleid heb, kwam nu terug met projectwerk.

    Ik denk eraan om in oktober nog eens hallo te komen zeggen in België. Een plan wordt gevormd. Misschien naar een conferentie; misschien een dineetje met collega’s. Maar sowieso trots de nieuwe spruit aan familie tonen.

  • Omgekeerd

    August 2, 2025 - Posted in agency-life

    De laatste dagen heb ik zitten werken aan het herinterpreteren van een vibe-coded prototype naar een wireframe. Een beetje omgekeerd werken dan anders dus.

    Maar het is leuk en spannend: het project team zit goed met slimme mensen, ik leer veel bij over het onderwerp van de app – sales – en het project heeft een stevig tempo.

    Ik ben ook blij dat we in de zomermaanden een stevig project hebben kunnen scoren. Altijd goed voor de omzet en de werkzekerheid.

← older
  • ©2025 Johan Ronsse
  • X
  • Mastodon
  • Portfolio 2024