Event Sourcing

The fundamental idea of Event Sourcing is that of ensuring every change to the state of an application is captured in an event object, and that these event objects are themselves stored in the sequence they were applied for the same lifetime as the application state itself.

Event Sourcing is an architectural pattern.

https://martinfowler.com/eaaDev/EventSourcing.html

http://eventuate.io/whyeventsourcing.html

Shared by @joubin on Tue Jul 18 2017

TTL, Redis

Gets the Time-To-Live for a key (that has a timeout) in Redis.

Use the following commands:

TTL {key_name} - will return seconds

PTTL {key_name} - will return milliseconds

https://redis.io/commands/ttl

https://redis.io/commands/pttl

Shared by @joubin on Tue Sep 12 2017

Powershell - Execution Modes

Set-ExecutionPolicy Unrestricted

There are 4 different execution modes:

  1. Restricted
  2. All Signed
  3. Remote Signed
  4. Unrestricted

Note: There is a corresponding Get-ExecutionPolicy command to output the current execution mode.

https://www.howtogeek.com/106273/how-to-allow-the-execution-of-powershell-scripts-on-windows-7/

Shared by @joubin on Fri Aug 11 2017

Organizational Unit, provides hierarchy in Active Directory

Active Directory allows administrators to create a hierarchy within a domain that meets the needs of their organization.

The object class of choice for building these hierarchies is the class organizationalUnit, a general-purpose container that can be used to group most other object classes together for administrative purposes.

An organizational unit in Active Directory is analogous to a directory in the file system; it is a container that can hold other objects.

https://technet.microsoft.com/en-us/library/cc978003.aspx

Shared by @joubin on Fri Sep 15 2017

Lighthouse, A web page auditing tool

Lighthouse is an open-source, automated tool for improving the quality of web pages.

You can run it against any web page, public or requiring authentication.

It has audits for performance, accessibility, progressive web apps, and more.

You can run Lighthouse:

  1. A Chrome Extension
  2. From the command line
  3. A Node module

Chrome (version 60) has a new Audits panel, powered by Lighthouse.

https://developers.google.com/web/tools/lighthouse/

Shared by @joubin on Fri Sep 22 2017

Albedo

Albedo is the fraction of solar energy reflected from the Earth back into space.

It is a measure of the reflectivity of the earth's surface.

https://en.wikipedia.org/wiki/Albedo

Shared by @joubin on Tue Sep 19 2017

Lint

Lint is a Unix utility that flags some suspicious and non-portable constructs (likely to be bugs) in C language source code.

Generically, a lint or linter is any tool that flags suspicious usage in software written in any computer language.

The term lint-like behavior is sometimes applied to the process of flagging suspicious language usage.

Lint-like tools generally perform static analysis of source code.

https://en.wikipedia.org/wiki/Lint_(software)

Shared by @joubin on Tue Sep 19 2017

Windows Subsystem for Linux (WSL)

The Windows Subsystem for Linux (WSL) is a new Windows 10 feature that enables you to run native Linux command-line tools directly on Windows, alongside your traditional Windows desktop and modern store apps.

WSL provides an application called Bash.exe that, when started, opens a Windows console running the Bash shell.

WSL cannot run Linux apps. WSL is a tool aimed at enabling users who need them to run Bash and core Linux command-line tools on Windows.

WSL does not aim to support GUI desktops or applications (e.g. Gnome, KDE, etc.)

https://msdn.microsoft.com/en-us/commandline/wsl/faq

Shared by @joubin on Tue Sep 19 2017

MITM (Man-In-The-Middle)

An MITM attack is a form of eavesdropping where communication between two users is monitored and modified by an unauthorized party.

The attacker actively eavesdrops by intercepting a public key message exchange and retransmits the message while replacing the requested key with his own.

https://en.wikipedia.org/wiki/Man-in-the-middle_attack

