skymuse
I think what makes it obsessive for me is that I always want to improve my thinking, even if it's a tiny increase. That's why I always check out other people's note taking methods and software, in the hopes of finding a little nugget of optimization.
As for my method, I use plain text and vim to store my notes. If I need to think deeply about a problem, I use a paper notebook and pencil. This is because that combination is good for visualizing a problem.
It’s a simple habit, but it has had a dramatic effect on my weight loss journey. Level 2 of this habit is to check out the nutritional information of everything before you eat it, but that’s a discussion for another day.
When covid hit and going to the gym was out of the question, I was forced to optimize my diet in order to stay “healthy”. The result of this is that I lost 20lbs of hard-to-lose weight, putting me squarely in the median weight for my height.
Now when the gym opened back up, I had the foundation of a solid diet paired with consistent exercise, which lead to me being in the best shape of my life.
I’m still tweaking my health strategy, since there is no such thing as perfect, but now I always start with improving my diet.
A long time, probably a couple months to get productive, and a couple more to learn the foundation pretty well. And this is with a steady supply of side projects to help me solidify my learnings.
2) Which did you learn to appreciate over time over the other, if at all?
I chose Rust over Go because for my side projects (at the time) Rust was faster and had a better package manager. Since most of my side projects are command line tools, Rust fit in quite well in this domain.
A side note. I think it's more helpful to choose a language based on how well it solves your problems rather than its amount of shortcomings. If Go has the right packages and tools, go with that. If Rust does, choose that one instead. For me, the ability to quickly pick up the best language for the job is IMO more valuable than picking a language with less 'edge cases'.
I think there is a battle between two competing AI philosophies. One philosophy thinks AI should be central: all devices need to talk to the overmind for learning. The other philosophy thinks AI should be local: the device should learn on its own, kind of like a biological agent. I think the 'biological agent' form of AI is interesting when it comes to privacy of information. Only you and the device have the data.
The future of AI should be interesting with these two philosophies in mind.
The central issue, for me, is that with rust you MUST understand the memory model completely in order to be productive. You cannot wing this, you cannot assume anything. I was not used to this being an application programmer and this lead to the root of all my suffering. Once I wrote down all the borrowing rules and deeply thought about it, I finally became productive in the language.
I see the author shows symptoms of not understanding the memory model. His code proves it. Instead of being angry, he should try to view rust with an open mind and ask "why did they design it this way?". Be curious, create experiments, probe the rust semantics, master the borrow checker. There are rewards to be had for those willing to push through the pain of integrating new knowledge.
Now to answer your question by looking at your goals. "Knows no programming language" lets me know that you are starting from scratch. In my opinion, this means you need to answer the following question first: do I even like programming? The best way to answer this is to not abuse yourself with C but instead start with python to get a real feel for what programming is.
"Learn coding for building with best design principles" means you want to learn good habits early on. Python has a stable style guide (pip8) and the zen of python, so at least some good habits can be learned quickly. I don't think there is a comparable zen of C, but maybe that's because I haven't looked.
"Gaining efficiency of data structures" means understanding why data structures are important in program design. Python has some pretty solid built-in data structures (i.e lists, sets, dicts, tuples) that are good for beginners who want to experiment with data structures. C doesn't have lists, sets, dicts, or tuples, but you can implement them if you try hard enough.
"Thinking abstractedly in algorithmic rollercoaster of fun"...I think what you meant is the freedom to think about an algorithm and to implement it with ease. Python is fantastic for this, while C requires a lot more thinking to get a thought manifested to code.
This post kinda struck a chord with me because I wrestled with the same question when I started 4 years ago. Python helped me more than C because I was more creation oriented. I wanted to implement a useful tool as fast as possible. With your questions in mind, I think python would be better choice than C as a beginner.
typeof(var).stringof.writeln;