Kissaki

joined 2 years ago
MODERATOR OF
 

After working on my weird shooter game for 5 years, I realized I'm never going to be finishing this project. In this video I explain why I've decided to quit my game and what is next.

[–] Kissaki@programming.dev 1 points 17 hours ago* (last edited 17 hours ago)

Thanks for the suggestion. As a first step, I set it up in Nushell with a ctrl+t shortcut:

$env.config.keybindings = (
    $env.config.keybindings | append {
        name: fzf_file_picker
        modifier: control
        keycode: char_t
        mode: [emacs, vi_insert, vi_normal]
        event: {
            send: ExecuteHostCommand
            cmd: "commandline edit --insert (fzf | str trim)"
        }
    }
)

Maybe I will look into more. :) I've known about fzf but I guess never gotten around to fully evaluating and integrating it.

Nushell supports fuzzy completions, globbing, and "menus" (TUI) natively. Still, the TUI aspect and possibly other forms of integrations seem like they could be worthwhile or useful as extensions.

[–] Kissaki@programming.dev 1 points 1 day ago

To what end? What would you expect version numbers to do? How would you specify or use them, which what consequences?

Grouping changes into releases with explicit numbering instead of a living standard with generic @supports checks?

I guess it would make some things easier and more obvious.

[–] Kissaki@programming.dev 2 points 1 day ago

Please make them incompatible so that I have to upgrade.

[–] Kissaki@programming.dev 4 points 1 day ago (2 children)

For software to be perfect, can not be improved no matter what, you'd have to define a very specific and narrow scope and evaluate against that.

Environments change, text and data encoding and content changes, forms and protocol of input and output changes, opportunities and wishes to integrate or extend change.

pwd seems simple enough. cd I would already say no, with opportunities to remember folders, support globbing, fuzzy matching, history, virtual filesystems. Many of those depend on the environment you're in. Typically, shells handle globbing. There's alternative cd tools that do fuzzy matching and history, and virtual filesystems are usually abstracted away. But things change. And I would certainly like an interactive and fuzzy cd.

Now, if you define it's scope, you can say: "All that other stuff is out of scope. It's perfect within it's defined target scope." But I don't know if that's what you're looking for? It certainly doesn't mean it can't be improved no matter what.

[–] Kissaki@programming.dev 1 points 1 day ago

The original one? Because there's numerous extensions to it. I wouldn't be confident it won't evolve further.

[–] Kissaki@programming.dev 5 points 1 day ago

…that supports Unicode? Which encodings? Or only ASCII? Unicode continues to change.

I wouldn't be very confident that it won't change or offer reasonable opportunities for improvement.

[–] Kissaki@programming.dev 2 points 1 day ago

Your sentence abruptly ends in a backtick - did you mean to include something more? Maybe “wc”?

[–] Kissaki@programming.dev 1 points 6 days ago

Happy Eyeballs Support in Socket.ConnectAsync

happy eyeballs 👀

[–] Kissaki@programming.dev 3 points 6 days ago

I'm surprised it wasn't reallyblue

[–] Kissaki@programming.dev 7 points 1 week ago

I don't see anything as having to come before learning Rust.

If something about Rust requires more technical knowledge, then that learning is part of learning Rust, even if you could have learned it separately beforehand.

Better start learning Rust to get in there instead of delaying, which adds risk to never arriving, loss of interest, or lack of progress on the goal of learning Rust, with a lack of satisfaction.

Once you learned Rust, you can look around to gain broader knowledge and expertise, if you want, but that's not necessary to learn and make use of Rust.

[–] Kissaki@programming.dev 2 points 1 week ago* (last edited 1 week ago) (1 children)

No, it's not on the user's end. It's because you didn't use correct Markdown syntax for your link. I verified this in your post source before commenting.

