Jump to content

Blogger

Blog Bot
  • Joined

  • Last visited

    Never

Blog Entries posted by Blogger

  1. by: Community



    As a developer, you've likely seen many IDEs offering AI capabilities - from standalone editors like Cursor, Void editor, and Zed, to extensions like GitHub Copilot, Continue.dev, and Qodo.
    If you enjoy tinkering with open source tools and experimenting with different approaches, Flexpilot IDE might be just what you're looking for. 🔍
    Why Flexpilot IDE? ✨
    Here are my reasons for creating and using Flexpilot:
    Bring your own AI Model 🤖: Most developers already have API keys for various LLM services. Today's LLM providers offer generous free tiers - take Google Gemini or Azure OpenAI for instance. Instead of being locked into a specific subscription, Flexpilot lets you use these existing credentials and experiment with different models as you see fit.
    Use locally hosted models 🏠: Privacy concerns in AI development are real. With advances in small language models and quantization techniques, running AI locally for simple coding tasks has become increasingly practical. Flexpilot embraces this by supporting locally hosted models, giving you complete control over your code's privacy.
    GitHub Copilot Extension marketplace 🔌: The GitHub copilot extension marketplace is one of the largest growing Agentic Marketplace as of today. Flexpilot stands alongside VSCode (i.e., with GitHub copilot) as one of only two platforms that can tap into these extensions, opening up a world of specialized AI capabilities.
    Use it inside a browser instantly 🌐: For those of us who spend time exploring GitHub codebases, the default GitHub interface can feel limiting. While vscode.dev and github.dev offer better browsing experiences, they lack AI capabilities. Flexpilot fills this gap through ide.flexpilot.ai, providing a familiar IDE experience enhanced with AI features right in your browser.
    Uses native API interfaces ⚡: Most VS Code extensions rely on webviews for their chat interfaces, which can create unnecessary overhead. Flexpilot takes a different approach by using native APIs. Think of it like using a native app versus a web app - the difference might seem subtle at first, but the improved performance and additional capabilities become apparent as you use it.
    Forked from VS Code 🔱: If you're comfortable with VS Code, you'll feel right at home with Flexpilot. It maintains all the familiar VS Code features while adding seamless AI integration. This means you get the best of both worlds - a trusted development environment with enhanced AI capabilities.
    Use Flexpilot IDE in web browser 🌐

    📋
    While the browser version offers a streamlined experience, it operates as a minimal client-only version. Due to browser limitations, it can't access nodejs or native APIs, but it handles code browsing and AI features remarkably well.
    One of Flexpilot's standout features is its browser accessibility. Similar to vscode.dev or github.dev, but with integrated AI capabilities, you can start using it immediately without installation. Try it by clicking here to browser Flexpilot IDE's source code.
    To browse any GitHub repository, simply modify the URL with your desired repo details:
    https://ide.flexpilot.ai/?folder=web-fs://github/<repo-user>/<repo-name>/<branch> For example, to explore the flexpilot-ide repo's main branch, use:
    https://ide.flexpilot.ai/?folder=web-fs://github/flexpilot-ai/flexpilot-ide/main Use Flexpilot IDE on Linux desktop 🐧 💻
    It would be better to use Flexpilot on the desktop to use its full functionality.
    Step 1: Download and install
    Head over to flexpilot.ai to download the latest Desktop version. You'll find builds for Windows, Mac, and Linux, with options for both x64 and ARM architectures.
    For Ubuntu users, the installation process is straightforward. Once you download the appropriate .deb package, Open Terminal in your download directory and run:
    For x64 systems:
    sudo dpkg -i linux-x64.deb For ARM systems:
    sudo dpkg -i linux-arm64.deb Then install dependencies:
    sudo apt-get install -f Now you can launch Flexpilot through your Applications menu or by just typing flexpilot in the terminal.
    Step 2: Connect to GitHub

    When you first launch Flexpilot, you'll notice a chat panel on the right side of the screen with a GitHub sign-in option. This connection does more than just authentication - it personalizes your experience with your GitHub profile and automatically configures GitHub Models API access, giving you immediate access to AI features.
    Step 3: Configure AI Model (Optional during initial setup) ⚡

    While GitHub Models API is pre-configured after sign-in, you might want to set up additional AI providers. Access the command palette with Ctrl+Shift+P, type Flexpilot: Configure the Language Model Provider, and customize your model settings according to your needs.
    Step 4: Start chatting with your codebase using AI 💬
    Flexpilot offers several ways to interact with AI throughout your development workflow:
    Panel Chat

    The panel chat sits conveniently on the right side of your screen. Select your preferred model, add context by referencing files or symbols, and start your AI-assisted coding journey.
    Inline Chat

    Need to modify specific code sections? Select the code, press Ctrl+I, and describe your desired changes. The AI will suggest improvements while maintaining context.
    Terminal Chat

    Working in the terminal? Press Ctrl+I while in the integrated terminal to get AI-powered command suggestions and explanations.
    Additional Features
    Flexpilot's AI integration extends beyond chat interfaces. You'll find AI assistance in code completions, multi-file edits, quick chat, symbol renaming, commit message generation, and more. Check out the official documentation for a complete feature list.
    Step 5: Configure completions

    For those who enjoy predictive code completions, configure any OpenAI API compatible completion model providers through the command palette. Select Flexpilot: Configure the Language Model Provider and choose Edit Completions Config.
    💡
    Consider trying Codestral API by Mistral - they offer a generous free tier for code completions. Sign up at console.mistral.ai/codestral without requiring payment details.
    Extend AI capabilities with Copilot Extensions 🔌

    Flexpilot's extension system represents a significant step toward the future of AI development. Type @ in your chat to see installed agents and discover new ones through the marketplace. For instance, try the MongoDB extension - just start your questions with @mongodb for database-specific assistance.
    This extension ecosystem embodies the vision of collaborative AI agents working together to solve complex development challenges.
    Conclusion
    Flexpilot IDE brings a fresh perspective to AI-assisted development. While it's still evolving, its unique features and open approach make it a valuable tool for developers who want more control over their AI assistance.
    Looking to contribute? Visit GitHub repository and join the community in shaping the future of AI-native development.
    Happy coding! 🚀

    Author Info
    Mohankumar Ramachandran is a Gen AI enthusiast, turning caffeine into code. Creator of Flexpilot.ai and open source advocate who believes AI is not just hype - it’s the future.
  2. by: Abhishek Prakash



    When you think of essential Raspberry Pi accessories, you count a screen, monitor and mouse if you want to use it as a regular desktop computer.
    How about turning it into a laptop?
    There are a few projects that work on this one. Elecrow's CrowView Note is such a device that lets you attach your Raspberry Pi or Jetson Nano or other SBCs to a laptop like interface.

    This sounds interesting, right? Let me share my experience of using CrowView Note.
    Just so that you know, Elecrow sent me CrowView Note. The views expressed here are my own and not influenced by Elecrow.
    CrowView Note: What is it?
    The CrowView Note by Elecrow is a portable, all-in-one monitor with an integrated keyboard and trackpad designed to transform SBCs like Raspberry Pi into a laptop.
    Elecrow is a Hong Kong based company that creates and sells hardware for makers and tinkerers. If you are into Raspberry Pi and SBCs, you might have come across their CrowPi kit.
    CrowView Note features a 14-inch Full-HD (1920×1080) IPS display with built-in speakers and a 5000mAh battery. There is no CPU, HDD/SSD or even camera here.

    The good thing here is that CrowView is not just limited to Raspberry Pi. It's like an external screen with a keyboard and touchpad. You attach it to any single board computer using the Mini HDMI and USB cables.
    You can also connect it to your Android smartphone (thanks to features like DeX) and gaming consoles like Steam Deck etc. You should be able to use it with digital cameras, Chromecast like devices and Blu-ray/DVD players (if you still use them).

    It is powered by a 12V DC power supply to charge the 5000mAh battery. You can disconnect direct power and run it on battery like a regular laptop.
    Technical specifications
    Here are the specs that might interest you:
    Display: 14″ IPS (1920×1080), 100% sRGB, 60Hz refresh rate, 16:9 aspect ratio, 300 nit brightness
    Ports: 1x USB-C (full), 1x USB-C (power), 2x USB-A, 1x Mini HDMI
    Audio: 2W speakers, 3.5 mm audio jack, microphone
    Power: 12V DC charging and 5000 mAh battery
    Size: 33.5cm*22cm*1.7cm
    Weight: 1.2 Kg
    The device is priced at $169 excluding shipping and custom fee. More details can be found on its official page.
    Experiencing CrowView Note
    If you look at CrowView at a glance, it looks like a regular laptop. Not a premium one. Just a regular, entry-level, inexpensive but lightweight laptop.
    You pick it up and it feels light. My Asus ZenBook and Dell XPS are almost the same weight, I guess.
    Which made me curious because I was under an impression that there are not much hardware inside it. The Raspberry Pi is attached from the side, externally. So, there is no CPU, motherboard or graphics inside, or so I am guessing.
    I am so tempted to open it up and have a peek inside it. Perhaps I'll do that after a few weeks when I have explored all other aspects of this device.

    Bottom View of CrowView Note
    There are on-board speakers at the bottom that are not great with 2W of power and I am not complaining. You get the sound feature, at least. If you want something better, connect a headphone or speaker.
    So, it is a laptop-like device but there are no processors inside it. You attach a Raspberry Pi to its left side using a dedicated bridge board. This way, you don't need to separately power the Raspberry Pi.

    CrowView with a Raspberry Pi 5 attached to it
    This connector bridge is also available for NVIDIA Jetson Nano, purchased separately for $7.
    The bridge is not necessary. You can connect to Pi or other devices using mini HDMI and USB cables. The device needs to be powered separately in this case.
    My other Pi device inside the Pironman case got successfully connected this way.
    I also connected it to my ArmSoM Sige7 SBC and it worked the same without any issues.

    CrowView Note with ArmSoM Sige7
    Display
    CrowView Note features a 14 inches, full-HD (1080p) display and there is nothing to complain about it. The IPS display looks sharp and there is no noticeable glare. The 60Hz refresh rate is pretty standard.
    Although it looks like there is a webcam in the middle, that's not the case. Which is disappointing, to be honest. I would expect a laptop to have a functioning webcam.
    Keyboard
    The keyboard is fine. Not premium but fine. Again, I am not complaining. It is definitely better than the cheap Bluetooth keyboard people usually use with SBCs.
    In fact, I feel the keyboard felt better than the official Pi keyboard. The plastic on the keyboard feels a bit rough, just like the official Pi keyboard.
    There are dedicated function keys that provide additional features to the CrowView Note:
    F1 key lets you switch between devices if you are connected via Type C on the right and HDMI/USB on the left
    F7 key gives you OSD (On-screen display) to access color settings for the display
    F11 key quickly shows the battery status
    Other than that, there are function keys for volume, media and brightness control. There is a Num-Lock key to access the number pad on the same keyboard.

    Keyboard
    Touchpad
    Touchpad has invisible left and right click buttons at the bottom. I prefer tapping finger and thankfully, you can also tap to click here. Two finger tap for right click also works in Raspberry Pi OS.
    There is one thing that does bother me here. The double click actually takes three tap. You know, you double-click on a folder or file to open it. Two taps don't work. You have to quickly tap it three times. Surprisingly, the left click button at the bottom works fine with two clicks.
    There is a thin plastic film on the touchpad. I can see bubbles at the lower part, I am not sure if it is supposed to come out. I tried taking it out but I could not grab the edge. So I left it as it is. The touchpad works, so why bother unnecessarily?

    Touchpad close up
    CrowView is flexible till 180 degrees. I am not sure if that is very helpful for practical use cases. I let you decide that.

    CrowView Note stretched at 180 degrees
    Battery
    The on-board 5000 mAh battery is not much but it is decent enough to power your Raspberry Pi for a few hours comfortably.
    The minor inconveniences
    While I was able to connect CrowView Note to my ArmSoM Sige7 through mini HDMI and USB, I could not connect my Samsung Galaxy with it. I tried opening Dex but it was expecting either wireless or HDMI connection.
    Another minor annoyance is that when I shut down the Raspberry Pi from within the system, the CrowView still runs on battery. I can see the battery indicator on and Pi's power indicator stays red (meaning it is off but still connected to a power source).
    I am guessing it doesn't consume as much power but it is not completely shut down. It can be turned off completely by pressing the on-board power button.
    I have mentioned it earlier. Lack of webcam is certainly a disappointment.
    I was also wondering about all this bridge system to connect Pi to CrowView. A Pi attached to a laptop looks odd.
    Why on the side? Why not a box where it could be plugged in at the bottom? That will make it less weird. Perhaps Elecrow wanted to expose the GPIO pins. Plugging it in at the bottom will also heat it up as there will be no scope to put in a fan without increasing the thickness of the 'laptop'.
    Also, Elecrow already has a device like this in the form of the famous CrowPi. So this time, they took a different approach.
    Conclusion
    The one thing that I am glad CrowView Note it is not confined to just Raspberry Pi. You can use it with various devices and that is indeed a good thing. If you are spending $169 for a display-keyboard setup, it only makes sense that it works for all kinds of computers you have.
    In simpler words, it adds more value to the offering.
    It is a well-thought device, too. The function keys work irrespective of the devices and operating systems. At least, that's what I noticed in my experiment with it. The idea to add dedicated buttons for battery status and source change is excellent.
    Should you buy CrowView Note? That is really up to you. See if you need or even want a gadget like this and if it is well under your budget.
    For me, the device targets a specific set of users. And considering the fact that its Crowdfunded campaign attracted 27 times of its initial funding goal, I would say there is a significant interest in CrowView Note.
    More Details on CrowView Note
    💬 Your turn now. What do you think of Elecrow's CrowView Note? Is it something you need or want?
  3. by: Community



    A new (or perhaps old) way of enjoying music for the command-line enthusiasts.
    I've seen things... seen things that you people wouldn't believe... Linux developed by governments, Linux on mobiles, and terminal audio players.
    Yes, it could be funny, but it's real, you could play music from your command-line.
    And that's just one of the many unusual things you can do in the terminal.
    Subscribe to It's FOSS YouTube Channel
    Meet Kew
    When you use the terminal more often than the graphical tools, you would perhaps enjoy playing music from the terminal.
    I came across Kew, a terminal music player fully written in C. It's small (not more than 1 MiB), with a low memory profile. You can create and play your own playlists!

    Kew music player running in the terminal
    First things go first: Installation
    It's straightforward to install Kew because it's available in the repositories of the common Linux Distributions like Arch Linux, Debian, Gentoo., etc.
    For Debian and Ubuntu-based distros, use:
    sudo apt install kewYou can use an AUR helper for Arch-based distros. Let's you use yay:
    sudo yay -S kewFor openSUSE, use zypper:
    sudo zypper install kew Exploring music with Kew
    One of the most interesting and surprising things it's that kew can search in your music directory (usually ~/Music, or you could change it) only with one word:
    kew bruceAnd you're immediately listening to the Boss!!


    You can see the album cover while you're listening to it.
    You can make a playlist based on the content of a directory (and the others inside it recursively). The playlist can be edited/modified inside Kew in the Playlist view.
    You can play the songs from the playlist using:
    kew kew.m3uDirect Functions
    Kew provides some direct functions that you can type with kew:
    <none>: You go straight to the music library.
    dir <album name>: Play a full directory.
    song <song name>: Play only a song.
    list <playlist name>: Play a playlist that you could define.
    shuffle <album name>|<playlist name>: shuffles the album or playlist
    artistA:artistB:artistC: shuffles all 3 artists.
    Just to mention some of their fantastic functions. You could get all the commands here.
    Views
    There are different views for different functions that can be accessed via a function key.
    F2 : Current Playlist

    F3 : Library view

    F4 : Track View

    Kew music player running in the terminal
    F5 : Search view

    F6 : Help

    Press F6 to get the keyboard shortcuts info
    Key bindings
    If you decided to use Kew regularly, it would be much better to use and remember various keyboard shortcuts. You can surely configure your own.
    Press F6 and it will show the key bindings:
    + (or =), keys to adjust the volume.
    ←, → or h, l keys to switch tracks.
    space, p to toggle pause.
    F2 or Shift + z to show/hide the playlist.
    F3 or Shift + x to show/hide the library.
    F4 or Shift + c to show/hide the track view.
    F5 or Shift + v to search.
    F6 or Shift + b to show/hide key bindings.
    u to update the library.
    v to toggle the spectrum visualizer.
    i to switch between using your regular color scheme or colors derived from the track cover.
    b to toggle album covers drawn in ascii or as a normal image.
    r to repeat the current song.
    s to shuffle the playlist.
    a to seek back.
    d to seek forward.
    x to save the currently loaded playlist to a m3u file in your music folder.
    Tab to switch between views.
    gg go to first song.
    number + G, g or Enter, go to specific song number in the playlist.
    g go to last song.
    . to add current song to kew.m3u (run with "kew .").
    Esc to quit.
    Conclusion
    There are several terminal audio players like Cmus, MOC - Music on Console, Musikcube, etc. Kew can be placed in this list of terminal tools.
    Written in C, with a small memory blueprint, Kew is worth trying for a terminal dweller.
    If you give it a try, do share its experience in the comments.
    Author Info

    Jose Antonio Tenés
    A Communication engineer by education, and Linux user by passion. In my spare time, I play chess, do you dare?
  4. by: Abhishek Prakash



    Pay attention if you use Amazon Kindle. Starting 26th Feb, Amazon won't allow 'Download and transfer via USB' feature anymore. That's the feature people used to download the Kindle books they purchased and convert them to EPUB or PDF to read on other eBook readers like Kobo or their computers. In other words, your Kindle purchases will be restricted completely for Kindle devices.
    If you want the control of your Kindle purchased books, take action and download the books before the deadline, remove DRM and convert them to PDF or EPUB.
    Use Calibre to Remove DRM from Kindle Books and Convert to PDF
    Own your content by removing DRM from Kindle books with the help of open source tool Calibre.
    It's FOSSSagar Sharma

    If you have hundreds of Kindle books, there is a script that can be used to download them in bulk. I have not tested it yet.
    💬 Let's see what else you get in this edition
    GNOME's website getting a makeover.
    Fedora being threatened with a lawsuit.
    openSUSE making waves with recent moves.
    And other Linux news, tips, and, of course, memes!
    This edition of FOSS Weekly is supported by ANY.RUN.
    ❇️ Sandbox to Rescue
    Infosec head at an EU bank shared insights on how they:
    Prevent hundreds of potential security incidents every year  
    Stay lean and efficient with limited resources
    Help the business avoid cyber attacks and protect clients
    Must-read for all security professionals operating on a tight budget.
    How I Used a Sandbox to Strengthen Bank’s Security
    Discover how an investment bank cut threat response time in half and prevented hundreds of security incidents with ANY.RUN’s sandbox.
    ANY.RUN's Cybersecurity BlogName

    📰 Linux and Open Source News
    GNOME's website has received a complete revamp.
    AI-powered edit predictions have arrived on Zed editor.
    openSUSE has decided to ditch AppArmor for Tumbleweed.
    They are also considering dropping Legacy BIOS support for Leap and SLES.
    Nitrux has introduced a new kernel builder tool for Debian-based distros.
    Popular system stability testing and monitoring tool OCCT has arrived on Linux.
    And we gear up for the Ubuntu 25.04 release.
    Ubuntu 25.04 Features and Release Date: Here’s What You Need to Know
    Here are the best Ubuntu 25.04 features.
    It's FOSS NewsSourav Rudra

    🧠 What We’re Thinking About
    The string of dramas in the Linux space don't seem to stop, huh? This time, it is Fedora getting threatened with a lawsuit by OBS Studio.
    Open Sue! OBS Studio Threatens Fedora With Legal Action
    Another day, another Linux-related drama. This time, it’s OBS Studio and Fedora going at it.
    It's FOSS NewsSourav Rudra

    🧮 Linux Tips, Tutorials and More
    Setting up Conky on Ubuntu is quite straightforward.
    We debunk the most common myths surrounding Linux.
    Learn how to always keep a window on top in GNOME.
    Using the night light feature on Linux Mint.
    👷 Maker's and AI Corner
    Sharing my experience of using this unusual device that converts an SBC into a laptop.
    CrowView Note: Turning Raspberry Pi into a Laptop, Sort of
    A highly crowdfunded device to add a portable workstation to your Raspberry Pi and other SBCs.
    It's FOSSAbhishek Prakash

    And a little about running a LLM locally as a coding assistant in VS Code.
    ✨ Apps highlight
    Plank Reloaded is a modern successor to the beloved Plank dock.
    Plank Reloaded is a Fresh Take on the Classic Dock Experience
    Plank Reloaded aims to refine what the classic Plank dock offered by staying simple but with a modern take on it.
    It's FOSS NewsSourav Rudra

    Who needs a GUI to listen to music when you could use kew?
    🛍️ Deal You Would Love
    15 Linux and DevOps books for just $18 plus your purchase supports Code for America organization. Get them on Humble Bundle.
    Humble Tech Book Bundle: Linux from Beginner to Professional by O’Reilly
    Learn Linux with ease using this library of coding and programming courses by O’Reilly. Pay what you want & support Code For America.
    Humble Bundle

    📽️ Video We are Creating for You
    Subscribe to It's FOSS YouTube Channel
    🧩 Quiz Time
    Call yourself a Fedora buff? Prove it by beating this quiz.
    Fedora Trivia Quiz
    An enjoyable trivia quiz about Fedora Linux.
    It's FOSSAbhishek Prakash

    💡 Quick Handy Tip
    With the Extensions List GNOME extension, you can toggle extensions, access their settings, visit its home page, etc. right from the top panel. There is no need to open an additional extension app like Extension Manager.
    You can install the Extensions List extension and get started right away.

    🤣 Meme of the Week
    We all have that friend. 😆

    🗓️ Tech Trivia
    February 15, 1999, marked Windows Refund Day, when Linux users staged protests outside Microsoft offices in the San Francisco Bay Area. The event aimed to raise awareness of Microsoft’s practice of bundling Windows with PCs and not offering refunds.
    🧑‍🤝‍🧑 FOSSverse Corner
    Pro FOSSer Neville shares his experience with Meld. Have you used it before?
    Meld is very useful for programming work
    I have been editing some R code . I work in a temporary copy, in an R workspace. I have some modifications ready… I want to add them to the new version, but I cant simply copy in the .R files, because my temporary workspace is out of date. So I have to re-edit all the changes into the new version’s files. Here is how You can see my workspace screeen with a terminal for editing the new version on the left. On the right top you see a meld screen, comparing the new version file with the te…
    It's FOSS Communitynevj

    ❤️ With love
    Share it with your Linux-using friends and encourage them to subscribe (hint: it's here).
    Share the articles in Linux Subreddits and community forums.
    Follow us on Google News and stay updated in your News feed.
    Opt for It's FOSS Plus membership and support us 🙏
    Enjoy FOSS 😄
  5. Installing Add-ons and Builds in Kodi

    by: Abhishek Kumar



    Kodi is a versatile media player that can be customized to fit your needs, and one of the best ways to personalize your experience is by installing a Kodi build.
    These builds come pre-configured with skins, addons, and settings that make your Kodi experience even better.
    In this guide, I’ll walk you through the steps of installing a Kodi build, using the Diggz Xenon Build as an example. The same method is used for installing add-ons to Kodi.
    Whether you're using Kodi on a Raspberry Pi, PC, or even an Android Box, these steps will work across all devices.
    Step 1: Enable unknown sources
    Before we can install third-party builds, we need to allow Kodi to install from unknown sources. Here's how:
    Go to Kodi's Home Screen and click the Settings Cog (top-left corner).

    Select System from the options.

    Scroll down and choose Add-ons. On the right side, toggle the Unknown Sources option to On. A warning message will pop up; click Yes to confirm.

    We’re enabling this because Kodi doesn’t allow third-party sources by default for security reasons, but since we trust the source, we’ll proceed.
    Step 2: Add the repository source
    Now, we’ll add the source for the Team Crew Repository. This is where the HomeFlix and many other amazing Kodi builds reside.
    Go back to the Kodi home screen and open Settings again. Select File Manager.

    Click on Add Source.

    In the window that appears, click on <None>.

    Enter the build URL, in our case: https://team-crew.github.io and click OK.

    Name the source with any name you prefer), then click OK.

    Step 3: Install the build repository
    Now that the source is added, we’ll install the build repository.
    Return to the Kodi Settings page and click Add-ons.

    a
    Choose Install from Zip File.

    Select the source you just added.

    Click on the zip file named repository.thevrew-X.zip (X will be the version number).

    Wait for the notification that says The Crew Repository Add-on Installed.

    Step 4: Install the build wizard
    The next step is to install the build Wizard, which will allow us to install the specific build that we want.
    From the Add-ons menu, click Install from Repository.

    Open the Build Repository i.e Crew repo in my case.

    Select Program Add-ons.

    Click on build wizard i.e. The Crew Wizard

    and then select Install.

    A prompt will appear asking you to confirm the installation of dependent addons. Click OK.

    Wait for the installation to complete. This may take a couple of minutes.

    Step 5: Install the actual build
    Now we’re ready to install the actual build itself. I like Homeflix because if its familiar interface with Netflix, thus I'll be installing that.
    Return to the Kodi home screen and go to Add-ons.

    Select Program Add-ons

    and click on Chef Wizard

    Click on Build Menu.

    Find and select your preffered build, I'm selecting Homeflix.

    Click Continue and wait for the build to download and install. This may take a few minutes, so be patient.

    Once the installation is complete, click OK to force close Kodi.
    Step 6: Restart Kodi and Enjoy!
    After the installation, simply reopen Kodi, and you’ll be greeted with the HomeFlix Build. The interface will be customized with a sleek new look, and you’ll have access to a range of addons and features.

    Conclusion
    Personally, I love the Homeflix Build by Team-Crew because it gives me that Netflix-like experience, which I find really comfortable.
    It’s clean, visually appealing, and comes with tons of addo-ns pre-installed, including some premium ones like Debrid.
    If you’re using premium services, you might need to configure those, but the build itself is a great starting point for anyone looking to get a smooth Kodi experience.
    There are plenty of builds out there, each catering to different preferences. Whether you’re into movies, TV shows, live sports, or even gaming, there’s likely a Kodi build that fits your style.
    I’ve already listed my favorite Kodi builds in a separate article, so be sure to check that out for more recommendations.
    Best Kodi Builds to Spice Up Your Experience in 2025
    Pimp your Kodi with a new skin and additional features by using one of the Kodi builds of your preference.
    It's FOSSAbhishek Kumar

    Explore a few options, experiment with different builds, and find the one that enhances your Kodi experience the most.
    Now that you’ve got your build installed, sit back, relax, and enjoy a fully customized Kodi setup. Happy streaming!
  6. 7 Linux Terminals From the Future

    by: Abhishek Prakash



    Every Linux system comes with a terminal application, i.e. terminal emulators in correct technical terms.
    For many Linux users, it doesn't matter which terminal they use. I mean, you just run commands on it and it is the commands that matter, right?
    And yet, we have a huge number of terminals available.
    While the classics are focused on providing additional features like multiplexing windows, there is a new breed of terminals that offer GPU acceleration, AI and even flaunt that they are built on Rust 🦀
    🚧
    Modern solutions bring modern problems. Some of the options here are non-foss, some may even have telemetry enabled. I advise checking these things when you try any of the mentioned terminals here.
    1. Wave Terminal

    Wave terminal
    Wave is an open-source cross-platform terminal emulator, that offers several unique features like graphical widgets. It feels like you are using an IDE like VS Code and that is in the good sense.
    Oh! It comes baked in with AI as well.
    Features of Wave Terminal
    Integrated AI chat with support for multiple models
    Built-in editor for seamlessly editing local and remote files.
    Command Blocks for isolating and monitoring individual commands with auto-close options.
    File preview, that supports Markdown, images, video, etc.
    Custom themes, background images, etc.
    Inline Web browser.
    Overall, this terminal is the best fit for those who are looking for serious application development projects.
    Since most of the features are easily accessible, a relatively newer terminal user can also enjoy all the benefits.
    Install Wave Terminal
    Ubuntu users can install Waveterm from the snap store.
    sudo snap install --classic waveterm The project also provides DEB, RPM and AppImage package formats.
    Download Wave Terminal
    2. Warp

    Warp is a Rust-based terminal emulator, that offers built-in AI features and collaboration workflows.
    The AI agent answers your query and can even run commands for you.
    Like Wave, this too has an IDE-like feel, suitable for the new breed of developers and devops who dread the dark alleys of the command line.
    The workflow feature is useful for both individuals and teams. If you have different project scenarios where you must run one command after another, you can create workflows. It improves your efficiency.
    🚧
    Warp is not open source software.
    Features of Warp Terminal
    Built-in AI features like command lookup, AI autofill, command suggestions, chat with Warp AI, etc.
    IDE-like text editing, with mouse support.
    Markdown viewer with embedded command execution support.
    Collaboration workflow with Warp Drive.
    Extensive customization possibilities.
    Install Warp Terminal
    Warp provides DEB files for Ubuntu and other Debian-based systems.
    Download Warp Terminal
    There are also RPM and AppImage packages.
    3. Cogno
    Cogno is a free and open-source terminal emulator, that offers several handy features like self-learning autocomplete.
    It is cross-platform and supports multiple shells, while allowing the user to customize according to individual preferences.
    And there are tons of themes that can be used. Perfect for a beautiful desktop screenshot to share in the communities.
    Features of Cogno
    Context-aware autocompletion.
    Configurable shortcuts.
    Support for tabs, panes, and workspaces.
    Theme editor with preview function.
    Paste history, that allows to paste items that were pasted previously.
    Install Cogno
    DEB and RPM installers are available in the official project download page.
    Download Cogno
    4. Rio
    Rio is a hardware-accelerated GPU terminal emulator, written in Rust. It is intended to run as a native desktop application as well as a browser application.

    Rio Terminal
    Features of Rio Terminal
    Hardware-accelerated, fast and written using Rust.
    Multi-windows and Split panels
    Image support: iTerm2 and Sixel image protocols.
    Supports hyperlinks.
    Vi Mode
    Install Rio Terminal
    Rio offers separate DEB files for both X11 and Wayland. SO choose according to your specific needs.
    Download Rio Terminal
    There are installation instruction available for other distributions like Arch Linux, NixOS, etc. You can find those in the official installation instructions.
    5. Contour
    Contour is a GPU-accelerated modern terminal emulator with high-DPI support. This cross-platform terminal emulator focuses on speed, efficiency, and productivity.

    Contour Terminal
    Features of Contour
    GPU-Accelerated Terminal emulator with high-DPI support.
    Font ligature support.
    Complex Unicode support, including emojis.
    Runtime configuration reload
    Key binding customization
    VT320 Host-programmable and Indicator status line support
    Install Contour Terminal
    Ubuntu and Debian-based distribution users can download the DEB file from official releases page. There is an AppImage package available as well.
    Download Contour Terminal
    If you are a Fedora user, you can install it directly from the official repository.
    sudo dnf install contour-terminal There is a detailed installation instructions for other platforms on the official documentation.
    6. Alacritty
    Alacritty is a modern terminal emulator, that offers heavy configuration capabilities. It is a GPU-accelerated terminal emulator, written on Rust.

    Alacritty Terminal
    Features of Alacritty
    GPU accelerated terminal, written in Rust.
    Hyperlink support.
    Supports running multiple terminal emulators from the same Alacritty instance
    Vi mode
    Cross-platform support.
    Install Alacritty
    Alacritty is fairly popular among Linux users. It is available in the default repositories of most distributions. For latest Ubuntu releases, you can install it using the apt command:
    sudo apt install alacritty 7. Hyper
    Hyper is a terminal emulator, built on open web standards. Written in Typescript, this extensible terminal focuses on speed and stability.
    If nothing else, it does look good. The screenshot below may not do justice.

    Hyper Terminal
    Features of Hyper
    Functionality can be extended with plugins available on NPM.
    Keymap customization
    Cross-platform support
    Customization capabilities using JavaScript configuration file.
    Install Hyper Terminal
    Hyper offers DEB and RPM files for Debian-based and Fedora-based systems, respectively.
    Download Hyper
    There is also an AppImage package available.
    Bonus: Komandi
    Komandi is an AI-powered terminal command manager. Komandi is different from usual terminal emulators. This piece of software allows the user to create and store command snippets and run them on your preferred terminal emulator.
    🚧
    Komandi is not open source software. It requires you to purchase a license. I found it interesting and hence included it here.
    Conclusion
    I feel like I should have included Ghostty in this list of modern new terminal emulators. It's the talk of the terminal town, after all. However, I haven't tried it yet. I know, I am late to board the 'Ghost ship'.
    For a long time, the only new feature was often multiple terminal windows on the same screen and it was hard to believe that the scenario can be changed. It is interesting to see new terminals coming up with innovative features in the last few years.
    💬 Tell me. Are you sticking with the classic terminals, or have switched to one of these modern ones?
  7. by: Abhishek Prakash

    If you are starting to use and learn Linux, remember this:
    Linux is not magic 🪄
    It's sudo science 🔬
    Okay...sorry... my dad jokes urges get the better of me at times 😁
    💬 Let's see what else you get in this edition
    Cropping a video in VLC (no, seriously)
    Cloning SD card in Raspberry Pi
    Modern terminals with modern features
    And other Linux news, tips, and, of course, memes!
    This edition of FOSS Weekly is supported by PikaPods.
    📰 Linux and Open Source News
    DietPi's new release supports Pi-hole v6
    Nextcloud Hub 10 is available now
    Mozilla introduces 'terms of use' for Firefox
    Answering the difficult question. Is Linux any better for gaming in 2025?
    Is Linux Ready For Mainstream Gaming In 2025?
    Linux is quietly gaining ground on Windows in the gaming space. But how well does it actually perform? Here’s what I experienced.
    It's FOSS NewsSourav Rudra
    🧠 What We’re Thinking About

    The RSS feed matters more than ever.
    Why I Still Love and Use RSS Feeds in 2025
    RSS feeds are classic. And surprisingly, they are still relevant in 2025.



    It's FOSS NewsAbhishek

    🧮 Linux Tips, Tutorials and More

    Cropping a video in VLC: is that even a thing?
    See the devices connected to your local network on Linux
    Although I prefer using yay, here are some other AUR helpers, Arch users.
    Here are some modern Linux terminals with not-so-traditional features.
    7 Linux Terminals From the Future
    Just when I thought the terminals cannot be innovated, there is an influx of modern terminal emulators with interesting new features.
    It's FOSSAbhishek Prakash


    👷 Maker's and AI Corner

    The easiest way to back up your Raspberry Pi is by cloning it. Am I right?
    Clone Existing Raspberry Pi OS to a Bigger SD Card
    Need more space on your Pi? How about cloning it to a bigger SD card? Here’s how to do that.


    It's FOSSAbhishek Prakash
    ✨ Apps highlight

    Alright! Obsidian is not open source but it is awesome.
    Obsidian Review: Notion Alternative for the Markdown Pros
    This second brain tool has taken the first brain of Markdown lovers by storm.


    It's FOSSAbhishek Prakash
    🛍️ Deal Ending Soon

    And I know there is Logseq, its open source alternative. Between you and me, we have a tutorial series planned on Logseq, covering its features and tips on using it.
    15 Linux and DevOps books for just $18 plus your purchase supports Code for America organization. Get them on Humble Bundle.
    Humble Tech Book Bundle: Linux from Beginner to Professional by O’Reilly
    Learn Linux with ease using this library of coding and programming courses by O’Reilly. Pay what you want & support Code For America.
    Humble Bundle


    📽️ Video I am Creating for You
    It's a small topic but often confuses the Arch beginners.
    Subscribe to It's FOSS YouTube Channel
    🧩 Quiz Time
    Test your Linux file permission knowledge by taking this quiz.
    Linux File Permission
    The Linux file permission is an important concept to know about. Test your knowledge.

    It's FOSSAbhishek Prakash


    💡 Quick Handy Tip
    In Nautilus file manager (GNOME's file explorer), you can use the Shortcut CTRL + S to start a quick "Select Items Matching".
    In the dialog box, enter the glob pattern matching, like *.png to select all PNG files, or *.txt to match all txt files.




    🤣 Meme of the Week
    I laughed harder than I should have on this meme. If you know Linux Mint, you would laugh too.
    And if you are interested, learn the logic behind the codenames of popular distro releases.






    🗓️ Tech Trivia
    The first web browser was introduced by Tim Berners-Lee, the creator of the World Wide Web on 26th Feb 1991. It was named WorldWideWeb at first but renamed later to Nexus to avoid the confusion.


    🧑‍🤝‍🧑 FOSSverse Corner
    FOSSers are discussing the future 🖲️
    In 50 years, what will our computers look like?
    Imagine, it’s the mid-term future. What will desktop computers look like? What specs will they have?
    It's FOSS Communityxahodo

    ❤️ With love
    Share it with your Linux-using friends and encourage them to subscribe (hint: it's here).
    Share the articles in Linux Subreddits and community forums.
    Follow us on Google News and stay updated in your News feed.
    Opt for It's FOSS Plus membership and support us 🙏
    Enjoy FOSS 😄
  8. by: Abhishek Kumar

    Kodi, by itself, is a robust and versatile media player, but it’s like a cake without frosting. The base is great, but what makes it truly delightful are the add-ons that enhance its functionality. Think of these add-ons as extensions that open up endless possibilities, from streaming movies and shows to accessing live sports, cartoons, music, and even cloud storage services.
    The best part? All the add-ons listed here work seamlessly with the latest release of Kodi with version 21 Omega.
    💡Not sure how to install an add-on on Kodi? Check out our step-by-step guide on installing Kodi add-ons to get started.
    Whether you’re a movie buff, sports fanatic, anime lover, or someone who likes to keep their media library organized, there’s an add-on here for you. Let’s explore the best Kodi add-ons across various categories to supercharge your experience!
    🚧Disclaimer: This guide is purely for educational purposes. While Kodi is a fantastic tool for media consumption, some add-ons may access copyrighted or pirated content, which could lead to legal consequences. Always use Kodi responsibly and adhere to the laws in your region.
    1. Asgard
    Asgard is a standout Kodi add-on that has stood the test of time, remaining one of the top choices for streaming across a variety of content categories.
    Whether you're in the mood for movies, TV shows, documentaries, or even sports, Asgard has you covered.
    It offers both free streaming options and premium links through Real Debrid, ensuring smooth playback and a wide selection of content.
    Key features
    Compatible with Kodi 19 and 20.
    Provides HD streaming with Real Debrid support.
    Minimal buffering for a seamless viewing experience.
    Covers a broad range of genres, from movies and TV shows to documentaries and kids' content.
    Free streaming options are solid, though premium links offer better quality.
    Asgard


    2. The Crew
    It is another multi-purpose add-on that offers an extensive library, covering everything from popular TV shows and movies to live sports events.
    It’s highly recommended by Kodi users across forums for its reliability and frequent updates and it integrates seamlessly with Real Debrid for HD streaming, and its easy compatibility with Trakt makes it a favorite among Kodi users.
    Plus, it works flawlessly across all devices, making it a go-to option for any Kodi setup.
    Key features
    Works on both old and new Kodi version (Omega).
    Real Debrid integration ensures HD-quality streams.
    Easily integrates with Trakt for syncing your watchlist and history.
    Fully compatible with any device, from desktop to mobile.
    Offers a wide selection of content, including movies, TV shows, sports, and more.
    The Crew


    3. Magic Dragon
    The Magic Dragon is part of the EzzerMacs Wizard repository and is known for its ease of use and comprehensive library, this add-on automatically scrapes the best available streaming links, ensuring a smooth and hassle-free viewing experience.
    Whether you're a casual viewer or a seasoned Kodi user, The Magic Dragon is a go-to option for accessing a variety of content.
    Key features
    Compatible with Kodi version 19, 20 and 21.
    Automatically scrapes and selects the best streaming links.
    Offers a wide range of content, including TV channels, series, movies, and music.
    Covers all video genres, from entertainment shows to music videos.
    Magic Dragon



    4. Seren
    Seren is another favorite among Kodi users who want reliable and high-quality streams. It’s part of the Nixgates repository and is known for its consistent performance.
    However, keep in mind that to fully enjoy Seren's offering, a paid Real Debrid account is necessary.
    Once you’re set up with Real Debrid, Seren provides access to a vast library of HD links for movies, TV shows, and more.
    The interface is clean and user-friendly, making it easy to browse and find content.
    Key features
    Requires a Real Debrid account for optimal functionality.
    Streams HD quality content with minimal buffering.
    Integrates effortlessly with Trakt to sync your watchlist and history.
    Offers a wide range of content across both kids' and adult genres.
    Seren

    5. Fights on demand
    Fights on Demand is known for its comprehensive library of combat sports content including boxing, wrestling, and MMA events, making it a go-to for fans of live face-offs and replays.
    It provides both free and Real Debrid streaming links from major combat sports streaming platforms, ensuring smooth and high-quality streams.
    Key features
    Streams live boxing, wrestling, and MMA events.
    Access to replays, including the latest UFC/MMA matches.
    Includes some Pay-Per-View (PPV) events.
    Offers both free and Real Debrid streaming options.
    Fight on deman



    6. Daddy Live
    Another one for sports enthusiasts and live TV lovers, Daddy Live is a fantastic Kodi add-on.
    Coming from The Crew repository, the user-friendly interface is neatly organized into two main sections: Live Sports and Live TV.
    The Live TV section features a variety of channels, including news, lifestyle, entertainment, kids, travel, nature, and more.
    Key features
    High-quality live sports and TV streams.
    Wide variety of channels: news, entertainment, sports, kids, and more.
    Simple, easy-to-navigate interface.
    Reliable and buffer-free streaming.
    Daddy Live



    7. WatchNixtoons2
    If you're a fan of anime, cartoons, or kid-friendly movies, WatchNixtoons2 is a must-have Kodi add-on.
    Hosted in the popular Crew repository, this add-on offers a fantastic collection of animated content for all ages.
    The add-on is easy to navigate, with sections such as Dubbed Anime, Subbed Anime, Popular & Ongoing Series, Movies, and Cartoons.
    One of its standout features is the ability to choose your preferred streaming resolution, allowing you to tailor the experience to your internet speed and device capabilities.
    Key features
    Extensive collection of anime, cartoons, and kid-friendly movies.
    Organized sections for dubbed, subbed, and ongoing anime series.
    Adjustable streaming resolution for optimal performance.
    Easy-to-use interface with a kid-friendly design.
    WatchNixtoons2

    Other 'must have' utility add-ons
    EZ Maintenance+
    EZ Maintenance+ is a handy Kodi program add-on designed to help you maintain your Kodi installation and keep it running smoothly.
    Whether you're dealing with errors, slow performance, or just want to tidy up your system, this add-on provides a range of useful tools.
    With EZ Maintenance+, you can easily clear Kodi’s cache, back up or restore your Kodi setup, and even perform a complete wipe to reset the app to its default state.
    Whether you're a beginner or a seasoned Kodi user, this add-on simplifies the maintenance process and helps you avoid common issues that can arise from long-term use.
    The best part? that it's entirely free and safe to use.
    EZ Maintenance+




    Trakt
    If you're not familiar with Trakt, it's a free service that helps you track the movies and TV shows you watch, share your viewing activity on social media, and even discover where certain content is available for streaming.
    While the add-on is free to use, you will need a Trakt account to take full advantage of its features.
    By connecting your Trakt account to Kodi, this add-on automatically syncs your watch history, keeping everything up to date across both platforms.
    It also offers the added benefit of cleaning up your Trakt collection to ensure it stays in sync with your Kodi library, making it a convenient tool for anyone who likes to stay organized and keep track of their viewing habits.
    Trakt





    Nord VPN

    NordVPN is a top choice for Kodi users, offering over 5,300 servers in 59 countries to bypass geo-restrictions. Its SmartPlay technology combines Smart DNS and IP addresses to ensure fast, secure streaming.
    With features like CyberSec to block malware and P2P servers for safe torrenting, NordVPN enhances your Kodi experience.
    It’s affordable, with a two-year plan costing just over $4 per month, and a 30-day money-back guarantee. NordVPN works on all major devices, allowing up to 10 simultaneous connections.
    NordVPN






    Conclusion
    Using add-ons with Kodi can truly elevate your streaming setup. Add-ons like The Crew, Seren, and Magic Dragon offer a wealth of content, from HD movies and TV shows to live sports and anime, all tailored to fit your preferences. Real Debrid support, Trakt integration, and customizable streaming resolutions make these add-ons even more powerful, especially when paired with a VPN like NordVPN for security and geo-unblocking.
    However, it's important to remember that many of these add-ons come from third-party repositories, meaning some links could lead to unlicensed content.
    Always use caution, stay informed about local laws, and consider using a VPN for added privacy. Despite these risks, the benefits of having such a vast library of content at your fingertips make Kodi a fantastic platform for media consumption. If you're looking to take your Kodi experience even further, check out my list of best Kodi builds too.
    Best Kodi Builds to Spice Up Your Experience in 2025
    Pimp your Kodi with a new skin and additional features by using one of the Kodi builds of your preference.
    It's FOSSAbhishek Kumar
  9. by: Chirag Manghnani
    Sat, 01 Mar 2025 18:16:00 +0000

    For a lot of programmers, finding a decent keyboard will significantly boost their workflow environment. Here, in this article, you’ll find a list of best keyboards for programming and a strait-laced comparison between them.
    The programmers typically spend their days’ planning, writing, and checking code in their machine. The keyboard is, therefore, one of the most critical instruments in their arsenal. The right keyboard for your necessity is not an easy task to find. This is why we are collecting the list of best programming keyboards.
    It’s not just ambient RGB lighting or a cool minimum aesthetic you get by choosing an excellent keyboard for your typeface. Gamers who play the best computer games or content developers and professional programmers, all that matters for them are pace, reactivity, precision, and comfort.
    What is that you need?
    It would be best if you had a keyboard to ease your work. A keyboard that you can type without pressure during the day and program it quickly on your computer to reach the most frequent applications. A large keyboard can reduce the amount and usability of your cursor.
    Also, a keyboard that has a comfortable plushy wrist brace, magnetically connected when you are working long hours, and having extra support for your hand. The keyboard that also has media functions for changing speed, listening, pause, or skipping songs. 
    Also Read: How to Choose Best Laptop for Programming?
    Ultimately, a keyboard that helps you swift in your daily work!
    Here are the best claviers, from the best game keyboards to the perfect ones for productivity and creation. And we have included a comparison table to make sure you get the best price available as well.
    List of Best Keyboards for Programming
    Redgear Blaze Semi-Mechanical Wired Gaming Keyboard

    The Redgear Blaze Semi-Mechanical wired Gaming keyboard comes with three colors backlit light, full aluminum body & Windows key lock for PC. The Blaze is designed especially for pro-gaming and programming. It was intended for both programmers and low or high DPI players, so the interface allows ample room to spread the mouse around. 
    In addition, for each strain, the Ergonomic float caps give you the best space. The Blaze has perfectly positioned keycaps that provide precise results whenever you click.
    Features:
    100M long-lasting switches for crisp response. 3 Color mode for different gaming setup needs. Windows key lock option to block pop-up in the game. 19 keys anti-ghost for gamers and programmers Floating keycaps with greater durability and high responsiveness
    Cosmic Byte CB-GK-10 Corona Wired Gaming Keyboard

    This keyboard comes with the wired USB interface, especially for programmers and players with 19 Anti-ghosting keys. The four levels of brightness adjustment make it convenient for users to work with peace of mind. The keyboard features different internet hotkeys and media hotkeys for easy access. 
    Features:
    Wired USB keyboard interface with Red Backlit and four levels of brightness adjustment. 19 Anti-ghosting and scratch-resistant keys. Key life with more than 10 million keystrokes.
    Zebronics Mechanical USB Wired Keyboard Max Plus

    Max Plus is a robust 104-key USB mechanical keyboard with 12 additional multimedia keys. It has 7 LED modes and five LED levels of luminosity in multicolor LEDs. For all this gaming action, it is a heavy-duty keyboard weighing 1.27 kg.
    The keyboard is sturdy and durable that gives the user a perfect tactile feel. The blue switches on this keyboard have a very detectable actuation point that helps programmers to code swiftly.
    Features:
    Full-size mechanical keyboard with 104 keys and 11 multimedia keys. Backlit keyboard with 10 LED night modes and 5 brightness adjustments levels. Double injection keycaps for a longer lifespan and a higher number of keystrokes. High-quality USB connector coupled with strong braided cable.
    TVS Gold Bharat Gold USB Keyboard

    TVS Gold Bharat programming keyboard comes with an array of 104 mechanical keys with long life switches. The keyboard also houses nine (9) vernacular languages to choose from, and also, an additional feature to select the interface – USB/PS2. Besides, the sculpted keypad gives the touch feeling with each click. 
    Features:
    Guaranteed 50 Million plus strokes per key Highly reliable, with more than 200,000 Hrs MTBF An everlasting presence with Laser Etched Characters on Keycaps The option of working in two languages Fitted with mechanical switches for long life The keyboards are all enabled with the Rupee symbols
    Zebronics Zeb-Transformer-k USB Gaming Keyboard

    The Zeb-Transformer-k is a USB gaming keyboard with a multicolor LED effect. It has integrated media control, Laser keycaps, and an aluminum body. It also has a braided cable, high-quality USB connector, and backlight LED On/Off function. The keyboard comes with the interface of USB and a power requirement of DC 5V, <200mA. Moreover, it has a button stokes life of 80 million times.
    Features:
    Integrated Media control keys and multicolor LED with 4 modes – 3 Light Mode & 1 off Mode Windows Key Enable/Disable Function and all Keys Enable/Disable Function 2-Step Stand, Laser Keycaps, Aluminum Body, Backlight LED ON/OFF function Gold Plated USB, Braided Cable, modern design, and less power consumption.
    HyperX Alloy RGB Mechanical Gaming Keyboard

    The HyperX Alloy FPS RGB is a splendid, high-performance keyboard to ensure your skills and style are fully displayed. The robust stainless steel frame makes your keyboard stable as you pull the key to function, detect errors, or swap program scripts. 
    The Alloy FPS RGB is designed for space-contracted setups, so you can maneuver easily without increasing your sensitivity to your mouse. It is also provided with a convenient USB load port and a braided, wear-resistant cable that makes portability easier.
    Features:
    RGB backlit keys with radiant lighting effects and a durable solid steel frame Advanced customization with HyperX NGENUITY software and onboard memory for three profiles Compact, ultra-portable design with detachable cable and convenient USB charge port Kailh Silver Speed mechanical key switches Game Mode, 100% Anti-ghosting, and N-Key Rollover functionalities
    Logitech G Prodigy G213 RGB Gaming Keyboard

    The Logitech Prodigy series offers advanced gaming-grade performance. Besides, for programmers, each keypress from fingers to screen is nearly instantaneous. It also accommodates the customization of five individual lighting zones with a range of over 16.8 million colors. Logitech Gaming Software can even synchronize lighting effects with other Logitech G devices for a real match system.
    Logitech G Prodigy allows users to work more quickly than with a standard keyboard thanks to high-performance keys, which combine the best touch and programming performance.
    Features:
    4x faster gaming-grade performance than standard keyboards Crisp and brilliant RGB lighting with 16.8 Million color options Spill-resistant and highly durable to handle sudden accidents Dedicated media controls to play, pause, skip and adjust in one go Programmable function keys for custom commands and integrated palm rest and adjustable feet
    HyperX Alloy HX-KB5ME2-US Core RGB Membrane Gaming Keyboard

    The HyperX Alloy Core RGB is ideal for hardcore programmers and gamers looking to improve their keyboards’ style and performance without spending much money. The Alloy Core RGB is elegant, beautiful, and reliable, making it a sweeping tech keyboard for programmers.
    The Alloy Core RGB is designed to provide stability and reliability for players and programmers who want a keyboard that will last with an enduring, strengthened plastic framework. In addition, the keyboard lock allows you to lock the keyboard without setting your whole system up.
    Features:
    Signature light Bar and dynamic RGB lighting effects 5 Zones multicolor customization option Quiet and responsive keys with anti-ghosting Durable solid frame with spill resistance Spill-resistant and dedicated media controls Quick access buttons for brightness, lighting modes, and game mode Keyboard lock mode and flexible braided cable
    Comparison Table

    Conclusion
    This was the complete list of best keyboards for programming that we think are currently the best in the Indian market. However, many other keyboards can also be included, but we have picked these best keyboards for this article.
    As a matter of fact, it depends on the users’ choice and preference for what they find best in their hands. And this list of best programming keyboards will help you to compare and come to a final consensus.
    Cheers to programming life!
    The post 8 Best Keyboards for Programming in India 2025 appeared first on The Crazy Programmer.
  10. by: Temani Afif
    Fri, 28 Feb 2025 14:03:32 +0000

    Creating a star rating component is a classic exercise in web development. It has been done and re-done many times using different techniques. We usually need a small amount of JavaScript to pull it together, but what about a CSS-only implementation? Yes, it is possible!
    Here is a demo of a CSS-only star rating component. You can click to update the rating.
    CodePen Embed Fallback Cool, right? In addition to being CSS-only, the HTML code is nothing but a single element:
    <input type="range" min="1" max="5"> An input range element is the perfect candidate here since it allows a user to select a numeric value between two boundaries (the min and max). Our goal is to style that native element and transform it into a star rating component without additional markup or any script! We will also create more components at the end, so follow along.
    Note: This article will only focus on the CSS part. While I try my best to consider UI, UX, and accessibility aspects, my component is not perfect. It may have some drawbacks (bugs, accessibility issues, etc), so please use it with caution.
    The <input> element
    You probably know it but styling native elements such as inputs is a bit tricky due to all the default browser styles and also the different internal structures. If, for example, you inspect the code of an input range you will see a different HTML between Chrome (or Safari, or Edge) and Firefox.
    Luckily, we have some common parts that I will rely on. I will target two different elements: the main element (the input itself) and the thumb element (the one you slide with your mouse to update the value).
    Our CSS will mainly look like this:
    input[type="range"] { /* styling the main element */ } input[type="range" i]::-webkit-slider-thumb { /* styling the thumb for Chrome, Safari and Edge */ } input[type="range"]::-moz-range-thumb { /* styling the thumb for Firefox */ } The only drawback is that we need to repeat the styles of the thumb element twice. Don’t try to do the following:
    input[type="range" i]::-webkit-slider-thumb, input[type="range"]::-moz-range-thumb { /* styling the thumb */ } This doesn’t work because the whole selector is invalid. Chrome & Co. don’t understand the ::-moz-* part and Firefox doesn’t understand the ::-webkit-* part. For the sake of simplicity, I will use the following selector for this article:
    input[type="range"]::thumb { /* styling the thumb */ } But the demo contains the real selectors with the duplicated styles. Enough introduction, let’s start coding!
    Styling the main element (the star shape)
    We start by defining the size:
    input[type="range"] { --s: 100px; /* control the size*/ height: var(--s); aspect-ratio: 5; appearance: none; /* remove the default browser styles */ } If we consider that each star is placed within a square area, then for a 5-star rating we need a width equal to five times the height, hence the use of aspect-ratio: 5.
    CodePen Embed Fallback That 5 value is also the value defined as the max attribute for the input element.
    <input type="range" min="1" max="5"> So, we can rely on the newly enhanced attr() function (Chrome-only at the moment) to read that value instead of manually defining it!
    input[type="range"] { --s: 100px; /* control the size*/ height: var(--s); aspect-ratio: attr(max type(<number>)); appearance: none; /* remove the default browser styles */ } Now you can control the number of stars by simply adjusting the max attribute. This is great because the max attribute is also used by the browser internally, so updating that value will control our implementation as well as the browser’s behavior.
    This enhanced version of attr() is only available in Chrome for now so all my demos will contain a fallback to help with unsupported browsers.
    The next step is to use a CSS mask to create the stars. We need the shape to repeat five times (or more depending on the max value) so the mask size should be equal to var(--s) var(--s) or var(--s) 100% or simply var(--s) since by default the height will be equal to 100%.
    input[type="range"] { --s: 100px; /* control the size*/ height: var(--s); aspect-ratio: attr(max type(<number>)); appearance: none; /* remove the default browser styles */ mask-image: /* ... */; mask-size: var(--s); } What about the mask-image property you might ask? I think it’s no surprise that I tell you it will require a few gradients, but it could also be SVG instead. This article is about creating a star-rating component but I would like to keep the star part kind of generic so you can easily replace it with any shape you want. That’s why I say “and more” in the title of this post. We will see later how using the same code structure we can get a variety of different variations.
    Here is a demo showing two different implementations for the star. One is using gradients and the other is using an SVG.
    CodePen Embed Fallback In this case, the SVG implementation looks cleaner and the code is also shorter but keep both approaches in your back pocket because a gradient implementation can do a better job in some situations.
    Styling the thumb (the selected value)
    Let’s now focus on the thumb element. Take the last demo then click the stars and notice the position of the thumb.
    CodePen Embed Fallback The good thing is that the thumb is always within the area of a given star for all the values (from min to max), but the position is different for each star. It would be good if the position is always the same, regardless of the value. Ideally, the thumb should always be at the center of the stars for consistency.
    Here is a figure to illustrate the position and how to update it.
    The lines are the position of the thumb for each value. On the left, we have the default positions where the thumb goes from the left edge to the right edge of the main element. On the right, if we restrict the position of the thumb to a smaller area by adding some spaces on the sides, we get much better alignment. That space is equal to half the size of one star, or var(--s)/2. We can use padding for this:
    input[type="range"] { --s: 100px; /* control the size */ height: var(--s); aspect-ratio: attr(max type(<number>)); padding-inline: calc(var(--s) / 2); box-sizing: border-box; appearance: none; /* remove the default browser styles */ mask-image: ...; mask-size: var(--s); } CodePen Embed Fallback It’s better but not perfect because I am not accounting for the thumb size, which means we don’t have true centering. It’s not an issue because I will make the size of the thumb very small with a width equal to 1px.
    input[type="range"]::thumb { width: 1px; height: var(--s); appearance: none; /* remove the default browser styles */ } CodePen Embed Fallback The thumb is now a thin line placed at the center of the stars. I am using a red color to highlight the position but in reality, I don’t need any color because it will be transparent.
    You may think we are still far from the final result but we are almost done! One property is missing to complete the puzzle: border-image.
    The border-image property allows us to draw decorations outside an element thanks to its outset feature. For this reason, I made the thumb small and transparent. The coloration will be done using border-image. I will use a gradient with two solid colors as the source:
    linear-gradient(90deg, gold 50%, grey 0); And we write the following:
    border-image: linear-gradient(90deg, gold 50%, grey 0) fill 0 // 0 100px; The above means that we extend the area of the border-image from each side of the element by 100px and the gradient will fill that area. In other words, each color of the gradient will cover half of that area, which is 100px.
    CodePen Embed Fallback Do you see the logic? We created a kind of overflowing coloration on each side of the thumb — a coloration that will logically follow the thumb so each time you click a star it slides into place!
    Now instead of 100px let’s use a very big value:
    CodePen Embed Fallback We are getting close! The coloration is filling all the stars but we don’t want it to be in the middle but rather across the entire selected star. For this, we update the gradient a bit and instead of using 50%, we use 50% + var(--s)/2. We add an offset equal to half the width of a star which means the first color will take more space and our star rating component is perfect!
    CodePen Embed Fallback We can still optimize the code a little where instead of defining a height for the thumb, we keep it 0 and we consider the vertical outset of border-image to spread the coloration.
    input[type="range"]::thumb{ width: 1px; border-image: linear-gradient(90deg, gold calc(50% + var(--s) / 2), grey 0) fill 0 // var(--s) 500px; appearance: none; } We can also write the gradient differently using a conic gradient instead:
    input[type="range"]::thumb{ width: 1px; border-image: conic-gradient(at calc(50% + var(--s) / 2), grey 50%, gold 0) fill 0 // var(--s) 500px; appearance: none; } I know that the syntax of border-image is not easy to grasp and I went a bit fast with the explanation. But I have a very detailed article over at Smashing Magazine where I dissect that property with a lot of examples that I invite you to read for a deeper dive into how the property works.
    The full code of our component is this:
    <input type="range" min="1" max="5"> input[type="range"] { --s: 100px; /* control the size*/ height: var(--s); aspect-ratio: attr(max type(<number>)); padding-inline: calc(var(--s) / 2); box-sizing: border-box; appearance: none; mask-image: /* ... */; /* either an SVG or gradients */ mask-size: var(--s); } input[type="range"]::thumb { width: 1px; border-image: conic-gradient(at calc(50% + var(--s) / 2), grey 50%, gold 0) fill 0//var(--s) 500px; appearance: none; } That’s all! A few lines of CSS code and we have a nice rating star component!
    Half-Star Rating
    What about having a granularity of half a star as a rating? It’s something common and we can do it with the previous code by making a few adjustments.
    First, we update the input element to increment in half steps instead of full steps:
    <input type="range" min=".5" step=".5" max="5"> By default, the step is equal to 1 but we can update it to .5 (or any value) then we update the min value to .5 as well. On the CSS side, we change the padding from var(--s)/2 to var(--s)/4, and we do the same for the offset inside the gradient.
    input[type="range"] { --s: 100px; /* control the size*/ height: var(--s); aspect-ratio: attr(max type(<number>)); padding-inline: calc(var(--s) / 4); box-sizing: border-box; appearance: none; mask-image: ...; /* either SVG or gradients */ mask-size: var(--s); } input[type="range"]::thumb{ width: 1px; border-image: conic-gradient(at calc(50% + var(--s) / 4),grey 50%, gold 0) fill 0 // var(--s) 500px; appearance: none; } The difference between the two implementations is a factor of one-half which is also the step value. That means we can use attr() and create a generic code that works for both cases.
    input[type="range"] { --s: 100px; /* control the size*/ --_s: calc(attr(step type(<number>),1) * var(--s) / 2); height: var(--s); aspect-ratio: attr(max type(<number>)); padding-inline: var(--_s); box-sizing: border-box; appearance: none; mask-image: ...; /* either an SVG or gradients */ mask-size: var(--s); } input[type="range"]::thumb{ width: 1px; border-image: conic-gradient(at calc(50% + var(--_s)),gold 50%,grey 0) fill 0//var(--s) 500px; appearance: none; } Here is a demo where modifying the step is all that you need to do to control the granularity. Don’t forget that you can also control the number of stars using the max attribute.
    CodePen Embed Fallback Using the keyboard to adjust the rating
    As you may know, we can adjust the value of an input range slider using a keyboard, so we can control the rating using the keyboard as well. That’s a good thing but there is a caveat. Due to the use of the mask property, we no longer have the default outline that indicates keyboard focus which is an accessibility concern for those who rely on keyboard input.
    For a better user experience and to make the component more accessible, it’s good to display an outline on focus. The easiest solution is to add an extra wrapper:
    <span> <input type="range" min="1" max="5"> </span> That will have an outline when the input inside has focus:
    span:has(:focus-visible) { outline: 2px solid; } Try to use your keyboard in the below example to adjust both ratings:
    CodePen Embed Fallback Another idea is to consider a more complex mask configuration that prevents hiding the outline (or any outside decoration). The trick is to start with the following:
    mask: conic-gradient(#000 0 0) exclude, conic-gradient(#000 0 0) no-clip; The no-clip keyword means that nothing from the element will be clipped (including outlines). Then we use an exclude composition with another gradient. The exclusion will hide everything inside the element while keeping what is outside visible.
    Finally, we add back the mask that creates the star shapes:
    mask: /* ... */ 0/var(--s), conic-gradient(#000 0 0) exclude, conic-gradient(#000 0 0) no-clip; I prefer using this last method because it maintains the single-element implementation but maybe your HTML structure allows you to add focus on an upper element and you can keep the mask configuration simple. It totally depends!
    CodePen Embed Fallback Credits to Ana Tudor for the last trick!
    More examples!
    As I said earlier, what we are making is more than a star rating component. You can easily update the mask value to use any shape you want.
    Here is an example where I am using an SVG of a heart instead of a star.
    CodePen Embed Fallback Why not butterflies?
    CodePen Embed Fallback This time I am using a PNG image as a mask. If you are not comfortable using SVG or gradients you can use a transparent image instead. As long as you have an SVG, a PNG, or gradients, there is no limit on what you can do with this as far as shapes go.
    We can go even further into the customization and create a volume control component like below:
    CodePen Embed Fallback I am not repeating a specific shape in that last example, but am using a complex mask configuration to create a signal shape.
    Conclusion
    We started with a star rating component and ended with a bunch of cool examples. The title could have been “How to style an input range element” because this is what we did. We upgraded a native component without any script or extra markup, and with only a few lines of CSS.
    What about you? Can you think about another fancy component using the same code structure? Share your example in the comment section!
    Article series
    A CSS-Only Star Rating Component and More! (Part 1) A CSS-Only Star Rating Component and More! (Part 2) — Coming March 7!
    A CSS-Only Star Rating Component and More! (Part 1) originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.
  11. by: Abhishek Prakash
    Fri, 28 Feb 2025 19:22:01 +0530

    What career opportunities are available for someone starting with Linux? I am talking about entering this field and that's why I left out roles like SRE from this list. I would appreciate your feedback on it if you are already working in the IT industry. Let's help out our juniors.
    What Kind of Job Can You Get if You Learn Linux?While there are tons of job roles created around Linux, here are the ones that you can choose for an entry level career.Linux HandbookAbhishek PrakashHere are the other highlights of this edition of LHB Linux Digest:
    Zed IDE Essential Docker commands Self hosted project management tool And more tools, tips and memes for you This edition of LHB Linux Digest newsletter is supported by PikaPods. 📖 Linux Tips and Tutorials
    Finding the biggest files and directories so that you can see what's taking all that disk space List only directories, not files (sometimes, you need to do that) Checking Crontab logs so that you can troubleshoot Learn to increase (or perhaps decrease) swap on Ubuntu Linux. This should work on other distros too if they use swap file instead of swap partition.
    How to Increase Swap Size on Ubuntu LinuxIn this quick tip, you’ll learn to increase the swap size on Ubuntu and other Linux distributions.Linux HandbookAbhishek Prakash  
     
      This post is for subscribers only
    Subscribe now Already have an account? Sign in
  12. by: Geoff Graham
    Wed, 26 Feb 2025 16:07:14 +0000

    You can find the <details> element all over the web these days. We were excited about it when it first dropped and toyed with using it as a menu back in 2019 (but probably don’t) among many other experiments. John Rhea made an entire game that combines <details> with the Popover API!
    Now that we’re 5+ years into <details>, we know more about it than ever before. I thought I’d round that information up so it’s in one place I can reference in the future without having to search the site — and other sites — to find it.
    The basic markup
    It’s a single element:
    <details> Open and close the element to toggle this content. </details> CodePen Embed Fallback That “details” label is a default. We can insert a <summary> element to come up with something custom:
    <details> <summary>Toggle content</summary> Open and close the element to toggle this content. </details> CodePen Embed Fallback From here, the world is sorta our oyster because we can stuff any HTML we want inside the element:
    <details> <summary>Toggle content</summary> <p>Open and close the element to toggle this content.</p> <img src="path/to/image.svg" alt=""> </details> The content is (sorta) searchable
    The trouble with tucking content inside an element like this is that it’s hidden by default. Early on, this was considered an inaccessible practice because the content was undetected by in-page searching (like using CMD+F on the page), but that’s since changed, at least in Chrome, which will open the <details> element and reveal the content if it discovers a matched term.
    That’s unfortunately not the case in Firefox and Safari, both of which skip the content stuffed inside a closed <details> element when doing in-page searches at the time I’m writing this. But it’s even more nuanced than that because Firefox (testing 134.0.1) matches searches when the <details> element is open, while Safari (testing 18.1) skips it altogether. That could very well change by the end of this year since searchability is one of the items being tackled in Interop 2025.
    So, as for now, it’s a good idea to keep important content out of a <details> element when possible. For example, <details> is often used as a pattern for Frequently Asked Questions, where each “question” is an expandable “answer” that reveals additional information. That might not be the best idea if that content should be searchable on the page, at least for now.
    CodePen Embed Fallback Open one at a time
    All we have to do is give each <details> a matching name attribute:
    <details name="notes"> <summary>Open Note</summary> <p> ... </p> </details> <details name="notes"> <!-- etc. --> </details> <details name="notes"> <!-- etc. --> </details> <details name="notes"> <!-- etc. --> </details> This allows the elements to behave a lot more like true accordions, where one panel collapses when another expands.
    CodePen Embed Fallback Style the marker
    The marker is that little triangle that indicates whether the <details> element is open or closed. We can use the ::marker pseudo-element to style it, though it does come with constraints, namely that all we can do is change the color and font size, at least in Chrome and Firefox which both fully support ::marker. Safari partially supports it in the sense that it works for ordered and unordered list items (e.g., li::marker), but not for <details> (e.g., summary::marker).
    Let’s look at an example that styles the markers for both <details> and an unordered list. At the time I’m writing this, Chrome and Firefox support styling the ::marker in both places, but Safari only works with the unordered list.
    CodePen Embed Fallback Notice how the ::marker selector in that last example selects both the <details> element and the unordered list element. We need to scope the selector to the <details> element if we want to target just that marker, right?
    /* This doesn't work! */ details::marker { /* styles */ } Nope! Instead, we need to scope it to the <summary> element. That’s what the marker is actually attached to.
    /* This does work */ summary::marker { /* styles */ } You might think that we can style the marker even if we were to leave the summary out of the markup. After all, HTML automatically inserts one for us by default. But that’s not the case. The <summary> element has to be present in the markup for it to match styles. You’ll see in the following demo that I’m using a generic ::marker selector that should match both <details> elements, but only the second one matches because it contains a <summary> in the HTML. Again, only Chrome and Firefox support for the time being:
    CodePen Embed Fallback You might also think that we can swap out the triangle for something else since that’s something we can absolutely do with list items by way of the list-style-type property:
    /* Does not work! */ summary::marker { list-style-type: square; } …but alas, that’s not the case. An article over at web.dev says that it does work, but I’ve been unsuccessful at getting a proper example to work in any browser.
    CodePen Embed Fallback That isn’t to say it shouldn’t work that way, but the specification isn’t explicit about it, so I have no expectations one way or another. Perhaps we’ll see an edit in a future specification that gets specific with <details> and to what extent CSS can modify the marker. Or maybe we won’t. It would be nice to have some way to chuck the triangle in favor of something else.
    And what about removing the marker altogether? All we need to do is set the content property on it with an empty string value and voilà!
    CodePen Embed Fallback Once the marker is gone, you could decide to craft your own custom marker with CSS by hooking into the <summary> element’s ::before pseudo-element.
    CodePen Embed Fallback Just take note that Safari displays both the default marker and the custom one since it does not support the ::marker pseudo-element at the time I’m writing this. You’re probably as tired reading that as I am typing it. 🤓
    Style the content
    Let’s say all you need to do is slap a background color on the content inside the <details> element. You could select the entire thing and set a background on it:
    details { background: oklch(95% 0.1812 38.35); } That’s cool, but it would be better if it only set the background color when the element is in an open state. We can use an attribute selector for that:
    details[open] { background: oklch(95% 0.1812 38.35); } OK, but what about the <summary> element? What if you don’t want that included in the background? Well, you could wrap the content in a <div> and select that instead:
    details[open] div { background: oklch(95% 0.1812 38.35); } CodePen Embed Fallback What’s even better is using the ::details-content pseudo-element as a selector. This way, we can select everything inside the <details> element without reaching for more markup:
    ::details-content { background: oklch(95% 0.1812 38.35); } There’s no need to include details in the selector since ::details-content is only ever selectable in the context of a <details> element. So, it’s like we’re implicitly writing details::details-content.
    CodePen Embed Fallback The ::details-content pseudo is still gaining browser support when I’m writing this, so it’s worth keeping an eye on it and using it cautiously in the meantime.
    Animate the opening and closing
    Click a default <details> element and it immediately snaps open and closed. I’m not opposed to that, but there are times when it might look (and feel) nice to transition like a smooth operator between the open and closed states. It used to take some clever hackery to pull this off, as Louis Hoebregts demonstrated using the Web Animations API several years back. Robin Rendle shared another way that uses a CSS animation:
    details[open] p { animation: animateDown 0.2s linear forwards; } @keyframes animateDown { 0% { opacity: 0; transform: translatey(-15px); } 100% { opacity: 1; transform: translatey(0); } } He sprinkled in a little JavaScript to make his final example fully interactive, but you get the idea:
    CodePen Embed Fallback Notice what’s happening in there. Robin selects the paragraph element inside the <details> element when it is in an open state then triggers the animation. And that animation uses clever positioning to make it happen. That’s because there’s no way to know exactly how tall the paragraph — or the parent <details> element — is when expanded. We have to use explicit sizing, padding, and positioning to pull it all together.
    But guess what? Since then, we got a big gift from CSS that allows us to animate an element from zero height to its auto (i.e., intrinsic) height, even if we don’t know the exact value of that auto height in advance. We start with zero height and clip the overflow so nothing hangs out. And since we have the ::details-content pseudo, we can directly select that rather than introducing more markup to the HTML.
    ::details-content { transition: height 0.5s ease, content-visibility 0.5s ease allow-discrete; height: 0; overflow: clip; } Now we can opt into auto-height transitions using the interpolate-size property which was created just to enable transitions to keyword values, such as auto. We set it on the :root element so that it’s available everywhere, though you could scope it directly to a more specific instance if you’d like.
    :root { interpolate-size: allow-keywords; } Next up, we select the <details> element in its open state and set the ::details-content height to auto:
    [open]::details-content { height: auto; } We can make it so that this only applies if the browser supports auto-height transitions:
    @supports (interpolate-size: allow-keywords) { :root { interpolate-size: allow-keywords; } [open]::details-content { height: auto; } } And finally, we set the transition on the ::details-content pseudo to activate it:
    ::details-content { transition: height 0.5s ease; height: 0; overflow: clip; } /* Browser supports interpolate-size */ @supports (interpolate-size: allow-keywords) { :root { interpolate-size: allow-keywords; } [open]::details-content { height: auto; } } CodePen Embed Fallback But wait! Notice how the animation works when opening <details>, but things snap back when closing it. Bramus notes that we need to include the content-visibility property in the transition because (1) it is implicitly set on the element and (2) it maps to a hidden state when the <details> element is closed. That’s what causes the content to snap to hidden when closing the <details>. So, let’s add content-visibility to our list of transitions:
    ::details-content { transition: height 0.5s ease, content-visibility 0.5s ease allow-discrete; height: 0; overflow: clip; } /* Browser supports interpolate-size */ @supports (interpolate-size: allow-keywords) { :root { interpolate-size: allow-keywords; } [open]::details-content { height: auto; } } That’s much better:
    CodePen Embed Fallback Note the allow-discrete keyword which we need to set since content-visibility is a property that only supports discrete animations and transitions.
    Interesting tricks
    Chris has a demo that uses <details> as a system for floating footnotes in content. I forked it and added the name attribute to each footnote so that they close when another one is opened.
    CodePen Embed Fallback I mentioned John Rhea’s “Pop(over) The Balloons” game at the top of these notes:
    CodePen Embed Fallback Bramus with a slick-looking horizontal accordion forked from another example. Note how the <details> element is used as a flex container:
    CodePen Embed Fallback Chris with another clever trick that uses <details> to play and pause animated GIF image files. It’s doesn’t actually “pause” but the effect makes it seem like it does.
    CodePen Embed Fallback Ryan Trimble with styling <details> as a dropdown menu and then using anchor positioning to set where the content opens.
    CodePen Embed Fallback References
    HTML Living Standard (Section 4.11.1) by WHATWG “Quick Reminder that Details/Summary is the Easiest Way Ever to Make an Accordion” by Chris Coyier “A (terrible?) way to do footnotes in HTML” by Chris Coyier “Using <details> for Menus and Dialogs is an Interesting Idea” by Chris Coyier “Pausing a GIF with details/summary” by Chris Coyier “Exploring What the Details and Summary Elements Can Do” by Robin Rendle “More Details on <details>“ by Geoff Graham “::details-content“ by Geoff Graham “More options for styling <details>“ by Bramus “How to Animate the Details Element Using WAAPI” by Louis Hoebregts “Details and summary” by web.dev Using & Styling the Details Element originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.
  13. by: Geoff Graham
    Wed, 26 Feb 2025 16:07:14 +0000

    You can find the <details> element all over the web these days. We were excited about it when it first dropped and toyed with using it as a menu back in 2019 (but probably don’t) among many other experiments. John Rhea made an entire game that combines <details> with the Popover API!
    Now that we’re 5+ years into <details>, we know more about it than ever before. I thought I’d round that information up so it’s in one place I can reference in the future without having to search the site — and other sites — to find it.
    The basic markup
    It’s a single element:
    <details> Open and close the element to toggle this content. </details> CodePen Embed Fallback That “details” label is a default. We can insert a <summary> element to come up with something custom:
    <details> <summary>Toggle content</summary> Open and close the element to toggle this content. </details> CodePen Embed Fallback From here, the world is sorta our oyster because we can stuff any HTML we want inside the element:
    <details> <summary>Toggle content</summary> <p>Open and close the element to toggle this content.</p> <img src="path/to/image.svg" alt=""> </details> The content is (sorta) searchable
    The trouble with tucking content inside an element like this is that it’s hidden by default. Early on, this was considered an inaccessible practice because the content was undetected by in-page searching (like using CMD+F on the page), but that’s since changed, at least in Chrome, which will open the <details> element and reveal the content if it discovers a matched term.
    That’s unfortunately not the case in Firefox and Safari, both of which skip the content stuffed inside a closed <details> element when doing in-page searches at the time I’m writing this. But it’s even more nuanced than that because Firefox (testing 134.0.1) matches searches when the <details> element is open, while Safari (testing 18.1) skips it altogether. That could very well change by the end of this year since searchability is one of the items being tackled in Interop 2025.
    So, as for now, it’s a good idea to keep important content out of a <details> element when possible. For example, <details> is often used as a pattern for Frequently Asked Questions, where each “question” is an expandable “answer” that reveals additional information. That might not be the best idea if that content should be searchable on the page, at least for now.
    CodePen Embed Fallback Open one at a time
    All we have to do is give each <details> a matching name attribute:
    <details name="notes"> <summary>Open Note</summary> <p> ... </p> </details> <details name="notes"> <!-- etc. --> </details> <details name="notes"> <!-- etc. --> </details> <details name="notes"> <!-- etc. --> </details> This allows the elements to behave a lot more like true accordions, where one panel collapses when another expands.
    CodePen Embed Fallback Style the marker
    The marker is that little triangle that indicates whether the <details> element is open or closed. We can use the ::marker pseudo-element to style it, though it does come with constraints, namely that all we can do is change the color and font size, at least in Chrome and Firefox which both fully support ::marker. Safari partially supports it in the sense that it works for ordered and unordered list items (e.g., li::marker), but not for <details> (e.g., summary::marker).
    Let’s look at an example that styles the markers for both <details> and an unordered list. At the time I’m writing this, Chrome and Firefox support styling the ::marker in both places, but Safari only works with the unordered list.
    CodePen Embed Fallback Notice how the ::marker selector in that last example selects both the <details> element and the unordered list element. We need to scope the selector to the <details> element if we want to target just that marker, right?
    /* This doesn't work! */ details::marker { /* styles */ } Nope! Instead, we need to scope it to the <summary> element. That’s what the marker is actually attached to.
    /* This does work */ summary::marker { /* styles */ } You might think that we can style the marker even if we were to leave the summary out of the markup. After all, HTML automatically inserts one for us by default. But that’s not the case. The <summary> element has to be present in the markup for it to match styles. You’ll see in the following demo that I’m using a generic ::marker selector that should match both <details> elements, but only the second one matches because it contains a <summary> in the HTML. Again, only Chrome and Firefox support for the time being:
    CodePen Embed Fallback You might also think that we can swap out the triangle for something else since that’s something we can absolutely do with list items by way of the list-style-type property:
    /* Does not work! */ summary::marker { list-style-type: square; } …but alas, that’s not the case. An article over at web.dev says that it does work, but I’ve been unsuccessful at getting a proper example to work in any browser.
    CodePen Embed Fallback That isn’t to say it shouldn’t work that way, but the specification isn’t explicit about it, so I have no expectations one way or another. Perhaps we’ll see an edit in a future specification that gets specific with <details> and to what extent CSS can modify the marker. Or maybe we won’t. It would be nice to have some way to chuck the triangle in favor of something else.
    And what about removing the marker altogether? All we need to do is set the content property on it with an empty string value and voilà!
    CodePen Embed Fallback Once the marker is gone, you could decide to craft your own custom marker with CSS by hooking into the <summary> element’s ::before pseudo-element.
    CodePen Embed Fallback Just take note that Safari displays both the default marker and the custom one since it does not support the ::marker pseudo-element at the time I’m writing this. You’re probably as tired reading that as I am typing it. 🤓
    Style the content
    Let’s say all you need to do is slap a background color on the content inside the <details> element. You could select the entire thing and set a background on it:
    details { background: oklch(95% 0.1812 38.35); } That’s cool, but it would be better if it only set the background color when the element is in an open state. We can use an attribute selector for that:
    details[open] { background: oklch(95% 0.1812 38.35); } OK, but what about the <summary> element? What if you don’t want that included in the background? Well, you could wrap the content in a <div> and select that instead:
    details[open] div { background: oklch(95% 0.1812 38.35); } CodePen Embed Fallback What’s even better is using the ::details-content pseudo-element as a selector. This way, we can select everything inside the <details> element without reaching for more markup:
    ::details-content { background: oklch(95% 0.1812 38.35); } There’s no need to include details in the selector since ::details-content is only ever selectable in the context of a <details> element. So, it’s like we’re implicitly writing details::details-content.
    CodePen Embed Fallback The ::details-content pseudo is still gaining browser support when I’m writing this, so it’s worth keeping an eye on it and using it cautiously in the meantime.
    Animate the opening and closing
    Click a default <details> element and it immediately snaps open and closed. I’m not opposed to that, but there are times when it might look (and feel) nice to transition like a smooth operator between the open and closed states. It used to take some clever hackery to pull this off, as Louis Hoebregts demonstrated using the Web Animations API several years back. Robin Rendle shared another way that uses a CSS animation:
    details[open] p { animation: animateDown 0.2s linear forwards; } @keyframes animateDown { 0% { opacity: 0; transform: translatey(-15px); } 100% { opacity: 1; transform: translatey(0); } } He sprinkled in a little JavaScript to make his final example fully interactive, but you get the idea:
    CodePen Embed Fallback Notice what’s happening in there. Robin selects the paragraph element inside the <details> element when it is in an open state then triggers the animation. And that animation uses clever positioning to make it happen. That’s because there’s no way to know exactly how tall the paragraph — or the parent <details> element — is when expanded. We have to use explicit sizing, padding, and positioning to pull it all together.
    But guess what? Since then, we got a big gift from CSS that allows us to animate an element from zero height to its auto (i.e., intrinsic) height, even if we don’t know the exact value of that auto height in advance. We start with zero height and clip the overflow so nothing hangs out. And since we have the ::details-content pseudo, we can directly select that rather than introducing more markup to the HTML.
    ::details-content { transition: height 0.5s ease, content-visibility 0.5s ease allow-discrete; height: 0; overflow: clip; } Now we can opt into auto-height transitions using the interpolate-size property which was created just to enable transitions to keyword values, such as auto. We set it on the :root element so that it’s available everywhere, though you could scope it directly to a more specific instance if you’d like.
    :root { interpolate-size: allow-keywords; } Next up, we select the <details> element in its open state and set the ::details-content height to auto:
    [open]::details-content { height: auto; } We can make it so that this only applies if the browser supports auto-height transitions:
    @supports (interpolate-size: allow-keywords) { :root { interpolate-size: allow-keywords; } [open]::details-content { height: auto; } } And finally, we set the transition on the ::details-content pseudo to activate it:
    ::details-content { transition: height 0.5s ease; height: 0; overflow: clip; } /* Browser supports interpolate-size */ @supports (interpolate-size: allow-keywords) { :root { interpolate-size: allow-keywords; } [open]::details-content { height: auto; } } CodePen Embed Fallback But wait! Notice how the animation works when opening <details>, but things snap back when closing it. Bramus notes that we need to include the content-visibility property in the transition because (1) it is implicitly set on the element and (2) it maps to a hidden state when the <details> element is closed. That’s what causes the content to snap to hidden when closing the <details>. So, let’s add content-visibility to our list of transitions:
    ::details-content { transition: height 0.5s ease, content-visibility 0.5s ease allow-discrete; height: 0; overflow: clip; } /* Browser supports interpolate-size */ @supports (interpolate-size: allow-keywords) { :root { interpolate-size: allow-keywords; } [open]::details-content { height: auto; } } That’s much better:
    CodePen Embed Fallback Note the allow-discrete keyword which we need to set since content-visibility is a property that only supports discrete animations and transitions.
    Interesting tricks
    Chris has a demo that uses <details> as a system for floating footnotes in content. I forked it and added the name attribute to each footnote so that they close when another one is opened.
    CodePen Embed Fallback I mentioned John Rhea’s “Pop(over) The Balloons” game at the top of these notes:
    CodePen Embed Fallback Bramus with a slick-looking horizontal accordion forked from another example. Note how the <details> element is used as a flex container:
    CodePen Embed Fallback Chris with another clever trick that uses <details> to play and pause animated GIF image files. It’s doesn’t actually “pause” but the effect makes it seem like it does.
    CodePen Embed Fallback Ryan Trimble with styling <details> as a dropdown menu and then using anchor positioning to set where the content opens.
    CodePen Embed Fallback References
    HTML Living Standard (Section 4.11.1) by WHATWG “Quick Reminder that Details/Summary is the Easiest Way Ever to Make an Accordion” by Chris Coyier “A (terrible?) way to do footnotes in HTML” by Chris Coyier “Using <details> for Menus and Dialogs is an Interesting Idea” by Chris Coyier “Pausing a GIF with details/summary” by Chris Coyier “Exploring What the Details and Summary Elements Can Do” by Robin Rendle “More Details on <details>“ by Geoff Graham “::details-content“ by Geoff Graham “More options for styling <details>“ by Bramus “How to Animate the Details Element Using WAAPI” by Louis Hoebregts “Details and summary” by web.dev Using & Styling the Details Element originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.
  14. Chris’ Corner: onChange

    by: Chris Coyier
    Mon, 24 Feb 2025 18:00:59 +0000

    There is an awful lot of change on the web. Sometimes the languages we use to build for the web change. Some of it comes from browsers themselves changing. An awful lot of it comes from ourselves. We change UIs and not always for the better. We build new tools. We see greener grass and we lust after it and chase it.
    Marco Rogers calls some of it a treadmill and has a hot take:
    Personally I wouldn’t cast as harsh of judgement that rewriting a front end is automatically wasted energy. Revisiting code, whatever the circumstances, can have helpful effects, like the person doing it actually understanding it. But I take the point. The success of a product likely has fairly little to do with the front-end framework at play and change for change sake isn’t exactly an efficient way to achieve success.
    The web doesn’t just have fits and spurts of change, it’s ever-changing. It’s just the nature of the teams and processes put around specs and browsers and the whole ecosystem really. The cool part about the web platform evolving is that you don’t have to care immediately. The web, gosh bless it, tends to be forgivingly backwards compatible. So staying on top of change largely means taking advantage of things that are easier to do now or a capability that didn’t exist before.
    One take on understanding evolving web features is Baseline, which is Google’s take on essentially a badge that shows you how practical it is to use a feature at a glance. Rachel Andrew’s talk Browser Support and The Rapidly Changing Web gets into this, but sadly I haven’t found a video of it yet. I have some critiques of Baseline (namely that it doesn’t help you know if a feature is usable through progressive enhancement or not) but largely it’s a win.
    Sometimes changes in a language cause massive sweeping movement. An example of this is the advent of ESM (ECMAScript Modules), that is, import and export in JavaScript. Seems small — is not small. Particularly because JavaScript also means Node ‘n’ friends, which needed an import mechanism, thus support require() (CJS format) for umpteen years, which is a bit of a different beast. So if you want to support ESM, that’s the future, but it means shipping Node modules in the dual CJS/EMS format, which is annoying work at best. Anthony Fu weighs in here with Move on to ESM-only, a controversial take, but much less so now that Node ships with the ability to require() an ESM file (vice versa would be even more magical).
    In some situations, sticking with the old actually does come with some cost. For instance, shipping “old” JavaScript (i.e. ES5) is slower, larger, and requires more compilation work. Philip Walton digs into the data there and has a solid conclusion:
    Best case scenario there is to compile code that looks at your chosen browser support targets, so it can evolve as the world does.
  15. by: Lee Meyer
    Mon, 24 Feb 2025 13:42:16 +0000

    Editor’s note: This article is outside the typical range of topics we normally cover around here and touches on sensitive topics including recollections from an abusive marriage. It doesn’t delve into much detail about the abuse and ends on a positive note. Thanks to Lee for sharing his take on the intersection between life and web development and for allowing us to gain professional insights from his personal life.
    When my dad was alive, he used to say that work and home life should exist in separate “watertight compartments.” I shouldn’t bring work home or my home life to work. There’s the quote misattributed to Mark Twain about a dad seeming to magically grow from a fool to a wise man in the few years it took the son to grow from a teen to an adult — but in my case, the older I get, the more I question my dad’s advice.
    It’s easy to romanticize someone in death — but when my dad wasn’t busy yelling, gambling the rent money, or disappearing to another state, his presence was like an AI simulating a father, throwing around words that sounded like a thing to say from a dad, but not helpful if you stopped to think about his statements for more than a minute.
    Let’s state the obvious: you shouldn’t do your personal life at work or work too much overtime when your family needs you. But you don’t need the watertight compartments metaphor to understand that. The way he said it hinted at something more complicated and awful — it was as though he wanted me to have a split personality. I shouldn’t be a developer at home, especially around him because he couldn’t relate, since I got my programming genes from my mum. And he didn’t think I should pour too much of myself into my dev work. The grain of truth was that even if you love your job, it can’t love you back. Yet what I’m hooked on isn’t one job, but the power of code and language.
    The lonely coder seems to free his mind at night
    Maybe my dad’s platitudinous advice to maintain a distance between my identity and my work would be practicable to a bricklayer or a president — but it’s poorly suited to someone whose brain is wired for web development. The job is so multidisciplinary it defies being put in a box you can leave at the office. That puzzle at work only makes sense because of a comment the person you love said before bedtime about the usability of that mobile game they play. It turns out the app is a competitor to the next company you join, as though the narrator of your life planted the earlier scene like a Chekov’s gun plot point, the relevance of which is revealed when you have that “a-ha” moment at work.
    Meanwhile, existence is so online that as you try to unwind, you can’t unsee the matrix you helped create, even when it’s well past 5 p.m. The user interface you are building wants you to be a psychologist, an artist, and a scientist. It demands the best of every part of you. The answer about implementing a complex user flow elegantly may only come to you in a dream.
    Don’t feel too bad if it’s the wrong answer. Douglas Crockford believes it’s a miracle we can code at all. He postulates that the mystery of how the human brain can program when he sees no evolutionary basis is why we haven’t hit the singularity. If we understood how our brains create software, we could build an AI that can program well enough to make a program better than itself. It could do that recursively till we have an AI smarter than us.
    And yet so far the best we have is the likes of the aptly named Github Copilot. The branding captures that we haven’t hit the singularity so much as a duality, in which humanity hopefully harmonizes with what Noam Chomsky calls a “kind of super-autocomplete,” the same way autotune used right can make a good singer sound better, or it can make us all sound like the same robot. We can barely get our code working even now that we have all evolved into AI-augmented cyborgs, but we also can’t seem to switch off our dev mindset at will.
    My dev brain has no “off” switch — is that a bug or a feature?
    What if the ability to program represents a different category of intelligence than we can measure with IQ tests, similar to neurodivergence, which carries unique strengths and weaknesses? I once read a study in which the researchers devised a test that appeared to accurately predict which first-year computer science students would be able to learn to program. They concluded that an aptitude for programming correlates with a “comfort with meaninglessness.” The researchers said that to write a program you have to “accept that whatever you might want the program to mean, the machine will blindly follow its meaningless rules and come to some meaningless conclusion. In the test, the consistent group showed a pre-acceptance of this fact.”
    The realization is dangerous, as both George Orwell and Philip K. Dick warned us. If you can control what words mean, you can control people and not just machines. If you have been swiping on Tinder and take a moment to sit with the feelings you associate with the phrases “swipe right” and “swipe left,” you find your emotional responses reveal that the app’s visual language has taught you what is good and what is bad. This recalls the scene in “Through the Looking-Glass,” in which Humpty Dumpty tells Alice that words mean what he wants them to mean. Humpty’s not the nicest dude. The Alice books can be interpreted as Dodgson’s critique of the Victorian education system which the author thought robbed children of their imagination, and Humpty makes his comments about language in a “scornful tone,” as though Alice should not only accept what he says, but she should know it without being told. To use a term that itself means different things to different people, Humpty is gaslighting Alice. At least he’s more transparent about it than modern gaslighters, and there’s a funny xkcd in which Alice uses Humpty’s logic against him to take all his possessions.
    Perhaps the ability to shape reality by modifying the consensus on what words mean isn’t inherently good or bad, but in itself “meaningless,” just something that is true. It’s probably not a coincidence the person who coined the phrases “the map is not the territory” and “the word is not the thing” was an engineer. What we do with this knowledge depends on our moral compass, much like someone with a penchant for cutting people up could choose to be a surgeon or a serial killer.
    Toxic humans are like blackhat hackers
    For around seven years, I was with a person who was psychologically and physically abusive. Abuse boils down to violating boundaries to gain control. As awful as that was, I do not think the person was irrational. There is a natural appeal for human beings pushing boundaries to get what they want. Kids do that naturally, for example, and pushing boundaries by making CSS do things it doesn’t want to is the premise of my articles on CSS-Tricks. I try to create something positive with my impulse to exploit the rules, which I hope makes the world slightly more illuminated. However, to understand those who would do us harm, we must first accept that their core motivation meets a relatable human need, albeit in unacceptable ways.
    For instance, more than a decade ago, the former hosting provider for CSS-Tricks was hacked. Chris Coyier received a reactivation notice for his domain name indicating the primary email for his account had changed to someone else’s email address. After this was resolved and the smoke cleared, Chris interviewed the hacker to understand how social engineering was used for the attack — but he also wanted to understand the hacker’s motivations. “Earl Drudge” (ananagram for “drug dealer”) explained that it was nothing personal that led him to target Chris — but Earl does things for“money and attention” and Chris reflected that “as different as the ways that we choose to spend our time are I do things for money and attention also, which makes us not entirely different at our core.”
    It reminds me of the trope that cops and criminals share many personality traits. Everyone who works in technology shares the mindset that allows me to bend the meaning and assumptions within technology to my will, which is why the qualifiers of blackhat and whitehat exist. They are two sides of the same coin. However, the utility of applying the rule-bending mindset to life itself has been recognized in the popularization of the term “life hack.” Hopefully, we are whitehat life hackers. A life hack is like discovering emergent gameplay that is a logical if unexpected consequence of what occurs in nature. It’s a conscious form of human evolution.
    If you’ve worked on a popular website, you will find a surprisingly high percentage of people follow the rules as long as you explain properly. Then again a large percentage will ignore the rules out of laziness or ignorance rather than malice. Then there are hackers and developers, who want to understand how the rules can be used to our advantage, or we are just curious what happens when we don’t follow the rules. When my seven-year-old does his online math, he sometimes deliberately enters the wrong answer, to see what animation triggers. This is a benign form of the hacker mentality — but now it’s time to talk about my experience with a lifehacker of the blackhat variety, who liked experimenting with my deepest insecurities because exploiting them served her purpose.
    Verbal abuse is like a cross-site scripting attack
    William Faulkner wrote that “the past is never dead. It’s not even past.” Although I now share my life with a person who is kind, supportive, and fascinating, I’m arguably still trapped in the previous, abusive relationship, because I have children with that person. Sometimes you can’t control who you receive input from, but recognizing the potential for that input to be malicious and then taking control of how it is interpreted is how we defend against both cross-site scriptingand verbal abuse.
    For example, my ex would input the word “stupid” and plenty of other names I can’t share on this blog. She would scream this into my consciousness again and again. It is just a word, like a malicious piece of JavaScript a user might save into your website. It’s a set of characters with no inherent meaning. The way you allow it to be interpreted does the damage. When the “stupid” script ran in my brain, it was laden with meanings and assumptions in the way I interpreted it, like a keyword in a high-level language that has been designed to represent a set of lower-level instructions:
    Intelligence was conflated with my self-worth. I believed she would not say the hurtful things after her tearful promises not to say them again once she was aware it hurt me, as though she was not aware the first time. I felt trapped being called names because I believed the relationship was something I needed. I believed the input at face value that my actual intelligence was the issue, rather than the power my ex gained over me by generating the reaction she wanted from me by her saying one magic word. Patching the vulnerabilities in your psyche
    My psychologist pointed out that the ex likely knew I was not stupid but the intent was to damage my self-worth to make me easy to control. To acknowledge my strengths would not achieve that. I also think my brand of intelligence isn’t the type she values. For instance, the strengths that make me capable of being a software engineer are invisible to my abuser. Ultimately it’s irrelevant whether she believed what she was shouting — because the purpose was the effect her words had, rather than their surface-level meaning. The vulnerability she exploited was that I treated her input as a first-class citizen, able to execute with the same privileges I had given to the scripts I had written for myself. Once I sanitized that input using therapy and self-hypnosis, I stopped allowing her malicious scripts to have the same importance as the scripts I had written for myself, because she didn’t deserve that privilege. The untruths about myself have lost their power — I can still review them like an inert block of JavaScript but they can’t hijack my self-worth.
    Like Alice using Humpty Dumpty’s logic against him in the xkcd cartoon, I showed that if words inherently have no meaning, there is no reason I can’t reengineer myself so that my meanings for the words trump how the abuser wanted me to use them to hurt myself and make me question my reality. The sanitized version of the “stupid” script rewrites those statements to:
    I want to hurt you. I want to get what I want from you. I want to lower your self-worth so you will believe I am better than you so you won’t leave. When you translate it like that, it has nothing to do with actual intelligence, and I’m secure enough to jokingly call myself an idiot in my previous article. It’s not that I’m colluding with the ghost of my ex in putting myself down. Rather, it’s a way of permitting myself not to be perfect because somewhere in human fallibility lies our ability to achieve what a computer can’t. I once worked with a manager who when I had a bug would say, “That’s good, at least you know you’re not a robot.” Being an idiot makes what I’ve achieved with CSS seem more beautiful because I work around not just the limitations in technology, but also my limitations. Some people won’t like it, or won’t get it. I have made peace with that.
    We never expose ourselves to needless risk, but we must stay in our lane, assuming malicious input will keep trying to find its way in. The motive for that input is the malicious user’s journey, not ours. We limit the attack surface and spend our energy understanding how to protect ourselves rather than dwelling on how malicious people shouldn’t attempt what they will attempt.
    Trauma and selection processes
    In my new relationship, there was a stage in which my partner said that dating me was starting to feel like “a job interview that never ends” because I would endlessly vet her to avoid choosing someone who would hurt me again. The job interview analogy was sadly apt. I’ve had interviews in which the process maps out the scars from how the organization has previously inadvertently allowed negative forces to enter. The horror trope in which evil has to be invited reflects the truth that we unknowingly open our door to mistreatment and negativity.
    My musings are not to be confused with victim blaming, but abusers can only abuse the power we give them. Therefore at some point, an interviewer may ask a question about what you would do with the power they are mulling handing you —and a web developer requires a lot of trust from a company. The interviewer will explain: “I ask because we’ve seen people do [X].” You can bet they are thinking of a specific person who did damage in the past. That knowledge might help you not to take the grilling personally. They probably didn’t give four interviews and an elaborate React coding challenge to the first few developers that helped get their company off the ground. However, at a different level of maturity, an organization or a person will evolve in what they need from a new person. We can’t hold that against them. Similar to a startup that only exists based on a bunch of ill-considered high-risk decisions, my relationship with my kids is more treasured than anything I own, and yet it all came from the worst mistake I ever made. My driver’s license said I was 30 but emotionally, I was unqualified to make the right decision for my future self, much like if you review your code from a year ago, it’s a good sign if you question what kind of idiot wrote it.
    As determined as I was not to repeat that kind of mistake, my partner’s point about seeming to perpetually interview her was this: no matter how much older and wiser we think we are, letting a new person into our lives is ultimately always a leap of faith, on both sides of the equation.
    Taking a planned plunge
    Releasing a website into the wild represents another kind of leap of faith — but if you imagine an air-gapped machine with the best website in the world sitting on it where no human can access it, that has less value than the most primitive contact form that delivers value to a handful of users. My gambling dad may have put his appetite for risk to poor use. But it’s important to take calculated risks and trust that we can establish boundaries to limit the damage a bad actor can do, rather than kid ourselves that it’s possible to preempt risk entirely.
    Hard things, you either survive them or you don’t. Getting security wrong can pose an existential threat to a company while compromising on psychological safety can pose an existential threat to a person. Yet there’s a reason “being vulnerable” is a positive phrase. When we create public-facing websites, it’s our job to balance the paradox of opening ourselves up to the world while doing everything to mitigate the risks. I decided to risk being vulnerable with you today because I hope it might help you see dev and life differently. So, I put aside the CodePens to get a little more personal, and if I’m right that front-end coding needs every part of your psyche to succeed, I hope you will permit dev to change your life, and your life experiences to change the way you do dev. I have faith that you’ll create something positive in both realms.
    Applying the Web Dev Mindset to Dealing With Life Challenges originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.
  16. ResumeBuild

    by: aiparabellum.com
    Mon, 24 Feb 2025 02:44:10 +0000

    ResumeBuild.ai is a cutting-edge AI-powered resume builder trusted by over 1.4 million users globally. Designed to streamline the resume creation process, it simplifies job applications by crafting ATS-optimized resumes that increase your chances of landing interviews. Whether you’re a student, a professional looking for a career change, or an executive, ResumeBuild offers an intuitive platform to create tailored resumes, cover letters, resignation letters, and more. Powered by advanced GPT technology, it ensures your resume stands out and aligns with industry-specific best practices.
    Features of ResumeBuild AI
    ResumeBuild.ai offers a variety of features to help you create the perfect resume and enhance your job-seeking journey:
    AI Resume Writer: Generates professional, ATS-friendly resumes using AI technology to highlight your achievements. Mock Interview Tool: Prepares you for interviews by simulating real-world interview questions (coming soon). Job Search Assistance: Matches your resume with top hiring companies to make your job search more efficient (coming soon). Resume Optimizer: Analyzes your resume for missing content, overused buzzwords, and opportunities for improvement. AI Keyword Targeting: Enhances your resume by including industry-specific keywords to improve your interview rate. Real-Time Content Analysis: Identifies and corrects content pitfalls for a polished resume. Customizable Resume Templates: Access over 340+ templates tailored to various industries, including engineering, design, business, and medical fields. AI Cover Letter & Resignation Letter Generator: Creates personalized letters for specific job applications or career transitions. ATS Optimization: Ensures your resume is compatible with applicant tracking systems used by recruiters. Version Management & LinkedIn Importing: Easily manage multiple resume versions and import data directly from your LinkedIn profile. How It Works
    Using ResumeBuild.ai is simple and user-friendly:
    Select a Template: Choose from a wide range of free and premium templates designed to suit your industry and career level. Input Your Details: Add your personal information, professional experience, skills, and achievements. Customize with AI: Use the AI-powered tools to generate or refine bullet points, target keywords, and format your resume. Optimize Your Resume: Let the AI analyze your resume for ATS compliance and suggest improvements. Download and Apply: Export your resume in formats like PDF or DOCX and start applying for jobs. Benefits of ResumeBuild AI
    Using ResumeBuild.ai provides several advantages:
    Saves Time: Automates the resume creation process, saving hours of manual work. ATS-Friendly: Ensures your resume passes applicant tracking systems, increasing your chances of being shortlisted. Professional Quality: Delivers polished, industry-standard resumes tailored to your career goals. Enhanced Job Search: Boosts your interview rate with AI-optimized content and targeted keywords. Ease of Use: Intuitive interface makes it accessible for users of all skill levels. Customizable Options: Offers flexibility to create resumes for various industries and roles. Pricing
    ResumeBuild.ai offers several pricing plans to meet different user needs:
    Basic Plan (Free): Access to all basic features Standard resume formats One resume creation Three downloads Pro Plan ($29/month): Unlimited AI features and credits Unlimited downloads and resume creations Monthly resume reviews Priority support 30-day money-back guarantee Lifetime Plan ($129): One-time payment for lifetime access Unlimited AI features and downloads Priority support 30-day money-back guarantee Review
    ResumeBuild.ai has received rave reviews from users, with a stellar 4.8-star rating. Here’s what users are saying:
    “ResumeBuild has helped me a ton! It’s easy to customize for different job descriptions and gives an amazing edge in applications.” – Vivek T. A. “I used ResumeBuild.ai to create a new resume. It was simple, and the result was professional-looking. Two thumbs up!” – Jennifer F. “Really streamlined the resume-making process and made it effortless to build mine. Highly recommend!” – Niloufer T. “Great tool. I’ve seen a 300% increase in interview responses since using ResumeBuild.” – Harry S. These testimonials highlight the platform’s efficiency, user-friendliness, and ability to deliver results.
    Conclusion
    ResumeBuild.ai is the ultimate AI-powered resume builder for crafting professional, ATS-optimized resumes that stand out. With its intuitive interface, comprehensive features, and proven success rate, it serves as a one-stop solution for job seekers across industries. Whether you’re looking for your first job or aiming for career advancement, ResumeBuild.ai ensures your resume reflects your skills and achievements effectively. Start creating your resume today and secure your dream job with ease.
    Visit Website The post ResumeBuild appeared first on AI Parabellum.
  17. By: Edwin
    Sat, 22 Feb 2025 08:44:53 +0000


    WEBM is one of the most popular video formats used for web streaming. MP3 is one of the formats used for audio playback. There will be times where you will need to extract audio from a WEBM file and covert it to a MP3 file. With Linux, there are command-line tools for almost everything and this use case is not an exception. In this guide, we will explain different methods to convert WEBM to MP3 using ffmpeg, sox, and a few online tools.
    Why Should You Convert WEBM to MP3?
    Let us see some use cases where you will have to convert a WEBM file to MP3 file:
    You need only the audio from a web video Your media player does not play WEBM file Convert a speech recording from video to audio format Reduce file size for storage and sharing How to Convert WEBM to MP3 Using ffmpeg
    Let us use Linux’s in-built tool “ffmpeg” to extract audio from a WEBM file.
    How to Install ffmpeg
    If your Linux system already has ffmpeg, you can skip this step. If your device doesn’t have this command-line tool installed, execute the appropriate command based on the distribution:
    sudo apt install ffmpeg # For Debian and Ubuntu sudo dnf install ffmpeg # For Fedora sudo pacman -S ffmpeg # For Arch Linux Convert with Default Settings
    To convert a WEBM file to MP3, execute this command:
    ffmpeg -i WEBMFileName.webm -q:a 0 -map a MP3FileOutput.mp3 How to Convert and Set a Specific Bitrate
    To set a bitrate while converting WEBM to MP3, execute this command:
    ffmpeg -i WEBMFileName.webm -b:a 192k MP3FileOutput.mp3 How to Extract Only a Specific Part of Video to Audio
    There will be times where you don’t have to extract the complete audio from a WEBM file. In those cases, specify the timestamp by following this syntax:
    ffmpeg -i WEBMFileName.webm -ss 00:00:30 -to 00:01:30 -q:a 0 -map a MP3Output.mp3 Executing this command extracts the audio between timestamps 30 seconds and one minute 30 seconds and saves it as a MP3 file.
    Advanced WEBM to MP3 Conversion
    Here is an alternative command that processes the WEBM file faster. This method uses “-vn” parameter to remove the video and uses the LAME MP3 encoder (indicated by the “-acodec libmp3lame” parameter) and sets a quality scale of 4. This balances the file size and quality.
    ffmpeg -i input.webm -vn -acodec libmp3lame -q:a 4 output.mp3 How to Convert WEBM to MP3 Using sox
    The “sox” tool is an “ffmpeg” alternative. To install sox, execute the command:
    sudo apt install sox libsox-fmt-all This command works best for Debian and Ubuntu distros. If the above command does not work, use the ffmpeg tool explained earlier.
    To extract audio from the WEBM file, use the command:
    sox WEBMFileName.webm AudioFile.mp3 How to Use avconv to Extract Audio
    Some Linux distributions provide “avconv”, part of the libav-tools package, as an alternative to ffmpeg. Here is how you can use install and use it to extract MP3 audio from a WEBM file:
    sudo apt install libav-tools avconv -i VideoFile.webm -q:a 0 -map a AudioFile.mp3 How to Convert WEBM to MP3 Using Online Tools
    If you do not have a Linux device at the moment, prefer a graphical user interface, or in a hurry to get the audio extracted from WEBM files, you can use any of these web-based converters:
    Cloud Convert Free Convert Convertio How to Check MP3 File Properties
    Once you have converted the WEBM file to a MP3 file, it is a good practice to check the properties or details of the MP3 file. To do that, execute the command:
    ffmpeg -i ExtractedAudioFile.mp3 One of the best practices is to check the audio bitrate and format by executing the command:
    mediainfo ExtractedAudioFile.mp3 How to Automate WEBM to MP3 Conversion
    The simple answer to this problem is by using scripts. Auto converting video files to audio files will help you if you frequently convert a large number of files. Here is a sample script to get you started. You can tweak this script to your requirements based on the command we just explained earlier.
    for file in *.webm; do ffmpeg -i "$file" -q:a 0 -map a "${file%.webm}.mp3" done Next step is to save this script with the name “convert-webm.sh” and make it executable.
    chmod +x convert-webm.sh To run this script in a directory with WEBM files, navigate to the required directory in the terminal window and run the command:
    ./convert-webm.sh Key Takeaways
    Extracting audio from a WEBM file and saving it as MP3 file is very easy if you have a Linux device. Using tools like ffmpeg, sox, and avconv, this seemingly daunting task gets over in matter of a few seconds. If you frequently do this, consider creating a script and run it on the directory containing the required WEBM files. With these techniques, you can extract and save high-quality audio files from a WEBM video file.
    We have explained more about ffmpeg module in our detailed guide to TS files article. We believe it will be useful for you.
    The post WEBM to MP3: How can You Convert In Linux appeared first on Unixmen.
  18. By: Edwin
    Sat, 22 Feb 2025 08:44:43 +0000


    Working with Linux is easy if you know how to use commands, scripts, and directories to your advantage. Let us give you some Linux tips and tricks to mov It is no secret that tech-savvy people prefer Linux distributions to Windows operating system because of reasons like:
    Open source Unlimited customizations Multiple tools to choose from In this detailed guide, let us take you through the latest Linux tips and tricks so that you can use your Linux systems to its fullest potentials.
    Tip 1: How to Navigate Quickly Between Directories
    Use these tips to navigate between your directories:
    How to return to the previous directory: Use “cd -” command to switch back to your last working directory. This helps you save time because you need not type the entire path of the previous directory.
    How to navigate to home directory: Alternatively, you can use “cd” or “cd ~” to return to your home directory from anywhere in the terminal window.
    Tip 2: How to Utilize Tab Completion
    Whenever you are typing a command or filename, press the “Tab” key in your keyboard to auto-complete it. This helps you reduce errors and save time. For example, if you type “cd Doc”, pressing the “Tab” key will auto complete the command to “cd Documents/”.
    Tip 3: How to Run Multiple Commands in Sequence
    To run commands in a sequence, use the “;” separator. This helps you run commands sequentially, irrespective of the result of previous commands. Here is an example:
    command1; command2; command3 What should you do if the second command should be run only after the success of the first command? It is easy. Simply replace “;” with “&&”. Here is an example:
    command1 && command2 Consider another example. How can you structure your commands in such a way that the second command should be run only when the first command fails? Simple. Replace “&&” with “||”. Here is an example to understand better:
    command1 || command2 Tip 4: How to List Directory Efficiently
    Instead of typing “ls -l” to list the contents of a directory in long format, use the shorthand “ll” and it will give you the same result.
    Tip 5: Use Command History to Your Advantage
    Let’s face it. Most of the times, we work with only a few commands, repeated again and again. In those cases, your command history and your previous commands are the two things you will need the most. To do this, let us see some tricks.
    Press Ctrl + R and start typing to search through your command history. Press the keys again to cycle through the matches.
    To repeat the command you executed last, use “!!” or “!n”. Replace “n” with the command’s position in your command history.
    Tip 6: Move Processes to Background and Foreground
    To send a process to background, simply append “&” to a command. This pushes the process to the background. Here is an example syntax:
    command1 & To move a foreground process to background, first suspend the foreground process by pressing Ctrl + Z, and then use “bg” (short for background) to resume the process in background.
    To bring a background process to foreground, use “fg” (short for foreground). This brings the background process to foreground.
    Tip 7: How to Create and Use Aliases
    If you frequently use a selective few commands, you can create aliases for them. Add “.bashrc” or “.zshrc” to your shell configuration file. Here is an example to understand better. We are going to assign the alias “update” to run two commands in sequence:
    alias update='sudo apt update && sudo apt upgrade' Once you have added the alias, reload the configuration with “source ~/.bashrc” or the appropriate file to start using the alias.
    Tip 8: How to Redirect the Output of a Command to a File
    The next trick we are going to learn in our list of Linux tips and tricks is the simple operator, that will redirect the command output to a file and overwrite existing content: >
    Use the “>” operator to redirect command output to a file. Here is an example syntax:
    command123 > file.txt To append the output to a file, use “>>”. Here is how you can do it:
    command123 >> file.txt Tip 9: How to use Wildcards for Batch Operations
    Wildcards are operators that help in performing multiple operations on multiple files. Here are some wildcards that will help you often:
    Asterisk (`*`): Represents zero or more characters. For example, `rm *.txt` deletes all `.txt` files in the directory. Question Mark (`?`): Represents a single character. For example, `ls file?.txt` lists files like `file1.txt`, `file2.txt`, etc. Tip 10: How to Monitor System Resource Usage
    Next in our Linux tips and tricks list, let us see how to view the real-time system resource usage, including CPU, memory, and network utilization. To do this, you can run “top” command. Press “q” key to exit the “top” interface.
    Wrapping Up
    These are our top 10 Linux tips and tricks. By incorporating these tips into your workflow, you can navigate the Linux command line more efficiently and effectively.
    Related Articles

    The post Linux Tips and Tricks: With Recent Updates appeared first on Unixmen.
  19. By: Edwin
    Sat, 22 Feb 2025 08:44:24 +0000


    One of the major advantages of using Unix-based operating systems is the availability of robust open-source alternatives for most of the paid tools you are used to. The growing demand has led to the open-source community churning out more and more useful tools every day. Today, let us see an open-source alternative for Adobe Photoshop. For those who used different image editing tools, Photoshop is a popular image editing tool with loads of features that can help even beginners to edit pictures with ease.
    Let us see some open source photoshop alternatives today, their key features, and how they are unique.
    GIMP: GNU Image Manipulation Program
    You might have seen the logo of this tool: a happy animal holding a paint brush in its jaws. GIMP is one of the most renowned open-source image editors. It is also available on other operating systems like macOS and Windows, in addition to Linux. It is loaded to the brim with features, making it a great open-source alternative to Photoshop.
    Key Features of GIMP
    Highly customizable: GIMP gives you the flexibility to modify the layout and functionality so suit your personal workflow preferences. Enhanced picture enhancement capabilities: It offers in-built tools for high-quality image manipulation, like retouch and restore images. Extensive file formats support: GIMP supports numerous formats of files making it the only tool you will need for your image editing tasks. Integrations (plugins): In addition to the host of features GIMP provides, there is also an option to get enhanced capabilities by choosing them from GIMP’s plugin repository. If you are familiar with Photoshop, GIMP provides a very similar environment with its comprehensive suite of tools. Another advantage of GIMP is its vast and helpful online community. The community makes sure the regular updates are provided and numerous tutorials for each skill level and challenge.
    Krita
    Krita was initially designed to be a painting and illustration tool but now with the features it accumulated over the years, it is now a versatile image editing tool.
    Key Features of Krita
    Brush stabilizers: If you are an artist who prefers smooth strokes, Krita offers brush stabilizers which makes this tool ideal for you. Support for vector art: You can create and manipulate vector graphics, making it suitable for illustrations and comics. Robust layer management: Krita provides layer management, including masks and blending modes. Support for PSD format: Krita supports Photoshop’s file format “PSD”, making it a great tool for collaboration across platforms. Krita’s user interface is very simple. But do not let that fool you. It has powerful features that makes it one of the top open-source alternatives for Photoshop. Krita provides a free, professional-grade painting program and a warm and supportive community.
    Inkscape
    Inkscape used to be a vector graphics editor. Now it offers capabilities that provide raster image editing, making it a useful tool for designers.
    Key Features of Inkscape
    Flexible drawing: You can create freehand drawings with a range of customizable brushes. Path operations: Inkscape provides advanced path manipulation allows for complex graphic designs. Object creation tools: Inkscape provides a range of tools for drawing, shaping, and text manipulation. File formats supported: Supports exporting to various formats, including PNG and PDF. Inkscape is particularly useful for tasks involving logo design, technical illustrations, and web graphics. Its open-source nature ensures that it remains a continually improving tool, built over the years by contributions from a global community of developers and artists.
    Darktable
    Darktable doubles as a virtual light-table and a darkroom for photographers. This helps in providing a non-destructive editing workflow.
    Key Features of Darktable
    Image processing capabilities: Darktable supports a wide range of cameras and allows for high-quality RAW image development. Non-destructive editing: Whenever you edit an image, the edits are stored in a separate database, keeping your original image unaltered. Tethered shooting: If you know your way around basic photography, you can control camera settings and capture images directly from the software. Enhanced colour management: Darktable offers precise control over colour profiles and adjustments. Though Darktable is buit for photographers, it has evolved as an open-source alternative for RAW development and photo management. Its feature-rich platform ensures that users have comprehensive control over their photographic workflow.
    MyPaint
    This is a nimble and straightforward painting application. This tool is primarily designed to cater to the needs of digital artists focusing on digital sketching.
    Key Features of MyPaint
    Extensive brush collection: MyPaint offers a variety of brushes to choose from, simulating the traditional media. Unlimited canvas: This is one of the few tools that offers unlimited canvas and you don’t have to worry about canvas boundaries. UI with least distraction: Provides a full-screen mode to allow you to focus only on your work. Compatibility with hardware: MyPaint offers support for pressure-sensitive graphic tablets for a natural drawing experience. MyPaint’s simplicity and efficiency make it an excellent open-source alternative for Photoshop. This tool is for artists seeking a focused environment for sketching and painting.
    Key Takeaways
    The open-source community offers a diverse array of powerful alternatives to Adobe Photoshop, each tailored to specific creative needs. Whether you’re a photographer, illustrator, or graphic designer, these tools provide robust functionalities to support your efforts on Unix-based systems.
    By integrating these tools into your workflow, you can achieve professional-grade results without the constraints of proprietary software.
    Related Articles
    How to add watermark to your images with Python

    The post Open-Source Photoshop Alternatives: Top 5 list appeared first on Unixmen.
  20. By: Edwin
    Fri, 21 Feb 2025 17:24:53 +0000

    TS file is a standard format for video and audio data transmission. TS file stands for transport stream file. This format of file is commonly used for broadcasting, video streaming, and storing media content in a structured format.
    In this detailed guide, let us explain what a TS file is, how it works, and how to work with them in Linux systems.
    What is a TS File
    A TS file is a video format used to store MPEG-2 compressed video and audio. It is primarily used to:
    Broadcast television video (DVB ad ATSC) Streaming services Blu-ray discs Video recording systems Transport stream files ensure error resilience and support numerous data streams. This makes them ideal to transmit over unreliable networks.
    How to Play TS Files in Linux
    You can use many media players to play TS files, but we recommend open-source media players. Here are some of them:
    VLC Media Player
    To use VLC media player to open a transport stream file named “unixmen”, execute this command:
    vlc unixmen.ts MPV Player
    If you would like to use MPV player to play a transport stream file named “unixmen”, execute this command:
    mpv unixmen.ts MPlayer
    Another open-source alternative we recommend is the MPlayer. To play using MPlayer, execute this command:
    mplayer file.ts How to Convert a TS File
    With the “ffmpeg” component to convert a transport stream file to other formats.
    How To Convert a TS File to MP4
    To convert a transport stream file named “unixmen” to MP4 format, execute this command:
    ffmpeg -i unixmen.ts -c:v copy -c:a copy unixmen.mp4 How Can You Convert a TS File to MKV
    Execute this command to convert a transport stream file named “fedora” to MKV:
    ffmpeg -i fedora.ts -c:v copy -c:a copy fedora.mkv How to Edit a TS File
    To cut or trim down a transport stream video file named “kali” between 10 seconds and 1 minute without re-encoding, follow this syntax:
    ffmpeg -i kali.ts -ss 00:00:10 -to 00:01:00 -c copy kali.ts How to Merge Multiple TS Files
    To combine multiple transport stream files into one in a sequence, use this syntax:
    cat part1.ts part2.ts part3.ts > FinalOutputFile.ts If you would prefer the ffmpeg module for an even better and cleaner merge, execute this syntax:
    ffmpeg -i "concat:part1.ts|part2.ts|part3.ts" -c copy FinalOutputFile.ts How to Extract Audio Only from a TS File
    To extract the audio from a transport stream file, execute the command:
    ffmpeg -i InputVideoFile.ts -q:a 0 -map a FinalOutputFile.mp3 How to Check the Details of TS File
    To view the metadata and codec details of a transport stream video file, execute the command:
    ffmpeg -i FinalOutputFile.ts What are the Advantages of TS Files
    Here are some reasons why transport stream files are preferred by the tech community:
    Better error correction Enhanced synchronization support Support for multiple audio, video, and subtitle streams Compatibility with most media players and editing tools Wrapping Up
    The transport stream files are reliable format for video storage and transmission. Broadcasting and media distribution industries widely use this file format. You can use tools like VLC, MPlayer, and ffmpeg, to play, convert, and edit transport stream files. Working with transport stream files in Linux systems is so easy.
    We hope we have made it easy to understand TS files and their handling in Linux. Let us know if you are stuck somewhere and need our guidance.
    Related Articles

    The post TS File: Guide to Learn Transport Stream Files in Linux appeared first on Unixmen.
  21. by: Geoff Graham
    Fri, 21 Feb 2025 14:34:58 +0000

    I’ll be honest and say that the View Transition API intimidates me more than a smidge. There are plenty of tutorials with the most impressive demos showing how we can animate the transition between two pages, and they usually start with the simplest of all examples.
    @view-transition { navigation: auto; } That’s usually where the simplicity ends and the tutorials venture deep into JavaScript territory. There’s nothing wrong with that, of course, except that it’s a mental leap for someone like me who learns by building up rather than leaping through. So, I was darned inspired when I saw Uncle Dave and Jim Neilsen trading tips on a super practical transition: post titles.
    You can see how it works on Jim’s site:
    This is the perfect sort of toe-dipping experiment I like for trying new things. And it starts with the same little @view-transition snippet which is used to opt both pages into the View Transitions API: the page we’re on and the page we’re navigating to. From here on out, we can think of those as the “new” page and the “old” page, respectively.
    I was able to get the same effect going on my personal blog:
    Perfect little exercise for a blog, right? It starts by setting the view-transition-name on the elements we want to participate in the transition which, in this case, is the post title on the “old” page and the post title on the “new” page.
    So, if this is our markup:
    <h1 class="post-title">Notes</h1> <a class="post-link" href="/link-to-post"></a> …we can give them the same view-transition-name in CSS:
    .post-title { view-transition-name: post-title; } .post-link { view-transition-name: post-title; } Dave is quick to point out that we can make sure we respect users who prefer reduced motion and only apply this if their system preferences allow for motion:
    @media not (prefers-reduced-motion: reduce) { .post-title { view-transition-name: post-title; } .post-link { view-transition-name: post-title; } } If those were the only two elements on the page, then this would work fine. But what we have is a list of post links and all of them have to have their own unique view-transition-name. This is where Jim got a little stuck in his work because how in the heck do you accomplish that when new blog posts are published all the time? Do you have to edit your CSS and come up with a new transition name each and every time you want to post new content? Nah, there’s got to be a better way.
    And there is. Or, at least there will be. It’s just not standard yet. Bramus, in fact, wrote about it very recently when discussing Chrome’s work on the attr() function which will be able to generate a series of unique identifiers in a single declaration. Check out this CSS from the future:
    <style> .card[id] { view-transition-name: attr(id type(<custom-ident>), none); /* card-1, card-2, card-3, … */ view-transition-class: card; } </style> <div class="cards"> <div class="card" id="card-1"></div> <div class="card" id="card-2"></div> <div class="card" id="card-3"></div> <div class="card" id="card-4"></div> </div> Daaaaa-aaaang that is going to be handy! I want it now, darn it! Gotta have to wait not only for Chrome to develop it, but for other browsers to adopt and implement it as well, so who knows when we’ll actually get it. For now, the best bet is to use a little programmatic logic directly in the template. My site runs on WordPress, so I’ve got access to PHP and can generate an inline style that sets the view-transition-name on both elements.
    The post title is in the template for my individual blog posts. That’s the single.php file in WordPress parlance.
    <?php the_title( '<h1 class="post-single__title" style="view-transition-name: post-' . get_the_id() . '">', '</h1>' ); ?> The post links are in the template for post archives. That’s typically archive.php in WordPress:
    <?php the_title( '<h2 class="post-link><a href="' . esc_url( get_permalink() ) .'" rel="bookmark" style="view-transition-name: post-' . get_the_id() . '">', '</a></h2>' ); ?> See what’s happening there? The view-transition-name property is set on both transition elements directly inline, using PHP to generate the name based on the post’s assigned ID in WordPress. Another way to do it is to drop a <style> tag in the template and plop the logic in there. Both are equally icky compared to what attr() will be able to do in the future, so pick your poison.
    The important thing is that now both elements share the same view-transition-name and that we also have already opted into @view-transition. With those two ingredients in place, the transition works! We don’t even need to define @keyframes (but you totally could) because the default transition does all the heavy lifting.
    In the same toe-dipping spirit, I caught the latest issue of Modern Web Weekly and love this little sprinkle of view transition on radio inputs:
    CodePen Embed Fallback Notice the JavaScript that is needed to prevent the radio’s default clicking behavior in order to allow the transition to run before the input is checked.
    Toe Dipping Into View Transitions originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.
  22. by: Geoff Graham
    Fri, 21 Feb 2025 14:34:58 +0000

    I’ll be honest and say that the View Transitions API intimidates me more than a smidge. There are plenty of tutorials with the most impressive demos showing how we can animate the transition between two pages, and they usually start with the simplest of all examples.
    @view-transition { navigation: auto; } That’s usually where the simplicity ends and the tutorials venture deep into JavaScript territory. There’s nothing wrong with that, of course, except that it’s a mental leap for someone like me who learns by building up rather than leaping through. So, I was darned inspired when I saw Uncle Dave and Jim Neilsen trading tips on a super practical transition: post titles.
    You can see how it works on Jim’s site:
    This is the perfect sort of toe-dipping experiment I like for trying new things. And it starts with the same little @view-transition snippet which is used to opt both pages into the View Transitions API: the page we’re on and the page we’re navigating to. From here on out, we can think of those as the “new” page and the “old” page, respectively.
    I was able to get the same effect going on my personal blog:
    Perfect little exercise for a blog, right? It starts by setting the view-transition-name on the elements we want to participate in the transition which, in this case, is the post title on the “old” page and the post title on the “new” page.
    So, if this is our markup:
    <h1 class="post-title">Notes</h1> <a class="post-link" href="/link-to-post"></a> …we can give them the same view-transition-name in CSS:
    .post-title { view-transition-name: post-title; } .post-link { view-transition-name: post-title; } Dave is quick to point out that we can make sure we respect users who prefer reduced motion and only apply this if their system preferences allow for motion:
    @media not (prefers-reduced-motion: reduce) { .post-title { view-transition-name: post-title; } .post-link { view-transition-name: post-title; } } If those were the only two elements on the page, then this would work fine. But what we have is a list of post links and all of them have to have their own unique view-transition-name. This is where Jim got a little stuck in his work because how in the heck do you accomplish that when new blog posts are published all the time? Do you have to edit your CSS and come up with a new transition name each and every time you want to post new content? Nah, there’s got to be a better way.
    And there is. Or, at least there will be. It’s just not standard yet. Bramus, in fact, wrote about it very recently when discussing Chrome’s work on the attr() function which will be able to generate a series of unique identifiers in a single declaration. Check out this CSS from the future:
    <style> .card[id] { view-transition-name: attr(id type(<custom-ident>), none); /* card-1, card-2, card-3, … */ view-transition-class: card; } </style> <div class="cards"> <div class="card" id="card-1"></div> <div class="card" id="card-2"></div> <div class="card" id="card-3"></div> <div class="card" id="card-4"></div> </div> Daaaaa-aaaang that is going to be handy! I want it now, darn it! Gotta have to wait not only for Chrome to develop it, but for other browsers to adopt and implement it as well, so who knows when we’ll actually get it. For now, the best bet is to use a little programmatic logic directly in the template. My site runs on WordPress, so I’ve got access to PHP and can generate an inline style that sets the view-transition-name on both elements.
    The post title is in the template for my individual blog posts. That’s the single.php file in WordPress parlance.
    <?php the_title( '<h1 class="post-single__title" style="view-transition-name: post-' . get_the_id() . '">', '</h1>' ); ?> The post links are in the template for post archives. That’s typically archive.php in WordPress:
    <?php the_title( '<h2 class="post-link><a href="' . esc_url( get_permalink() ) .'" rel="bookmark" style="view-transition-name: post-' . get_the_id() . '">', '</a></h2>' ); ?> See what’s happening there? The view-transition-name property is set on both transition elements directly inline, using PHP to generate the name based on the post’s assigned ID in WordPress. Another way to do it is to drop a <style> tag in the template and plop the logic in there. Both are equally icky compared to what attr() will be able to do in the future, so pick your poison.
    The important thing is that now both elements share the same view-transition-name and that we also have already opted into @view-transition. With those two ingredients in place, the transition works! We don’t even need to define @keyframes (but you totally could) because the default transition does all the heavy lifting.
    In the same toe-dipping spirit, I caught the latest issue of Modern Web Weekly and love this little sprinkle of view transition on radio inputs:
    CodePen Embed Fallback Notice the JavaScript that is needed to prevent the radio’s default clicking behavior in order to allow the transition to run before the input is checked.
    Toe Dipping Into View Transitions originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.
  23. By: Janus Atienza
    Thu, 20 Feb 2025 14:00:26 +0000

    When people think of the word ‘bots’, they often think of it in negative terms. Bots, of course, are one of the biggest threats to companies in 2025, with security incidents involving bots rising by 88% last year alone. But if you’re running a business, there are two types of bots you should know about: malicious bots and beneficial bots. 
    While malicious bots are often associated with cyberattacks, fraud, and data theft, beneficial bots can be powerful tools to fight against them, enhancing your cybersecurity and working to automate protection across the board. Both are developed and proliferated by the same thing: open-source code. 
    Open-Source Code Influencing the Development of Bots
    Looking specifically at Linux for a moment, one of the first things to know about this system is that it’s completely free, unlike Windows or macOS, which require a paid license. Part of the reason for this is because it’s open source, which means users can modify, distribute, and customise the Linux operating system as and when it’s needed. 
    Open source software, of course, has a number of benefits, including stability, reliability, and security – all of which are traits that have defined Linux and Unix systems for years, and have also been utilised in the world of bot creation and moderation. 
    In this landscape, collaboration is key. From an ethical side of things, there are many instances where companies will formulate enhanced security bots, and then release that code to assist developers in the same field. 
    Approximately two and a half years ago, for instance, the data science team behind DataDome.co – one of the leading cybersecurity companies specialising in bot detection – open-sourced ‘Sliceline’, a machine learning package designed for model debugging, which subsequently helped developers to analyse and improve their own machine learning models, thereby advancing the field of AI-driven cybersecurity.
    But that’s not to say open-source code is all-round a positive thing. The same open-source frameworks that developers use to enhance bot protection are, of course, also accessible to cybercriminals, who can then modify and deploy them for their own malicious purposes. Bots designed for credential stuffing, web scraping, and DDoS attacks, for instance, can all be created using open-source tools, so this dual-use nature highlights a significant challenge in the cybersecurity space.
    Keeping Open-Source a Force for Good
    Thankfully, there are many things being done to stop malicious criminals from exploiting open-source code, with many companies adopting a multi-layered approach. The first is the strengthening of licensing and terms of use. 
    At one point in time, open-source software, including Linux, was largely unrestricted, allowing anyone to access and redistribute code without much IT compliance or oversight. 
    However, as the risks of misuse have become more apparent, especially with the rise of malicious bot activities, companies and open-source communities have been strengthening their licensing agreements, ensuring that everyone using the code must comply with ethical standards – something that is particularly important for Linux, which powers everything from personal computers to enterprise servers, making security and responsible use a top priority.
    To give an example, a company can choose to apply for a licence that restricts the use of the software in unauthorised data collection, or in systems that may cause harm to users. Legal consequences for violating these terms are then imposed to deter any misuse. As well as this, more developers and users of open-source code are being trained about the potential misuse of tools, helping to foster a more responsible community. 
    Over the last few years, a number of workshops, certifications, and online courses have been made available to increase threat intelligence, and spread awareness of the risks of malicious actors, providing the best practices for securing APIs, implementing rate limits, and designing open-source code that operates within ethical boundaries. 
    It’s also worth noting that, because bot development has become far more advanced in recent years, bot detection has similarly improved. Looking back at DataDome for a moment, this is a company that prioritises machine learning and AI to detect bot activities, utilising open-source machine learning models to create advanced detection systems that learn from malicious bots, and continuously improve when monitoring traffic. 
    This doesn’t mean the threat of malicious bots is over, of course, but it does help companies to identify suspicious behaviours more effectively – and provide ongoing updates to stay ahead of cybercriminals – which helps to mitigate the negatives of open-source code influencing bad bot development.
    Conclusion
    The question of open-source code influencing the development of bots is an intricate one, but as a whole, it has opened up the cybersecurity landscape to make it easy for anyone to protect themselves. Developers with limited coding expertise, for instance, can modify existing open-source bot frameworks to perform certain tasks, which essentially lowers the barriers to entry and fosters more growth – especially in the AI bot-detection field. 
    But it is a double-edged sword. The important thing for any company in 2025 is to recognise which bots are a force for good, and make sure they implement them with the appropriate solutions. Malicious bots are always going to be an issue, and so long as the security landscape is evolving, the threat landscape will be evolving too. This is why it’s so important to protect yourself, and make sure you have all the defences in place to fight new dangers.
    The post How Does Open-Source Code Influence the Development of Bots? appeared first on Unixmen.
  24. by: Abhishek Prakash
    Thu, 20 Feb 2025 17:48:14 +0530

    Linux is the foundation of many IT systems, from servers to cloud platforms. Mastering Linux and related tools like Docker, Kubernetes, and Ansible can unlock career opportunities in IT, system administration, networking, and DevOps.
    I mean, that's one of the reasons why many people use Linux.
    The next question is, what kinds of job roles can you get if you want to begin a career with Linux?
    Let me share the job roles, required skills, certifications, and resources to help you transition into a Linux-based career.
    📋There are many more kinds of job roles out there. Cloud Engineer, Site Reliability Engineer (SRE) etc. The ones I discuss here are primarily focused on entry level roles.1. IT Technician
    IT Technicians are responsible for maintaining computer systems, troubleshooting hardware/software issues, and supporting organizational IT needs.
    They ensure smooth daily operations by resolving technical problems efficiently. So if you are a beginner and just want to get started in IT field, IT technician is one of the most basic yet important roles.
    Responsibilities:
    Install and configure operating systems, software, and hardware. Troubleshoot system errors and repair equipment. Provide user support for technical issues. Monitor network performance and maintain security protocols. Skills Required:
    Basic Linux knowledge (file systems, permissions). Networking fundamentals (TCP/IP, DNS). Familiarity with common operating systems like Windows and MacOS. Certifications:
    CompTIA Linux+ (XK0-005): Validates foundational Linux skills such as system management, security, scripting, and troubleshooting. Recommended for entry-level roles. CompTIA A+: Focuses on hardware/software troubleshooting and is ideal for beginners. 📋These are absolute entry-level job role and some would argue that this role is shrinking or at least there won't be as many opportunities as it used to be earlier. Also, it might not be a high-paying job.2. System Administrator
    System administrators manage servers, networks, and IT infrastructure and on a personal level, this is my favourite role.
    Being a System admin, you are supposed to ensure system reliability, security, and efficiency by configuring software/hardware and automating repetitive tasks.
    Responsibilities:
    Install and manage operating systems (e.g., Linux). Set up user accounts and permissions. Monitor system performance and troubleshoot outages. Implement security measures like firewalls. Skills Required:
    Proficiency in Linux commands and shell scripting. Experience with configuration management tools (e.g., Ansible). Knowledge of virtualization platforms (e.g., VMware). Certifications:
    Red Hat Certified System Administrator (RHCSA): Focuses on core Linux administration tasks such as managing users, storage configuration, basic container management, and security. LPIC-1: Linux Administrator: Covers fundamental skills like package management and networking. 📋This is a classic Linux job role. Although, the opportunities started shrinking as the 'cloud' took over. This is why RHCSA and other sysadmin certifications have started including topics like Ansible in the mix.3. Network Engineer
    Being a network engineer, you are responsible for designing, implementing, and maintaining an organization's network infrastructure. In simple terms, you will be called first if there is any network-related problem ranging from unstable networks to misconfigured networks.
    Responsibilities:
    Configure routers, switches, firewalls, and VPNs. Monitor network performance for reliability. Implement security measures to protect data. Document network configurations. Skills Required:
    Advanced knowledge of Linux networking (firewalls, IP routing). Familiarity with protocols like BGP/OSPF. Scripting for automation (Python or Bash). Certifications:
    Cisco Certified Network Associate (CCNA): Covers networking fundamentals such as IP connectivity, network access, automation, and programmability. It’s an entry-level certification for networking professionals. CompTIA Network+: Focuses on troubleshooting network issues and implementing secure networks. 📋 A classic Linux-based job role that goes deep into networking. Many enterprises have their in-house network engineers. Other than that, data centers and cloud providers also employ network engineers.4. DevOps Engineer
    DevOps Engineers bridge development and operations teams to streamline software delivery. This is more of an advanced role where you will be focusing on automation tools like Docker for containerization and Kubernetes for orchestration.
    Responsibilities:
    Automate CI/CD pipelines using tools like Jenkins. Deploy containerized applications using Docker. Manage Kubernetes clusters for scalability. Optimize cloud-based infrastructure (AWS/Azure). Skills Required:
    Strong command-line skills in Linux. Proficiency in DevOps tools (e.g., Terraform). Understanding of cloud platforms. Certifications:
    Certified Kubernetes Administrator (CKA): Validates expertise in managing Kubernetes clusters by covering topics like installation/configuration, networking, storage management, and troubleshooting. AWS Certified DevOps Engineer – Professional: Focuses on automating AWS deployments using DevOps practices. 📋Newest but the most in-demand job role these days. A certification like CKA and CKD can help you skip the queue and get the job. It also pays more than other discussed roles here.Linux for DevOps: Essential Knowledge for Cloud EngineersLearn the essential concepts, command-line operations, and system administration tasks that form the backbone of Linux in the DevOps world.Linux HandbookAbdullah TarekRecommended certifications:
    Certification Role Key Topics Covered Cost Validity CompTIA Linux+ IT Technician System management, security basics, scripting $207 3 Years Red Hat Certified System Admin System Administrator User management, storage configuration, basic container management $500 3 Years Cisco CCNA Network Engineer Networking fundamentals including IP connectivity/security $300 3 Years Certified Kubernetes Admin DevOps Engineer Cluster setup/management, troubleshooting Kubernetes environments $395 3 Years Skills required across roles
    Here, I have listed the skills that are required for all the 4 roles listed above:
    Core skills:
    Command-line proficiency: Navigating file systems and managing processes. Networking basics: Understanding DNS, SSH, and firewalls. Scripting: Automating tasks using Bash or Python. Advance skills:
    Configuration management: Tools like Ansible or Puppet. Containerization: Docker for packaging applications. Orchestration: Kubernetes for managing containers at scale. Free resources to Learn Linux
    For beginners:
    Bash Scripting for Beginners: Our in-house free course for command-line basics. Linux Foundation Free Courses: Covers Linux basics like command-line usage. LabEx: Offers hands-on labs for practising Linux commands. Linux for DevOps: Essential Linux knowledge for cloud and DevOps engineers. Learn Docker: Our in-house effort to provide basic Docker tutorials for free. For advanced topics:
    KodeKloud: Interactive courses on Docker/Kubernetes with real-world scenarios. Coursera: Free trials for courses like "Linux Server Management." RHCE Ansible EX294 Exam Preparation Course: Our editorial effort is to provide a free Ansible course covering basic to advanced Ansible. Conclusion
    I would recommend you start by mastering the basics of Linux commands before you dive into specialized tools like Docker or Kubernetes.
    We have a complete course on Linux command line fundamentals. No matter which role you are preparing for, you cannot ignore the basics.
    Linux for DevOps: Essential Knowledge for Cloud EngineersLearn the essential concepts, command-line operations, and system administration tasks that form the backbone of Linux in the DevOps world.Linux HandbookAbdullah TarekUse free resources to build your knowledge base and validate your skills through certifications tailored to your career goals. With consistent learning and hands-on practice, you can secure a really good role in the tech industry!
  25. AI PDF Summarizer

    by: aiparabellum.com
    Thu, 20 Feb 2025 12:01:57 +0000

    The AI PDF Summarizer by PDF Guru is an innovative tool designed to streamline the process of analyzing and summarizing lengthy PDF documents. Whether you are a student, professional, or researcher, this AI-powered solution can transform how you interact with textual information by delivering concise summaries of even the longest and most complex files. With a user-friendly interface and advanced features, this tool allows users to save time, focus on key points, and extract valuable insights from their documents with ease.
    Features of AI PDF Summarizer by PDF Guru
    Quick Summarization: Generate high-quality summaries of books, research papers, and reports in seconds. Interactive Chat: Engage with your PDF by asking questions, translating, simplifying, or rephrasing the content. Multi-Language Support: Available in 18 languages, including English, French, German, Spanish, and more. Secure Processing: Uses HTTPS encryption and strong security protocols to ensure your files are safe. Multi-Device Compatibility: Accessible on any device with an internet connection without additional software. User-Friendly Interface: Designed for all experience levels, ensuring hassle-free usage. Customizable Insights: Focus on main points, tone, and context as per your needs. Study Aid: Perfect for exam preparation by highlighting key points in study materials. How It Works
    Upload Your File: Drag and drop your PDF or click the “+” button to upload a document (up to 100 MB size). Wait for Processing: Allow a few seconds for the AI tool to analyze and summarize the document. Interact with the PDF: Use the interactive chat feature to translate, search for specific data, rephrase, or simplify content. Download the Summary: Once completed, download the summarized document for future use. Benefits of AI PDF Summarizer by PDF Guru
    Time-Saving: Reduces the time spent reading long documents by presenting key points quickly. Enhanced Productivity: Allows users to focus on decision-making rather than data analysis. Improved Comprehension: Simplifies complex content for better understanding. Secure and Reliable: Ensures the safety and privacy of your documents with industry-standard security measures. Cost-Effective: Offers free access to high-quality summarization features. Versatile Applications: Suitable for students, researchers, professionals, and anyone requiring document analysis. Pricing
    The AI PDF Summarizer by PDF Guru offers its core services for free. Users can enjoy high-quality summarization without any cost. Additional premium features or subscriptions may be available for enhanced functionality, but the basic summarization feature is accessible to all users at no charge.
    Review
    The AI PDF Summarizer has garnered significant praise from its users, with over 11,000 positive reviews. Users commend its ease of use, reliability, and the quality of its summaries. The tool has been described as fast, effective, and suitable for all types of PDF documents. Customer service is also highlighted as prompt and helpful, further enhancing user satisfaction.
    Conclusion
    The AI PDF Summarizer by PDF Guru is a powerful tool that simplifies the process of summarizing and analyzing PDF documents. It is designed to save time, improve productivity, and provide users with concise, accurate insights. Whether you’re a student preparing for exams, a professional making decisions, or a casual reader, this tool is a game-changer. Its user-friendly interface, free access, and secure processing make it an essential resource for anyone working with PDFs.
    Visit Website The post AI PDF Summarizer appeared first on AI Parabellum.

Important Information

Terms of Use Privacy Policy Guidelines We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.