Tuesday, September 24, 2019

Not just ‘GO’ish in the Golang training, Thankfully !

This article is a postquel to training for ‘Golang’, and below are some excerpts which were not related to ‘Golang’ at all ! Thanks to ‘Christian Hujer’ for sharing this...

  • Use-cases are primary driver for choosing a programming language/technology, but principles and practices are more important than the language or technology in the craft of software development.
  • A mobile device has pretty much become similar to a laptop in terms of processor core(s)/power and memory configuration, but the technologies on them are quite different - shouldn’t these converge? ChromeBooks are based on Chromium OS. Also, Rust and WebAssembly were mentioned in the same context.
  • Functional programming was devised in 1950s in academic circles and early functional-flavored language was Lisp, developed some time around 1958.
  • The billion dollar mistake by Tony Hoare - the “Null Pointer References”; estimating that software engineers have spent at least a billion dollar worth dealing with problems due to null pointer references.
  • Java started with ‘green’ threads in the initial releases because of Java being targeted for Sun’s SPARC machines. Later on, to comply to different processor architectures, Java moved from the ‘green’ threads to ‘native’ threads, since Java 1.3. Additional Information gathered: "Green" is earlier JVM threads project code-name.
  • There were no changes required in JVM to implement the Lambda expressions in Java 1.8, which is implemented using “InvokeDynamic” instruction introduced in Java 7.
  • HTTP/2 is binary(instead of text-based), fully multiplexed and uses header compression and gRPC is based on HTTP/2. Additional information gathered”: Google’s SPDY is the precursor of HTTP/2.
  • Vast majority of the docker images are based on Alpine Linux, which in turn is based on Busybox.
  • There is a JVM running in the chip of a credit card as well.
  • The definition of the pipeline should be in the application source code(like Jenkins 2 declarative pipeline) and the actual automation code should be non-editable outside the application source code.