MITM attack is also known as:

  • Bucket-brigade attack
  • Fire brigade attack
  • Monkey-in-the-middle attack
  • Session Hijacking
  • TCP Hijacking
  • TCP Session Hijacking

https://image.slidesharecdn.com/networksecurity-maninthemiddlemitmattacks-131207221715-phpapp02/95/network-security-man-in-the-middle-mitm-attacks-5-638.jpg?cb=1386456781

https://image.slidesharecdn.com/networksecurity-maninthemiddlemitmattacks-131207221715-phpapp02/95/network-security-man-in-the-middle-mitm-attacks-6-638.jpg?cb=1386456781

https://www.slideshare.net/ravikumarpurbey/network-security-man-in-the-middle-mitm-attacks

Shared by @joubin on Tue Sep 12 2017

Code Behavior-Preserving while Transforming/Refactoring

Martin Fowler: Refactoring is a controlled technique for improving the design of an existing code base. Its essence is applying a series of small behavior-preserving transformations.

The controlled technique involves code structures to provide the techniques to insure the behavior of the piece of software is retained while transforming code.

Unit testing and testing harnesses are a major part of providing techniques to auto-test the transformed code.

https://stackoverflow.com/questions/1025844/what-is-refactoring-and-what-is-only-modifying-code

Shared by @joubin on Wed Aug 23 2017

Nuget.Config settings file

NuGet behavior is controlled by settings in NuGet.Config files.

NuGet.Config is an XML file containing a top-level <configuration> node, which then contains the section elements described in this topic. Each section then contains zero or more <add> elements with key and value attributes.

With Visual Studio 2017+ and NuGet 4.0+, the machine-wide NuGet.Config is now located at %ProgramFiles(x86)%\NuGet\Config\ to improve security in multi-user scenarios.

https://docs.microsoft.com/en-us/nuget/schema/nuget-config-file

Shared by @joubin on Tue Aug 22 2017

Coco Framework

The Coco Framework is an open-source system that enables high-scale, confidential blockchain networks.

Coco achieves this by designing specifically for confidential consortiums, where nodes and actors are explicitly declared and controlled. Based on these requirements, Coco presents an alternative approach to ledger construction, giving enterprises the scalability, distributed governance and enhanced confidentiality they need without sacrificing the inherent security and immutability they expect.

https://azure.microsoft.com/en-us/blog/announcing-microsoft-s-coco-framework-for-enterprise-blockchain-networks/

Shared by @joubin on Thu Aug 10 2017

Garbage Collection - Managing the heap

The garbage collector is a tool for managing the heap.

You allocate to the stack when you’re defining things in a local scope where you know exactly the memory block size you need, such as primitive data types, arrays of a set size, etc.

The stack is a self-managing memory store that you don’t have to worry about – it’s super fast at allocating and clearing memory all by itself.

For other memory allocations, such as objects, buffers, strings, or global variables, you allocate to the heap.

Compared to the stack, the heap is not self-managing. Memory allocated to the heap will sit there throughout the duration of the program and can change state at any point in time as you manually allocate/deallocate to it. 

https://dev.to/thecodeboss/programming-concepts-garbage-collection

Shared by @joubin on Fri Jun 09 2017

Twilio

A SaaS company:

  • Programmable SMS: An API to exchange text and picture messages.
  • Programmable Voice: An API and intelligent services to build the exact call experience you want with just a few lines of code.
  • Elastic SIP Trunking: Local carrier connectivity

https://www.twilio.com/

Shared by @joubin on Thu Aug 03 2017

Big-O Cheat sheet

Asymptotic Notations are languages that allow us to analyze an algorithm’s running time by identifying its behavior as the input size for the algorithm increases. This is also known as an algorithm’s growth rate.

http://bigocheatsheet.com/

https://www.khanacademy.org/computing/computer-science/algorithms









Shared by @joubin on Wed Jun 07 2017

Http Status Code 407 - Proxy Authentication Required

