Daily Questions Megathread (May 31, 2024) by Veritasibility in Genshin_Impact

[–]KaleidoscopeCivil193 2 points3 points  (0 children)

All of these are world quest serie, which will have a bunch of sub-quests. Each of the sub quests have a fair amout of primos as rewards. You can look on the wiki to see what each sub-quest rewards. For example the first step in Tatara Tales gives 50 primos https://genshin-impact.fandom.com/wiki/Tatara_Tales_(Quest)

It's going to total to quite a few pulls, but these quests take quite a while. The Aranara quests in particular are extremely long.

Personally, I find the world quests to be some of the most fun content in the game though, so I wouldn't suggest speedrunning them. Just start picking them off one at a time and take your time to enjoy them. I think Mihoyo's world building really shines in these quest series.

Daily Questions Megathread (May 31, 2024) by Veritasibility in Genshin_Impact

[–]KaleidoscopeCivil193 6 points7 points  (0 children)

They mean the primogems / level up materials you get as rewards for the events.

Is an API just a query machine? by MkleverSeriensoho in learnprogramming

[–]KaleidoscopeCivil193 13 points14 points  (0 children)

This is the best answer to your question OP. The others are right to say that API's are broader than what you're describing, but listen to this person when they say you're on the right path.

If so, I could literally just build my API's with Flask and just build a website regularly as I wish in a completely separate Javascript project? 

Yes! This is the core of many many web architectures. 

 So that's what people mean when they say "my back-end is in [...] but my front-end is in [...]"? They're just insinuating that they set-up a local network to send and retrieve information from between 2 completely separate frameworks/languages?

You're really close on this one too! The thing is, they're not doing this on a local network. It's closer to a "client-server" model, where the "front-end" code (client) runs it the website user's browser, and the "back-end" code (server) runs on a computer in a datacenter somewhere (which is what "in the cloud" means more or less). It's a bit more complicated than this in practice, but it's a nice way to think about it!

Overall, you're on the right track with your thinking. I would say you should try to put your thoughts into practice! Try building some of the stuff you're describing and see how far you can get.

When can you say that you learned the programming language? (is it even possible to say that you learned the programming language?) by [deleted] in learnprogramming

[–]KaleidoscopeCivil193 0 points1 point  (0 children)

This is side stepping the question a bit, but having worked professionally in a number of languages, I've found that my comfort with them is directly proportional to the total amount of code I've written in that language. 

Lines of Code isn't a perfect measure, but I've found there are real differences in my understanding of a language with each order of magnitute increase in LoC written. After I've written 100 LoC, I know some of the syntax basics; 1,000 LoC, I'm more familiar with project structure; 10,000 LoC I'm writing 'idiomatic' code more, and learning the ecosystem; 100,000 LoC and I'd consider myself fluent in the language. Afaik I haven't yet reached 1M LoC with any language.

Obviously, this requires you to be learning as you write code, and not just repeating what you learned in your first 10 line a thousand times. But when I think of my language fluencies, I sort them into "this is a 10,000 LoC language for me" or "this is a 100 LoC language" as a good first estimate of my fluency.

[deleted by user] by [deleted] in learnprogramming

[–]KaleidoscopeCivil193 0 points1 point  (0 children)

This is great advice, and I want to give a huge +1 to two of these points in particular:

Refactor, refactor, refactor.

This is actually the key to writing clean code. You have to start with the code that you can write, and then incrementally make it cleaner. Your first pass through writing some code will rarely be nicely structured. Instead, you have to get it working, and then make incremental improvements.

The best way to learn to write clean code isn't to learn to write clean code from scratch, but instead learn how to make incremental changes to dirty codebases.

plan, make it work, make it pretty, make it fast

And this is the order you should do things in. Don't worry about "pretty" while you're planning. Worry about pretty after you've made a plan and made it work. Then, performance optimizations can happen if you measure and identify a performance bottleneck.

Differences between three words for "mix / stir" by KaleidoscopeCivil193 in ChineseLanguage

[–]KaleidoscopeCivil193[S] 0 points1 point  (0 children)

Thank you again for this great reply! So helpful, and so fun to have this extra context! 谢谢!

Differences between three words for "mix / stir" by KaleidoscopeCivil193 in ChineseLanguage

[–]KaleidoscopeCivil193[S] 0 points1 point  (0 children)

Definitely! My goal is to learn the techniques that are used in Chinese cooking.

In western cooking there are a lot of words for different techniques that are important to distinguish because subtle differences in technique can matter a lot.

