Johan Ronsse

  • Home
  • Projects
  • Blog
  • Making of “Best of 2018”

    December 31, 2018 - Posted in side-projects

    Last year I made a “best of” project and this year I wanted to do it again.

    You can view the “Best of 2018” website here.

    This is the making of blogpost in which I discuss which technical explorations I went through to get to the end result.

    Making these kinds of websites is not a new thing for me. I made one in 2008, 2009 and 2012 as well – but these are offline by now. I like to use these projects to experiment with some new things in the (usually) quiet period of the Christmas holidays.

    Content data sources

    When I create HTML prototypes for work I’ve gotten into the habit of creating JSON data structures whenever there is repeating content.

    This is pretty much a given when using the JAMstack.

    In last year’s “Best of” I chose to pull data from an external source: Airtable. While it was cool I eventually realized this was pointless since now the data is hosted on Airtable and now I had Airtable as a dependency.

    Using Airtable as a source also generated overly complex Javascript objects (example). This was good practice to learn how to manipulate them (practice I used during the year when experimenting with the Figma API) but ultimately not a great solution.

    This year I tried some alternatives. One of them was was to use a headless CMS. I tried to use sanity.io to create data structures, with the underlying idea being to combine structured content with schemas that can be validated.

    While this tech solution is really interesting I gave up it was just too much work to get into something totally new for a one-off thing.

    I ended up writing the JSON structure by hand. This is better for the use case since there’s so few records in this “database”.

    The JSON for albums looks like this for instance:

    [
      {
        "artistName": "Blu Samu",
        "albumName": "Moka",
        "fileName": "blusamu.jpg",
        "categories": [
          "r&b",
          "pop"
        ],
        "releaseDate": "Jun 29, 2018"
      }
    }
    

    This is much cleaner than the crazy JSON files that came out of Airtable.

    However, manually editing JSON files is not a “client proof” solution, so something tells me I need to explore the headless CMS direction a bit more in 2019.

    The way to render the data looks like this:

    <ul class="c-cards">
      {%- for item in albums -%}
          <li class="c-card">
              <div class="c-card-image">
                  <img src="/images/albums/{{ item.fileName }}">
              </div>
              <div class="c-card-body">
                  <h2 class="c-card-heading">{{ item.artistName }} - {{ item.albumName }}</h2>
                  <p class="c-card-meta">{{ item.releaseDate }}</p>
                  {%- for category in item.categories -%}<span class="c-card-category">{{ category }}</span>{%- endfor -%}
            </div>
          </li>
      {%- endfor -%}
    </ul>
    

    The templating language used in the above example is Nunjucks.

    Content first

    One of the conclusions of the 2017 edition was that I should worry about the content first instead of the tech. So for the 2018 I prepared all of the content in Notion and wrote most of it before even touching any technicalities.

    Notion as an application has been one of the revelations for me in 2018. It’s a knowledge base – a note taking app – but also so much more. I used Notion to manage the todo’s for this project; to work on the actual content; and to write this very blog post.

    In the process I learned how to add columns to pages in Notion, and a few shortcuts.

    When I felt like I got far enough content-wise, I exported the content to markdown using Notion’s export function to start work on the actual website.

    11ty (eleventy) instead of Bedrock

    For the 2017 edition I worked with our static site generator Bedrock to create the templates for the Best of website.

    While I obviously like working with Bedrock, the object of this project is to learn something new, so I wanted to give the new static site generator 11ty a try (thx Jérôme for the tip!).

    11ty is pretty unique as far as static site generators go, since it tries to get out of your way by putting less restrictions on how you want to structure your content and in which format you write it than other static site generators.

    This has its good and bad parts. In a way it is very flexible. In another way it’s also very ambiguous about what is possible and what isn’t.

    Theoretically, if you want to create parts of your content in markdown, parts in Pug and parts in Nunjucks you could if you wanted to. I really liked working with 11ty but in the end it wasn’t as flexible as I wanted it to be. Perhaps it might be in the future, since the project is at version 0.6 – not a 1.0 yet.

    In the process of creating the Best of 2018 website I created a Gulp 4 based workflow around 11ty which I might share publicly in the future. It’s not perfect yet but it works. I discovered once again you can lose a lot of time trying to optimize workflows. First you think setting up Gulp is simple and hours later you’re still debugging the perfect sync between incrementally generating files and injecting CSS/JS changes live.

    Design and CSS

    Design-wise I had started on a concept design in October. I didn’t get very far because I decided I would keep a similar design as last year’s Best of.

    Having decided that it seemed pointless to design things in a design app.

    When I started coding I did change the technical underpinnings.

    I used Mono’s internal BEM/ITCSS framework (called Jungle) which has matured over the past year. This meant I had to write very little custom code.

    Because of the technical underpinnings I literally spent 1 hour on making the whole thing responsive.

    Conclusion

    In a lot of ways the end result is exactly what I made last year, but the technical underpinnings have changed.

    In the process I took the time to look for tools and techniques that can remain staples of my workflow for years to come. Just like last year there’s going to be techniques that I will use immediately on my first day of work in 2019, and there will be things that I’ll probably never touch again.

    All tech nerdery aside, I hope you enjoy the content itself. They’re my favorite things I watched and listened to this year. I wish everyone a splendid New Year’s Eve and see you all in 2019.

  • Mijn 2018

    December 27, 2018 - Posted in other

    Het einde van het jaar brengt vaak een moment van reflectie met zich mee: wat heb ik dit jaar juist gedaan, en waar gaat het naartoe?

    Professioneel had ik een zéér goed jaar. We zijn met Mono bezig met de juiste UI/UX design projecten voor de juiste klanten, en daar ben ik blij om. Ik heb eindelijk kunnen werken aan een groot project in de medische sector waar ik al lang van droomde; en ook voor bestaande klanten in o.a. supply chain deden we interessant werk.

    Het team is gegroeid met een heel aantal nieuwe gezichten wat een totaal andere dynamiek met zich meebrengt. Ik heb voor mezelf de transitie moeten maken van designer naar (deels) manager, van zelf het beste proberen te doen naar anderen het beste te kunnen laten doen. Dat betekent de juiste voorzetten geven, inzetten op persoonlijke groei en een omgeving creëeren waarin het beste werk kan gebeuren.

    Ik zeg deels manager, want toch kan ik het niet laten om zelf te blijven ontwerpen en coden. Ik ben nog altijd erg geïnteresseerd in mezelf te blijven bijscholen over nieuwe design tools, technieken en de achterliggende technische aspecten. Ik gaf een workshop rond Figma en was heel erg bezig met het ontwerpen en documenteren van allerhande design systemen.

    Ik heb nog altijd de droom om vlot wat Javascript en Python uit mijn mouw te kunnen schudden, maar ik vrees dat tenzij ik een radicale carrièreswitch naar developer maak het zal blijven bij het ietwat hobbyistische. Het blijft een vak apart.

    Vanaf september — door de gemeenteraadsverkiezingen — kwam voor mij het thema politiek naar boven. Dit is de laatste maanden een actieve interesse geweest. Voor het eerst in jaren heb ik een abonnement op de krant genomen en lees ik actief het nieuws. Ik ga net iets verder en lees ook de bronnen waar het nieuws zich op baseert, zoals het recente verbindingsakkoord in Antwerpen. Ik vind het essentieel om een eigen mening te kunnen vormen op basis van wat er écht gebeurt en niet enkel op basis van berichtgeving. Een mening gebaseerd op feiten, en niet op (vaak slecht) onderbouwde meningen of oneliners op Twitter.

    Eén van mijn professionele doelen is om het gebruik van computers menselijk te houden. Al te snel wordt technologie als een heilige graal gezien die allerhande menselijke problemen wel zal oplossen. Veel te vaak creëer je door het gebruik van het technologie een nieuw probleem dat het oude gewoonweg vervangt. Ik wil een juist gebruik van technologie, op een menselijke manier. Je kan technologie menselijk maken door aan de gebruikerservaring te werken, maar als de premisse verkeerd is, dan kan je nog zo lang aan de gebruikerservaring werken, het gaat niet helpen. En die premisse is vaak een politieke beslissing.

    Daarnaast heb ik mij in mijn vrije tijd geamuseerd met films en met koken. De cinema werd bijna een vaste gewoonte – met de podcast als leidraad – tot het filmaanbod rond de nazomer opeens opdroogde. In de keuken heb ik een nieuwe waardering gekregen voor kwalitatieve ingrediënten, goed materiaal en eenvoudige gerechten. Ik kijk op een hele andere manier naar koken en bij uitbreiding naar eten dan enkele jaren geleden.

    Met de klimaatcrisis in het achterhoofd zullen we anders moeten gaan leven, dat is duidelijk. Welke vorm dit zal aannemen weet ik nog niet. Als vleeseter, autobezitter en vliegtuiggebruiker ben ik mij bewust dat ik deel ben van het probleem. Ik kan me niet ontdoen van de indruk dat vele zogezegd “ecologische” iniatieven niet zo ecologisch zijn als we zouden denken. Een punt om te bestuderen in 2019.

    Ik wens iedereen rond deze periode genoeg rust, tijd met familie en vrienden, om dan na een fijne oudejaarsavond 2019 in te gaan met nieuwe energie en volle goesting. Santé!

  • We need a standards-based way to detect high contrast mode

    November 19, 2018 - Posted in accessibility css

    So, contrast. It’s one of the most important success criteria for passing WCAG.

    It was top of mind in this design project recently where a lot of the branding was orange, and the problem was that white text on orange buttons didn’t pass WCAG 2.1. The project was government-related and for a large audience so I felt like I had an extra responsibility to do things right.

    In a design like this the button at the bottom would totally fail accessibility tests:

    A design containing a button with low contrast

    I wanted a simple way to switch the orange in my designs to a darker orange (a11y orange) in order to pass WCAG requirements.

    2 variations of orange colors, one that has enough contrast to pass WCAG and one that doesn't

    Basically I wanted to write CSS like this… (warning, pseudocode, this does not actually work!)

    .button {
        background: #F96830;
    }
    
    @media (prefers-high-contrast) {
        .button {
            background: #D03F06;
        }
    }
    

    …to get a result like this:

    A design containing a button with high contrast

    The @media (prefers-high-contrast)  would check if high contrast mode is turned on in the user’s OS. For example in macOS, it looks like this:

    macOS Accessibility settings

    Currently, there is no standards-based way to detect high contrast mode. There is an old implementation that only works on Windows (and I suppose only in IE) – which ties into the Windows theme settings I believe:

    @media (-ms-high-contract: active) {}
    @media (-ms-high-contract: white-on-black) {}
    @media (-ms-high-contract: black-on-white) {}

    I wished this was available in a standardized way. Now I often have to choose between accessible or ugly.

    Some applications try to solve the high contrast problem with their own implementation. In KBC Touch (banking app) this is a global on/off switch:

    In teamweek there are more fine-grained settings, that also help with other disabilities (e.g. color blindness).

    But in my opinion a setting per app is kind of pointless. What’s funny is that in the above Teamweek example the control to check the high contrast doesn’t have high enough contrast itself.

    It’s super great that the team of the two above apps thought about accessibility, which makes them already superior to most apps out there. But local settings in apps for teams that think about it and go great lengths to make a custom implementation, that’s not good enough.

    We need a standards-based way to tie into an OS system setting; and the persons suffering from low vision need to be educated to put this setting on. It will help them across the board.

    I filed some bugs and participated in discussions but I need your help to bring this to the attention of browser vendors.

    Here are some links:

    • [mediaqueries-5] high-contrast media feature
    • Bug 1506364 – Implement the prefers-contrast media-query.

    If you have an account on Github and/or Bugzilla please participate in the discussion or voice the need for this from the standpoint of web developers.

    You can also share this post, hopefully it can reach the right people that way.

  • Digitalisering van de Go Pass/Rail Pass is nodig

    November 18, 2018 - Posted in apps belgische-problemen nederlands public-transport - 2 comments

    KBC is de 1e bank om de aanschaf van treintickets toe te voegen aan de mobiele app. Ik kan dit alleen maar toejuichen. De kwaliteit van de mobiele KBC app is erg hoog. Ik hoop dat ze dezelfde kwaliteit kunnen bewaren in deze ervaring.

    Ik meen dat het al langer mogelijk is om trein tickets te kopen via derde partijen, maar dan voor internationale ritten, niet voor nationale.

    Mijn treinticket-ervaring, ondanks de vele campagnes rond de NMBS app en hoe gemakkelijk hij te gebruiken is, is nog altijd grotendeels op papier. Dit is een rechtstreeks gevolg van de prijszetting van de Rail Pass.

    Voor diegenen die het niet weten, een Rail Pass kost 76 euro in 2e klass en 109 euro in 1e klas. De Rail Pass is goed voor 10 ritten van eender welke bestemming in België naar eender welke bestemming in België.

    Een vaste prijs per rit dus, op voorwaarde dat je binnen het jaar je pass “opgebruikt”.

    De praktijk van mijn treinwezen is dus een pen bijhebben, mijn route op op een Rail pass en het bonnetje of de Rail Pass bijhouden voor mijn boekhouding.

    Allemaal goed en wel maar ik probeer net zo weinig mogelijk op papier te hebben.

    Nu, de kans dat ik dit systeem digitaal kan gebruiken (ook al zou ik het wel willen) is nogal klein, want dit zou voor mij eigenlijk betekenen dat alles duurder wordt.

    Er is namelijk geen goed prijsmodel voor iemand die vaak in meerdere Vlaamse centrumsteden moet zijn. Daarom gebruik ik een Rail Pass. Digitaal kan je enkel maar een enkel ticket kopen.

    Een abonnement zegt u? Er is, ondanks mijn frequent treingebruik, geen abonnement dat goedkoper is dan de Rail Pass te gebruiken. Zodus zou ik een verwelkoming van de Rail Pass verwelkomen. Ik zie dit dan als een soort interne counter van hoe vaak je de trein hebt genomen met een korting als je vaak genoeg de trein hebt genomen.

    Want dit is effectief het principe van de Rail Pass – je krijgt een korting omdat je belooft tenminste 10 keer de trein te nemen.

    Voor korte ritten heb ik nu geen goede oplossing; ik moet een bonnetje gaan halen en dat kost loket/machine tijd. Want ik ga nu ook geen 7,6 euro betalen om de trein te nemen van Antwerpen Berchem naar Antwerpen Centraal, of van Berchem naar Mechelen.

    Een ander “probleem”. Ik gebruik ook al jaren een combinatie tussen een 1e klas Rail Pass en een 2e klas Rail Pass. Zo kan ik dynamisch wisselen tussen de klasses afhankelijk van hoe druk het is, welke trein het nu juist is (1e klas comfort verschilt per trein) en afhankelijk van hoeveel zin/energie ik heb om te werken op de trein.

    Al dit gezegd zijnde, zou ik het management van de NMBS willen aansporen om de formule van de Go Pass/Rail Pass te digitaliseren.

  • Set up a keyboard shortcut for tags in macOS Mojave

    November 9, 2018 - Posted in computers macos workflow - 3 comments

    I wanted to bind ⌥+⌘+T to be able to use macOS’s tags feature using a keyboard shortcut in Finder.app.

    The way to set it up is super vague, so I figured I would share that you need to do to make it work.

    First, set it up in System Preferences > Shortcuts. Attach the shortcut to Finder.app. Make sure to use a … (ellipsis) character instead of typing 3 periods (…).

    Then, make sure that in Finder preferences you have no favorite tags, otherwise it will not work. In the screenshot below you will see that there are no favorite tags.

    This seems like a bug in OSX so I filed it as a Radar.

  • On taking care of your digital belongings

    November 3, 2018 - Posted in computers web

    I tweeted “Just self-host your things. External services can change the rules at any minute and they will.”

    This was mostly in response to people complaining about Flickr’s recent policy change, which limits free accounts to show the 1000 latest photos.

    It’s also sort of a retort against Medium, a service I have been using on and off but that I should really stop using since the end user experience of people visiting articles has become pretty shit. For a service that once was focussed on reading they can throw an awful lot of cookie-like banners in your face. And the promise of paying writers is not happening at all, but that’s a different discussion.

    The point to self-host is mostly a point about taking care of your digital belongings.

    I got responses that argued not everyone is as technical (as me) – or that most people don’t care to learn all of these things. I absolutely understand there is a learning curve to taking care of you digital belongings, but if you really care about what you make, you will either make the effort or pay someone to do the “digital conservation” for you.

    This can be as simple as paying a company you trust (i.e. Apple) for a service that you think will be around for years (i.e. iCloud). Or if you like to pay with your data you can do the same with Google.

    But if you really care about digital conservation while sharing your content at the same time, you should have a combination of local backups in different places and this thing called a website where you share your things.

    The thing is, if you are not paying for a service, you are effectively at the grace of their policy change, and if you do pay for a service, it’s still the same, except there’s a bigger chance that the service in question will remain in existence.

    But in the end, things will shut down, companies change, or they start to suck over the years. I recently cancelled my CloudApp subscription because the service just got worse over the years instead of better. I think most services progressively worsen over the years instead of getting better.

    Also, instead of worsening, they can also just stop being in business. How many apps and social networks have died over the years? There’s a graveyard of apps that just shut down. If you depended on any of them heavily, you had to do the work of getting your data out, if it was even possible.

    We recently started using Notion and one of my first worries was how to get data out of Notion. Thankfully there is a export option – otherwise I would probably not use the service.

    Now, some of these things I am writing about might make you think that I’m a hardcore digital archivist.

    I agree that over the years I have taken measures that are probably a bit techier than others to try and do some “digital preservation”.

    I changed my mind about what needs to be online at some point in time (i.e. I once believed that since Cool URIs don’t change I should keep everything I ever published online) but regardless the way that information can be preserved over years is a topic of interest to me.

    I quite like that I can link to photography.johanronsse.be – a website that I made 6 years ago – and know that it’s still there.

    On the other hand I was quite pissed that a static website I made hosted on Github.io just died because Github changed their internal logic. My fault for depending on Github to host my stuff.

    What I want to say in a nutshell is – if you depend on an external service, realize it can shut down at any second. Have local backups. Make redundant backups. Take care of your digital belongings.

  • Make a website dark according to user preferences

    October 31, 2018 - Posted in web

    In macOS Mojave, you can set your preference to dark UI.

    You can target this preference with CSS using code like this:

    @media (prefers-color-scheme: light) {
      body {
        background-color: #FFF;
        color: #000;
      }
    }
    
    @media (prefers-color-scheme: dark) {
      body {
        background: #000;
        color: #FFF;
      }
    }

    See this Codepen for a demo.

    This only works on Safari 12.1 for now, which you can get by downloading Safari Technology Preview.

  • Minder technologie, niet meer

    October 21, 2018 - Posted in Uncategorized

    Ik las voor de gemeenteraaadsverkiezingen in politieke folders dat Antwerpen de “City of Things” moet worden en dat wij de eerste moeten zijn met de uitrol van een 5G netwerk.

    Ik heb mijn bedenkingen bij de constante adoratie van technologie. Mijn boodschap is eenvoudig: bezint eer ge begint. Gedane zaken nemen geen keer.


    Als iemand die erg geïnteresseerd is in technologie ben ik enthousiast over wat je tegenwoordig allemaal kan doen met erg kleine computers.

    De “Internet of Things” beweging is heel interessant. Met technologie experimenteren om coole dingen te maken. Dat kan ik enkel toejuichen. Met een 3D printer, een Arduino kit en wat creativiteit en techniek kan je je eigen product maken.

    Het proces van maken is compleet gedemocratiseerd. Software en hardware die vroeger duizenden euros kostte, kost nu veel minder of zelfs helemaal niets. Bij de software een gevolg van het internet en de aandacht-economie. Bij de hardware een iets moeilijker verhaal, maar het heeft ook weer te maken met internet, globalisering en productie in lage loon-landen.

    Als kleine jongen was één van mijn “defining moments” een bezoek naar het Huis van de Toekomst (nu: Living Tomorrow) in Vilvoorde. Ik zag een glaspaneel dat je kon wisselen van doorzichtig naar niet doorzichtig met een knopje. Ik zag een ijskast met een belofte om ooit verbonden te zijn met het internet – een ijskast die kon detecteren of er iets nieuws gekocht moest worden. Mijn ogen glunderden en ik vond het helemaal top.

    We zijn nu 20 jaar later, en de technologie die toen baanbrekend was is nu mainstream. Ga naar de Mediamarkt, koop een Philips Hue starter kit en voilà, je bent op weg naar een “connected” huis.


    Omdat het zo gemakkelijk is om de “connected” technologie ergens in te proppen wordt het ook snel gedaan.

    Op de Twitter account Internet of Shit wordt de keerzijde van het internet der dingen getoond. Het uur niet kunnen lezen omdat je de end user license agreement van je horloge niet hebt geaccepteerd. Je niet kunnen wegen omdat de firmware van je weegschaal updaten. Je zou een hele lijst kunnen maken van dingen die niet noodzakelijk beter zijn geworden door nieuwe technologie.

    Amazon kondigde ergens vorige maand bijvoorbeeld een connected Alexa microgolf aan; je kan er eten in steken en dat eten dan beschrijven aan de microgolf; waarna de microgolf zichzelf inselt om het eten correct op te warmen.

    Als ontwerper vind ik het een interessant idee om zulke zaken eens uit te proberen, want wie heeft er nog niet gesukkeld met de interface van een microgolf?

    Aan de andere kant leidt dit uitproberen soms tot resultaten die slechter waren dan wat er daarvoor was. Als je een beetje weet wat je doet, is dan het aantal minuten en de sterkte tussen 1 en 5 instellen niet de juiste interface?


    Mijn moeder kwam onlangs langs met een nieuw strijkijzer. Ik had het een beetje druk op het werk en ze ging me helpen strijken. Er was een promotie op een strijkijzer dat ze wel vertrouwde en ze ging het voor mij kopen.

    Het probleem waar we op stootten was dat het nieuwe strijkijzer geen temperatuurknop had. Hoe zet je het zachter voor delicate kleding? Het antwoord bleek dat het een “slim” strijkijzer was, dat automatisch detecteerde wat er nu juist onder zit.

    Hier wederom: wat als je dan switcht van iets niet-delicaats naar iets delicaat en het strijkijzer is nog altijd super warm? Bye bye mooi hemd. Is de oplossing in plaats van “slim” proberen te zijn niet meer een beetje “dommer” te zijn?

    Als iemand die zelf software maakt en ontwerpt vertrouw ik dit soort “slimme” dingen niet altijd. Software is moeilijk. Dat is iets dat ik elke week herhaal in ons bedrijf.  Ik heb weinig vertrouwen in de capaciteiten van anderen om goede software te maken, net omdat het zo moeilijk is om goede software te maken.


    Eén van de uitdagendere delen in software is data management.

    Een record in een database maken is op zich niet zo moeilijk, maar het record verwijderen, en de rest van de app nog altijd correct te laten werken, is al een uitdaging op een moeilijker niveau.

    De meeste programmeurs zullen hier dan op reageren dat het wel gemakkelijk is, maar dan vraag ik mij af waarom de “delete account” functionaliteit in zoveel web applicaties mist. En waarom het kunnen verwijderen van zaken altijd naar achter wordt geschoven in product backlogs.

    Een record anonimiseren na verloop van tijd en de app nog altijd goed laten werken is weer een trapje moeilijker. Dit is duidelijk een topic door de GDPR – we kunnen niet zomaar onze databases laten groeien en groeien. We moeten ze ook doen slinken. Digitale vervuiling is een ding.

    De overheid heeft de voorbije jaren bewezen dat ze op software vlak nog wel iets bij te leren hebben. Ik weet ook zelf dat ik het niet meteen beter zou doen op programmatorisch vlak (misschien wel op het vlak van user interface :))


    Tegelijk ijveren politici voor meer features in diezelfde software die nog altijd een ramp is.

    Ik hoor dan plannen om vingerafdrukken in de eID op te slaan, terwijl op hetzelfde moment de profielgegevens van 50 miljoen Facebook gebruikers lekken. Als Facebook het op vlak van veiligheid niet kan, kan een leger consultants die werken in een overheidsgunning-logica het dan wel? Ik denk het niet.

    Een ander topic is het neerzetten van slimme camera’s. Die slimme camera’s beloven dat ze vanalles kunnen detecteren dat magisch het probleem van de politieker in kwestie oplost. De realiteit is dat iemand die output ook moet controleren, en dat de accuraatheid van de output van zulke camera’s betwist kan worden. Wat je uiteindelijk creëert is een nieuw probleem, geen oplossing.

    Het aantal onbemande camera’s in Antwerpen is verhoogd van 350 in 2012 naar 1200 in 2017. Is het effectief veiliger in Antwerpen nu dan 5 jaar geleden? Willen we effectief naar een CCTV-situatie zoals in het Verenigd Koninkrijk?

    Misschien is de betere keuze om mínder te doen, in plaats van meer? Laten we opletten dat we niet de City of Shit worden.

  • Rename layers using regular expressions in Figma

    October 20, 2018 - Posted in Uncategorized

    Since a few weeks you can batch rename layers using regular expressions in Figma. This is pretty freaking awesome.

  • Expand stroke-based SVGs in batch using an Illustrator script

    October 18, 2018 - Posted in workflow - 5 comments

    I was in the situation where had a bunch of SVGs, but they were stroke-based, from feather-icons.com.

    I don’t trust the cross-browser rendering of SVG strokes. It leads to problems when trying to color the icons with CSS as well – so I needed the expanded versions. There are over 200 icons in the set. Expanding them manually took too much time so I looked around and found a script.

    Convert SVG icons that are stroke-based to expanded shapes in Illustrator. Use the Scripts functionality to run this script.

    It took about 10 minutes to expand everything but at least I didn’t have to do it manually ?.

    Original script found at Adobe Forums.

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