17872 stories
·
173 followers

Ars Asks: Share your shell and show us your tricked-out terminals!

1 Share

I spend more time today than ever before interacting with terminal windows, which is something I don't think Past Me would have believed in the early '90s. Back then, poor MS-DOS was the staid whipping boy of the industry, and at least on the consumer side, graphical environments like Windows (and maybe even odder creatures like AmigaOS) seemed poised to stamp the command line into oblivion, leaving text interfaces behind as we all blasted into the ooey-GUI future.

As it turns out, though, the command line is still the best tool for some jobs—many jobs, in fact. I read a wise post some years ago (probably on Slashdot) arguing that a mouse-driven point-and-click interface essentially reduces the user to pointing at something on the screen and grunting, "DO! DO THAT!" at the computer. (The rise of right-click context menus adds the ability for the user to also grunt "MORE THINGS!" but doesn't otherwise add vocabulary.)

The command line, by contrast, gives the user the opportunity to precisely tell the computer what they want done, using words instead of one or two gestalts that the computer must interpret based on context.

Screenshot showing a multi-line curl command It's not that you can't do this kind of thing with a GUI—but it does require changing one's approach a bit.

It sounds kind of silly to say it, but the command line is what finally dragged me off Windows as my daily driver back in 2007. At the time, I'd been forced into regular bash usage at work as I took over the day-to-day administration of Boeing Houston's fleet of then-brand-new EMC Celerra NSX enterprise NAS appliances, and while there were GUI management options available (I am perhaps triggering trauma in a small subset of older readers by saying the words "EMC Control Center"), the environment I'd inherited was firmly held together by bash scripts.

At first, I had turned up my nose at the Linux-ness of it all, but kind of like the fungus in The Last of Us, the shell's tendrils slowly infected my brain. I began to realize that sad old cmd.exe and MS-DOS batch files really were kind of terrible, and that maybe, just maybe, the Linux-y ravings of my angry graybeard sysadmin mentor were not as crazy as they seemed.

I didn't think I'd ever arrive at his method of only running manually compiled Slackware—and, indeed, 20 years on, I'm still not even close—but the guy had a point. The more I used a Unix-y shell at work, the more I began to miss it at home. Windows Vista and its early WDDM woes had reduced my previously badass main PC with two Nvidia 7900GT cards in SLI to a stuttering BSOD-spitting mess, and the future of Microsoft OSes looked bleak—Windows 7 wouldn't be along to change the situation for years.

Exposure therapy to the bash shell brought me to the tipping point, and I jumped ship to the Macintosh side of the house. It was a move calculated to give me the best of all possible worlds—a good graphical interface with the same bash shell under the hood that I'd come to depend on at work.

Photograph of Lee's desk showing a PC.
The before... Credit: Lee Hutchinson
Photograph of Lee's desk showing an iMac
...and the after. Credit: Lee Hutchinson

I haven't looked back. These days, I run three different operating systems at home. MacOS is still my daily driver on the desktop; Windows lives on the gaming PC in the corner; and Linux (in the form of Ubuntu server LTS) is headless in the closet, where it belongs. God is in his heaven, and all is right with my computing world—and still, as with every day since sometime in early 2007, I spend at least an hour or two with a terminal window doing things the old-fashioned, text-y way.

The fish shell long ago became my default on my Mac, in no small part because I like fish's colors and find them helpful (don't judge me!). When I'm logged into Linux, though, I stick with good old bash. I know zsh and other modern alternatives have their fans, but I've found my happy place, and I'm content to stay there.

Being a child of the BBS era, when ANSI graphics were the hotness, I have spent about as much time as any other terminal-enjoying admin customizing my environment and making it into a place where I feel comfy working.

... Oh God, I'm doing it. I'm doing the thing they do on recipe sites where all the reader really wants is directions for making pecan pie but instead gets a giant personal backstory. Forgive me. I'm old. Let's get to the pie, and by pie, I mean the screenshots and code!

My favorite thing: The terminal timer

It's incredibly handy, at least for me, to have an easy-to-see reference of how long the last command took to run. (You don't need that kind of thing until you need it, and then you often really need it.) To that end, I have some functions living in my .bashrc file that time each command and then append that time—and the last error code emitted—to the next bash prompt. In practice, it looks like this:

Screenshot of a prompt showing program timings It's neat seeing how long each of these things took to execute. And sometimes it's even useful! Credit: Lee Hutchinson

I dig this. Coupled with printing the current time as part of the prompt, it gives you a good idea of not just how long the last few commands took to run but also when you were running them. That's very handy for absentminded admins (/me raises hand) who leave terminal sessions up for days at a time with important work sitting in them.

Here's the code to make this happen, which you should feel free to adapt to your needs. As noted, I keep this in .bashrc as part of my PS1 prompt statement:

color_prompt=yes

if [ "$color_prompt" = yes ]; then