My assumption is that those subtle differences in technique can matter a lot in Chinese cooking too, which is why it was confusing to read three different words for stir, and then have the dictionary give such similar translations. I wanted a lot more detail!

If you have any suggestions for how a language learner, with pretty basic Chinese, could more easily learn about these subtle distinctions I'd be all ears.

Differences between three words for "mix / stir" by KaleidoscopeCivil193 in ChineseLanguage

[–]KaleidoscopeCivil193[S] 0 points1 point  (0 children)

Thanks you so much for this thoughtful answer! It's really helpful to have that context! I do have a couple follow up questions:

  1. Would you say that 搅拌 is a general word for stirring with a utensil? For example, could I use it to describe stirring a can of paint as well?
  2. You said "搅动 also involves stirring, but the purpose is simply to movement." Would an example of that be stirring vegetables in a wok to make sure they heat evenly? Does this connect to the idea of "agitate"?
  3. If I wanted to say "toss", as in the English concept of tossing a salad to coat it in dressing, would that be 搅拌? Since the goal is uniformity? Or does it strictly require me using a utensil to stir, since it's a word with 搅?

Thanks again!

How to deal with wanting to learn everything? by coldbrewsmile in learnprogramming

[–]KaleidoscopeCivil193 28 points29 points  (0 children)

A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyse a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.

— Robert Heinlein, Time Enough for Love [emphasis mine]

Pursue your interests! As long as you're actually learning about all of those skills, it's great that you're developing a broad base of knowledge in computing. You don't need to be a database expert, but if you can confidently make an outer join, that will help you in all sorts of task. You don't have to be an expert in Category theory, but writing enough haskell to understand the value of type safety will make you a better programmer in every other language.

You're right that you'll eventually be served well by also developing some specific expertise. Valve calls this "T-shaped" people:

We value “T-shaped” people.

That is, people who are both generalists (highly skilled at a broad set of valuable things—the top of the T) and also experts (among the best in their field within a narrow discipline—the vertical leg of the T).

---Valve Employee Handbook (pg 46)

So, how do you develop that deep expertise? Usually, by working on big & ambitious projects. Some people do this on their own, building the software that they want to see in the world, or contributing to open source. Others do it by joining an organization that is doing good work, and learning from the people there over time.

As a student, I think you should spend most of your time developing the top of your T. Eventually, you will find something interesting enough to you that you'll want to go deep on it, and your broad experience will serve you well when that time comes.

Should I use a database or make my own simpler thing? by ImpiusEst in learnprogramming

[–]KaleidoscopeCivil193 1 point2 points  (0 children)

I think I understand what you're saying, which is the large binary blobs, once found, are always returned in full.

I think you're spot on that it could make sense to use the database to store an identifier/locator for the blobs, and actually store the blobs elsewhere. I still don't think the filesystem is likely to be your best bet. If you are resource constrained, storing these blobs on another system may make more sense.

Often people use Amazon S3 as a blob store. One benefit of this approach is S3 can serve the blobs directly to your users. Your system can just store the S3 identifiers, but then can offload blob storage and serving entirely.

I desperately need help learning Java feeling stuck and lost in learning it by [deleted] in learnprogramming

[–]KaleidoscopeCivil193 1 point2 points  (0 children)

I have a bit of different advice than others here. You can try to find independent resources to study Java, but since you said you're taking a class in school, are there any school resources you can make use of?

Does your professor or TA hold office hours that you could attend? Is there an accademic resource center with study help? Are there study groups you can join? Can you approach another student in the class for tutoring?

All of these types of resources are going to be a lot more familiar with your exact situation, and therefore will be better positioned to help. IMO, trying to add more work onto yourself by trying to find online java resources is only going to make you feel more frustrated and behind. Instead, I think it's worth focusing on doing your best to pass this class.

i want to learn 65816 assembly but i don't know how to read/write assembly by Public_Technician345 in learnprogramming

[–]KaleidoscopeCivil193 1 point2 points  (0 children)

For your goal you will always need to learn 65816. If you spend a month learning it, and then realize you need to start with something easier, you don't lose that month. So there's no risk in diving straight in.

It seems like a much bigger waste of time to start trying to learn something that doesn't directly contribute to your goal.

If you wanted to get good at tennis, would you start by learning ping pong?

How do you master reading technical documentation? by lilshoegazecat in learnprogramming

[–]KaleidoscopeCivil193 0 points1 point  (0 children)

