Thursday, January 31, 2019

REDUX

Redux

Redux is an open-source JavaScript library for managing application state. It is most commonly used with libraries such as React or Angular for building user interfaces. Similar to (and inspired by) Facebook's Flux architecture, it was created by Dan Abramov and Andrew Clark.

Monday, December 10, 2018

Programming brain by programming your own code

Programming brain by programming your own code


Can the masterpieces of the best painter change the brain and the way of seeing other things by other artists?
E.g. the masterpieces of Van Gogh?
Nothing will be the same after him...

Just as artistry can shape your mind in various ways, programming also impacts how we think and our mental models, perhaps in ways we may not have expected.

Last week I found an excelent articles about it:
https://www.makeuseof.com/tag/how-programming-affects-brain/
and
https://www.huffingtonpost.com/chris-parnin/scientists-begin-looking-_b_4829981.html?guccounter=1

Do You know these Inventors?  :-)

James Gosling = Java Creator
Bjarne Stroustrup = C++ Creator
Ken Thompson = UNIX Co-Creator
Linus Torvalds = Linux Kernel Creator
Tim Beners-Lee = HTML and WWW inventor
Richard Stallman = GNU Project Creator

Do You know that during programming your own code at the same time You are programming Your brain yourself?

Generally speaking, programming impacts on activation pattern of five brain regions, which are related to language processing, working memory, and attention.
These parts of the brain typically are associated with language processing and verbal oriented processing (ventral lateral prefrontal cortex).

Using fMRI scans to observe brain activity, while programmers tried to work through and comprehend code snippets,
five areas of the brain are involved in understanding source code:

  1. Middle frontal gyrus (Attention, language, working memory)
  2. Middle temporal gyrus (Semantic memory retrieval)
  3. Inferior parietal lobule (Working memory)
  4. Inferior frontal gyrus (Working memory)
  5. Inferior frontal gyrus (Language, working memory)

But sometimes programming are not only programming, but also:

  1. trying to understand the legacy code
  2. coding
  3. business analysing
  4. designing the architecture
  5. searching and identifying the problem (the diagnose in debug mode)
  6. designing the frontend
  7. designing the schema of database
  8. optimization of the SQL expression with multiple joins to search for data in the database.
  9. designing interfaces and the whole communication
  10. designing the set of complete tests
  11. preparation of test data to the identified production error.
  12. refactoring
  13. understanding current requirements and predicting future one
  14. defending the theory that simpler is better, but too simple is not the best


Deeper study - an excelent and innovative book:
Dr Kaja Nordengen "Your Superstar Brain: Unlocking the Secrets of the Human Mind"
In "Your Superstar Brain...", neuroscientist Dr Kaja Nordengen describes in detail how the brain works - both how it's physically constructed with neurones, synapses and the cerebral cortex, but also how it functions on a more abstract level.

Good programming courses

Good programming courses


PYTHON

PYTHON

Excelent language to learn and use...


Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, notably using significant whitespace. It provides constructs that enable clear programming on both small and large scales.

Python features a dynamic type system and automatic memory management. It supports multiple programming paradigms, including object-oriented, imperative, functional and procedural, and has a large and comprehensive standard library.

Is it true that Python programmers think different than Java programers during programming?  :-)
Because of different mental models in such of these two languages?

GRASP in OOD

GRASP in OOD (object-oriented design)


General Responsibility Assignment Software Patterns (or Principles), abbreviated GRASP, consist of guidelines for assigning responsibility to classes and objects in object-oriented design, as we can read at wikipedia.

The different patterns and principles used in GRASP are: 
  1. controller, 
  2. creator, 
  3. indirection, 
  4. information expert, 
  5. high cohesion, 
  6. low coupling, 
  7. polymorphism, 
  8. protected variations, 
  9. and pure fabrication. 


All these patterns answer some software problems, and these problems are common to almost every software development project. These techniques have not been invented to create new ways of working, but to better document and standardize old, tried-and-tested programming principles in object-oriented design.


Evolution of adaptive software development

Evolution of adaptive software development

Agile, SCRUM and many iterations are trendy now.
Microservices are trendy...

Why?

Everything more important and more interesting becomes more changeable, fast and distributed...

Why?

In my opinion, because of advantages for business and maintanance matters of adaptive software development...


My TOP 7 choice:
https://www.makeuseof.com/tag/basic-programming-principles/

http://blog.shippable.com/why-you-should-adopt-microservices

http://blog.shippable.com/7-things-to-consider-while-moving-to-microservices

http://blog.shippable.com/topic/microservices

http://blog.shippable.com/what-is-modern-application-delivery

https://dzone.com/articles/devops-trends-2019-what-you-need-to-know

https://dzone.com/articles/the-future-of-devops-is-assembly-lines


Is there any chaos in current adaptive software development?

Maybe programmers search something as the supersymmetry in the theory of strings, in order to classify and categorise better...

Are the similarities between the theory of strings and HTML tags (https://www.w3schools.com/tags/) in concept?

Are the similarities between the M-theory and microservices (in programming approach)?

And by the way: is the M-theory the same as string theory?

A theory of strings that incorporates the idea of supersymmetry is called a superstring theory.
There are several different versions of superstring theory which are all subsumed within the M-theory framework.

But where is "here" the elephant?
Is it escaped with Schrödinger's Cat?  :-)

At low energies, the superstring theories are approximated by supergravity in 10 spacetime dimensions. Read more at:

OOPS

OOPS

It is not the abbreviation of making mistakes...  :-)

OOPs stands for Object-Oriented Programming System:
Object means a real-world entity such as a pen, chair, table, computer, watch, etc. 
Object-Oriented Programming is a methodology or paradigm to design a program using classes and objects. 
An object is a kind of classification of matters used by our minds and brains...

Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which may contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods.

OOPs simplifies the software development and maintenance by providing some concepts (https://www.javatpoint.com/java-oops-concepts) at the following order:

  1. Object
  2. Class
  3. Inheritance
  4. Polymorphism
  5. Abstraction
  6. Encapsulation


Any objects could be related to basic "elements" and "experience" (of perceiving some object, event, or scene):
the experience of "mental image" or "mental picture", which is the representation in a person's mind of the physical world outside that person.

Such elementary "objects" can be dynamically self-organized by the mind all the time, and adaptively re-organized...
How?
The mind is a set of cognitive faculties including consciousness, perception, thinking, judgement, language and memory. 
It is usually defined as the faculty of an entity's thoughts and consciousness.
It holds the power of imagination, recognition, and appreciation, and is responsible for processing feelings and emotions, resulting in attitudes and actions...