function timer_now_us {
    local seconds=${EPOCHREALTIME%.*}
    local micros=${EPOCHREALTIME#*.}
    micros="${micros}000000"
    REPLY="${seconds}${micros:0:6}"
}

function timer_stop {
    if [[ ${timer_command_active:-0} -ne 1 ]] || [[ -z ${timer_started_at_us:-} ]]; then
        timer_show=0us
        return
    fi

    timer_now_us
    local delta_us=$((REPLY - timer_started_at_us))
    local us=$((delta_us % 1000))
    local ms=$(((delta_us / 1000) % 1000))
    local s=$(((delta_us / 1000000) % 60))
    local m=$(((delta_us / 60000000) % 60))
    local h=$((delta_us / 3600000000))
    # always show 3 digits of accuracy
    if ((h > 0)); then timer_show=${h}h${m}m
    elif ((m > 0)); then timer_show=${m}m${s}s
    elif ((s >= 10)); then timer_show=${s}.$((ms / 100))s
    elif ((s > 0)); then timer_show=${s}.$(printf %03d $ms)s
    elif ((ms >= 100)); then timer_show=${ms}ms
    elif ((ms > 0)); then timer_show=${ms}.$((us / 100))ms
    else timer_show=${us}us
    fi

    unset timer_started_at_us
    timer_command_active=0
}

#Prompt and prompt colors
function set_prompt {
  local Last_Command=${1:-$?}
  FancyX='\342\234\227'
  Checkmark='\342\234\223'
  export PS1="\n$WHITE[\t] "
  if [[ $Last_Command == 0 ]]; then
  	PS1+="\$? $GREEN$Checkmark "
  else
  	PS1+="\$? $RED$FancyX "
  fi
  timer_stop
  PS1+="$WHITE($timer_show)"
  PS1+="\n\[$HOSTCOLOR\]\u@\h\[\033[00m\]:\[\033[1;38;5;027m\]\w\[\033[00m\] \\$ "
}

function timer_prompt_command {
  local last_command=${1:-$?}
  set_prompt "$last_command"
}

PS0='${ timer_now_us; timer_started_at_us=$REPLY; timer_command_active=1; }'
PROMPT_COMMAND='timer_prompt_command'

fi

This mess of functions will jam all that goodness into your prompt, complete with a fancy green "check" if the program exited with error code 0 or a red "X" and the error code if it exited with something else. The color definitions—$WHITE, $BLUEBOLD, $HOSTCOLOR, and others—are just plain ol' ANSI escape sequences defined elsewhere in .bashrc and not presented here to try to keep the code excerpts from being too long. You can and should replace them with whatever tickles your fancy.

The timer_stop function also has the job of converting the timer into a human-readable format, and it's probably messier than it needs to be. I'm no developer, though, so this is what Past Lee settled on after a few hours of searching through examples.

Doing it in fish for folks like me

That's for bash when I'm ssh'd into one of my Linux hosts, but I run fish on MacOS. I have a separate fish function for getting the same results there, complete with gross hacks for turning the measurement into human-readable form. I made this code, and I am unapologetic. Witness my cobbled-together StackOverflow-sourced kludge.

function fish_prompt --description 'Write out the prompt'
    # Save the last status
    set -l last_status $status

    # Calculate the command duration if available
    set -l cmd_duration ""
    if set -q CMD_DURATION
        # Convert milliseconds to microseconds for more precise comparison
        set -l duration_us (math "$CMD_DURATION * 1000")

        # Calculate different time units
        set -l us (math "$duration_us % 1000")
        set -l ms (math "floor($duration_us / 1000) % 1000")
        set -l s (math "floor($duration_us / 1000000) % 60")
        set -l m (math "floor($duration_us / 60000000) % 60")
        set -l h (math "floor($duration_us / 3600000000)")

        # Format duration string
        if test $h -gt 0
            set cmd_duration (string join '' "(" $h "h" $m "m)")
        else if test $m -gt 0
            set cmd_duration (string join '' "(" $m "m" $s "s)")
        else if test $s -ge 10
            set -l fraction (math "floor($ms / 100)")
            set cmd_duration (string join '' "(" $s "." $fraction "s)")
        else if test $s -gt 0
            set cmd_duration (string join '' "(" $s "." (printf "%03d" $ms) "s)")
        else if test $ms -ge 100
            set cmd_duration (string join '' "(" $ms "ms)")
        else if test $ms -gt 0
            set -l fraction (math "floor($us / 100)")
            set cmd_duration (string join '' "(" $ms "." $fraction "ms)")
        else
            set cmd_duration (string join '' "(" $us "us)")
        end
    end

    # Define unicode symbols for status
    set -l checkmark "✓"
    set -l cross "✗"

    # Colors
    set -l normal (set_color normal)
    set -l dark_gray (set_color 555555)
    set -l blue (set_color -o blue)
    set -l red (set_color red)
    set -l green (set_color green)
    set -l purple (set_color -o purple)

    # First line
    echo # New line
    echo -n -s $dark_gray "["(date +%T)"] $last_status " # Time in brackets and exit status

    # Status indicator with exit status
    if test $last_status -eq 0
        echo -n -s $green $checkmark
    else
        echo -n -s $red $cross
    end

    # Actually echo the duration
    echo -n -s $dark_gray " $cmd_duration"

    # Do the rest of the prompt
    echo
    set -l host_color $purple
    echo -n -s $host_color $USER "@" (prompt_hostname) $normal ":" $blue (prompt_pwd) $normal " \$ "
end

A splash of color

Spending my formative years immersed in ANSI BBS graphics has probably made me a little more fond of colorful text in my terminal than the average frumpy, button-downed admin. Look, I know some folks feel that syntax highlighting and colors in general kill comprehension and encourage skimming, but what can I say? I love them and rely on them. Perhaps I skim too much, but so be it. You can take my colorful shell tools from my cold, dead hands.

To that end, I lean on a little program called GRC (for Generic Colorizer) to add highlighting and coloration to other tools. It's broadly available and works without any additional configuration.

Image showing the before and after of using GRC with ping
Nothing wrong with a little color! Credit: Lee Hutchinson
Image showing the before and after of using ip a with ping

There's a bit of aliasing (which I keep in .bash_aliases like a good citizen) to make colorful output the defaults on some common commands:

    alias ls='ls --color=auto'
    alias ll='ls -AlFh --group-directories-first'
    alias df='grc df -h'
    alias du='grc du -h'
    alias free='grc free -h'
    alias ping='grc ping'
    alias traceroute='grc traceroute'
    alias ip='grc ip'

I'm also a big fan of making my numbers human-readable, and the -h switch is therefore applied liberally.

(Do note that wrapping commands like ip in GRC can sometimes do weird things if you're piping its output into something else. Use caution. Or don't! It's your computer, knock yourself out!)

The terminal itself

Sharp-eyed readers will note from the screenshots that I'm using MacOS's Terminal.app for my terminal program, despite there being far better options. I suppose the excuse I have is that I'm comfy with Terminal.app and nothing has pulled me off of it. I've test-driven the usual suspects—Ghostty, Alacritty, the mighty iTerm2 with its awesome tmux windowing integration, and even fancy new reinterpretations of the terminal experience like Warp.

But I just can't find a reason to switch that sticks with me. Changing terminal applications inevitably means things look different—ANSI colors are reinterpreted or mapped oddly, highlighting uses different tones, or a blue I'm particularly fond of is suddenly a different blue, and I have to spend 20 minutes fiddling with ANSI escape sequences to try to make it match again. Life's too short for that.

Screenshot showing four different terminal applications tiled This is iTerm at the upper left, Ghostty at the lower left, Warp at the upper right, and MacOS's Terminal.app at the lower right, showing different default color interpretations and layout conventions. Warp is... opinionated. Credit: Lee Hutchinson

If I were a smarter and more advanced terminal user—the kind who employs Vim mode to expertly pluck things from my command history via laser-focused artisanal regexes instead of piping history through grep like a caveman while frantically trying to figure out what the hell Past Lee was thinking—then maybe something like Ghostty would be a natural fit. Or iTerm, if I could ever actually make the mental leap, commit to tmux, and ascend to terminal godhood.

I can at least take some solace in knowing that I'm not alone down here in the mud, as Ars High Tech Priest Jason Marlin and I found out while discussing this article:

Screenshot of Lee and Jason commiserating over grepping history instead of using vim mode
Slack is a safe space to confess secrets. Credit: Lee Hutchinson
Second screenshot of Lee and Jason commiserating over grepping history instead of using vim mode
Too many secrets. Credit: Lee Hutchinson

Apotheosis, it seems, will have to wait.

A brief bonus section on Vim

The path that led me to the terminal also led me to my side in the editor wars, and as might be expected, I worship at the Church of vi (or at least at its Protestant-esque offshoot, the Church of Vim). As with Terminal.app, it's a relationship dependent primarily upon inertia rather than anything like love. Vim and I have reached an acceptable détente.

Screenshot of Lee's Vim environment Good ol' Vim. Or maybe you hate Vim, in which case, I guess it's bad ol' Vim. Credit: Lee Hutchinson

But getting there required a lot of frustrated searching and yelling at old StackOverflow posts. One thing that makes Vim comfortable for me is the combination of Vim-Airline and Promptline, which together provide a nice status bar that helps highlight some useful info as one is editing a file.

I also prefer to tweak the color that the Ubuntu-flavored version of Vim uses to denote comments, as the maintainers changed it from a dark blue to a cyan-y light blue some years back, and that annoyed me. Targeting that specific color and making the changes stick actually turned into a legitimate adventure, with Ars alum Jim Salter finally cracking the code on exactly what file to edit (hint, it was not .vimrc!). The linked article should make for fun reading if you want to spelunk through Vim's coloration guts. (And shout out to Jim!)

Of course, now that I've mentioned .vimrc, we have to see what's in there, too:

    syntax on
    set hlsearch "Highlight search results
    set ignorecase "Ignore case while searching...
    set smartcase " ...unless search includes mixed case
    set gdefault "Substitutions are automatically global
    set colorcolumn=80 "Highlight column 80
    set linebreak "Wrap whole words
    imap <silent> <Down> <C-o>gj
    imap <silent> <Up> <C-o>gk
    nmap <silent> <Down> gj
    nmap <silent> <Up> gk
    filetype plugin indent on
    set tabstop=4
    set softtabstop=4
    set shiftwidth=4
    set expandtab
    highlight MatchParen ctermbg=black guibg=black
    highlight MatchParen cterm=underline gui=underline

    set guifont=Menlo\ for\ Powerline

    " air-line
    let g:airline_powerline_fonts = 1

    if !exists('g:airline_symbols')
        let g:airline_symbols = {}
    endif

    " unicode symbols
    let g:airline_left_sep = '▶'
    let g:airline_right_sep = '◀'
    let g:airline_symbols.linenr = '␊'
    let g:airline_symbols.branch = '⎇'
    let g:airline_symbols.paste = 'ρ'
    let g:airline_symbols.whitespace = 'Ξ'

    " airline symbols
    let g:airline_left_sep = ''
    let g:airline_left_alt_sep = ''
    let g:airline_right_sep = ''
    let g:airline_right_alt_sep = ''
    let g:airline_symbols.branch = ''
    let g:airline_symbols.readonly = ''
    let g:airline_symbols.linenr = ''

Briefly:

  • First, we enable syntax highlighting always.
  • The next three lines modify Vim's search behavior, making all-lowercase searches case-insensitive but keeping mixed-case searches case-sensitive and highlighting all the search results at once.
  • The gdefault line makes substitutions global by default, which works for me because that's almost always what I want when I'm doing substitutions.
  • Next, colorcolumn lights up column 80 so I can be mindful of width where I need to be.
  • The linebreak setting forces Vim to do line wrapping with whole words instead of just starting a new line in the middle of things.
  • The four imap and nmap lines make the arrow keys move the cursor up and down in both normal and insert mode via display lines rather than the actual file lines, which really helps with arrow key navigation with long wrapping lines. (I know, I know, the real fix is to ditch this crutch and get better at Vim, but eh.)
  • The filetype line makes Vim aware of file types and that some file types might have specific plugins in the plugins directory, which they do.
  • The four set lines enforce my preferred tab orthodoxy—four spaces, with tab and backspace both aware of this.
  • The last two highlight lines alter the way Vim highlights matching parentheses by changing the highlight method to an underline instead of a big full-height cursor-emulating block. The default behavior looks so much like the terminal default cursor that it often makes me lose visual track of the actual cursor, whereas the underlining does not.
  • Finally, the last half is all Airline/Powerline stuff. You can ignore those, especially the section with the broken glyphs (they're not broken when you have the right typeface installed!) unless you want to crib my specific Airline special character config.

A very short word on fonts

I'm a huge fan of the Monaspace family of typefaces for use in one's terminal, and I love and use Monaspace Neon—it features in all the terminal screenshots in this piece. I know terminal fonts are about as personal as picking a brand of underwear, but after literal decades of trying various options, Monaspace Neon is the closest I've ever come to finding a typeface that approximates my monospaced platonic ideal. Your mileage will vary, of course, but I like it, I use it, and I feel that stumbling on it has meant the end of a career's worth of searching.

Share your terminal tricks in the comments!

I can't claim to have thought up any of the customization in this article. The pieces have accreted over time, gobbled up from years and years of StackExchange posts and Reddit threads. Whenever I saw a neat thing, I'd copy the code and try it out. And now you can do the same if any of this is useful to you.

But this, finally, brings us to the whole point of the article—what are your cool terminal tricks and hacks? We'd love to see how you rock the command line, from carefully cultivated Neofetch login splashes to fully from-scratch terminal replacements, and all points in between. We'll promote the best stuff below the article for everyone to see.

So share! Share your terminals with us, and let us all rejoice, for we are here in the post-GUI era, and it's nowhere near as scary as I used to think it would be. At least the colors are nice.

Read full article

Comments



Read the whole story
fxer
1 hour ago
reply
Bend, Oregon
Share this story
Delete

Oil Pipes That People Actually Want To Sit On And Socialize

1 Share

Norway is a nation shaped by oil. Its wealth, its global standing, and much of its infrastructure are rooted in extraction. But what is striking about the Venture seating system is not just what it is made of, but what it represents. A material once tied to industry and scale is quietly redirected toward something deeply human.

Designed by Jens-Egil Nysæther and Line Mari Sørra of Lije Studio, Venture repurposes 6.3 mm thick steel tubing used in the oil industry and transforms it into a public seating system. The gesture feels simple at first glance. Curved and straight pipes are joined together and topped with smooth wooden saddles. But the design does something more subtle. It reframes how we relate to space, to objects, and to each other.

Designer: Lije Studio (Jens‑Egil Nysæther and Line Mari Sørra)

At the core of the project is the idea of proxemics, introduced by Edward T. Hall. It is the study of how distance shapes human interaction. Instead of forcing a fixed posture or direction, Venture removes instruction altogether. There are no backs. No obvious front. No single correct way to sit. The object does not dictate behavior. It invites interpretation.

This is where the project becomes particularly interesting. Public seating is often designed with control in mind. Benches align bodies, regulate posture, and define how long one should stay. Venture does the opposite. It allows ambiguity. A person can sit facing outward, disengaged from others. Or turn inward, becoming part of a shared moment. It supports solitude without isolation and togetherness without obligation.

The modularity of the system further expands this idea. Developed in dialogue with landscape architects, the design adapts to different environments rather than imposing itself on them. It can stretch across a plaza, cluster into smaller social pockets, or exist as a sculptural standalone piece. It does not behave like furniture alone. It behaves like infrastructure for interaction.

Material contrast plays a quiet but powerful role. The steel retains its industrial clarity. It is direct, almost unapologetic in its origin. The wooden saddles soften this experience, introducing warmth and tactility. Together, they create a balance between familiarity and surprise. You recognize the material, but you engage with it differently.

There is also a larger cultural shift embedded within the project. Urban spaces today are increasingly focused on encouraging participation. People already sit on edges, lean against railings, and gather wherever they can. These informal behaviors reveal a gap between how spaces are designed and how they are actually used. Venture does not try to correct this behavior. It legitimizes it. By making seating more open and less prescriptive, it amplifies what people naturally do.

What makes the system compelling is not just its sustainability or its modular logic. It is the redefinition of value. Steel that once moved oil now supports conversation. Infrastructure, once built for extraction, now enables connection. The object shifts from serving systems of production to serving systems of people.

The post Oil Pipes That People Actually Want To Sit On And Socialize first appeared on Yanko Design.

Read the whole story
fxer
1 day ago
reply
Bend, Oregon
Share this story
Delete

"Notepad++ for Mac" release is disavowed by the creator of the original

1 Comment and 2 Shares

As its name implies, the venerable Notepad++ text editor began as a more capable version of the classic Windows Notepad, with features such as line numbering and syntax highlighting. It was created in 2003 by Don Ho, who continues to be its primary author and maintainer, and it has been a Windows-exclusive app throughout its existence (older Notepad++ versions support OSes as old as Windows 95; the current version officially supports everything going back to Windows 7).

I'm not a devoted user of the app, but I was aware of its history, which is why I was surprised to see news of a "Notepad++ for Mac" port making the rounds last week, as though it were a port of the original available from the Notepad++ website.

Apparently, this news surprised Ho as well, who claims that the Mac version and its author, Andrey Letov, are "using the Notepad++ trademark (the name) without permission."

"This is misleading, inappropriate, and frankly disrespectful to both the project and its users," Ho wrote. "It has already fooled people—including tech media—into believing this is an official release. To be crystal clear: Notepad++ has never released a macOS version. Anyone claiming otherwise is simply riding on the Notepad++ name."

An escalating back-and-forth

Further communication between Ho and Letov can be found in a Notepad++ GitHub thread, where Ho said he had been contacted by Letov before the Notepad++ for Mac app had launched, but that he hadn't had time to reply.

"The problem is that using the official name Notepad++ and its logo gives the impression that your project is an official macOS version maintained or endorsed by the Notepad++ team, which is not the case," wrote Ho in an email to Letov that he reposted to GitHub. "This create [sic] confusion for users and exposes both you and the project to trademark issues."

Letov responded two days later, saying he hadn't meant to insinuate that Ho was involved with the Notepad++ for Mac project. But he did insist that his port "actually expands notepad++ brand to mac" and expressed hope that Ho would allow him to continue to use the name. Ho responded, again asking Letov to stop using the Notepad++ name and logo and to change the project's URL so that users would not mistake the project for an official Notepad++ port and contact Ho looking for support.

"I will prep for the site and some naming changes," wrote Letov. "Give me a couple of weeks. My intention was to expand your brand. I really hope that at some point in the future you change your mind and see this as a positive growth for your brand."

At this point, Ho seemed to lose patience with Letov's responses, particularly with being asked to allow Letov to continue using the Notepad++ name for "a couple of weeks." Ho reported the use of the Notepad++ trademark to Cloudflare, the CDN of the Notepad++ for Mac site, and asked Letov to take it down.

"Every day that website remains active, you are in further violation of the law," Ho wrote earlier today. "I cannot authorize a 'week or two' of continued trademark infringement."

Letov began changing the website two days ago, though at first he claimed to be making these changes "in coordination with Don Ho." This drew further accusations from other GitHub users that he was trying to misrepresent the port's relationship to the original project.

Those changes continue and have ramped up over the last few hours; the app will now be called "NextPad++," an homage to NeXT Computer, and uses a frog icon rather than the Notepad++ lizard. The original version, along with the authors page that lists Ho beneath Letove, is available via Internet Archive snapshots.

Letov claims that the app's name will change in version 1.0.6. Version 1.0.5, with the Notepad++ logo and branding intact, is available for download. The project's URL also hasn't changed.

A seemingly thoughtful but low-effort port

The "Notepad++ for Mac" app looks right, but there are reasons to prefer an "official" port when you can get one. Credit: NextPad++

I had considered writing about Notepad++ for Mac last week, but lost a bit of interest after discovering it was "an independent community port" rather than an official release—independent ports and forks are all well and good, but an official release implies ongoing updates and support, where an "independent community port" might fade away or vanish entirely as soon as its creator gets bored and/or moves on.

But I continued to dig because, at a glance, it seemed like an exceptionally thoughtful community port. It supported macOS versions dating back to 11.0 Big Sur on both Intel and Apple Silicon processors. It was a native macOS app with a Cocoa user interface that replaces the original Win32 interface rather than translating it or using a wrapper. The app seemed to be lightweight and clean, as promised. And it was properly notarized so that users could download and launch it relatively easily—not a given, for many independent and/or open source Mac software projects.

But I paused when I hit Letov's About page, which mentioned being "deep in multi-agent AI" and showed a flurry of GitHub commits that happened exclusively in March and April 2026. The Notepad++ for Mac page made no mention of the project being AI-coded, but when contacted for comment, Letov confirmed that both the Notepad++ for Mac app and the website were created at least partially using Anthropic's Claude CLI.

"I primarily use Claude CLI with some customizations to run multiple agents and also Codex plugin for VSS. I also use Beads," Letov told Ars. "Website is also partly managed using Claude CLI plus some manual work on graphics."

"I run some agents that scan for Issues and general issues reported, list/create options to implement features and fixes. I usually review most and decide on the path," Letov continued when asked how much human oversight the project had. "Also UIs are not as easily tested by AI as backend code and some things have to be thought through and build iteratively."

It's not that I think the use of AI coding tools should be disqualifying in and of itself. AI coding tools do have real utility, and many companies and projects are making at least some use of them; you likely are running or will eventually run an app containing AI-generated code whether you want to or not. But the port being both "independent" and AI-generated heightens my existing concerns about ongoing support and the developer's capability to address bug reports and merge upstream code.

And, as Ho and other users warned in the GitHub thread, downloading an unvetted unofficial port of a project can increase your risk of downloading malware.

"I apologize for sounding paranoid, but I have not verified your code & binaries, and I have no time to do so," wrote Ho, who comes by his concern about hidden malware in Notepad++ honestly.

Read full article

Comments



Read the whole story
fxer
1 day ago
reply
Bend, Oregon
Share this story
Delete
1 public comment
SimonHova
1 day ago
reply
I'm a big believer in intent, in this case, I have sympathy for the creator of the port, who was trying to do the right thing, by doing the wrong thing. Glad to hear that it had a bit of a happy ending.
Greenlawn, NY

GameStop offers $56 billion for eBay, struggles to explain how it'll pay for it

1 Share

GameStop yesterday made an unsolicited offer to buy eBay for $55.5 billion. GameStop claims that eBay has underperformed and spends too much on sales and marketing and argues that it would become a stronger company if it cuts costs and is combined with GameStop's physical retail locations.

"GameStop’s ~1,600 US locations give eBay a national network for authentication, intake, fulfillment, and live commerce," GameStop Chairman and CEO Ryan Cohen wrote in a letter to eBay Chairman Paul Pressler.

eBay's market capitalization is over four times larger than GameStop's. GameStop faces skepticism about the viability of its offer but says it will obtain debt financing and pay with a mix of cash and stock.

GameStop's proposal envisions a system in which GameStop staff inspect and verify items to be listed on eBay. "GameStop staff already inspect and grade hardware and trading cards every day. Sellers walk in, items are verified on the spot, and listings carry a trust badge," the proposal said.

The stores will "serve as drop-off and shipping nodes," providing "a national fulfillment network without incremental eBay capital expenditure," GameStop said. The stores, according to GameStop's plan, will "double as broadcasting studios. eBay supplies the inventory and the buyer base; GameStop supplies the physical footprint to compete in the live-commerce category." This would apparently help eBay sellers use livestreaming to promote their products.

Cohen intends to become CEO of the post-merger company if eBay accepts the deal and completes it. A GameStop press release said that Cohen "owns ~9% of GameStop and receives no salary, no cash bonuses, and no golden parachute. He will be compensated solely based on the performance of the combined company."

Doubts about GameStop's ability to finance deal

GameStop is still chugging along five years after its meme-stock mania, though it reportedly closed about 470 stores in the US at the beginning of 2026. It also closed 590 US-based stores in 2024. As of this writing, GameStop's stock price had fallen about 2 percent today, while eBay's had risen about 5 percent.

Unsurprisingly, GameStop faces skepticism about its ability to finance a deal to buy a much larger company. GameStop has a market capitalization of about $11 billion, while eBay is worth about $48 billion. GameStop's offer for eBay is $125 per share, half in cash and half in GameStop stock.

Cohen said GameStop had about $9.4 billion in cash and liquid investments as of January 31 and will fund the cash portion of the offer with "cash and liquid investments on GameStop’s balance sheet and third-party equity and debt financing." Cohen's letter said GameStop has "a highly-confident letter from TD Securities for up to $20 billion," indicating that TD is confident it can arrange financing but that the debt portion of GameStop's offer is not yet finalized.

Cohen took questions about the financing on CNBC's Squawk Box today, but co-anchor Andrew Ross Sorkin said the deal math doesn't make sense. Sorkin noted that GameStop's market capitalization, cash, investments, and potential financing from TD add up to $40 billion, leaving a gap of $16 billion to complete the $56 billion deal.

"We'll see what happens," Cohen responded.

Sorkin followed up by asking where the rest of the money comes from. Cohen answered, "it's half cash, half stock."

Sorkin tried again, saying, "that math doesn't get you to the price that you're offering." Cohen responded, "I don't understand your question. We're offering half cash, half stock, and we have the ability to issue stock in order to get the deal done."

CNBC hosts also asked Cohen for evidence that he can grow a consumer business that can rival Amazon, given that GameStop revenue has declined sharply the past few years. GameStop's net sales were $3.6 billion in fiscal year 2025, compared to $6 billion in 2021.

“Didn’t you guys call for GameStop’s demise multiple times? Like, it should have been bankrupt by now?” Cohen said. “Look at our financial performance. Is it better than you guys anticipated? Because you guys said it was going to be doing really, really poorly, and it’s actually doing okay.”

"Fundamentally different" business models

Describing his ambitions, Cohen said that "eBay has the second largest commerce franchise and there's a big opportunity to do something much larger and pull costs out of the system as well as accelerate revenue growth and leveraging our physical infrastructure, our focus on collectibles. It could be a much larger business, but bringing in an entrepreneurial mindset is what I plan on doing."

At another point, Cohen said that GameStop is in a "very difficult business" and "should have been bankrupt multiple times over, and it's doing okay, it's making a few bucks. eBay is in a very, very strong position but it could be in a much stronger position."

GameStop's press release said its $125-per-share offer amounts to a 46 percent premium over eBay's closing price on February 4, the day GameStop started accumulating a stake in the company. GameStop's current stake in eBay is 5 percent.

eBay confirmed that it received the offer in a press release today and said that "eBay had no discussions with or outreach from GameStop prior to receiving the proposal." eBay said its board "will review this proposal with a focus on the value to be delivered to eBay shareholders, including the value of the GameStop stock consideration and the ability of GameStop to deliver a binding, actionable proposal."

Morgan Stanley analysts issued a research note saying that eBay and GameStop have "fundamentally different" business models. "eBay is a 3P [third-party] eCommerce marketplace that doesn't take inventory risk while GameStop is primarily an in-store wholesaler," stated the research note, which was provided to Ars. "Given those dynamics, we struggle to outline meaningful potential cross-sell synergies as most of GameStop's inventory is already available on eBay while the long-tail inventory base of eBay isn't well suited for in-store retail."

GameStop wants to slash eBay marketing budget

Morgan Stanley similarly doubted the potential cost savings. "On the expense side, we also think the potential opportunities would likely be minimal as physical and digital business require different cost bases, as do 3P marketplaces vs. 1P wholesalers. To add another challenge, GameStop has already undergone a series of large cost cuts," the research note said.

Morgan Stanley analysts expressed skepticism about "how a deal would be financed given the material valuation gap." If completed, they said it could end up as the largest leveraged buyout ever, "surpassing the recently announced $55 billion Electronic Arts transaction."

GameStop said that eBay spent $2.4 billion on sales and marketing in fiscal 2025 but added only 1 million net active buyers, increasing the total from 134 million to 135 million. GameStop said it would cut $1.2 billion from eBay's sales and marketing budget, arguing that the current spending "is not producing more users on a marketplace with near-universal brand recognition."

GameStop proposed cutting another $300 million from eBay's product development expenses and $500 million from general and administrative functions. The combined company will consolidate its finance, HR, real estate, legal, IT, and professional services after the merger to save money, GameStop said.

GameStop touted its own financial performance under Cohen, saying that it "moved from a $381 million net loss in fiscal 2021 to $418 million of net income in fiscal 2025." eBay meanwhile said in its press release today that its "board and leadership team are executing a focused strategy to drive sustainable growth and long-term shareholder value."

eBay last week reported Q1 2026 revenue of $3.1 billion, up 19 percent year over year. eBay's GAAP net income was $512 million, up 2 percent.

GameStop, which is on a different fiscal schedule, reported net sales of $1.1 billion in Q4 2026. That was down from $1.28 billion in the prior year's fourth quarter. GameStop's Q4 net income also fell year over year, from $131.3 million to $127.9 million.

Read full article

Comments



Read the whole story
fxer
1 day ago
reply
Bend, Oregon
Share this story
Delete

Your Biggest Vulnerability is your Shitty Compensation

4 Shares

My fourth month of unemployment. I'm fresh off an interview with a senior technical role advertised with a decent compensation range whose upper end would let me make median rent, and whose lower range would not. At the end of an excellent interview, I am informed that said compensation range, contrary to the Base Compensation tag in the job description, is in fact all inclusive, and that the role actually tops out below the living wage threshold for a three adult household for its base compensation.

I feel it's highly relevant to note that this was a role where I would own the entire technology estate for an employer. Every switch, every firewall, every database, every server, every phone, every laptop, every cloud, every badge system. All data, everywhere, at any time.

Everything.

For an employer in the public safety industry.

Seriously, this is a company first responders rely on for tech, and they want to pay below subsistence wages to senior technical people!

This is not the first time that compensation has been mismatched to the role, but it is the first time it's happened with a role so critically important to a company playing such an outsized role in as critical an area as public safety.

Which got me thinking: have employers just lost the plot on what compensation is actually for? What its intended function is? Because it seems to me that everyone thinks compensation is merely payment for labor and nothing more, a number to be driven down by any means necessary in order to keep more for those at the top.

And oh my god it is so much more than that.

We live in a society. This society has been arranged around using currency to purchase necessities, because some people decided that necessities are not guaranteed. You acquire currency by either investing currency you already have to compound it through the labor of others, or you labor in order to earn less currency than investors do.

Is that a gross oversimplification? You betcha, but I'm really trying to stay on topic and not fill this with reaction GIFs.

Author's Note: I failed.

Anyway, everyone needs currency to afford everything. Rent costs currency, food costs currency, electricity costs currency, water and sewage and garbage and healthcare and childcare and education all cost currency. Only after your essentials have been paid for, can you use excess currency to save for tomorrow - buying a home, or a car, or a retirement if you're really lucky.

Now at some point, the humans involved in handing out currency decided that too many people were living too nicely. The thinking was simple: trading time for currency in the form of labor was a sucker's game, and those with currency deserve more currency because they already had currency. Companies in particular deserved more money than the people who worked for the company, at least according to Powell.

Thus labor was reframed into those terms: wages were merely a payment to those who did labor, and labor was only to be paid the minimal amount possible in the marketplace for said labor, and not one cent more, regardless of external forces (like the cost of living). Minimum wages are bad, because wages should only ever go down relative to inflation and productivity, never up. Only those who own business deserve more currency, because they're the real workers.

Again, a gross oversimplification coming from an openly biased dinosaur. That's not the point.

The point is that wages aren't meant to merely compensate labor; they're also meant to protect the company.

Tony Soprano reminding you that this is a business.

I'll just be blunt: wages are also protection money. They're not just compensation for doing your job, they're compensation for not burning down warehouses, not going on strike, not sabotaging workloads, and not unionizing in the first place. It's the longest unspoken social contract dating back to pre-history: you pay me to live, or else.

Occasionally, employers will call labor's bluff. If twenty-thousand years of history is any indication, their temporary wins are always undone by the sheer ratio of workers to wealthy owners, though not before employers provoke and employ violence first. We are going through such a phase right now, if the above links are any indication.

Employers haven't paid their dues to labor in decades. Labor, kind as we are, have cut back on our lives as much as we're able to. We've given up homeownership, we're dropping out of healthcare, we're begging from food pantries, we're taking on gig work, and we've seen none of the wage gains from productivity our elders enjoyed. It's gotten so bad that, with workers having sacrificed our very ability to move up the socioeconomic ladder, the economy has gone K-shaped.

Despite this, employers seem to think there's more room for workers to yield. I say this because despite median wages being unable to afford median homes, I'm still finding employers offering lower and lower pay for work on their job descriptions. This isn't just economics anymore, this is a security risk, and employers are playing with fire.

Modern employers

Take your CPA, for instance, median pay of $81,680 a year and at moderate exposure to AI displacement according to Anthropic. These are people who know your books better than you. Where every penny goes, and where every penny can be silently swindled. They also audit your fancy new AI financial workflows, making corrections when it goes off the rails, and know where all your financial skeletons are buried.

Do you really want to pay your accountant so little that they can't make rent or buy a home? Do you really want them going to a food bank instead of a grocery store? They're excellent at judging risk, and know exactly what that pay gap is worth to them if the timing is right. Maybe it's blowing the whistle before you can fix an issue and leading to a costly investigation, maybe it's sharing your supply chain costs with a competitor for a higher paying job, or maybe it's committing outright embezzlement that they're sure your fancy AI tooling will miss.

Are you sure underpaying your accountant is a good idea?

Tech work, the last bastion of Middle Class employment, isn't doing any better. Take Computer and Network Architects, with a median pay of $130,390 per year; or the Computer Systems Analysts, median pay of $103,790 per year; or the Systems Administrators, with a median pay of $96,800 per year. These groups have the keys to your systems, your data, your endpoints, your real estate. They can see and do anything with a keystroke, including destroying billion-dollar businesses. The reason for the comparatively high wages was their comparatively high degree of trust.

Instead, employers outsourced to MSPs, then offshored overseas, then on-shored to underpaid and exploited H1Bs shackled to their employer's temporary sponsorship, then briefly hired North Korean spies, and are now attempting to replace the technical workers outright with AI that routinely drops production systems. All the while they lay off workers by the tens of thousands, over and over again.

I feel like there's an example of the consequences of not treating your technical experts with respect in popular media...

Dennis Nedry is a fucking asshole whose actions endangering personnel and guests were reprehensible, but he did repeatedly make it clear he felt undervalued relative to his contributions...

I'm not Dennis Nedry, but I've worked with folks like them before. Brilliant minds who can debug complex architectures and systems, who pour their lives quite literally into the work because they have a passion for it...and increasingly are all too willing to burn it to the ground when they feel slighted. Spend time around actual engineers and the like in most orgs, and you'll see patterns of ill-health: smokers, drinkers, chewers, vapers, over-eaters, out-of-shapers, poor posture, bags under eyes, thinning and greying hair, high amounts of stress, messy desks. All signs of humans sacrificing their own health for their employers, prioritizing work over life, overworked to an early grave.

Most folks aren't as egalitarian as I am, and as someone who has sacrificed physical, mental, emotional, and psychological health to the field for over fifteen years, I sympathize with where my peers are coming from. Most people aren't wired to "do no harm" no matter what, which means most people are a huge security risk if they're undercompensated.

Thing is, undercompensation isn't limited merely to your specialists and senior workers. Fast food workers will slow down lines to give themselves breathing room due to understaffing, and retail workers won't put in the added effort of store maintenance when they can't even maintain a roof over their heads. Office workers doing more menial tasks aren't going to follow through on security best practices if they're more worried about how to pay the electric bill this month while also affording insulin. Your contracted-out security staff aren't likely to pay close attention to camera feeds since they know they'll be replaced in three months before benefits kick in. Your MSP or offshored technical staff won't be invested in your long-term success when their KPIs only cover ticket counts and response times, and their competitors are already preparing to underbid at renewal anyhow.

The workers have been incredibly clear about their problems for twenty years, now, especially the younger cohorts. Employers haven't wanted to listen, believing one more technical control or one more AI system will finally give them the permanent, unassailable leverage they need to keep all the money and fire all the workers.

Fuck you, pay me.

I don't really have a positive way to end this. This is a warning, another canary in an increasingly smoke-choked mine. We're at the point that workers are quite literally burning down infrastructure and engaging in violence against leadership, and the response from those who can change things - our politicians, our corporate leaders, the investor class that's richer than ever in human history - don't really seem to give a fuck. There's this thick tension in the air between workers scrambling to survive, and monied classes who feel the demands of the workers are wholly unreasonable.

History paints a pretty clear picture of how this ultimately ends, but for what it's worth, I still feel like I should at least try to warn folks about the consequences of undercompensation.

Failing to pay your workers the money they need to live is breaking the social contract. It's the single biggest security vulnerability in your organization, and I promise you that there is not, and never will be, a technological control that can protect against it.

You gotta pay up, or you're going to get burned down.

Milton was right.

An addendum.

AI is making it faster and easier to brute-force security vulnerabilities at a time when open source is falling apart due to lack of funding and successors. Major companies are firing engineers to replace them with AI tooling, then hiring them back at lower pay packages when the AI fails, but still holding the AI Sword of Damocles over their heads. Software is expanding rapidly at a time when employers seek to eliminate the technical professionals who ensure their safety and prosperity, who can translate institutional processes and knowledge into cost-effective infrastructure.

Housing prices are up. Rent is up. Utilities are up because of AI datacenter builds. Food costs are rising due to global conflicts instigated by America. So too are energy prices, tariffs, inflation, and interest rates.

You, the employer, have a decision to make: do you start raising wages, working with policymakers to immediately address affordability, cease arbitrary layoffs, invest in worker futures, and promote regulatory schemes that reign in the worst myopic excesses of your peers for society's collective benefit?

Or do you take up smoking cigarettes while sitting inside a warehouse of loose gunpowder and dynamite, with a mob of torches and pitchforks right outside?

Coco has had it up to here with your bullshit.
Read the whole story
fxer
4 days ago
reply
Bend, Oregon
acdha
4 days ago
reply
Washington, DC
Share this story
Delete

Apple may take "several months" to catch up to Mac mini and Studio demand

1 Share

Apple's Mac mini and Mac Studio desktops have been increasingly difficult to buy over the course of the year—multiple configurations are listed on Apple's site as "currently unavailable," which almost never happens, and others will take weeks or months to ship if you order them today. A top-end version of the Mac Studio with 512GB of RAM was delisted from Apple's store entirely.

Current Apple CEO Tim Cook addressed the situation on Apple's Q2 earnings call yesterday as part of a larger conversation about how Apple is navigating component shortages, and he partly blamed the shortage on the popularity of those desktops among users looking to run AI agents and other tools locally.

"Both [the Mac mini and the Mac Studio] are amazing platforms for AI and agentic tools, and the customer recognition of that is happening faster than what we had predicted, and so we saw higher-than-expected demand," said Cook. "We think looking forward that the Mac mini and the Mac Studio may take several months to reach supply-demand balance."

Cook wasn't specific about what components were driving the Mac mini and Studio shortages, though he did say that generally, "availability of the advanced [manufacturing] nodes our SoCs are produced on" was constrained, and "we have less flexibility in the supply chain than we normally would." In other words, it has become harder for Apple to go to TSMC and ask for more chips because TSMC doesn't have the spare manufacturing capacity. Cook said these constraints "primarily" affected the iPhone, though, and only affected the Mac "to a lesser extent."

As we wrote last month, the extent of the shipping delays can probably be blamed on multiple factors. AI-related demand for the desktops and chip shortages are probably factors, but Apple is also said to be planning replacements for both systems with Apple M5-series chips later this year, and it's common for models to see their ship times slip when replacements are imminent. Cook's "several months" estimate could easily include the introduction of new models, plus whatever time Apple needs to catch up to pent-up demand afterward.

Cook also noted that "customer response to MacBook Neo has been off the charts, with higher-than-expected demand" and that Apple "set a March record for customers new to the Mac, partly due to the Neo." (Note that "a March record" is not the same thing as "an all-time record," but regardless, it seems that demand for the Neo has been healthy.)

But MacBook Neo availability has been much better than for the Mac mini or Studio. A Neo ordered directly from Apple will usually arrive in two or three weeks, but this time window has stayed roughly the same since early March. The Neo also remains widely available for same-day shipping or pickup at third-party retailers like Amazon, Walmart, and Best Buy, which is not true of most Mac mini or Studio models.

Supply constraints aside, Apple's Q2 2026 was a successful one for the company. Apple made $111.2 billion in revenue, a 17 percent increase over Q2 of 2025, thanks to strong growth from iPhone 17 sales and its Services division. The Mac also grew 6 percent year over year despite the shortages affecting the Mac mini, Mac Studio, and MacBook Neo. But Apple isn't immune to the industry-wide RAM shortage: Cook said that Apple expected "significantly higher memory costs" for Q3 than it paid in Q2 and that "memory costs will drive an increasing impact on our business" going forward.

Read full article

Comments



Read the whole story
fxer
5 days ago
reply
Bend, Oregon
Share this story
Delete
Next Page of Stories