Today I continued with FreeCodeCamp, repeating what I've already forgotten and learned new things at the same time. I finished the Responsive Web Design Certification sector. Who studied with FCC — knows it's one of the 7 parts which you have to complete. Recently I have finished Debugging and was looking to go further.
Here I'd like to share the short list of possible developer's mistakes, the essence of the Debugging part:
Try not to forget to check intermediate values of program's output, use
console.log [outputs the value]
typeof [shows the type of a variable]
Misspelling, especially for those whose typing [thank god] is pretty fast, be aware
Unclosed parentheses, brackets, braces, quotes and other 'insects' who sometimes are really invisible
Case-sensitivity, keep in mind it's not good to harm anything that is so sensitive
Mixed usage of single and double quotes
— you either have to use different types of quotes:
"I'm not playing computer games. I'm learning".
— or use escape sequences — [ \ ] — when you go with the same quotes:
Even a blind person nowadays can see that our world becomes more and more polarized. Multi-polarized world demands every you and every me to be a member of one of its numerous groups or at least create your own if you can. Different groups, no surprise, proclaim different opinions; some of them are strong and became viral, some are weak thus get lost in the ocean of noise.
Usually, polarization is the most obvious when something appears to undermine stability and current status quo. The last few decades there were lots of such shaky points, from designed babies to the future of A.I. If suddenly all people on Earth assume that there are no supernatural powers, but only people, and it's us who are responsible for everything what we create or destroy — we might make our planet much better place to live. Talking about super-hard questions it is crucial to see what kind of picture we all are painting, what directions we are taking to step on and why. We have to know our whys.
My interest in artificial intelligence topic began from my teenage years when at first time I figured out the anthology of Isaak Asimov's books on my grandpa's bookshelf. I read everything I could grab from there, later everything in the local library, and later in the web. I was amazed and I could not perfectly distinguish words "natural" vs. "artificial" in regards to anything with a spark of consciousness. I still can't.
Nice memoirs from my past-self and indirectly the reason of my worries. Here's why.
There is a concept in psychology called self-fulfilling prophecy. To keep it simple: it is a sort of prediction that makes itself to come true. Mainly because it causes a dependance between our beliefs and behavior. If a kid believe in a monster under the bed she will keep a light during the night or will cover herself with a blanket even if it is +40 above zero inside the room (hardly true if it's not a room somewhere in tropical zone, but it proves the point).
Anyways, we can see here the behavior which seems let's say a bit odd. Unnecessary, dummy actions just because of some strong belief that is valuable only for the kid, and it's real in its consequences. We all are such kids.
Sociologist Robert K. Merton who coined this expression "self-fulfilling prophecy" defines it so:
The self-fulfilling prophecy is, in the beginning, a false definition of the situation evoking a new behavior which makes the original false conception come true. This specious validity of the self-fulfilling prophecy perpetuates a reign of error. For the prophet will cite the actual course of events as proof that he was right from the very beginning.
The source of Merton's insight we could consider Thomas theorem, which states that:
"If men define situations as real, they are real in their consequences".
That's a really interesting [scary] concept which tells us that our behavior depends on our perception of the situation and the meaning we give to it, rather than the situation itself.
Regarding one of the most popular questions about A.I. — how will it affect our lives and what are the consequences of this process — we might see several opinion-camps. Each camp is a group of people who have similar perception of "what is going on there" and gives the same meaning to it while answering the questions. The bigger the group is — the more attention it gathers, the more influential it becomes, the more people assume that described situation is real. Its chances to set up a specific behavior is growing as well.
In the end the whole process causes the inter-subjectivity phenomenon. That happened to us throughout the whole human history. We can't live without make-believe stories. As the Noah Harari describes it — it's neither objective experience, not completely subjective, it is an ability to believe in the most spread web of meaning. If everyone around me will suddenly start to believe in a pink unicorn — my mind will ask me questions like: "Am I crazy or the whole world gone crazy? Perhaps it is me and the pink unicorn really exists".
You can replace pink unicorn with anything you want. It does not really matters. What matters is how many people around you agree with this thought/opinion/mem/etc. and do they behave accordingly.
You may replace pink unicorn withbaaad bad robots, evil AI, helpful AI, monstrous designed babies, those little Frankensteinsor modified and genius, all forms of life are sacred to aliens will kill us all, thank you Ripley merciful god, cruel god, etc. You can follow this pattern as far as your fantasy goes...
Just follow the logic: certain opinion — certain amount of people — chosen narrative — certain behavior — certain consequences.
What particular scenario will you prefer to create in the nearest future? What meaning will you give to A.I. as to the whole arising technology? What kind of chain you'd like to launch? How often will you use critical thinking while deciding about "good things" or "bad things"?
All these answers are individual, though they create the web of meaning we all live in.
P.S. When I am reading about an evil AI in 100th time I am close to the conclusion that human beings will never think in other way except the anthropocentric. No wonder. Anything we create is a reflection of our kind and we will never get rid of it, until the time we became different kind ourselves.
Reflections are different, but almost every time when we are talking about embodied images of omnipotent us, who have unlimited abilities and power — we tend to make them as nasty as possible [gods, AI, androids, robots, etc.] Is the human nature itself something rotten to the core?
I have to acknowledge that long time passed by from my last scribbles. Lot of things have changed from that period of time for better or worse. However, my studying is in constant progress and my main interests did not change much. I'd like to write a short review of the process, mainly for my self (self-studying is always an experiment) and for those who might take the same road of studying anything by themselves.
Talking about Android I've started from Udacity courses which were provided in cooperation with Google. They are:
* Android Development for Beginners (link is for one of the courses in stack):
In the very end of each you have an ability to enroll into one of the Nanodegree programs and refine your skills. There are no limits, except the Nanodegree programs require payment.
Anyway, if you have the opportunity to pay for one — go ahead!
Courses mentioned above are completely free and will give you a point from where to start. Although they are short — they contain a lot of information to proceed on your own and teach you where to find it + how to use.
Why do I like to start with such courses?
The reason is simple: they are structured. The structure is one of the core points for beginners. If you're studying by yourself — you'll need it most. There are so many different tutorials and resources about Android application development that any person may just drown in that heaps. Hopping from one page to another on everyday basis will not give you any solid results (that was proven not only by a misery experience of mine). To speak metaphorically you are going to have a piece of flash here and a bone there without a coherent understanding how it all work together. That's a dumb start because you'll need to re-learn things from the beginning. It doesn't save any time.
To make the picture less obscure I'll give you the approximate list of what you'll see in those courses:
1/ Building simple layouts (meeting XML language)
— images, buttons, texts, fonts, sizes, locations on the screen, etc.
— hello, Android Studio!
— getting your first and ugly designs onto a phone.
2/ Interactivity (meet Java code here)
— learn how xml layouts are interacting with java code (where is the logic of your app)
— debugging, logs.
— material design.
— Android documentation (where to read and don't understand a half)
3/ Object-Oriented Programming (you're diving deeper in Java, its syntax and implementation)
Within all these stages you're making simple apps where you experiment with your code and make a million mistakes. In the end of every lesson you'll have an encouraging talk with one of Android developers. Some of them are really powerful. Don't skip that part.
What are my next targets?
Now I plan to reveal my potential as an engineer and a designer by creating my own simple app in a way which will not repel all my friends at once.
That means: now I stick to 3 books about Android Development and picking one accordingly to the level of difficulty I experience while creating.
It's definitely up to you which books to use while learning. It depends on your own level as well as how easy or hard for you is the understanding of particular authors' style and theirs explanations. Therefore I'm not providing any specific books or tutorials. Just try to keep it up to date. In 2018 you rarely will need the book from 2010.
If I will find any new good course in the future — I'll share the information about it here.
I am struggling a bit with the question concerning design issues. Have no clue what are the most useful tutorials to read, but I consider to start with Material Design, provided by Google. That will work for now.
Thinking about the quality of the product I consider myself as a main client, thus until I will not like what I'm creating — nobody will see it. There is lots of garbage released in the world, don't want to make that list bigger. Hustle a bit longer.
Here I will share the stages I go through in my learning. Hopefully that will be more frequently. *grumpyface*