Johan Ronsse

  • Home
  • Projects
  • Blog
  • Obra icons: Figma plugin

    September 22, 2024 - Posted in figma figma-plugins

    My Obra Icons project has always been available from the website, but now you can also use the Figma plugin. Earlier this week, we also released a package for React. Any feedback is welcome!

  • Making an iOS app simply by prompting (2)

    September 14, 2024 - Posted in apps build-in-public

    Yesterday I took the idea of prompting to make an iOS app much further than with my experiments of last week. I have this web-based version of a currency conversion app – which you can try here – and I converted most of the logic to an iOS app.

    I wanted to see how far I could take things. After an intense 7-ish hours of working on the app (and at least 3 coffees) I had something that I almost consider releasable to a general public.

    This is a video of the almost-final result, where I was testing some non-phone cases:

    When reading this post, keep in mind I am not a developer by trade, I am a UI/UX designer that likes to make front-end prototypes, but most of the time sticks to designing in Figma.

    The only apps that I (mostly) coded myself are Screenshot to Layout, a Figma plugin and Obra Icons, my icons project. My day job is design.

    After recording this, I fixed a few more bugs and called it a day. About the app itself:

    • I first implemented the basic functionality: calling the API, making sure you could convert between 4 static currencies
    • Then I implemented the ability to change currencies. I was impressed how the default List in SwiftUI handled item deletion without needing any custom implementation.
    • I then implemented how to hide the API key secret in a proper way, using a Secrets.xcconfig file
    • I implemented a custom logic for the cursor and text field to work in combination with the virtual keyboard, so that the keyboard can stay on the screen whenever the fields have a value.
    • I learned how to work with Localizable.xcstrings to provide a dictionary for localisation. The app is currently working in 7 languages and I can easily add more.
    • I tested the app for accessibility with VoiceOver and it worked fairly well.
    • Then I went on to make things look nicer. I learned more about SwiftUI layout (VStack, HStack, Spacer, and their modifiers). Also, using the system colours (Color(.systemGray6) and font logic (.font(.caption))
    • Finally I tested the app for several cases like dark mode, iPad usage and horizontal usage
    • Using the app on my real device led to some findings, for example when you kill the app, the chosen currencies should persist in some sort of user storage. I fixed that.

    In the workflow atmosphere, here’s my notes about how I worked:

    • I used Claude in the browser until I ran out of credits, at one point it was 1PM and it said I didn’t have credits until 4PM. I then switched to using Cursor Pro using Claude Sonnet 3.5 in the background. (I actually cancelled my ChatGPT subscription recently)
    • I used a single large ContentView.swift (936 lines now) so I could easily paste that into Claude.
    • When I switched to Cursor, I would have it just survey the whole codebase using ⌘+Enter.
    • I never used the composer feature in Cursor, not sure if I am missing out. This feature can work across multiple files. Might be useful if I restructure the code.
    • In general, I could copy paste the answers of Claude into my code to provide the fix. In the Cursor workflow, I would not have Cursor apply the changes but I would do it manually so I could read what the code was actually doing, to get a better sense of my program instead of blindly copy-pasting.
    • I sometimes found myself on the Apple docs to find out how certain APIs behaved or what was the expected input, but this was rare.
    • Sometimes, proposed changes would lead to a compile error, after which I would put both the code state after the provided change, and the error as a separate artifact in Claude. This would usually lead to Claude understanding how to fix the problem. This problem happened less in Cursor since it understood my whole codebase and a compile error is usually the result of multiple files not matching up.
    • Sometimes I would have to backtrack on my working code, so I kept a git repository in the background with checkpoints. In general, there was not that much backtracking.
    • I sometimes asked Claude how to fix things with screenshots where I would put clear red or blue lines or arrows on, and then asked with a prompt how to fix the “alignment here”. Claude understood that I was talking about the area marked in the screenshot.
    • I also manually edited some parts in XCode for clarity, or when I knew how to continue coding myself and it made more sense to change it myself instead of prompting.

    All in all I am extremely impressed with this workflow.

    It was fast because I didn’t have to bother with implementation details like the exact shape of API calls or how fetching data actually works.

    I didn’t have to bother thinking about syntactical details like for example why there is a backspace in this code .environment(\.locale, Locale(identifier: appSettings.language.rawValue) or why the last step in storing data after retrieving it from the API is a .store(in: &cancellables). All of this was handled by prompting and putting some functions logically together (fetchAvailableCurrencies / fetchExchangeRates etc.)

    I am sure you can learn to get good at all of that stuff and learn each API by hand, but really, at some point it’s maybe better if a machine talks to a machine than that I as a person need to worry about matching 2 data shapes.

    I feel like I’ve gotten some app creations superpowers, enabling me to not get stuck at the point that I used to get stuck (the data part).

    There’s still much more to do to make the app the ultimate quality and have something shippable that I am proud of, but I am so happy with the progress so far.

  • Making an iOS app simply by prompting

    September 7, 2024 - Posted in apple apps ios

    With my “newfound” prompting superpowers, I tried to generate the code for an iPhone app and see how far I could go.

    Once again, I was pretty amazed by the Claude/Cursor workflow. In a rather limited time I had the scaffolding for a wedding app done. I ended up getting a subscription to Cursor which I believe is totally worth it.

    The main UI

    The idea behind the app is that it shows a map of locations and a calendar, so people can have a reference of things they could do around a wedding. For destination weddings, there is also travel involved, so people might want to receive the couple’s specific tips for a neighorhood.

    A sheet and a start for showing multiple images

    This idea could also be transformed to a generic “travel guide” type of app, where you have lists of things to do around a certain location.

    My tests creating a native iOS app went well. I was able to implement:

    • A table view with some important dates for the wedding (the calendar tab)
    • A map view with markers, where each marker shows a sheet with info
    • Within the sheet with info, details about said location
    • Location permissions and the ability to see your own location
    • Basic support for iPad

    SwiftUI is pretty elegant and readable.

    The only problem with the code generation at this point is that it doesn’t really know how to fix some issues around scrolling and combining views. It tries to fix things by wrapping (scrollable) NavigationViews into each other ultimately creating so many problems you have to revert back to working code.

    Also, the iPad implementation was kind of broken from the start and I had to prompt quite a bit to fix it. I am sure a senior iOS engineer looking at the specific code to “fix” the views would avert their eyes in horror.

    Another thing that I haven’t tried saving data to a database yet, and I can imagine that that part of dev might also lead to some “parts unknown” where I wouldn’t really know how to debug anything. I think prompting superpowers only happen when you have an idea of how you could fix code it generates, not when you are absolutely clueless. I have a fairly good grasp about how iOS apps work and should work (from designing them) – so I can prompt with the right terminology.

    Anyway, I just wanted to report on my journey with these new tools as this is quite exciting.

  • Choose your own adventure (3)

    September 4, 2024 - Posted in aspirations career

    Last work week I spent a good chunk of time on my projects Screenshot to Layout and Obra Icons. I also spent some time investing the hype around Cursor and oh boy… the hype is real.

    I built a mobile-optimized Currency Converter app in a few hours of work mostly by prompting what I wanted. I estimate Cursor wrote around 80% of the code. I added some features that would be time intensive like language support for RTL languages, flipping the entire UI, just with a single prompt. Something like dark mode was just a prompt away too.

    You might have seen videos of 8-year olds coding entire apps using Cursor. It’s pretty amazing what you can build. You have to be quite specific in your prompting but if you know what you want this is definitely a hyper productivity boost for a certain kind of work.

    Naysayers will say this will lead to unmaintable code but in the prototyping/ideas stage most of my work lives in, the productivity is unmatched.

    In my Twitter/X circle I see talented designers taking their product design skills to AI prompting and hacking things together that a few years ago really needed at least a 2 person team of designer and developer. For example Gabriel built Almanac and Christine a Chinese phrasebook app.

    Around nine years ago I really needed a dev to help built Kana Master. Dev agency Underlined jumped in to help at the time. I believe current prompting abilities I could probably build that myself.

    I haven’t tried creating anything in the iOS spheres yet (mainly because I don’t want to write the same software three times) but I am curious how far I could take things.

    When I said I would quit my main contract my fiancée was worried about me finding new work – I told her that it would not really be a problem. In just one week I’ve been contacted for a short-term UI redesign project and to consult about implementing Figma in an organization.

    I am exploring startup ideas, talking to different people about possibilities and overall enjoying some time figuring out what’s next. In the meantime I am available for short freelance opportunities.

    If you’re interested in working together, check out my portfolio here and don’t hesitate to e-mail me!

  • Choose your own adventure (2)

    August 21, 2024 - Posted in aspirations career ondernemen

    My search for a new adventure is starting in earnest after some holidays.

    Two weeks ago I wrote about two main options, one was getting a product designer role in a US startup/scaleup, the other one was restarting agency life.

    I’ve been looking at jobs on read.cv and on workatastartup.com. Ideally I can find a role at a startup that does something exciting in the software space.

    Another part of me thinks I should just build that startup. That’s been a lingering idea in the background.

    The new agency idea seems pretty hard to pull off “from a distance” (my network is in Europe). I also feel like I could also do that in ten years, I don’t have to do it now.

    I feel like I have to make use of the unique part of my life I am in now: no kids (yet), US time zone, easy flights to US, real-life access to build a local team (for example of local devs).

    Back to the job sites – it’s pretty rare to see a cool job on the job sites. Some companies are already too big to do meaningful design work and make an impact. Most companies do something I can’t really get enthusiastic about (like crypto and blockchain things, ugh).

    When I look at different companies I am focussed on the main ideas behind the company, their business model and (possible) engineering prowess. I am not stopped by a poor current state of design (I can come in to help fix that).

    I applied to one company and got rejected outright because of my location in Mexico. Many US jobs are “US remote only” and “US and Canady only”. If anybody knows the logic behind that, I’d be happy to know. When I was an employer myself in Belgium, I didn’t like candidates outside Belgium for administrative reasons, so perhaps something similar is going on.

    Some part of me thinks I need to fly to the US and network at the right conferences, but at the moment I don’t have a clear idea of where I would go or which conference makes sense.

    In general, I plan to take enough time to find the right project/employer/business to work on and will be working as a freelancer while I figure it out.

    These days, I am working on my side projects Screenshot to Layout and Obra Icons.

    I am available for freelance projects. Check out my portfolio to get an idea what I could help with and get in touch if you think I could help you with your project.

  • ShapeShifter plugin for Figma

    August 21, 2024 - Posted in figma figma-plugins

    Fresh from the plugin press, this plugin by Vijay Verma provides some shortcuts to easily access important vector tools In Figma. This can help as a bit of a bandaid, since Figma’s UI team inexplicably decided to hide the vector tools behind extra clicks in UI3.

  • High-end fonts included with macOS

    August 15, 2024 - Posted in resources typography

    Did you know that macOS comes with some wonderful, super high quality fonts that normally cost hundreds or thousands of euros to license? I believe they came with an update to Pages templates a few years ago.

    If you open Font Book — the app used to manage fonts on macOS — and then search for the fonts below, like “Graphik”- you can download the fonts directly there. These are fonts by some of my favorite foundries.

    • Canela by Commercial Type
    • Domaine Display by Klim Type Foundry
    • Founders Grotesk by Klim Type Foundry
    • Graphik by Commercial Type
    • Produkt by Commercial Type
    • Publico by Commercial Type
  • Converting an .mp4 to a .gif using ffmpeg

    August 9, 2024 - Posted in productivity workflow

    Today I was converting an mp4 video to a gif and I figured I’d document some commands that helped in the process. I used ffmpeg to do this. You can install it on Mac or Linux using homebrew:

    brew install ffmpeg

    For optimal quality, generate a color pallette based on a timestamp in the video:

    ffmpeg -ss 00:00:00 -t 1 -i video.mp4 -filter_complex "[0:v] palettegen" palette.png  -frames:v 1

    This will generate a palette.png in the local folder. Now you can use that, to generate a gif:

    ffmpeg -i video.mp4 -i palette.png  -r 30 'final-gif.gif' -filter_complex "paletteuse"

    The command takes an mp4 and the generated pallette.png as inputs, as well as a framerate (30 in this case) via the r argument.

  • Choose your own adventure

    August 5, 2024 - Posted in aspirations career ondernemen

    When I started as a freelancer in 2011, I dove into the world of mobile apps.

    But that’s the short story. The longer one is that I first did some branding and web design. Then, I had a stint as a photographer. I worked for advertising agencies (not really my thing…), development companies (interesting but hate to be the sole “creative”), UI/UX agencies (better),… all in all I tried a bunch of things, to then land at what we did with Mono: focus on UI design for apps.

    The beauty of an agency is that you can choose your own adventure. In these summer days I am dreaming of a new adventure and defining what my new company Obra can be.

    With Mono, we really wanted to build out a great design team and that requires working together, bouncing ideas off of each other, and skilling each other up.

    At the time we denied working in a manner that we called “bodyshopping” i.e. renting out our designers full-time to companies. This didn’t feel right with the agency vibe we wanted, where we wanted to work together on projects.

    We saw a lot of bodyshopping companies dropping unskilled designers, straight from school into projects they could probably not handle, for big consulting fees. These companies had no personality, ugly websites, and you wondered if they even understood design.

    The designers hired into projects were essentially powerless to drive change in the company because they were too junior. They were put on a team because somebody rightfully thought that UX was important, but without any support.

    My observation was that for a company to put out meaningful work backed by a design process, you’d typically need the right combination of people. A designer obviously, but also another design-minded person to challenge them, and for the implementation you’d typically need a design-minded developer (or a developer-minded designer that could guide a non-designer developer). Not every designer is also the same, so you’d need the right skillset for the project at hand.

    Given such a team, you can do wonders with just three persons. With a team of just four, I’ve shipped an entire software design for Ticketmatic that involved a redesign of every module they had (and believe me, there were a lot of them). The speed of working in that team was amazing, due to a great feedback loop between CEO, CTO, a design-minded dev and me as a developer-minded designer.

    With Mono, we found that combo in quite a few projects between the designers on our side and designer-minded CEOs, CTOs, product owners and product managers on the client side.

    Today, I am wondering what my new adventure will be. My mind is mostly on running an agency again. A part of me wants an ambitious product job in the US: but I see most companies downsizing, or only hiring remotely within the US.

    My goal remains the same: shipping the best software. Shipping world-class experiences that matter to people’s computer lives. And keeping that computer life human, por favor.

    I am certain the formula to get there will involve multiple designers bouncing ideas and lifting each other’s work. There is simply no better way to get to great work than to revise it in a group of smart minds. I wrote about this a long time ago, in 2017, in a post titled The value of an external design team.

    You need a real design team. With emphasis on team. Otherwise, the work will suffer.

    It often goes like this: a company decides to hire an in-house designer. One designer, because there is not enough “work” for 2 designers. This person ends up doing — everything — without a feedback loop from another designer.

    I find that this situation leads to idea stagnation. The single internal designer has no outside influences outside of his core project and ultimately it leads to poor work. The internal designer suffers from the lack of a feedback loop.

    There is no particular golden number of designers and design-adjacent people. It really depends on the projects going on in a particular company and also how much design is being done by non-designers. I’ve always held the belief that design is being done by everyone on the team.

    Why am I so obsessed with the number of designers? I believe that when you can get into that design feedback loop, when minds align, but different people come at a problem with different backgrounds and perspectives, the real magic happens. And all too often, that situation just doesn’t occur due to the team setup. If you think too small, the results are too small.

    A personal observation is that there are actually relatively few companies in Belgium that have bigger design teams. A lot of companies make do with just 1 or 2 designers. Some of the biggest scale-ups might have… 5-10 designers, max? There are some banks with 15+ or 20+ UX designers, but they are divided into many project teams. The Silicon Valley size of 50-100+ person designer and researcher teams is unheard of in Belgium.

    It’s always been my dream to scale things up larger, bigger, better. Why don’t the big tech companies come out of Europe? We are simply not ambitious enough. “One designer is okay” “We don’t have enough capacity to implement the designs anyway” “We already know what the problem is we’re trying to solve“. I’ve heard it over, and over, and over.

    But; I did find some limits to my own ideas when I was running Mono. More people is not always the solution. They also need to be good. Upskilling people to the right level was extremely challenging. We held on to a small team of good designers because it was hard to scale up and find the right people. We wanted to deliver a consistent quality, and that was an uphill battle.

    When I started in UX, the UX level of people coming out of school was not there. Basically after they graduated, designers needed another education to get to the right level. There were some exceptions (Courses like Devine and MCT were gradually getting better, and changing their curriculums to things that actually mattered in the real world); but the level of a junior was simply not good enough for the kind of work we were doing with Mono. I believe that 10 years later, there are a lot more skilled designers on the job market. But I also believe — I hear this all the time in job interviews — that they are underutilized by companies that seemingly can’t utilise their skills in the right way.

    Around 2017 there was the trend towards larger and more involved projects – the internalization of UX was there. Companies had built their first apps with an agency (sometimes ad agency… oops) and were disillusioned, then took the work inhouse.

    As Mono we had a problem: we needed to keep designers close to the team to skill them up, but the actual work was moving internally (all too often as part of a sad sprint setup).

    Then Covid hit and suddenly all of the work was remote. There was no expectation anymore to send our designers to some random, uninspiring workplace somewhere in Brussels.

    I should have used that opportunity to radically rethink the structure of our sales setup, and move more radically to contracting. We were already kind of on that track with 60% or more of our work being long-time contracts.

    I remain with some unexecuted ideas as well.

    There was an idea to sell product management as a role. As design managers we me and my co-founder were always doing more design management related tasks which have a big overlap with the internally held product manager role. Scoping work, research, getting the work shipped.

    I held the belief that that was a deeply internal role to begin with, and it was difficult to juggle multiple projects as a product manager in the Mono context. I also believed it would be difficult to get the deeper internal knowledge often needed to understand every move you are making fully.

    But now I’m not so sure anymore. First of all, with a contracting mindset, the person is there for 3 to 6 months or even a year. You can surely make an impact within that timeframe, and have enough time to deeply understand a problem. Second of all, whether someone adds a net positive to a project is not determined by how they are hired into the project, rather it’s about clear communication lines, access to information, and the drive of a company to move forward.

    One final idea I am thinking about that has always been on the back of my mind but that we never executed with Mono, was also doing development.

    With Mono we focused solely on design and besides front-end prototypes we never did actual development. I feel that restricted us too much to get to a final lovable user experience, since we would always depend on whether the devs of our clients were able to pick up the work. Sometimes it would work, sometimes it wouldn’t. A particular aspect of not doing any of the dev work that bothered me was often not seeing the product actually launch, but only seeing it come back after 6 months, sometimes after a few years, without a correct feedback loop.

    Some reasons I remember for not doing development were the contractual risks, and the fact that none of the founders could actually fix deep tech problems themselves if push came to shove. We could also not upskill devs the way we could upskill designers. My argumentation had been at the time, that if we could find a deeply technical person with business aspirations to helm the dev arm of the company, that could be solved. However that’s easily said than done and finding the right person to be at the helm of that kind of position is extremely difficult.

    So, to summarize, here’s my thoughts:

    • It’s time for bigger and better. I am working in the US time zone and promoting towards to US-based clients, but my network is mostly in Europe (Belgium/Netherlands). Ambitious Europe-based startups will look to the US anyway, so opportunities are there.
    • We’ll need multiple designers, bouncing ideas and designs off of each other. Probably with a structure of internal meetings, where one is about skilling up, and another about design review
    • Go for longer projects, accept that UX is internal now, the designers become part of the external team (contract-based)
    • Accept that there is a cycle to design, and design is not always needed: clients can choose to hire designers for three months, six months, one year contracts (renewable when it fits)
    • Look into starting out with a development arm, but highly dependent on finding the right partner
    • Product management might be able to be externalized at some level, if we are able to sell a project team to the client that can either deliver end-to-end, or that can build up trust between agency designers and client devs in a first project. However, finding the right product people might be a challenge on its own.

    Does any of this resonate with you? Let’s talk.
    DM on X/Twitter: @wolfr_2 – E-mail: johan@johanronsse.be

  • A next phase + new portfolio link

    August 3, 2024 - Posted in career

    Change is afoot for me; After 2,5 years working with Doccle I’ll be working on finding new design challenges to take on with my agency Obra Studio.

    At this moment, I am not sure where things will go. One part of me dreams of going back to agency life and build out a bigger, stronger version of what I did with Mono Design. Another is looking to find a deep product role like my designer role at Doccle, preferably in the US time zone, perhaps with some added product management responsibilities. Most of all I want to work with ambitious teams to ship software that matters.

    I loved the deep work of an internal product role, but I also miss the focussed project logic and business potential of an agency. The next few months I’ll be looking for the right opportunity. I built a public portfolio of some of my design work which can be viewed here. I also have a longer, more elaborate portfolio presentation I can give to explain how I can help software companies.

    If you’d like to talk about a potential collaboration, either as a potential colleague, employer or a client, reach out at info@obra.studio. I’d love to talk!

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