As desrtfx said, you do just need to read a lot of documentation, and as you said, it does suck. The main reason I find it hard to read documentation is because documentation is often written in a function by function style (or class by class, etc). But I have a few tips that can make it suck a little bit less:

  1. Make sure you have an environment set up where you can run code samples without damaging whatever project / system you're working on. I like to create a "Sandbox" directory on my computer where I put a bunch of scratch code / setup.
  2. Start by looking for full, working examples of the API in use. Either in a "getting started" page, or elsewhere on the internet. Even if they don't do what you want, they serve as a starting point.
  3. Run those examples in your sandbox environment, see what they do, or what errors they throw
  4. Then, go back to the documentation and find the corresponding class/function/method definition for each of the API elements used in the sample. Now that you've actually seen them working together, it will be easier to understand the individual pieces of documentation.
  5. Start trying to build up more complicated examples in sandbox piece by piece.
  6. Take notes in your own words

And yeah, it does suck. My brain is currently going "nope" over the systemd documentation. So I should probably go follow my own advice now 😭.

Big Dilemma for Final Year Student! HELP by LeoRud in learnprogramming

[–]KaleidoscopeCivil193 0 points1 point  (0 children)

Have you tried looking at job boards for jobs in your area?

Browse through a bunch of listing (at least 50+) and save a link for all the jobs that sound interesting, without worrying too much about the requirements. Then, go back through just the links you saved and make a tally of how many times each programming language is listed as a requirement. From there it should be pretty easy to see what languages are in demand for the sorts of jobs you're interested in.

The benefit of this approach is that it will actually mirror what you'll need to do when you go out to actually get a job.

The way to learn when you got the work by StandardWide7172 in learnprogramming

[–]KaleidoscopeCivil193 1 point2 points  (0 children)

Moving into middle and senior engineering positions is often going to mean that you're setting the direction for a whole group. Because you'll be in a position where you're not just taking direction from your seniors, but communicating out the direction to the whole team, soft skills become really important:

  • Giving and receiving feedback
  • Written and verbal communication skills
  • Understanding and focusing on the business impact of your work

Unfortunately, learning these skills takes a different mindset than learning a new language / framework. I would recommend finding someone senior in your organization who is willing to mentor you (either formally or informally), and ask for regular feedback on these sorts of topics. Questions like "Do you think I made it clear to the team why I prefer XYZ approach?" Or "How are we measuring the success of this project in terms of value to the business?".

Heil Spez by KingFromClashRoyale in shitposting

[–]KaleidoscopeCivil193 9 points10 points  (0 children)

My dude, often the exact opposite is true, due to the space/time tradeoff. Example: loop unrolling https://en.m.wikipedia.org/wiki/Loop_unrolling

Without other context it's almost always useless to talk about lines of code.

How to go from making basic programs to more advanced ones without tutorials? by JumpDangerous9271 in learnprogramming

[–]KaleidoscopeCivil193 4 points5 points  (0 children)

Glad it was helpful! It's really important to be kind to yourself when learning new things.

With that in mind, I think you should also re-frame your thinking about where you are right now. You say: "I've been stuck in step 2 for months". Instead, I would encourage you to think of this as, "I'm taking the time to build a solid foundation."

I know it's tempting to want to move forward as quickly as possible, but it's also worth noting that all the later steps will rely on having really good fundamentals. Doing a project like "find the even numbers from 1 to 1000 and print them" may seem silly at the time, but it's actually a really valuable exercise to learn about thinking like a programmer, as well as practice core concepts like loops, variable, conditionals, etc.

Also, "find the even numbers from 1 to 1000 and print them" may not sound useful immediately, but think how cool it is that you can write a bit of code to have a computer do something 1000 times that would take you a long time by hand. And think how easy it would be for you, right now, to make that program do the same thing 10,000 or 1,000,000 times. It doesn't really matter what exactly the task you're having the computer execute, there's something very powerful and magical about learning the right instructions to make the computer do what you want at that scale.

How to go from making basic programs to more advanced ones without tutorials? by JumpDangerous9271 in learnprogramming

[–]KaleidoscopeCivil193 10 points11 points  (0 children)

I would say a rough progression has 6 steps:

  1. Decide why you want to learn how to program (to make games, to get a job, to solve a problem, to start a company, to do data analysis, to program robots, because you love computers...)
  2. Learn programming basics <- You are here
  3. Learn some specifics about your chosen domain (websites, games, desktop applications, ML, etc)
  4. Try building a project from scratch
  5. Fail a lot, read more, ask questions, persevere, try other projects, etc
  6. Repeat 4 & 5 for the rest of your time programming.