The HTTP 407 Proxy Authentication Required client error status response code indicates that the request has not been applied because it lacks valid authentication credentials for a proxy server that is between the browser and the server that can access the requested resource.

This status is sent with a Proxy-Authenticate header that contains information on how to authorize correctly.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/407

Shared by @joubin on Wed Apr 05 2017

OData - Querying Data

$filter: The expression specified with $filter is evaluated for each resource in the collection, and only items where the expression evaluates to true are included in the response.

serviceRoot/People?$filter=FirstName eq 'Scott'

$orderby: The $orderby system query option allows clients to request resources in either ascending order using asc or descending order using desc.

serviceRoot/People('scottketchum')/Trips?$orderby=EndsAt desc

$count: The $count system query option allows clients to request a count of the matching resources included with the resources in the response.

serviceRoot/People/$count

$select: The $select system query option allows the clients to requests a limited set of properties for each entity

serviceRoot/Airports?$select=Name, IcaoCode

$top & $skip: The $top system query option requests the number of items in the queried collection to be included in the result. The $skip query option requests the number of items in the queried collection that are to be skipped and not included in the result.

serviceRoot/People?$top=2

$expand: The $expand system query option specifies the related resources to be included in line with retrieved resources.

serviceRoot/People('keithpinckney')?$expand=Friends

http://www.odata.org/getting-started/basic-tutorial

Shared by @joubin on Fri Jun 23 2017

Test Driven Development

http://anthonysciamanna.com/2017/06/18/tdd-is-not-a-testing-practice.html

  • faster feedback loop for developers
  • The benefits of TDD and the near instantaneous feedback cycles it produces are addictive and extremely valuable.
  • Many benefits exist beyond software design, the creation of unit tests, and the executable documentation that unit tests serve as.
  • It is essential that safe learning environments are created so that developers can learn and practice without feeling like it will only interfere with their ability to “ship features faster”.
  • Often people believe that the primary justification for practicing TDD is the creation of unit tests. This illustrates the most common misunderstanding of TDD: that TDD is a testing practice.
  • When practicing TDD, a high quality unit test suite is a secondary benefit. It can even be considered a side-effect of the practice.
  • TDD requires developers to learn evolutionary software design techniques and how to incrementally develop features.
  • TDD often facilitates developer collaboration. When combined with pair programming, in a practice called Ping Pong Pair Programming, TDD creates a powerful workflow, opportunities for team collaboration, and helps create a culture of mentoring on development teams. It does this by creating extremely short feedback cycles within the pairing session, ideal for mentoring developers.

Shared by @joubin on Wed Jun 21 2017

Blockchain-Based Digital ID Network, for refugees

Accenture, Microsoft Team Up on Blockchain-Based Digital ID Network

Blockchain, first developed as a public ledger of all transactions in the digital currency bitcoin, is increasingly being used to securely track data in other fields.

"Without an identity you can't access education, financial services, healthcare, you name it. You are disenfranchised and marginalized from society," David Treat, a managing director in Accenture's financial services practice, said in an interview.

"Having a digital identity is a basic human right."

https://www.nytimes.com/reuters/2017/06/19/business/19reuters-microsoft-accenture-digitalid.html

Shared by @joubin on Wed Jun 21 2017

Residual Sum of Squares

RSS: Residual Sum of Squares

It is a measure of the discrepancy between the data and an estimation model.

A small RSS indicates a tight fit of the model to the data. It is used as an optimality criterion in parameter selection and model selection.

RSS is the sum of the squares of residuals (deviations predicted from actual empirical values of data).

In statistics and optimization, errors and residuals are two closely related and easily confused measures of the deviation of an observed value of an element of a statistical sample from its "theoretical value".

Residual of an observed value is the difference between the observed value and the estimated value of the quantity of interest.

https://en.wikipedia.org/wiki/Errors_and_residuals

https://en.wikipedia.org/wiki/Residual_sum_of_squares

Shared by @joubin on Sat Jun 10 2017