Recent submissions

Comment · 6 days ago
This kind of projects (OpenRCT2, OpenLoco, Open...) are absolutely awesome!

But all of them need one step, free assets under Creative Commons or similar licenses).

I remember the big change of OpenTTD when it became finally all free software.

I wish to know Blender3D to help this projects, but I am a regular IT guy.

Comment · 1 month ago
It sounds great because the license is GPLv2, instead for example Redox OS is MIT.
Comment · 3 months ago
Well, Godot has the cli from 2016 : https://github.com/godotengine/godot-docs/commits/982ffb6b08...

Here's the tutorial

https://docs.godotengine.org/en/4.4/tutorials/editor/command...

History is cyclical. Because I remember same situations m$ windows released features years after the same feature in GNU/Linux, or Iphon€ vs android.

Comment · 4 months ago
Comment · 4 months ago
Well, it is like to asm .
Comment · 5 months ago
it remembers to me https://en.wikipedia.org/wiki/DRAKON a powerful flow chart (from the USSR) .
Comment · 5 months ago
Sorry, but the link is incorrect. Which is link the correct?
Comment · 7 months ago
0 A.D. https://play0ad.com/ is more similar to Age of Empires.
Comment · 7 months ago
Comment · 8 months ago
What has always bothered me about TypeScript are union types. If you have a function that receives a parameter such as ‘Dog | Cat’, you cannot separate it. For example:

type Dog = { bark: () => void }

type Cat = { meow: () => void }

function speak(animal: Dog | Cat) {

    if (‘bark’ in animal) {

        animal.bark();

    } else {
        animal.meow();
    }
}

Okay, okay, I know you can filter using ‘in’ to see if it has methods, but in real life, in a company where you have a colleague (who is a golden boy) who writes over-engineered code with hundreds of interfaces of interfaces, you don’t want to spend time searching through the files to find every element that is in the union type.

Whereas in Rust it does:

struct Dog { name: String, }

struct Cat { name: String, }

enum Animal {

    Dog(Dog),

    Cat(Cat),
}

fn process_animal(animal: Animal) {

    match animal {

        Animal::Dog(dog) => {

            println!(‘It is a dog named {}’, dog.name);

        }

        Animal::Cat(cat) => {

            println!(‘It is a cat named {}’, cat.name);

        }
    }
}

I think TypeScript should add a couple of lines of code to the generated JavaScript to do something like:

type Dog = { bark: () => void }

type Cat = { meow: () => void }

function speak(animal: Dog | Cat) {

    if (animal is Dog) {

        animal.bark();

    } else {

        animal.meow();

    }
}
Comment · 8 months ago
Comment · 8 months ago
Some years ago a chinese company released a phone with 2 screens, one typical mobile screen and other side a e-paper screen. But I don't remember what happened, but unfortunately this idea didn't succeed.
Comment · 8 months ago
There is not a old socket from the toilets in the old trains (maybe trains are 60 years old...more or less 1970) in Spain. This sockets are near the mirror and I think that this sockets were for old electic shavers.
Comment · 8 months ago
is there a download or play online?

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton