20

I dive in head first.

Some existing program annoys me, so I get this itch to write a selfhosted Spotify in Go, or a conky with 3D graphics in Rust.

I check the homepage of the language, download the tools, check which IDE is great for it.

Then I just start writing code, following the error corrections thrown by the IDE, doing web searches for all errors. Then when I run into a wall, I might check the reference docs or a udemy course.

Often I don't finish the project, because time is limited and I still have 4 million other things to do and learn, but at least I've learned a new language/tech.

Con: For tech which uses unique paradigms like Rust's memory management or Go's Goroutines, it can be frustrating to bash away at a problem using old assumptions.

Pro: By having a real demand for a product with requirements instead of a hello world or todo app, it's much easier to stay motivated, and you learn beyond what courses would teach you.

Comments
  • 4
    I use the same approach. Mostly building games though.

    On the other hand, since it's usually my first time writing something in the new language, I always feel like it's not structured well enough and it doesn't follow the best practices.
  • 1
    @Mephenor Haven't gone much beyond a simple transparent borderless window with some bar and line graphs drawn with OpenGL, everything seems to perform very well. Lots of confusing and poorly documented APIs though.

    I actually have not much frame of reference for performance, because career-wise I mostly use Haskell, PHP, Javascript and Python and some Go -- all of which aren't known for their focus on low level optimizations.

    Well written Rust should perform only slightly worse than C, and much better than C++, Java or Go. Languages are difficult to benchmark though, results often vary so much per task and depend on which libraries are used.
  • 1
    @Mephenor Then you probably did something wrong in Rust!

    I've found Go to be extremely easy to learn (After 2 evenings you start feeling comfortable with the language) and very performant for mapping & filtering datasets, especially because parallelism is so natural in Go. It's missing a lot of the analytical data science ecosystem from Python. But it's an amazing language for backend stuff, API's, middlewares, worker scripts, etc.

    Rust is amazing once certain stuff clicks, but despite the abstractions it's still a systems programming language at its core. So I think for data parsing & webservers it will always feel like it's a bit... raw.

    Looking at what Rust is doing for Firefox Quantum in terms of simplifying APIs and utilizing multicore CPUs, I'm really thrilled for Rust to work it's way into game engines, video editors, and operating systems.
  • 2
    Selfhosted Spotify? Tell me more ;)
  • 2
    @ebroda Large FLAC storage on ZFS pool with various audio formats (opus/vorbis), caching favorite songs intelligently on the client side (browser's persistent quota storage API) to balance storage & bandwidth, automatically enrich media with album art & lyrics through APIs, a simple drag an drop album uploader, and the ability to create mixed content playlists with audio tracks and (parts of) Youtube videos.
Add Comment