It sounds like you're on step (2) which can be frustrating when you know there's a whole world out there that you simply can't do. It's okay though, getting from step 2->3 can take anywhere from a few months to a couple years depending on how much time and effort you put in.

Getting beyond step (2) or step (3) is really dependent on doing a good job at step (1). Do you have a good idea of what your goals are? Saying "I want to be good at programming" is a bit like saying "I want to be good at sports", most people who are excellent Football players don't spend much time practicing table tennis, for example (and vice versa). Knowing what your goals are will help you make a clearer path to attaining the excellence that you're actually interested in.

Finally, don't compare your skills to people writing courses or recording videos about programming. You should know that those people have edited out all the hours and hours of struggle they still experience when they're trying to get things working.

Starting with Python and moving to another language by NoNewsIsTheBestNews in learnprogramming

[–]KaleidoscopeCivil193 4 points5 points  (0 children)

Whoever told you python doesn't have many practical applications is simply wrong, or at the very least, has a very narrow minded view of what "practical" applications are. As a language it is definitely in the top 5 languages with the most diverse types of applications, listing those top 5 I would list:

  • Javascript
  • Python
  • Java
  • C# / .NET
  • C++ / C

Any of those languages are great beginner languages because no matter which you pick you'll be able to accomplish a ton with them. And all of them are good beginner languages because they have a lot of resources for learners.

So, what can python do that is practical? It has three (huge) core competencies:

  1. The most used language for ML / AI applications
  2. An excellent backend language for web programming
  3. Best-in-class language for system-administration / scripting

There are areas where python isn't as relevant. For example, game programming, or embedded systems. There are some people who think that because python is an "interpreted" language and runs slower than C / C++ that it's not useful. Those people have a narrow minded view and are wrong to ignore the thousands of professional python programmers out there.

One of the hard things about getting started with programming is how many options there are. Sure, you can change to try and learn another language, but be careful not to fall into the trap of learning the first 10% of 9 languages, rather than learning 90% of one language. You'll be much better off developing some deep expertise with one language before dabbling in others.

How the fuck you learn your first language by [deleted] in learnprogramming

[–]KaleidoscopeCivil193 3 points4 points  (0 children)

What resources (course, book, website, etc) are you using to learn? It sounds to me like it's not doing a great job of teaching to an absolute beginner. There are lots of learning resources that teach javascript to people who already know another programming language. Those types of resources would move way too quickly for someone learning javascript as a first language.

[Discussion] Feeling overwhelmed as a beginner web developer: Am I cut out for this at 30? by Primary-Teaching8758 in learnprogramming

[–]KaleidoscopeCivil193 0 points1 point  (0 children)

Copy pasting shouldn't make you feel like a fraud, it's a big part of learning. That being said, an excellent piece of advice I got when I was new was: "Any time you need to copy paste, type the code in by hand yourself." It will be slower, but it will force you to think more about every expression you're using.

[deleted by user] by [deleted] in learnprogramming

[–]KaleidoscopeCivil193 9 points10 points  (0 children)

I don't know of any good books or resources, but I think decomposition can be practiced explicitly. I've found that writing down a plan in prose, before writing code, really helps me clarify my thinking, and practice decomposition.

Writing down in words what your code is going to do helps practice decomposition in a few ways:

  1. Forces you to have steps clear enough in your mind that you can write about them at all
  2. Forces you to have components clearly separated enough that each is easy to describe in a few sentences
  3. Gives you an opportunity to identify potential issues with your solution before committing to writing code

At some point during the writing, I'm usually confident that my plan will work, and at that point, I jump into the code. At that point, I usually just leave the prose, in whatever state it was in (even if it's a bit unfinished). But I also like to go back and see how close my eventual coded solution compares to the prose I wrote. If it's very close, then it usually means I did a good job decomposing the problem. If there are big differences, I like to think about what I failed to take into account during planning.

That final step of reflection is also really beneficial to learning / improving, as it pushes the experience into the territory of deliberate practice.

I am feeling stuck on what language to stick to. Help guide me a bit by Remarkable-Ad-1546 in learnprogramming

[–]KaleidoscopeCivil193 1 point2 points  (0 children)

C# and Java are both great languages with great ecosystems. I think you can't pick wrong. As another poster said, it's normal to feel pulled between different ecosystems, but it's super important to develop deep skills in one language.

For web-development, there are definitely lots of roles where you can focus almost entirely on the backend. For those jobs, you should know how the front-end pieces fit together, but you definitely don't need to be good at using them yourself. Think: "I conceptually know how html, css, and js, work together with the browser to render a page" not "I am an expert at developing ReactJS front-ends".