You used: [https://joinhideout.vercel.app/]() - which is a link without a target, so it defaults to this page we're on.

You should have used one of

  • <https://joinhideout.vercel.app/>
  • [https://joinhideout.vercel.app/](https://joinhideout.vercel.app/)
  • [joinhideout.vercel.app](https://joinhideout.vercel.app/)
 

From the README:

What is KORE?

KORE is a self-hosting programming language that combines the best ideas from multiple paradigms:

Paradigm Inspiration KORE Implementation
Safety Rust Ownership, borrowing, no null, no data races
Syntax Python Significant whitespace, minimal ceremony
Metaprogramming Lisp Code as data, hygienic macros, DSL-friendly
Compile-Time Zig comptime execution, no separate macro language
Effects Koka/Eff Side effects tracked in the type system
Concurrency Erlang Actor model with message passing
UI/Components React/JSX Native JSX syntax, components, hot reloading
Targets Universal WASM, LLVM native, SPIR-V shaders, Rust transpilation

Example

// Define a function with effect tracking
fn factorial(n: Int) -> Int with Pure:
    match n:
        0 => 1
        _ => n * factorial(n - 1)

// Actors for concurrency
actor Counter:
    var count: Int = 0

    on Increment(n: Int):
        count = count + n

    on GetCount -> Int:
        return count

fn main():
    let result = factorial(5)
    println("5! = " + str(result))
 

By streaming CSS updates/appends through an open HTTP connection

 

Girard's insight was that communities resolve internal conflict through scapegoating: the selection of a victim to bear collective guilt, whose expulsion or destruction restores social cohesion. The scapegoat need not be guilty of the crime attributed to it; it need only be acceptable as a target.

Some dangerous individuals, however, institutionalize such ritualistic practices into what I call Casus Belli Engineering: the use of perceived failure as pretext to replace established systems with one's preferred worldview. The broken feature is the crisis that demands resolution. The foundation becomes the scapegoat, selected not for its actual guilt but for its vulnerability and the convenience of its replacement. And in most cases, this unfolds organically, driven by genuine belief in the narrative.

The danger is not the scapegoating itself; humans will scapegoat. The danger lies in those who have learned to trigger the mechanism strategically, who can reliably convert any failure into an opportunity to destroy what exists and build what they prefer.

The linked article title is “Casus Belli Engineering: The Sacrificial Architecture”, which I didn't find particularly descriptive. I used the second headline, “The Scapegoat Mechanism”. It doesn't include the architecture or strategy aspects, but serves well as a descriptor and entry point in my eyes.

 

There exists a peculiar amnesia in software engineering regarding XML. Mention it in most circles and you will receive knowing smiles, dismissive waves, the sort of patronizing acknowledgment reserved for technologies deemed passé. "Oh, XML," they say, as if the very syllables carry the weight of obsolescence. "We use JSON now. Much cleaner."

 

In our previous post “Reinventing how .NET Builds and Ships”, Matt covered our recent overhaul of .NET’s building and shipping processes. A key part of this multi-year effort, which we called Unified Build, is the introduction of the Virtual Monolithic Repository (VMR) that aggregates all the source code and infrastructure needed to build the .NET SDK. This article focuses on the monorepo itself: how it was created and the technical details of the two-way synchronization that keeps it alive.

 

Users are not allowed to create Issues directly in this repository - we ask that you create a Discussion first.

Unlike some other projects, Ghostty does not use the issue tracker for discussion or feature requests. Instead, we use GitHub discussions for that. Once a discussion reaches a point where a well-understood, actionable item is identified, it is moved to the issue tracker. This pattern makes it easier for maintainers or contributors to find issues to work on since every issue is ready to be worked on.

This approach is based on years of experience maintaining open source projects and observing that 80-90% of what users think are bugs are either misunderstandings, environmental problems, or configuration errors by the users themselves. For what's left, the majority are often feature requests (unimplemented features) and not bugs (malfunctioning features). Of the features requests, almost all are underspecified and require more guidance by a maintainer to be worked on.

Any Discussion which clearly identifies a problem in Ghostty and can be confirmed or reproduced will be converted to an Issue by a maintainer, so as a user finding a valid problem you don't do any extra work anyway. Thank you.

 

On January 1, 2026, GitHub will reduce the price of GitHub-hosted runners by up to 39% depending on the machine type used. The free usage minute quotas will remain the same.

On March 1, 2026, GitHub will introduce a new $0.002 per minute GitHub Actions cloud platform charge that will apply to self-hosted runner usage. Any usage subject to this charge will count toward the minutes included in your plan, as explained in our GitHub Actions billing documentation.

Runner usage in public repositories will remain free. There will be no changes in price structure for GitHub Enterprise Server customers.

We are increasing our investment into our self-hosted experience to ensure that we can provide autoscaling for scenarios beyond just Linux containers.

Historically, self-hosted runner customers were able to leverage much of GitHub Actions’ infrastructure and services at no cost.

view more: next ›