دسته: برنامه‌نویسان

  • Integrating Psychology into Software Development | by Ulas Can Cengiz


    14 min read

    Nov 10, 2023

    Photo by Bret Kavanaugh on Unsplash

    Imagine sitting down at your desk to untangle a particularly complex piece of software code. Your eyes scan lines packed with logical operations and function calls. Somewhere in this intricate weave, a bug lurks, derailing the application’s performance. This scenario, familiar to many developers, isn’t just a test of technical skill; it’s a psychological challenge. The frustration and cognitive fatigue that often accompany such tasks can cloud judgment and prolong resolution. It’s in moments like these that the intersection of psychology and software development comes into sharp focus.

    Cognitive load theory, originally applied to educational psychology, has profound implications for managing complexity in software projects. It posits that our working memory has a limited capacity for processing new information. In the context of software development, this translates to the need for clean, readable code and well-architected systems that minimize the cognitive load on developers. By understanding and applying this theory, we can create development environments that reduce unnecessary complexity and allow developers to allocate their cognitive resources…



    Source link

  • Developer Spotlight: Reksa Andhika | Codrops

    Developer Spotlight: Reksa Andhika | Codrops


    Hi, my name is Reksa Andhika. I’m an independent creative developer based in Indonesia, specializing in building websites with motion and interaction. I work with companies, agencies, studios, and individuals from all over the world.

    Selected Works

    TrueKind

    This e-commerce skincare project was a passion project, created in collaboration with Abhishek Jha, a talented designer from India.

    I truly enjoyed watching every step of progress we made. It was an exciting journey from start to finish. We discussed and brainstormed everything from design and functionality to motion, aiming to make the project as polished as possible and highlight its beauty. The challenge of this project was to create a floating layout and motion effects that were not distracting, but instead made the website come alive using parallax and motion. We crafted engaging micro-interactions to enhance its visual appeal. My favorite part was the seamless page transition when entering the product detail page.

    We are really happy, people’s response is positive, we received awards & recognition, such as Awwwards Site of the Day & Developer Award, Awwwards E-commerce Honors Nominee, GSAP Site of the Day, Muz.li Picks Honor, Made With GSAP.

    Tech stack: Nuxt 3, Prismic, GSAP, Lenis.

    ELEMENTIS

    Luxury health & wellness resorts and residences. I had the pleasure of working with Fleava, an agency based in Bali, Indonesia.

    I thoroughly enjoyed working on the ELEMENTIS project, especially with the stunning assets and content they provided. The motion elements were thoughtfully aligned with the brand logo, ensuring a cohesive and harmonious visual identity. One of the challenges of this project was creating a clean layout and minimalist motion, leveraging the brand identity to craft a unique motion experience.

    ELEMENTIS received several awards and recognition, including Awwwards Site of the Day & Developer Award (my first SOTD!), GSAP Site of the Week, and GSAP Showreel 2024.

    Tech stack: Nuxt 3, GSAP, Vold (Internal Fleava CMS), Lenis.

    FIFTYSEVEN

    This is the portfolio website for FIFTYSEVEN, a studio based in Serbia. What makes this project special is that each case study is custom and carefully crafted, making every project unique. The challenge was to build different layouts, colors, and motion effects for each case study, but it was a fun and rewarding experience.

    Tech Stack: React, GSAP, Lenis.

    Understanding Neurodiversity

    This is an interactive website about neurodivergence. The site was designed to tell a story through interactive scroll, hover, and click elements. We aimed to deliver the message beautifully, using colorful vector assets. The challenge of this project was controlling the animation timeline, ensuring it worked smoothly both forwards and backwards.

    Understanding Neurodiversity received recognition as CSSDA Site of the Day and was nominated for CSSDA Website of the Month.

    Tech Stack: Vanilla HTML, CSS, JS, GSAP, Lottie.

    About Me

    I’ve been passionate about programming since I was 15, starting with desktop software, mobile applications, and websites. Eventually, developing websites became the most comfortable and fulfilling part of my journey.

    I started freelancing by helping friends with their projects while constantly improving my programming skills. Back then, I was only familiar with traditional, static websites.

    In 2020, my partner, Ala, introduced me to Awwwards, and I discovered that websites could be incredibly creative, with dynamic layouts, rich motion, and interactive elements. That moment sparked my interest and curiosity in creative website development.

    I began creating experimental projects, recreating entire websites for learning purposes, and later started working on client projects that featured rich motion and interaction. I learned the most by working on real projects, whether for clients or personal experiments.

    Philosophy

    I draw a lot of inspiration from internet culture, especially memes. They can be funny, satirical, and often deeply relatable.

    “It Ain’t Much But It’s Honest Work” (from a simple meme farm guy) – I always want to keep these words in my portfolio and in my mindset. As long as I’m proud of the work and know that I put real effort into it, that’s what matters most. Even if a project feels small or insignificant, honest work has its own value.

    I believe there’s always someone out there who will appreciate it; we just never know who that might be.

    Tools & Workflow

    When exploring the tech stack for projects and their requirements, I mostly use and feel comfortable with Nuxt.js for the frontend, SCSS for styling, Prismic for headless CMS, GSAP for motion and interaction, Three.js / OGL for WebGL, Lenis for smooth scrolling, and Shopify for e-commerce projects.

    Currently Learning

    Currently diving deep into learning WebGL and motion concepts.

    Current Challenges

    Finding and crafting the most efficient workflow.

    Final Thoughts

    As a developer, I believe curiosity and consistency are key to thriving in the industry. It’s important to learn the fundamentals to build strong knowledge, stay focused, avoid distractions, and create something experimental or a passion project. Publishing it can be a powerful move.

    Thank you to Codrops and Manoela for the opportunity and spotlight – it’s truly an honor! Codrops is one of the best resources for creative designers and developers, and I’ve learned so much from the site.



    Source link

  • Automating Your DevOps: Writing Scripts that Save Time and Headaches | by Ulas Can Cengiz


    Or, how scripting revolutionized my workflow

    Photo by Stephen Dawson on Unsplash

    Imagine a time when factories were full of life, with gears turning and machines working together. It was a big change, like what’s happening today with computers. In the world of creating and managing software, we’re moving from doing things by hand to letting computers do the work. I’ve seen this change happen, and I can tell you, writing little programs, or “scripts,” is what’s making this change possible.

    Just like factories changed how things were made, these little programs are changing the way we handle software. They’re like a magic trick that turns long, boring tasks into quick and easy ones. In this article, I’m going to show you how these little programs fit into the bigger picture, how they make things better and faster, and the headaches they can take away.

    We’re going to go on a trip together. I’ll show you how things used to be done, talk about the different kinds of little programs and tools we use now, and share some of the tricks I’ve learned. I’ll tell you stories about times when these little programs really made a difference, give you tips, and show you some examples. So, buckle up, and let’s jump into this world where making and managing software is not just a job, but something really special.



    Source link

  • Pandas v Psycopg. A Postgres database speed test. Who… | by Thomas Reid


    Two racing cars in a race, one represents Pandas, the other Psycopg2
    Image by Author

    Following on from a story I wrote comparing the speed of Pandas and Polars libraries in terms of reading and writing data — from and to — a Postgres database I thought it might be interesting to do a similar comparison between Pandas and Psycopg2.

    If you need to get data from or to a Postgres database table from or to a local file, read on for the winner.

    You can find the Pandas v Polars article at the link below:

    Pandas

    I don’t think I need to explain much about what Pandas is. Its use in Python code is ubiquitous and is one of the main tools that people use to load, explore, visualise and process large amounts of data in Python.

    Psycopg

    Psycopg is one of the most popular PostgreSQL database libraries for the Python programming language. It implements the Python Database API Specification v2.0, allowing Python applications to communicate with PostgreSQL databases.



    Source link

  • Calling AWS Bedrock from code. Using Python in a Jupyter notebook | by Thomas Reid


    Image by Author

    Using Python in a Jupyter notebook

    Many of you will know that every man and his dog are producing AI products or LLM’s and integrating them with their products. Not surprisingly AWS — the biggest cloud services provider — is also getting in on the act.

    What is bedrock?

    Its AI offering is called Bedrock and the following blurb from it’s website describes what Bedrock is.

    Amazon Bedrock is a fully managed service that offers a choice of high-performing foundation models (FMs) from leading AI companies like AI21 Labs, Anthropic, Cohere, Meta, Stability AI, and Amazon via a single API, along with a broad set of capabilities you need to build generative AI applications, simplifying development while maintaining privacy and security. With Amazon Bedrock’s comprehensive capabilities, you can easily experiment with a variety of top FMs, privately customize them with your data using techniques such as fine-tuning and retrieval augmented generation (RAG), and create managed agents that execute complex business tasks — from booking travel and processing insurance claims to creating ad campaigns and managing inventory — all without writing any code. Since Amazon Bedrock is serverless, you don’t have to manage any infrastructure, and you can securely integrate and deploy generative AI…



    Source link

  • Let a thousand programming publications bloom. | by Tony Stubblebine


    I get that this is a big pivot given that we switched to a new editor recently. But things are changing at Medium and I think this will ultimately be a boon for everyone, authors, readers and publications.

    I would like to inspire some (but not all) of you to start a publication and give you some guidelines on how to do it well. If you are an author, there are many other publications to write for and hopefully there will soon be even more (check the comments for suggestions).

    Medium has always had publications that acted as something in between a group blog and a sub-reddit. Publication editors help set a quality bar, give feedback on your posts, and bring you an audience. Publications are a pillar of the Medium experience.

    But the publication opportunities that (I think) are exciting are changing. In the past, the way to have a successful publication was to publish on anything and everything. So Medium was dominated by broad, high volume publications. Better Programming was one of those pubs and we published on topics that might not have a lot of overlapping readers. How many of you are currently programming in all of these languages: Go, Rust, Javascript, Ruby, Python, Swift, Kotlin, and Dart?

    Better Programming has published stories on all of those topics and more, and so by definition we were often publishing stories that a lot of you don’t want to read. The direction Medium is heading is to optimize for publications that are more focused than Better Programming has been.

    There are two types of focuses that I’m personally excited about. One is that publications are de facto communities of enthusiasts. The other is that publications bring a level of expertise to Medium’s boost program. Caveat: these are just what I’m excited about — maybe you have more creative ideas than I do.

    Both cases beg for publications that are focused.

    If you want to build an enthusiast community of people who love Kotlin, who want to write about their Kotlin projects and what they are learning, then you don’t also need authors in your publication who are writing about Swift.

    Similarly, Medium is leaning on the expertise of publication editors to contribute as nominators in the Boost program. It’s hard to bring credible expertise when your focus is too broad. Most nominators also have first hand expertise beyond what they publish. So, if I were to run Better Programming myself, I think I could credibly nominate within Rails (I’ve built several companies on that stack) and Regular Expressions (I wrote a book), but I’m clueless on nearly everything else.

    Running a publication isn’t for everyone and it isn’t a get-rich-quick scheme. The best publications are run out of authentic interest in a topic and nothing more. In technical topics, there can be some financial rewards, which I’ll get to. But mainly it’s best to think of this as a way to harness a passion you may have. I know that the community building impulse is strong in many of you because I’ve seen how many people have started publications on Medium over the years.

    For any of you who are interested, I’m going to give you some tips on starting a publication. These aren’t exactly a recipe, but I’ll try to arrange them in order.

    1. Pubs are easy to start and at minimum you have yourself as a possible author to fill the pub with stories. Here’s a link to get going.
    2. If you want to accept other authors then you need to setup instructions. Almost all publications that accept other authors setup a “write for us” page with instructions, make it a tab on the publication, write a style guide, and then create a Google form to handle new author applications. Copy ours.
    3. Do you want to focus on inclusivity? If so, then your role is probably more about support and encouragement and less about setting a high editorial bar. People get squeamish about being judged but the thing I’ve long recognized is that all writing was useful to the writer and is often useful to at least a few people, but very little writing is going to trend on Reddit or HackerNews.
    4. Do you want to focus on exclusivity, i.e. finding the best of the best ideas and information on a topic? Medium’s Boost program gives publication editors a tool to recruit authors: “I can help boost your stories to more readers.” You can’t just boost anything, it has to be the best of the best. And so focusing on that is a very exclusive approach. I often think of a publication here about Runners where the editor is using his access to the Boost to work with professional running coaches, professional runners, and the former editor-in-chief of Runners World. That must be so fun for him! The programming equivalent is different for each programming languange so I’ll use an example from the language I got started in: if I started a publication for Perl, I’d use the boost as a way to recruit Larry Wall.
    5. Consider becoming a Boost nominator but also consider that doing that will require having a strong nose for the best of the best. Of course every story on Medium is “high quality” but there are certain stories that are important, accurate, helpful and maybe even more than that. This isn’t official policy, but unofficially, it would be reasonable to submit an application to be a Boost Nominator once you have a publication with three authors and ten stories.
    6. Getting a publication started requires recruiting authors. Hopefully you know some already, even if they aren’t on Medium. I think that if you don’t know a subject well enough that you also already know other people with similar enthusiasm and expertise in that subject, then starting a publication isn’t for you. That’s not a hard rule, but I’m saying it from experience. After recruiting from your own network, the way almost every other publication has recruited authors is by monitoring relevant tags on Medium and then using the private note feature to invite recently published stories into your publication.
    7. Lets talk money. If you are a publication that Boosts stories you will get paid an honorarium. Plus if you build an audience, your own stories might make more money. But, you are missing the big picture if this is the most important thing to you. Writing and editing is a form of portfolio building. The software engineering field pays so much money, way beyond what Medium pays for writing. So focusing on getting paid from Medium is the ultimate example of a local maxima because the you can make 1000x more by building a reputation and using it to get a job or raise. This is just fact.

    If you do start a programming publication that is looking for authors or you’ve already started a programming publication like that, post a link in the responses along with a link to your submission guidelines.

    Authors: I looked up Better Programming’s stats. 4.6k authors have published 16.8k stories to Better Programming. Those stories generated 151M page views. Not all of them were behind the paywall, but the ones that were earned authors $999 thousand dollars. It’s been a huge honor to play a role in that and my thanks go out to the editors who’ve made it happen and to all of you for writing. Medium is still a great home for you, it’s just that you should find new places to publish.



    Source link

  • Animating in Frames: Repeating Image Transition

    Animating in Frames: Repeating Image Transition


    In our last Motion Highlights collection, I added a really amazing reel by Joana Correia, a truly skilled motion designer. Her works are so thoughtful and browsing her latest projects I stumbled upon one of her other reels wrapping up her last year. Right at the beginning, there is this:

    This small excerpt showcases a really interesting sliced repetition effect, which inspired me to try something new: animating “frames” of the same image along a path. I’m not sure if this is any good, but for some reason, I really like it. It feels like it could fit well within editorial design contexts.

    It’s just a proof of concept, but I hope it sparks some new ideas for you too! 🙂

    Configuration

    There are better ways to do this obviously, but since this is a proof of concept and we want to be able to show various effects in our demo, I decided to do it like this. So here’s how the configuration works.

    Each grid item can override the global animation settings by specifying data- attributes directly in the HTML. This allows fine-tuning of transitions on a per-item basis.

    You can customize the following options for each .grid__item:

    • clipPathDirectiondata-clip-path-direction: Direction for clip-path animation (top-bottom, bottom-top, left-right, right-left).
    • stepsdata-steps: Number of mover elements created between grid item and panel.
    • stepDurationdata-step-duration: Duration (in seconds) of each mover animation step.
    • stepIntervaldata-step-interval: Delay (in seconds) between each mover’s animation start.
    • rotationRangedata-rotation-range: Maximum random rotation (±value, degrees) applied to movers.
    • wobbleStrengthdata-wobble-strength: Maximum random positional wobble (in pixels) during motion path generation.
    • moverPauseBeforeExitdata-mover-pause-before-exit: Pause duration (in seconds) before movers exit.
    • panelRevealEasedata-panel-reveal-ease: Easing function used when revealing the panel.
    • gridItemEasedata-grid-item-ease: Easing function for animating grid item exits.
    • moverEnterEasedata-mover-enter-ease: Easing function for movers entering.
    • moverExitEasedata-mover-exit-ease: Easing function for movers exiting.
    • panelRevealDurationFactordata-panel-reveal-duration-factor: Multiplier to adjust panel reveal animation timing.
    • clickedItemDurationFactordata-clicked-item-duration-factor: Multiplier to adjust clicked grid item animation timing.
    • gridItemStaggerFactordata-grid-item-stagger-factor: Multiplier for staggered grid item animations (based on distance).
    • moverBlendModedata-mover-blend-mode: CSS mix-blend-mode to apply to movers (normal, screen, etc.).
    • pathMotiondata-path-motion: Path motion type: linear (straight) or sine (curved).
    • sineAmplitudedata-sine-amplitude: Height of sine wave if using sine path motion (in pixels).
    • sineFrequencydata-sine-frequency: Frequency of sine wave motion (higher = more waves).

    Example

    <figure class="grid__item"
            data-clip-path-direction="left-right"
            data-steps="8"
            data-rotation-range="20"
            data-path-motion="sine"
            data-sine-amplitude="60"
            data-sine-frequency="6.28">
    
      <div class="grid__item-image" style="background-image: url(assets/img32.webp)"></div>
      
      <figcaption class="grid__item-caption">
        <h3>Aura — K21</h3>
        <p>Model: Lily Cooper</p>
      </figcaption>
      
    </figure>

    This item will fly with 8 movers, stronger rotation wobble, a sine wave path, and panel opening from left to right.

    Try it out and play with it and I really hope you enjoy it!



    Source link

  • Native Design Tokens: The Foundation of Consistent, Scalable, Open Design

    Native Design Tokens: The Foundation of Consistent, Scalable, Open Design


    As design and development teams grow and projects span across web, mobile, and internal tools, keeping everything consistent becomes tricky. Even small changes, like updating a brand color or adjusting spacing, can turn into hours of manual work across design files, codebases, and documentation. It is easy for things to drift out of sync.

    That is where design tokens come in. They are a way to define and reuse the key design decisions like colors, typography, and spacing in a format that both designers and developers can use. Instead of repeating values manually, tokens let teams manage these decisions from a central place and apply them consistently across tools and platforms.

    With Penpot’s new native support for design tokens, this workflow becomes more accessible and better integrated. Designers can now create and manage tokens directly inside their design files. Developers can rely on those same tokens being structured and available for use in code. No plugins, no copy pasting, no mismatched styles.

    In this article, we will look at what design tokens are and why they matter, walk through how Penpot implements them, and explore some real world workflows and use cases. Whether you are working solo or managing a large design system, tokens can help bring order and clarity to your design decisions—and we will show you how.

    What are Design Tokens?

    Design tokens are a way to describe the small but important visual decisions that make up your user interface. Things like primary colors, heading sizes, border radius, or spacing between elements. Instead of hardcoding those values in a design file or writing them directly into code, you give each one a name and store it as a token.

    Each token is a small piece of structured data. It has a name, a value, and a type. For example, a button background might be defined like this:

    "button-background": {
      "$value": "#005FCC",
      "$type": "color"
    }

    By putting all your decisions into a token format like this, they can be shared and reused across different projects and tools. Designers can use tokens inside the design tool, while developers can use them to generate CSS variables, theme files, or design system code. It is a way to keep everyone aligned, without needing to sync manually.

    The idea behind tokens has been around for a while, but it is often hard to implement unless you are using very specific tools or have custom workflows in place. Penpot changes that by building token support directly into the tool. You do not need extra plugins or complex naming systems. You define tokens once, and they are available everywhere in your design.

    Tokens are also flexible. You can create simple ones like colors or font sizes, or more complex groups for shadows, typography, or spacing systems. You can even reference other tokens, so if your design language evolves, you only need to change one thing.

    Why Should You Care About Design Tokens?

    Consistency and efficiency are two of the main reasons design tokens are becoming essential in design and development work. They reduce the need for manual coordination, avoid inconsistencies, and make it easier to scale design decisions. Here is how they help across different roles:

    For designers
    Tokens remove the need to repeat yourself. Instead of manually applying the same color or spacing across every frame, you define those values once and apply them as tokens. That means no more copy-pasting styles or fixing inconsistencies later. Everything stays consistent, and updates take seconds, not hours.

    For developers
    You get design values in a format that is ready to use. Tokens act as a shared language between design and code, so instead of pulling hex codes out of a mockup, you work directly with the same values defined by the design team. It reduces friction, avoids mismatches, and makes handoff smoother.

    For teams and larger systems
    Tokens are especially useful when multiple people are working on the same product or when you are managing a design system across several platforms or brands. They allow you to define decisions once and reuse them everywhere, keeping things in sync and easy to update when the brand evolves or when new platforms are added.

    Watch this quick and complete demo as Laura Kalbag, designer, developer and educator at Penpot, highlights the key benefits and main uses of Penpot’s design tokens:

    What Sets Penpot Apart?

    Penpot is not just adding support for design tokens as a separate feature. Tokens are being built directly into how Penpot works. They are part of the core design process, not an extra tool you have to manage on the side.

    You can create tokens from the canvas or from the token panel, organize them into sets, and apply them to components, styles, or entire boards. You do not need to keep track of where a value is used—Penpot does that for you. When you change a token, any component using it updates automatically.

    Take a look at this really great overview:

    Tokens in Penpot follow the same format defined by the Design Tokens Community Group, which makes them easy to sync with code and other tools. They are stored in a way that works across platforms, and they are built to be shared, copied, or extended as your project grows.

    You also get extra capabilities like:

    • Tokens that can store text, numbers, and more
    • Math operations between tokens (for example, spacing that is based on a base value)
    • Integration with Penpot’s graph engine, so you can define logic and conditions around your tokens

    That means you can do more than just store values—you can create systems that adapt based on context or scale with your product.

    Key features

    Penpot design tokens support different token types, themes, and sets.

    Design tokens in Penpot are built to be practical and flexible from the start. Whether you are setting up a simple style guide or building a full design system, these features help you stay consistent without extra effort.

    • Native to the platform
      Tokens are a core part of Penpot. You do not need plugins, workarounds, or naming tricks to make them work. You can create, edit, and apply them directly in your files.
    • Based on open standards
      Penpot follows the format defined by the Design Tokens Community Group (W3C), which means your tokens are portable and ready for integration with other tools or codebases.
    • Component aware
      You can inspect which tokens are applied to components right on the canvas, and copy them out for use in code or documentation.
    • Supports multiple types
      Tokens can represent strings, numbers, colors, font families, shadows, and more. This means you are not limited to visual values—you can also manage logic-based or structural decisions.
    • Math support
      Define tokens in relation to others. For example, you can set a spacing token to be twice your base unit, and it will update automatically when the base changes.
    • Graph engine integration
      Tokens can be part of more advanced workflows using Penpot’s visual graph engine. This opens the door for conditional styling, dynamic UI variations, or even generative design.

    Practical Use Cases

    Design tokens are flexible building blocks that can support a range of workflows. Here are a few ways they’re already proving useful:

    • Scaling across platforms
      Tokens make it easier to maintain visual consistency across web, mobile, and desktop interfaces. When spacing, colors, and typography are tokenized, they adapt across screen sizes and tech stacks without manual rework.
    • Creating themes and variants
      Whether you’re supporting light and dark modes, multiple brands, or regional styles, tokens let you swap out entire visual styles by changing a single set of values—without touching your components.
    • Simplifying handoff and implementation
      Because tokens are defined in code-friendly formats, they eliminate guesswork. Developers can use tokens as source-of-truth values, reducing design drift and unnecessary back-and-forth.
    • Prototyping and iterating quickly
      Tokens make it easier to explore design ideas without breaking things. Want to try out a new font scale or update your color palette? Change the token values and everything updates—no tedious find-and-replace needed.
    • Versioning design decisions
      You can track changes to tokens over time just like code. That means your design system becomes easier to maintain, document, and evolve—without losing control.

    Your First Tokens in Penpot

    So how do you actually work with tokens in Penpot?

    The best way to understand design tokens is to try them out. Penpot makes this surprisingly approachable, even if you’re new to the concept. Here’s how to start creating and using tokens inside the editor.

    Creating a Token

    1. Open your project and click on the Tokens tab in the left panel.
    2. You’ll see a list of token types like color, dimension, font size, etc.
    3. Click the + button next to any token type to create a new token.

    You’ll be asked to fill in:

    • Name: Something like dimension.small or color.primary
    • Value: For example, 8px for a dimension, or #005FCC for a color
    • Description (optional): A short note about what it’s for

    Hit Save, and your token will appear in the list. Tokens are grouped by type, so it stays tidy even as your set grows.

    If you try to create a token with a name that already exists, you’ll get an error. Token names must be unique.

    Editing and Duplicating Tokens

    You can right-click any token to edit or duplicate it.

    • Edit: Change the name, value, or description
    • Duplicate: Makes a copy with -copy added to the name

    Handy if you’re exploring alternatives or setting up variants.

    Referencing Other Tokens (Aliases)

    Tokens can point to other tokens. This lets you define a base token and reuse it across multiple other tokens. If the base value changes, everything that references it updates automatically.

    For example:

    1. Create a token called dimension.small with a value of 8px
    2. Create another token called spacing.small
    3. In spacing.small, set the value to {dimension.small}

    Now if you ever update dimension.small to 4px, the spacing token will reflect that change too.

    Token references are case-sensitive, so be precise.

    Using Math in Tokens

    Penpot supports simple math in token values—especially useful for dimension tokens.

    You can write things like:

    • {dimension.base} * 2
    • 16 + 4
    • {spacing.small} + {spacing.medium}

    Let’s say dimension.base is 4px, and you want a larger version that’s always double. You can set dimension.large to:

    csharpCopyEdit{dimension.base} * 2
    

    This means if you ever change the base, the large size follows along.

    Math expressions support basic operators:

    • + addition
    • - subtraction
    • * multiplication

    This adds a lightweight logic layer to your design decisions—especially handy for spacing scales, typography ramps, or breakpoints.

    What’s Next for Penpot Design Tokens?

    Penpot has an exciting roadmap for design tokens that will continue to expand their functionality:

    • GitHub Sync: A feature allowing teams to easily export and import design tokens, facilitating smooth collaboration between design and development teams.
    • Gradients: An upcoming addition to design tokens, enabling designers to work with gradients as part of their design system.
    • REST API & Automation: The future addition of a REST API will enable even deeper integrations and allow teams to automate their design workflows.

    Since Penpot is open source and works under a culture of sharing as much as they can, as early as possible, you can check out their open Taiga board to see what the team is working on in real time and what’s coming up next.

    Conclusion

    Penpot’s design tokens are more than just a tool for managing visual consistency—they are a game-changer for how design and development teams collaborate. Whether you’re a junior UI designer trying to learn scalable design practices, a senior developer looking to streamline design implementation, or an enterprise team managing a complex design system, design tokens can help bring order to complexity.

    As Penpot continues to refine and expand this feature, now is the perfect time to explore the possibilities it offers.

    Give it a try!

    Are you excited about Penpot’s new design token feature? Check it out and explore the potential of scalable design, and stay tuned for updates. We look forward to see how you will start incorporating design tokens into your workflow!



    Source link

  • Nite Riot: Minimalism Gets a Wild Side

    Nite Riot: Minimalism Gets a Wild Side


    Nite Riot isn’t just one person, it’s a powerhouse team of creatives crafting
    high-voltage promos and commercials for the biggest names in music, fashion,
    and entertainment. The kind of work that makes your jaw drop and your brain
    scream, “Damn, that’s cool”! So, when we got the chance to build their digital
    playground, we knew one thing: it had to hit just as hard as their portfolio.

    It just so happened that while working on this project, I was deep into
    Louis Paquet’s Awwwards masterclass,
    Memorable UI Design For Interactive Experiences. I challenged myself to apply a whole new approach:
    “Big Idea”. It became the driving force behind everything
    that followed.

    Less Noise, More Punch

    Nite Riot’s work hits like a lightning bolt—loud, bold, and impossible to
    ignore. The website needed to do the opposite: create space for that energy to
    shine. We stripped away the noise and leaned into a minimal black-and-white
    aesthetic, relying on a dynamic grid layout and a Difference (Blend) Mode to
    do the heavy lifting.

    We went through multiple visual directions at the start: concepts were
    sketched, tested, and tossed. Only the strongest ideas made the cut, forming a
    clean yet bold design system.

    And we didn’t wait for the homepage to make a first impression. The preloader
    set the tone from the jump—not just functional, but atmospheric. It’s the
    handshake, the deep breath before the plunge. I always think of the preloader
    as the overture of the experience.

    Big Idea

    My guiding light? Difference Mode. It didn’t just influence the design; it
    became the heartbeat of the entire site.

    • Typography treatments
    • Imagery overlays
    • Video hovers
    • Case study rollovers
    • Page transitions
    • Scroll effects
    • The logo itself
    • Dark/Light theme toggling
    • Drag scroll on the Inspired page
    • Even the 404 page

    Enter the Difference Mode

    The goal wasn’t simply to layer on visual effects; instead, it was about
    crafting a rhythm. Difference Mode brought contrast and edge to every element
    it touched. Hover states, transitions, and page reveals all flowed together,
    each following the same beat.

    But the impact wasn’t confined to the visual side. On the technical front,
    Difference Mode allowed us to create a smooth dark/light theme experience
    without the need for redundant styles. With a single toggle, the entire color
    palette reversed seamlessly, ensuring both sharpness and performance.

    Design Index Page

    We experimented with multiple layouts to strike the perfect balance. The
    client didn’t want a fullscreen visual overload, but at the same time, they
    wanted a strong presence of imagery—all within a minimalist aesthetic. The
    result? A carefully structured design that offers a rich visual experience
    without overwhelming the user, maintaining the sleek and intentional feel of
    the site.

    Case Study: A Scrolling Cinematic Experience

    Case studies aren’t just pages on this site—they’re a journey. Forget the
    standard click-and-load experience; here, case studies unfold like a film
    reel, one seamless story rolling into the next.

    • On desktop, the layout moves horizontally—because why
      should scrolling always be up and down?
    • No matter if a title is one line or three, we made sure everything adapts
      beautifully.
    • We developed a multi-case format, so you’re never locked
      into just one story.
    • And the showstopper?
      The ultra-smooth case study transition. Instead of abruptly
      ending one project and making you manually start the next, we designed a
      flow where the next case subtly appears, teasing you into it. You can either
      click and dive in or keep scrolling, and like magic, you’re onto the next
      visual masterpiece.

    Inspired? You Will Be.

    Our favorite part? The Inspired page. Imagine a canvas where images float,
    shift, and react to your every move. Drag, drop, hold—boom, Difference Mode
    kicks in. It’s a playground for the restless creative mind, where inspiration
    isn’t just consumed—it’s interacted with.

    404, But Make It Rockstar

    Most 404 pages are where fun goes to die. Not here. Ours is a full-blown
    experience—an Easter egg waiting to be discovered. The kind of 404 that makes
    you want to get lost on purpose.

    Oh, and did we mention? We applied
    double Difference Mode here. Because why not?

    I accidentally duplicated a video layer that had Difference Mode on—and turns
    out, the number shapes had the same mode. That happy accident created a unique
    setup with a ton of character. And the best part? It was insanely easy to
    build in Webflow with just the native tools.

    Animation

    Most 404 pages are where fun goes to die. Not here. Ours is a full-blown
    experience—an Easter egg waiting to be discovered. The kind of 404 that makes
    you want to get lost on purpose.

    Every animation began in Figma. Once we nailed the tone and pacing, I moved it
    all into After Effects, tweaking easings and timings to hit that sweet spot
    between smooth and snappy.

    I leaned on three key easing patterns to shape the site’s movement:

    easeSlowStartFastEnd
    cubic-bezier(0.2, 0, 0.1, 1)
    
    easeFastStartSmoothEnd
    cubic-bezier(0.75, 0, 0, 1)
    
    easeHeadings
    cubic-bezier(0.75, 0, 0, 0.35)

    When it came to development, GSAP gave us the
    control and nuance to bring those animations to life on the web.

    Development Choices

    We didn’t have an unlimited budget, but we had a clear vision. So we chose
    tools that gave us flexibility without compromising on polish.

    We pushed Webflow and
    GSAP to their limits to bring this vision to
    life—fully custom interactions, smooth performance, and pixel-perfect
    precision across all devices. Every scroll, hover, and transition was
    carefully crafted to support the story.

    Stack Under the Hood:

    • Webflow: our base platform
    • GSAP: the animation engine
    • Barba.js: for seamless page transitions
    • Embla.js: smooth slider on
      the homepage
    • Lenis: buttery custom
      scroll experience
    • Glightbox: for
      full-screen video playback

    Barba.js and Lenis worked perfectly together for our infinite scroll effect
    and horizontal case study navigation.

    Tech Breakdown: From Stack to Story

    Global

    • Page transitions powered by barba.js +
      GSAP, including smooth element reveals on entry.

    Index Page

    • Case slider built with Embla Carousel for
      the title timeline and mobile image switching.
    • GSAP handles pagination animations and desktop image
      transitions.

    Inspired Page

    • Drag-to-explore canvas with floating images and color
      inversion using vanilla JS + CSS.als on
      entry.

    Work Page

    • List item hover effects with highlight and background
      transitions using JS + CSS + GSAP.

    About Page

    • Section overlap animation with background scaling and
      masked reveals powered by CSS + GSAP.
    • On-scroll reveal of text and imagery using
      GSAP ScrollTrigger.
    • Hover animations on cities (desktop) +
      auto image rotation (mobile) via
      JS + GSAP.
    • Smooth scrolling handled by lenis.js.

    Case Studies

    • Horizontal scroll experience using
      lenis.js + GSAP.
    • Pagination updates animated with
      JS + GSAP.
    • Parallax effects on H1, media, and next-case blocks powered
      by GSAP.
    • Tab transitions via barba.js + GSAP.
    • Scroll-based transition to the next case using
      JS + barba.js + GSAP.
    • Back button transition animated with
      JS + barba.js + GSAP.
    • Full-screen video block with smooth entry/exit animations
      using JS + GSAP + glightbox.

    404 Page

    • Scrolling text ticker via CSS animations.
    • Cursor-following 404 block on desktop using
      JS + GSAP.
    • Chaotic digit displacement animated with
      GSAP.
    • Motion-reactive number shift on mobile/tablet via
      JS + Device Orientation API.

    Visual Optimization

    Performance mattered—especially on case study pages packed with video previews
    and hi-res imagery. Our toolchain:

    • Handbrake for compressing videos
    • Picflow for bulk image optimization
    • tinypng for WebP polishing

    Picflow let us handle massive batches of photos way faster than Squoosh ever
    could. Big time-saver.

    Handbrake
    Picflow
    tinypng

    CMS

    We built everything in Webflow’s CMS. Super clean and fast to update. Adding a
    new case is as easy as filling out a form.

    Not Just a Portfolio. A Vibe.

    This wasn’t about making another nice-looking site. It was about building a
    space that feels alive. Every pixel, every transition, every weird, wonderful
    interaction was designed to make people feel something. Minimalism with an
    edge. Order with a dash of chaos. Just like Nite Riot.

    Oh, and speaking of hidden gems—let’s just say we have a soft spot for Easter
    eggs. If you hover over the Nite Riot logo, you might just stumble upon a
    couple of surprises. No spoilers, though. You’ll have to find them yourself.
    😉

    Click. Explore. Get Lost.

    This is not just a website. It’s an experience. A digital world built to be
    played with. So go ahead—dive in, mess around, and see what happens!

    Visit the Nite Riot Site

    Credits

    Creation Direction:
    BL/S®

    Art / Creative Director:
    Serhii Polyvanyi

    UI / UX Design:
    Vladyslav Litovka

    PM: Julia Nikitenko

    Dev Direction: V&M, Yevhenii Prykhodko





    Source link

  • Turning Music Into Motion: The Making of the 24/7 Artists Launch Page

    Turning Music Into Motion: The Making of the 24/7 Artists Launch Page


    In this article, we’ll explore the behind-the-scenes process of how Waaark brought 24/7 Artists’ new product launch landing page to life. See how creative vision, design, and development came together to shape the final result.

    Brief

    24/7 Artists reached out after discovering our work on AW Portfolio. They came to us with a clear challenge: help them break through a creative deadlock and redesign their site to support an upcoming product launch—on a tight deadline.

    At Waaark, having time to think, breathe, and work at our own pace is key. We typically avoid last-minute projects, but this one felt like a puzzle worth solving. We saw a narrow but feasible path forward and accepted the challenge.

    Creative research

    We kicked off the project by exploring ways to visually represent music. After some wandering sessions on platforms like Pinterest and Behance, we narrowed our direction toward visualiser aesthetics—particularly the use of lines to suggest sound waves.

    The client also emphasised their desire to introduce depth and dimensionality into the site. We collected inspiration reflecting this concept and organised everything into a Milanote moodboard, including ideas around color, typography, layout, and impactful hero sections to set a clear creative direction.

    Given the time constraints, it was important to focus on bold, achievable visuals—techniques we had already mastered.

    Design

    Story board

    For a storytelling-focused, long-scrolling landing page like this, we replaced our typical UI wireframes with a full storyboard. This storyboard mapped out each step of the user journey, along with transitions between sections.

    Our goal was twofold: to provide the client with a clear visual direction and to start shaping the flow and pacing on our end.

    Creative Direction

    With both the moodboard and storyboard approved, we began merging them to define the site’s visual language.

    Right from the hero section, we wanted the message to be loud and clear: music meets tech. We envisioned a dark, immersive intro with circular lines evoking vinyl records or sound waves. Layered on top: a bold sans-serif headline and a ticket-style navigation bar to reinforce the music industry vibe.

    To instantly capture user attention, we imagined a mouse-trail animation where artist photos appear in an equalizer-style movement.

    To contrast the dark intro, we introduced a more colorful palette throughout the rest of the site, showcasing the diversity of music and the artists’ unique sensibilities.

    Implementation

    Tech stack

    We used our go-to stack, which the client was already familiar with: WordPress. It provided a solid foundation—easy to manage, flexible for the frontend, and scalable.

    For the front-end experience, we integrated a few select libraries:

    • GSAP for fluid, expressive animations
    • Luge to manage the overall page lifecycle
    • Lenis for smooth scrolling

    We aimed to minimise external dependencies, instead relying on native CSS 3D transformations and lightweight JS/Canvas-based animations—especially for effects mimicking depth.

    Animation

    To save time, all the animations were directly coded based on what we had envisioned and mapped out in the storyboard. Some of them worked exactly as imagined from the start, while others needed a bit of fine-tuning to integrate fully into the overall experience.

    Scroll Animations

    To keep users engaged while presenting 24/7 Artists’ vision and offering, we crafted a sequence of scroll-driven animations—alternating between smooth flows and unexpected reveals.

    Micro-Interactions

    On a product launch page, micro-interactions are key. They spark curiosity, highlight key elements, and subtly guide the user toward action.

    For the main call to action, we designed a distinctive interaction using the same equalizer-like shape seen in the photo animations. On hover, it animates like a music player—both playful and thematic.

    Tile Grid Setup
    We began by constructing a grid made of 1×1 and 2×2 tiles.

    Z-Axis Scroll Effect
    Since we weren’t using true 3D, we faked depth using scale transforms. We calculated the scale needed to have the grid’s central hole (where content would go) expand to fill the viewport. Then, we transitioned each tile from its original size and position to the final state using GSAP.

    Playing with GSAP staggered animation adds more depth to the motion.

    Simulated Cube Depth
    To simulate 3D cubes, we calculated the back-face vertices based on a smaller grid to keep the illusion of perspective. We then drew side faces accordingly, making sure to hide vertices behind the front face.

    Canvas-Based Content Reveal
    To finish the effect, we redrew the 2×2 tiles’ content in Canvas and added a cover layer that scrolls at a faster rate, revealing the content below.

    Conclusion

    The 24/7 Artists landing page was a bold and fast-paced project that pushed us to distill ideas quickly and trust our creative instincts.

    Through strong visual metaphors, smooth storytelling, and carefully crafted motion, we built a launchpad that sets the tone for the brand’s next chapter.

    This first release is just the beginning. The site was designed with scalability in mind, and additional sections and pages are already being added to support future growth and evolving needs.

    When the vision is clear and the momentum is right, great things can happen—fast.



    Source link