[-] FizzyOrange@programming.dev 6 points 7 months ago* (last edited 7 months ago)

For bare metal definitely get a microcontroller and do some fun electronics project.

Easiest to get into is Arduino, but don't stick with that because its only redeeming feature is that it's easy to get into. The IDE sucks, the build system sucks, the APIs really suck, and the code quality is very low (probably because it's easy to get into so you get a lot of inexperienced people doing stuff).

After Arduino I would recommend either going to the Nordic nRF5x series - you can do some cool Bluetooth stuff, or even make you your own radio protocol since the radio peripheral is fully documented... Or ESP32 with Rust and Embassy is probably the most modern and slick way to do microcontrollers.

It does require learning Rust but Rust is really really good so you should do that anyway.

There are some extremely good videos on YouTube about that: https://youtube.com/@therustybits

I would probably still start with Arduino though since you know C. Just don't stay there for too long.

[-] FizzyOrange@programming.dev 6 points 8 months ago

Relatively minor for source code forges.

The reasons everyone uses GitHub:

  • Free, even for private repos. No ads.
  • Free CI - this is huge. Nobody else does this because it costs Microsoft around $100m/year to provide.
  • It's quite good.

If anyone can ever compete with that then I doubt network effects will keep people there.

[-] FizzyOrange@programming.dev 6 points 8 months ago

because someone believed an ANSWER on a different question answered my question

Yeah that is actually their official position. Your question is duplicate if an answer elsewhere might answer it, which is clearly absurd. Essentially they think "what's 1+3?" is a duplicate of "what's 2+2?".

I think fundamentally they gamified moderation too well, and for many people they turned the site into a mod-maxing game, which obviously makes it an abysmal place to be for normal users.

[-] FizzyOrange@programming.dev 6 points 11 months ago

Thanks for highlighting your username - made me notice that you post a lot of nonsense here so I can easily block it!

[-] FizzyOrange@programming.dev 6 points 1 year ago

Stop linking this, please! Any benchmark where Typescript and JavaScript are different is trash.

[-] FizzyOrange@programming.dev 6 points 1 year ago

If you find yourself needing this, the correct thing to do is to stop writing that shell scripts and switch to a proper language.

[-] FizzyOrange@programming.dev 6 points 1 year ago

That's nitpicking. It is statically typed. Is Dart not statically typed because it has dynamic.

You could call it "gradually typed" if you want to be pedantic.

can be circumvented pretty easily

That means it isn't sound.

[-] FizzyOrange@programming.dev 6 points 2 years ago

He did call it a "shiny language of the day". That's criticism. He's saying the popularity of Rust is due to temporary hype rather than because it is intrinsically good.

[-] FizzyOrange@programming.dev 6 points 2 years ago

I dunno if you're being deliberately obtuse, but just in case you really did miss his point: the fact that type hints are optional (and not especially popular) means many libraries don't have them. It's much more painful to use a library without type hints because you lose all of their many benefits.

This obviously isn't a problem in languages that require static types (Go, Rust, Java, etc..) and it isn't a problem with Typescript because static types are far more popular in JavaScript/Typescript land so it's fairly rare to run into a library that doesn't have them.

And yeah you can just not use the library at all but that's just ignoring the problem.

[-] FizzyOrange@programming.dev 6 points 2 years ago

A sane language, you say.

Yes:

Operator '+' cannot be applied to types 'number[]' and 'number[]'.

We're talking about Typescript here. Also I did say that it has some big warts, but you can mostly avoid them with ESLint (and Typescript of course).

Let's not pretend Python doesn't have similar warts:

>>> x = -5
>>> y = -5
>>> x is y
True
>>> x = -6
>>> y = -6
>>> x is y
False
>>> x = -6; y = -6; x is y
True
>>> isinstance(False, int)
True
>>> [f() for f in [lambda: i for i in range(10)]]
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]

There's a whole very long list here. Don't get be wrong, Python does a decent job of not being crazy. But so does Typescript+ESLint.

I’ve worked professionally in python for several years and I don’t think it’s ever caused a serious problem. Everything’s in docker so you don’t even use venv.

"It's so bad I have resorted to using Docker whenever I use Python."

[-] FizzyOrange@programming.dev 6 points 2 years ago

Yeah I would also recommend avoiding async Rust as much as possible. There's really only a small number of situations where you need it - WASM, embedded (Embassy), and unfortunately most of the web ecosystem forces you to use it even if it isn't necessary for 99% of people.

Sync Rust - even multithreaded - is absolutely fantastic at protecting you from mistakes & giving an "if it compiles it works" experience. Async Rust on the other hand is full of surprising and difficult to debug footguns.

[-] FizzyOrange@programming.dev 6 points 2 years ago

That's not really true. C# and Java are reference-based, uses GC and can be multithreaded, and are very comparable to Rust/C++/C performance. Certainly no more than twice as bad. Whereas Python is probably 50x as bad.

The real answer is that Python developers have deliberately avoided worrying about performance when designing the language, until maybe 2 years ago. That means it has ended up being extremely dynamic and difficult to optimise, and the CPython implementation itself has also not focused on performance so it isn't fast.

But I agree the aim of offering C/C++ speed is never going to be met with Python syntax.

view more: ‹ prev next ›

FizzyOrange

0 post score
0 comment score
joined 3 years ago