Miguel, aka mickie. Code, Science, Politics, etc.

EN | ES_MX

blog: mugcake.gitlab.io/blog/ (ES/ desactualizado)

pleroma: migue@kawen.space (no existe mas)

mastodon: miguel@mstdn.mx

Mexico-Tenochtitlan

  • 15 Posts
  • 10 Comments
Joined 5 years ago
cake
Cake day: January 22nd, 2020

help-circle














  • As I understand, your needs are more related to an absence of fundamental knowledge, than an a problem of learn X language/technology.

    I strongly recommend you this book:

    Structure and Interpretation of Computer Programs (SICP). One of the best books of computer science ever written. This book gives you a solid foundation about computer science in its most primitive concepts, for example, what is a program? what do we mean when we say that we build programs? what are variables and how values are associated to them? their life time, what are functions and what are they made of (procedures)? scalar values, values of (composite) values, why are data control structures built that way? macros, how data is represented, how the interpreter/compiler understands it, etc. etc. etc. In short, SICP is to computer science what Euclid’s elements are to mathematics.

    All this relying on a language known as Lisp (specifically Scheme and its variant Racket). It is not necessary that after the book you continue using it, be careful, it is quite addictive ;) It is included because as it is one of the languages with a very simple syntax and structure, it helps you not to abstract so much from what is really important: dealing with the problems, not with the language.

    It is a somewhat technical book, since it is academic, but it was created just for introductory courses (in 80’s and 90’s at MIT), not only for computer science, but also for other engineering and related careers. It includes many exercises that increase in difficulty as you advance between chapters, being at the beginning somewhat tedious because of the use of some mathematics.

    Some tips

    After reading the book you can move on to algorithm and data structure books.

    plus: learn databases (SQL/No-SQL)

    I do not recommend any of these languages to take as beginner:

    • C++/C#/Java: they have too many abstractions that can lead to confusions/misunderstandings that at a beginner level are unnecessary, like OOP. These concepts you can learn later with practice, and according to the type of project you need to run.
    • Rust is too advanced and can lead to headaches as it’s not very intuitive for a beginner.
    • JS is such a poorly designed language that it leads to many bad programming practices and misconceptions when approached without prior knowledge. Just take a look at scoping and closures to get an idea of what I mean.

    I recommend:

    • C
    • Python (very useful for algorithms and data structure)
    • Scheme/Lisp

  • It is a double-edged sword: Where is the Apache Foundation registered and operating? In the United States. The company that found the exploit, Alibaba, is Chinese. Even the department that found it (security team) is located in the offices of Alibaba Cloud, in Singapore. In short, the Chinese government was very close to having a tool to seriously damage the Western technology infrastructure, without the other side ever knowing where exactly they were being hit from. And if it had been the other way around? if that information had reached the Singaporean authorities earlier? we must not forget that it is a very servile government to the United States. Or in the worst case scenario the report was intercepted at the Apache Foundation, remember PRISM? one of their goals is to find potential vulnerabilities and exploit them against “hostile forces” even forcing companies registered on US soil and several beyond their borders to leave “backdoors” in their products/systems without public knowledge.

    Fortunately or unfortunately it was reported and announced publicly, without prior knowledge of the respective governments, so neither side gained a considerable advantage in this new field of warfare that is the cyberspace.