IPv4 Datagram.

Network-layer packet is referred to as a datagram.


The key fields in the IPv4 datagram are the following:

* Version number (4 bits) : these bits determine how to interpret rest of the datagram. This article deals with IPv4 datagrams.
* Header Length (4 bits) : because option field is variable length, this field determines where in the IP datagram the data field actually begins. Most IP datagrams do not contain options, so typical IP datagram has a 20 byte header.
* Type of Service (8 bits) : the type of service (TOS) bits were included in the IPv4 header to allow different types of IP dtagrams (for example: datagrams particularly requiring low delay, high throughput, or reliability) to be distinguished from each other.
* Datagram length (16 bits) : This is total length of the IP datagram (header plus data), measured in bytes. Since this field is 16 bits long, the theoretical maximum size of the IP datagram is 65,535 bytes. However, datagrams are rarely larger than 1500 bytes.
* Identifier (16 bits), Flags (3 bits), Fragmentation offset (13 bits) : used to handle IP Datagram Fragmentation.
* Time-to-live (8 bits) : The time-to-live (TTL) field is included to ensure that datagrams do not circulate forever (due to, for example, a long-lived routing loop) in the network. This field is decremented by one each time the datagram is processed by a router. If the TTL field reaches 0, the datagram must be dropped.
* Upper layer protocol (8 bits) : The value of this field indicates the specific transport layer prtocol to which the data portion of this IP datagram should be passed (for example: 6 means TCP and 17 indicates that the data is passed to UDP).
* Header checksum (16 bits) : The header checksum aids a router in detecting bit errors in a received IP datagram.
* Source IP address (32 bits).
* Destination IP address (32 bits).
* Options (variable, if any) : The options fields allow an IP header to be extended.
* Data (variable) : transport-layer segment (TCP or UDP) to be delivered to the destination. Or other data, such as ICMP messages.

IPv4 datagram format

------------ 32 bits -----------
Source IP address...............
Destination IP address..........
Options (if any)................

Header Checksum.

The header checksum aids a router in detecting bit errors in a received IP datagram. The header checksum is computed by treating each 2 bytes in the header as number (with the checksum bytes set to 0), and summing these numbers using 1's complement arithmetic, with adding carry bits. It is also stored in the header checksum field. A router computes the header checksum for each received IP datagram and detects an error condition if the checksum carried in the datagram header does not equal the computed checksum. Routers typically discard datagram for which an error has been detected. Note that checksum must be recalculated and stored again at each router, as the TTL field, and possibly the options field as well, may change.

IP datagram fragmentation.

Different link-layer protocols use different packet sizes. Network-layer packets, also called datagrams, are encapsulated in these link layer packets. Because network-layer communication involves more than one hop, datagrams sometimes need to be 'repackaged' into two or more datagrams to be sent into outgoing links. Each of these smaller datagrams is called 'fragment'.

Fragments need to be reassembled before they reach the transport layer at the destination. Indeed, both TCP and UDP are expecting to receive complete, unfragmented segments from the network layer.

for example:

Fragments with black and white. photo fragments_bb_wt_zps2f5ae510.png

Source: [3].

Object Dependencies.

Dependencies between Objects are when change in one Object affects other.

Tangled, mismanaged dependencies lead to errors and problems.

Do we want code too tightly coupled? No.

But we want Objects to Cooperate, as closely as needed by Both parties, possibly as defined by Contract which can be redefined later to follow changes.

Critic welcome and requested.

Dynamic Form.

States and Strategies in Space in a Shape form a Form.

This form can change shape, state(s), or strategy(ies) at runtime.

It is 'Dynamic Form', thus 'Kata Form' in this context.

Military Approach.

i do not wish this blog to be too Militarized to be for Civilian Use.

i can still work for Military and Anti-Terror if needed, but not as part of this project branch.


Object Tracker.

Object Tracker.

Stitie Space can be filled with evenly distributed, unmoving Object Trackers.

Such Trackers are objects responsible for tracking and distributing coordinates of other moving objects.

Expansion Process.

In case of Object Tracker malfunctioning or space being expanded, any object can be sent in it's place, then with proper state and strategy it can transform into Object Tracker. Or state and strategy can be overwritten.

Moving Object Short Range Communication.

Moving Objects communicate with each other by sending directional signals, to coordinates... if they are moving quick, such signal can target few coordinates. Such objects can communicate with each other (as long as they are near the same Object Tracker) as well as with Object Tracker near which it is.

Moving Object Long Range Communication.

Long range communication passess through two or more Object Trackers, which can communicate with each other and Moving Objects that are in their range.

Moving Objects can wait at tracker for long range transmission.

Difference and Common Points of Stitie Machine and Stitie Space.

Stitie Space is 3D space made of Stitie Machines.

if something requires Stitie Space, it depends on (also requires) Stitie Machines.

How Stitie Machine can help to code Dynamically?

Dynamic programming is about dividing solution into problems then solving them by globally optimal solution (not neccessarily in order of arrival).

While greedy programming is about solving problems step by step, using locally optimal solution, not considering globally optimal solution at a given moment.

'Naive' example:

1. Let's divide problems on: most optimal cpu-speed wise, memory-size wise, and target-function wise.

Functions can be written as character String using mathematical function notation,

for example: String s1 is "f(x1)+f(x2)".

Target function is (any) function, complex or not, that describes how optimal solution is given it's variables (x1 and x2 in above case). These variables can represent available resources, for example amount of liquid in vial and energy used.

2. Stitie space is 3D space. Let's place problems by these keys on 3-axes.

On first axis let's sort problems by cpu usage.

On second axis let's sort problems by memory usage.

On thrid axis user can have problems sorted by single target function, or assigned to their target functions and sorted alphabetically.

3. According to available resources (memory, speed, other) let's take problems to solve from an appropriate axes (coordinates) and position on such.

See also: Greedy Algorithms, Dynamic Programming.


Assault and Attack definitions.

def. in Military terms: the stage of close combat in an attack.

on strategic map, it's final stage before opponents engage.

def. assault range is range from which attack can be made. for example: 'Capturing object is in 2-hop distance assault range'.

def. 2-hop distance attack is attack made from range of 2 hops.

def. Attack on distance is entering optimal distance for engagement.

def. Attack on tempo is engaging at optimal moment.

def. Attack on Form is attacking with optimal Form. for example: 'Attack on Form succesful. We have optimal Form advantage. Currently we are winning.'. Please note that Form consists of Form(s). Existence of Empty Form is for now confirmed, but perhaps this might change later after i think.

See also: How to map The Internet in 3D model, More about 'Ola AH' Language (background), Initiative and Counterinitiative, Shapes, Forms, 108 Number & Strategic Botnet, Automated, Strategic Internet Defenses and Computer Games, Hacking, Imagination and 3D Visualization.

(thank You for all who support this post, in fact i didn't expect it. i'll probably code core - wars like game to test such ideas and attacks).

Processes and their states in Operating Systems.

Reason for Concurrency.

Modern operating systems allow few programs to be run at the same time, for example to play sound while capturing data from keyboard.


Running program is called process. Two copies of running program are two separate processes.

Process state.

Process changes it's state during execution.

Possible states:

* new - process was created,
* active - instructions are executed,
* waiting - process waits for certain event (for example: end of input/output operation),
* ready - process waits for processor,
* zombie - process ended it's execution, but didn't release it's resources yet.
* stopped - process ended it's execution and released it's resources.

Process composition, technical details.

Process is more than just code section (often also called 'text section'). It's also program counter and processor register values. Often process also contains so called 'process stack', that stores temporary data such as procedure arguments, return addresses, temporary variables, and 'data section' containing global variable data.

Source: [12], UNIX man pages.

Operating System Components.

Modern Operating Systems (most notably) consist of:

- kernel,
- security (device access, memory, operating system internal protections, processes access, cpu , probably more ...),
- process management & concurrency,
- memory management,
- file system & management,
- input/output management & device drivers,
- internetworking,
- graphic user interfaces,
- more.

Different processess are responsible for these functions, they cooperate and communicate to achieve all these goals, and should provide simple interface to a user.

Source: [12].

Can single Hacker know everything about Computer Sciences?

Perhaps if he or she is Buddha :)

Information Technology is vast knowledge field, but everyone can add and fill a role in a team.


Device Drivers and Operating Systems.

Modern Computer System. photo modern_c_s_zps679718bc.png

Modern Computer System.

Modern, universal computer system consists of central processor unit (CPU) and few device drivers for attached hardware, joined with common bus enabling them to contact shared memory.

Each of device drivers is responsible for given type of hardware (for example: hard disks, sound cards, displays, ...). They abstract over it, enabling users to communicate with multiple types of hardware, for differences are handled by device drivers.

There can be 'plugin drivers' for different type of hardware, that cooperate with device driver that user processes talk with. Processes are running programs, so device drivers are programs that let users 'talk with' and control hardware.

Central processing unit and device drivers can work concurrently (simultaneously) competing for resources such as processor cycles and memory space and access time. Memory driver has to provide for ordered, synchronized access to shared memory.

Source: [12].

See also: Hardware, Operating System and Computer System (for everyone).

Link Layer Addressing (MAC addresses)

Internet node's link-layer adapter (network card) has a link-layer address. A link-layer address is called a LAN address, a physical address, or a MAC address.

It's different from IP address, in fact Address Resolution Protocol (ARP) provides a mechanism to translate IP addresses to link-layer addresses.


Computer toxicity and Martial Arts.

Computers are toxic, they poison mind... Antitoxin can be Martial Arts. i cannot live without them.

i suggest not spending too much time before computer, nor having no internet protections such as firewall/antivirus.

unless you have friends that support and protects you.

(because of hacking and subliminal messages).

Hackers shine as old people.

Judging from my experience hackers shine as old people. Young talented hacker is a myth or a spoof (someone who covers and works for real hacker).


How to implement Firewall.

Plug it in into the Internet protocol stack inside operating system kernel.

See also: Firewalls and Intrusion Detection Systems.

Initiative and Counterinitiative.

Initiative is striking first.

Counterinitiative is being ready and fast, to intercept attack with initiative.

Strategic hacking should include such counter / assaults.


Why use counterinitiative, even if it seems more expensive, harder?

one does not believe in a 'Preventional Warfare', against Terror, or other...

i think that 'reacting to threats' is more proper means of protecting 'People & Peace'.


What is router and how it can work.

Routers perform forwarding function in the network layer - the actual transfer of packets from a router's incoming links to the appropriate outgoing links.

Each time an end system (internet node) wants to send a packet, it stamps the packet with the address of the destination end system and then pops the packet into the network.

As a packet is transmitted from source to destination, it passes through a series of routers.

Each of these routers uses the packet's destination address to forward the packet. Specifically, each router has a forwarding table that maps (assigns) destination addresses to link interfaces. Forwarding table is set by the routing protocols.

Suppose that all destination addresses are 32 bits (which just happens to be the length of the destination address in an IP datagram). A naive implementation of the forwarding table would have one entry for every possible destination address. Since there are more than 4 billion possible addresses, this option would require a humongous forwarding table. That's why modern routers use longest prefix matching, range matching, or other solutions.

Routers use input and output queues and switching fabric, each with it's throughput. If more packets arrive at queue, than router is able to handle, packet(s) are lost. One of reasons why packets do not arrive to destination in the Internet is loss at a router. They can be retransmitted.

Source: [3].

See also: The Network Layer (of the five-layer Internet protocol stack).


Matrix (over body K).

Matrix (over body K) is a rectangular table:

        | a1,1  a1,2  ...  a1,n   |
        |                                   |
        | a2,1  a2,2  ...  a2,n   |
A = |                                   |
        | ...       ...     ...   ...       |
        |                                   |
        | am,1  am,2  ...am,n  |

where ai,j belongs to K, 1 ≤ i ≤ m, 1 ≤ j ≤ n.

We'll say that A is matrix in format m x n, i.e. matrix with m rows and n columns.

Set of all such matrices we'll note as Km,n.


Multiplication by number.

for u that belongs to K, A that belongs to Km,n => B = u * A occurs: bi,j = u * ai,j.


for A,B that belong to Km,n => C = A + B occurs: ci,j = ai,j + bi,j.


for A that belongs to Km,n => B = AT occurs: bj,i = ai,j

Element-wise absolute value.

for A that belongs to Cm,n => B = |A| occurs: bi,j = |ai,j|

(more will be added soon perhaps).


If A belongs to Km,l and B belongs to Kl,n then:

C = A * B belonging to Km,n


ci,j = ∑ ai,k*bk,j, 1 ≤ i ≤ m, 1 ≤ j ≤ n.

Distinct Matrix Formats.

n x n - Square Matrix Kn,n,
m x 1 - one column Matrix called vector. Km,1 = Km.

Source: [1].

See also: Groups & Bodies, Equations Matrix.


Importance of Security Standards.

It's said "you won't get fired if you use proven standard".

Standards are important for they instill trust in customers.

It's easy to view a webpage and just check if there's 'Lock Icon' or https:// word in the page's address.

If not, is page secure? Perhaps yes... perhaps there is 'custom encryption method', but i would not trust it to instill security in customers.

Standards provide for many ways of increasing security. When we know what we are provided, we can work with such tools and enhance them.

On the other hand: is page encrypted with standarized methods totally secure? No, but still more yes than no... for it's hard to break. Given enough of time and means, any page can be hacked (for example: see 'birthday attack' in this post).


Dictionaries (for beginners).

Dictionary in Computer Sciences is Set with operations:

Construct: creates empty set.
Search: searches for element in a set.
Insert: inserts element into a set.
Delete: removes element from a set.

Dictionary associates values with keys. This means that key value can be used to reach value associated with key.

Source: [19].


More about 'Ola AH' Language (background).

'Ola AH' programming language will provide syntax to Stitie Machine (and related) semantics.

There are Forms & Shapes in 3D Space in that language, that can be used to solve certain problems, and that is language's semantics (meaning).

Together, Syntax and Semantics form a programming language.

I've relied on Martial Arts Philosophy (Strike fast, 'F=m*a2') when designing Stitie Machine and related tools.

I know there's connection between languages and automatons (finite state automatons, stack machines, turing machines), that there are three types of grammars (regular expressions, context-free grammars, and context-sensitive grammars) and languages related to such. For more details see: [7].

I've heard that Kata Forms in Martial Arts are Martial Arts language.

Perhaps in 'Ola AH' language there can be Kata Forms?

I've idea that makes sense to me, for now at least.... all moves from 'Form A' to all related and intermediary Forms and back can consist of single Kata... In other words set of maneuvers and form transitions tied together for certain purpose might be Kata Form in context of programming languages.

Also... no programming language grammar should be completely unrelated to spoken language grammar (polish in this case, perhaps english as well later).


Compiler is computer program which reads code written in one language and translates it to equal program in another language.

Important part of such translation process is reporting errors in source code to user.

There are thousands or more source languages, from traditional such as C, Pascal or Java, to specialized ones.

Target languages are varied as well. Target language might be any programming language or machine language of any computer, from microprocessors to supercomputers.

Source: [16].


Stitie Machine and Programmatic Cooperation.

Perhaps it's worth to cooperate with friends to such extent as to let them run software on your computer, phone or other internet device.

Common purposes can be realized more skilfully if lead is excellent.

This involves Trust of course, and security measures are neccessary.

Not least thing to consider is law.... for phone/internet device owners are also responsible for their device's behavior.

Stitie Machine can allow people to let others execute code at their phones and other devices, especially true when 'Ola AH' programming language will be realized.

The Network Layer (of the five-layer Internet protocol stack).

The Network Layer is responsible for moving information packets from source device to destination device, possibly with more than one internet device on the path to traverse through.

There are two main functions to the network layer: forwarding and routing.

Forwarding involves transfer of a (data) packet from an incoming link to an outgoing link within a single router.

Routing involves all of a network's routers, whose collective interactions via routing protocols determine the paths that packets take on their trips from source to destination. Broadcast and Multicast communications also fall under routing (it's a puzzle of finding proper route from source to destinations).

These are realized using three components:

IP Protocol responsible for forwarding and addressing in the Internet.

the Internet routing protocols responsible for the ways the routers communicate and coordinate.

Internet Control Message Protocol (ICMP) used by hosts and routers to communicate netwrok-layer information to each other.

Network Layer. photo nl_zpse93b3142.jpg

Network Layer.

Routers, and Internet Devices arranged in a Network of Networks (Internet).

On image above, individual networks are surrounded with ellipses. Red dots represent wireless routers/switches, red rectangles represent wirelessly connected internet devices. Green rectangles represent wired routers, light slate blue rectangles represent internet devices connected by wires. Lines represent connections.

Routers and packet switches are devices that transfer a (data) packet from input link (connection) to output link, according to the data in the (data) packet. That is, the (data) packets contain information about their destination, not only 'data' to carry to destination. Just like postal parcel consists of envelope with written address, not only cargo.

The difference between packet switches and routers is such that packet switches work for connecting two devices directly (they work on link layer, thus in one hop), while routers enable long-range communication, even if (data) packet has to go via many of such (they work on the Network Layer which allows two distant - with distance measured by number of hops - internet devices to communicate).

A protocol (in the Networking context) defines the format and the order of messages exchanged between two or more communicating entities, as well as the actions taken on the transmission and/or receipt of a message or other event.

Source: [3].

See also: Internet seen by technical eyes (for computer enthusiasts), Unicast, Broadcast and Multicast routing, What is router and how it can work.


Block Cipher Modes.

'Block cipher mode' is another name for an encryption function built using a block cipher.

Source: [8].

See also: Block Ciphers.

Output feedback cipher mode.

Output feedback mode, or OFB is encryption different from applying block cipher to the message blocks in that the message itself is never used as an input to the block cipher. Instead, the block cipher is used to generate a pseudorandom stream of bytes (called the key stream), which in turn is XORed with the plaintext to generate the ciphertext.

According to experts, it's extremely useful, but requires careful use. Abuse of stream cipher, mostly in form of reusing a nonce, can very easily lead to very insecure system.

OFB is defined by:

K0 = IV

Ki = E(K, Ki-1) for i = 1,...,k

Ci = Pi XOR Ki


IV is Initialization Vector,
E is Encryption Function,
Ci is i-th ciphertext block,
Pi is i-th plaintext block.

The IV value has to be random, or it can be gegenerated from a nonce (nonce is number used only once. it can be counted, computed, or taken from image or movie or any other data).

Decryption is exactly the same operation as encryption.

No padding is neccessary.

Using the same IV for two different messages, and having one of the plaintexts (happens more often than it seems, for example: with mailing lists) makes for very trivial to decrypt the other ciphertext.

There's risk of collision attacks on such ciphers, between the key stream blocks and the initial starting points.

Source: [8].

See also: Cryptographic Attacks, Block Ciphers.

Dynamic Programming.

In context of writing computer programs, dynamic programming means solving problems using computer that require runtime input and modification of machine's behavior.

In context of designing algorithms, dynamic programming is a method for solving complex problems by breaking them down into simpler subproblems.

Source: [4], Wikipedia: Dynamic programming language, Wikipedia: Dynamic Progarmming (in context of algorithms design), my own programming experience.


Complex Number Trigonometric Form.

complex number form:

(a,b) = a + i * b.

is most commonly used. often though it's convenient to use trigonometric form, which is consequence of interpreting complex number (a,b) as a point on plane (so called 'complex plane') with coordinates a and b.

precisely, taking:

|z| = sqrt(a2+b2) ; where sqrt is square root function.

and angle φ such as:

sin φ = b/|z|, cos φ = a/|z|,

we get:

z = |z|(cos φ + i sin φ).

this is trigonometric form. real number |z| we call modulus of complex number z, and φ it's argument, φ = arg z.

if z ≠ 0 and we assume that φ belongs to [0, 2*Pi) then trigonometric form is unambiguously set. we can write then: φ = Arg z.

Source: [1].

See also: Complex Numbers Body.

Complex Numbers Body.

def. Complex numbers body is ordered pairs set:

C := R x R = { (a,b) : a,b belongs to R }

with addition and multiplication operations defined as:

(a,b) + (c,d) = (a + c, b + d),
(a,b) * (c,d) = (a * c - b * d, a * d + b * c),

for any a,b,c,d belonging to R (R is Real numbers set).

let's note that addition's neutral element is (0,0).

let's note that multiplication's neutral element is (1,0).

let's note that opposite element to (a,b) is -(a,b) = (-a,-b).

let's note that inverse element to (a,b) ≠ (0,0) is:

(a,b)-1 = (a/(a2+b2),-b/(a2+b2)).

let's define multiplication of complex number by real number as:

c * (a,b) = (a,b) * c = (c * a, c * b).

let's note that with this we have:

(a,b) = a * (1,0) + b * (0,1).

at last, identifying complex number (a,0) with real number a, and adding additional notation:

i := (0,1).

we get:

(a,b) = a + i*b.

a = Rz is real part and b = Iz imaginary part of complex number.

i itself we call imaginary unit.

let's note that:

i2 = (-1,0) = -1.

Source: [1].

See also: Groups & Bodies.


Greedy Algorithms.

Algorithms used to solve optimalization problems usually are about making decisions in sequence - at each step there's one decision to select from many possible choices.

Dynamic programming for many such problems is an overkill; there are simpler and more effective algorithms.

Greedy algorithm performs always the task that seems at a given moment most beneficial. It selects locally optimal decision in hope of it leading to most effective solution globally.

Source: [4].


One time codes, ciphers and online security.

Modern computer systems rely on cryptography (ciphers) for security.

Information passed is encrypted, or disguised, so it is harder to overhear or change by unwanted people. If someone collects passwords, or even encrypted data, it can be used as a clue for following attacks.

But any cipher can be broken in finite amount of time, sometimes more efficiently, sometimes less. At any rate, stroke of 'luck' can result in uncovering cryptographic key.

What about passwords or pins? They are part of security as well. Problem is that with too simple password, account can be attacked with brute-force methods (trying all possible permutations of characters, letters or digits or other, sometimes used in combinations with dictionary words and character sequences). With too 'clever' passwords, people tend to forget and use aids such as stickers on monitors, and this opens avenue for other kind of attacks.

To rely only on cryptography and internet security measures is foolishness, for any account can be penetrated (hacked) and information stolen.

Modern banks use one-time passwords to add extra security to users' accounts. It's simple, part of cryptographic key is stored in the computer system, part of it is password, and part of it is one time code*. In that case even if everything online gets stolen, attackers still do not know whole picture. They can attack system trying all possible combinations, but i bet that after 3 tries (more or less) someone raises quiet alarm and 'police' gets called.

There are other possible security measures, but i think that real security should rely not only on information or cipher, but also on something physical, such as USB key, authentication code generator (such as in online games), or card with one-time codes, each used only once... perhaps with few failing tries allowed, or something similar.

Summary: do not rely on online only security. i would not rely on phone authenticators either, for they can be hacked. Any device can be if it's connected.

* For example: these short parts of the key are added to the ciphertext, transformed according to the data contained in key, so we have whole ciphertext. If we have whole ciphertext, we can use rest of the key (+algorithm) to decrypt rest of ciphertext into plaintext. (Algorithm + key = full recipe to encrypt or decrypt. Knowing algorithm we can attack the key, but there's a trapdoor function usually).


'Ola AH' language for Web Service integration.

One of uses for 'Ola AH' language is web services integration.

With 3D map of the Internet, we can model web services and connections between them.

We can analyze concurrency and other properties of the whole system's performance.

See also: Stitie Virtual Machine & Ola AH language, Stitie Machine 1.2 'Satellite', Stitie Machine 1.1 'Sunsail', Stitie Machine 1.0 'Core', Stitie Machine.

Stitie Virtual Machine & Ola AH Programming Language.

Object graph can be in-memory model of a running program, so Stitie Space, 3D graph of Stitie Machine objects can be considered as such as well.

Each Stitie Machine in this graph consists of state & of code (strategy). Strategies can have access to state - for example: via proper 'awareness interface' - so Stitie Machines are objects.... Stitie Machines can send messages to each other, so can communicate and collaborate.

In theory, one could adopt this model and programming style, create graph of object somehow then let the objects do their common task(s).

How to create graph of objects for stitie space? It can be done via programmatic interface, for now static and troublesome for use.... but someday it will be better syntax, easier to use, even at runtime.

Writing stitie machine based language interpreter is not so hard after all, in fact we have it planned.... but not too prematurely, we do not want users to get used to immature syntax, then force them to switch their thinking habits later without true reason. First we need to develop stitie machine, a language semantics and paradigm (Spaceful Programming Paradigm?) as a Java and Google Go libraries, perhaps.

This language will be called and named: 'Ola AH' ( AH stands for: AH Mantra for speech , but also for: 'Anti-hack'. Just as there can be F-18 fighter plane or F-18 AA, 'Anti-Air' version.... that there can be also language version focused on countering hacking. Author of this language strives for it to be true State-of-the-Art in that respect.)

Perhaps we'll develop other development tools as well.

See also: Virtual Machine, Stitie Machine 1.2 'Satellite', Stitie Machine 1.1 'Sunsail', Stitie Machine 1.0 'Core', Stitie Machine, Properties of Stitie Machine, 'AH' mode of 'Ola AH' Programming Language.


Example of stitie machine object graph construction in Java:

(it's very troublesome for now, we need 'Ola AH' language for terse, beautiful, sexy and elegant syntax. hopefully not without sense of humour.)

public class SunsailTest {

  public static void main(String[] args) {
    // create few Stitie Machines
    StitieMachineSpaceImpl space = new StitieMachineSpaceImpl(10);

    // get one of stitie machines
    StitieMachine am = space.getStitieMachineAtAbsolutePosition(5, 5, 5);
    // send commandchain
    LinkedList nsmDirs = new LinkedList();

    State nsm1state = new HashMapStateImpl();
    nsm1state.addObjectProperty("storedNumber", 1);
    CommandChain ccForNsm1 = new CommandChainImpl(nsm1state, null, null);
    Tail moveLeftToNsm1Tail = new Tail(Direction.MIDDLE_LEFT_MIDDLE,

    State nsm2state = new HashMapStateImpl();
    nsm2state.addObjectProperty("storedNumber", 2);
    CommandChain ccForNsm2 = new CommandChainImpl(nsm2state, null, null);
    Tail moveRightToNsm2Tail = new Tail(Direction.MIDDLE_RIGHT_MIDDLE,

    Collection tailsAtAm = new LinkedList();

    CommandChain ccForAm = new CommandChainImpl(new HashMapStateImpl(),
      new AdditionStrategy(nsmDirs), Boolean.TRUE, Boolean.TRUE,
      Boolean.FALSE, tailsAtAm);

    // execute evaluation

    // query result
    int result = (Integer) am.getState().getObjectProperty(

    // print to console

final class AdditionStrategy implements Strategy, StitieMachineCoreAware {
  private Sunsail s;
  public final Collection operands;

  public AdditionStrategy(final Collection operands) {
    this.operands = operands;

  public void execute() {
    if (s == null) {
      throw new IllegalStateException();

    int r = 0;
    for (final Direction direction : operands) {
      final State state = s.getState(direction);
      r += (Integer) state.getObjectProperty("storedNumber");

    final State resultState = s.getState();
    resultState.addObjectProperty("expressionValue", r);

  public void setStitieMachineCore(StitieMachineCore smc) {
    this.s = new Sunsail(smc);

  public State getState() {
    return s.getState();

  public void setState(State state) {

(this code is also automated test for Stitie Machine 1.1 'Sunsail', a part of 'Sunsail' code, in outdated version).


Form 4x3.

First form (and also a shape) for analysis is 'Form 4x3', consisting of 'four nodes three times', connected properly.

Form 4x3 (transparent, white text). photo form4x3_zps5ff0e47a.png

Form 4x3.

Nodes in this form are enumerated unambiguously.

Each of names consists of circle's number and node's number in its circle.

The nodes are connected horizontally, vertically, diagonally, and 'circularly', as shown on image above.

Perhaps we should also enumerate connections unambiguously, or intersections. Or we can use 'automatic' names for each of the intersections, being constructed from all node names adjacient to a given intersection.


Information in this form can travel in 1-3 hops from any source to any destination.

There are many ways for information to travel, so it can be considered secure, and robust (resistant to failures).

There are no 'central point' that is part of shortest path to (almost) every node, thus effectively a traffic bottleneck.

Perhaps cost of connection links is high, but that's one of approaches... security, robustness and speed comes at cost.

It can be easily extended by adding nodes at (not neccessarily all) intersections (but not only there it makes sense), but that changes its qualities somehow.

See also: Shapes & Forms.

Spanning Trees.

Spanning trees are directed, oriented graphs without cycles that connect all nodes.

(article stub, will be clarified, edited and elaborated).

* (need to add more about spanning trees and perhaps algorithms associated with such).
* Spanning tree in 3D is core of multicast/broadcast routing using stitie machine.
* Does it matter at all if tree or graph is in 3D or not? it does not in itself, but starts to when we consider costs and minimum spanning trees in the Internet.
* If we consider stitie cube topology (see also: 'little oranger hell' in gallery to the left side of this blog), then it starts to matter anyway (that it is in 3D).

Broadcast routing.

In broadcast routing, the network layer provides a service of delivering a (data) packet sent from a source node to all other nodes in the network.


Perhaps the most straightforward way to accomplish broadcast communication is for the sending node to send a separate copy of the packet to each destination. Flaw of this approach is such that addresses have to be known beforehand.

Uncontrolled packet flooding.

Another straightforward way to broadcasting is packet flooding: source node sends one packet to each of it's neighbours, then each of the neighbours makes copies of it and repeats the process.

It has flaws as well.

If network (node graph) has cycles, then one or more copies of each broadcast packet will cycle indifinitely.

When node is connected to more than two other nodes it will create and forward multiple copies of the broadcast packet, each of which will create multiple copies of itself, and so on. This broadcast storm, resulting from the endless multiplication of broadcast packets, would eventually result in so many broadcast packets that the network would be rendered useless (processing of packets at each node or internet device uses some of its resources).

Controlled packet flooding.

The key to avoiding a broadcast storm is for a node to judiciously chooste when to flood a packet, and when not.

In practice, this can be done in one of several ways.

In sequence-number-controlled flooding, a source node puts its address (or other unique identifier) as well as broadcast sequence number into a broadcast packet. Each node maitains a list of the source address and sequence number of each broadcast packet it has already received, duplicated and forwarded. When a node receives a broadcast packet, it first checks whether the packet is in the list, then either drops or proceeds with duplication and forwarding (broadcasting) to it's neighbors (except the node from which the packet has just been received).

A second approach to controlled flooding is known as reverse path forwarding (RPF), also sometimes referred to as reverse path broadcast (RPB). When a router receives abroadcast packet with a source address, it transmits the packet on all of its outgoing links (except the one which it was received) only if the packet arrived on the link that is on its own shortest unicast path back to the source. Otherwise, the router simply discards the packet. Note that RPF does not use unicast routing to actually deliver a packet to a destination, nor does it require that a router know the complete shortest path from itself to the source. RPF needs only know the next neighbor on its unicast shortest path to the sender - it uses this neighbor's identity only to determine whether or not to flood a received broadcast packet.

Spanning-Tree Broadcast.

While sequence-number-controlled flooding and RPF avoid broadcast storms, they do not completely avoid the transmission of redundant bradcast packets. With spanning tree - a tree that contains each and every node in a graph - we can broadcast without such unneccessary redundancy in packet transmission. Thus, another approach to providing broadcast is for the network nodes to fist construct a spanning tree.

Source: [3].

See also: Broadcast and Multicast routing.


Multicast adressing.

Multicast service is such that in which a multicast packet is delivered to only a subset of network nodes.

Multicast groups.

To determine which internet devices (hosts) receive data packets, we use idea of 'multicast groups', instead of set of adresses. Such list could be too large and overshadow amount of data transmitted in comparison.

IGMP & multicast routing (white & transparent). photo multicast_t_zps812147b6.png

IGMP & multicast routing.

ID stands for 'internet device' (gray ones are part of multicast groups).

There are two components of network-layer multicast in the Internet: IGMP and multicast routing protocol.


IGMP operates between internet device (host) and its attached edge router to inform router about hosts and multicast groups they belong to.

There are only three message types in IGMP:

membership_query: sent by a router to all hosts on an attached interface to determine the set of all multicast groups that have joined.

membership_report: message sent by hosts as an answer to membership_query.

leave_group: message sent by hosts to router to indicate that they leave the group. it's optional message.

More precisely, the router infers that a host is no longer in the multicast group if it no longer responds to a periodic membership_query message with the given group address.

Multicast routing.

Multicast routing protocol is used to find spanning trees, that are used to send messages to all edge router nodes that lead to hosts subscribing to multicast groups.

There are two approaches differing whether a single group-shared tree is used to distribute the traffic for all senders in the group, or whether a source specific routing tree is constructed for each individual sender.

Building group-shared spanning tree.

Edge routers send (via unicast) join messages addressed to the center node. A join message is forwarded using unicast routing toward the center unitl it either arrives at a router that already belongs to the multicast tree or arrives at the center. All routers along the path that the join message follows will then forward received multicast packets to the edge router that initiated the multicast join. A critical question for center-based tree multicast routing is the process used to select the center. (more to come perhaps).

Multicast routing using a source-based tree.

While group-shared tree multicast routing constructs a single, shared routing tree to route packets from all senders, the second approach constructs a multicast routing tree for each source in the multicast group.

Source: [3].

See also: Broadcast and Multicast routing.


In computer networking, unicast transmission is the sending of messages to a single network destination identified by a unique address.

Source: Wikipedia.

See also: Broadcast and Multicast routing.


Software Prototype & Proof of Concept.

As part of commercial software production, project's risks are managed.

If we detect risks and possible errors earlier, the costs of failure are lesser.

One of risk mitigation tools is 'prototyping', or quick creation of software that behaves similarly, but perhaps not perfectly as customer ordered.

It uses the same software components as final product, so it is a 'proof of concept' that this approach (architecture, selection of technologies, methodologies and tools) might work.


Stitie Machine Maneuvers.

TODO: prepare as independent package.
(for now it's only unprepared for use fragment of Stitie Processor Model technology's hidden branch).

Click to download.

We could use 'raw' strategies to move state and strategy, but we prefer to abstract such operations.

It's easier to think in abstract terms like this:
* move state/strategy from coords (x1, x2, x3) by (n1, n2, n3),
* then execute reporting strategy at destination node.
* then execute key re-generation strategy at destination node.
* then initiate new 4 maneuvers from this node, for example sending public keys to appropriate nodes.
* and so on....

of course maneuvers open more possibilities than just movement, as any strategy can be implemented as maneuver or it's part. this lets us to think using common simple words, instead of talking constantly in obscure machine-like language. that is, we get to think in terms of 'maneuvers' performed in space, instead of pieces of code to execute at one-dimensional address and registers.

we can think strategically instead of thinking like programmers.

it's faster, less code and errors once we get used to this.

maneuvers are easy to understand when named properly and used in collections / iterations, and we get to reap benefits of higher-level languages, being able to react faster to world's changes, because programmer's time is precious commodity.

'Cascade' can be used this way too: by initiating a maneuver(s) at destination node that send state(s) and/or strategy(-ies), as part of maneuver, complex or not. This also can happen many times. Let's remember that maneuvers are realized as strategies.

Maneuvers enable functionality similar to MATEN mnemonic's and more.

Once they are ready, can be used with Stitie Machine Sunsail in any application using this (computational) engine.

Stitie Machine 1.2 'Satellite'.

Stitie Machine 1.2.1 Alpha 0-0-18 'Satellite' implementation is available.

(RC stands for: 'Release Candidate', Alpha means 'feature incomplete', Beta means 'feature complete, to be tested').

ideas to be included:
- Stitie Machine's Communication Shortcuts,
- Code's Elements' Visualization & Kabbalah,
- Stite Machine movement, Peer-2-Peer Network Communications & Stitie Space services for Client Objects,
- Atomic & concurrently isolated 'put multiple values into state' & 'lock state for thread(s)' functionalities; it's useful in many possible cases, for example when 'running Strategy as a thread' for keeping critical sections atomic & concurrently accessible - so process' 'instruction pointer' can move in 3D over object's graph in a visuospatial way without deadlock in case of moving in a graph's cycle or with a Recursion.


Stitie Machine movement is included in the code already (in a SitieSpaceImpl class, as it should be) - just need to properly care for concurrency, and update router's coordinates if it's not done (automatically or not) already - need to check.

Update of 29.06.2017:

Planned redesign & reimplementation of Stitie Space 1.2 package for robustness (fault-tolerance), scalability, speed, agility (more of well-thought convenience methods) & code quality.

This has uses in 'Ola AH' Programming Language project.

This is more of a focus on the distributed programming, but whole space with objects & services is still runnable on a single computer system. Minimal hardware costs, memory costs & cpu-time costs will increase slightly, but scalability costs, ease of use, code efficiency, code quality & robustness should improve very much.

Planning to use JUnit tests as well.

Design changes:
1. Container Objects holding multiple objects at a single machine. Concurrent & Delegating.
2. Both StitieMachines & Objects will have qualified names (Space hierarchy in case of recursion of spaces within spaces will be included, as well as an optional parent container object & 'this' object). Threads as well (with full qualified name of Machine within Space hierarchy, optional parent container object, 'this' object name & thread name).
3. Planning to include 'name-loction' service available via space or independently to aware objects. Should be replicateable for robustness, scalability & speed.
4. 'name-location' service should manage & make avialable data about:
- machines names,
- object instances names,
- coordinates of machines, object instances or 'moving to coordinates' information with destination coordiantes included,
5. Thread location & access service considered, exact details not soldified yet - perhaps will change. So far idea is that threads will be attached to objects & executed within machines. Threads should be located by machine name, optional parent container object name, contained object name that holds a thread & a thread name. Thread migration between objects should be handled manually by a programmer. When object moves to another machine however, it will carry it's threads with itself to another machine. Thread communication will be handled manually, but can use this service.
6. Space should contain data about reserved coordinates for moving machines, both corridors for movement as well as 'teleport' movement reservations. Should be well thought about concurrency issues. Events about machine or object arriving at destination should be considered as well - probably these will be delegated to 'event executor' service.
7. We should design & implement the 'routing service', replicated for robustness, speed & scalability, available via space or independently.
8. Separate replicated 'Space State' and make it available to Space-Handling Services with proper permission, as for example: Space Access services, Mindful Imaging Service, Security Service (giving encrypted & signed permissions, leased for a given time or until completion of the task - whichever comes earlier), Routing Service, Route-Reservation Service (should use routing service as 'subcontractor'), Name-Location Service, Event Execution Service, Thread Location & Access Service, ... ; Exact amount, names & responsibilities of services around replicated 'Space-State' is to be considered yet. The values in space-state array should be of abstract type: ObjectAtCoordinates; Concrete classes of this type should be: StitieMachine, EmptySpace (Without Router, Space & Strategy), ReservedSpace (Without Router, Space & Strategy), PhysicalObstacle (Without Router, Space & Strategy).
9. Consider making Stitie Space Service a Facade Design Pattern for Space handling services ease of use, that will delegate to separated & independently secured services around 'Space-State'. Objects should be able to be clients of either these low-level services for security & speed, or clients of this facade for ease of use. Direct access to space-state should be denied to them, available only via services around 'Space-State' or via this facade.


Hacking without Programming?

Many young hackers can just download 'remote rootkit' of someone's making and type in IP address and perhaps port to take over someone's computer.

But.... it's only illusion, for in truth someone else has control over hacking that way.

True hackers have to develop their own tools.

Be True.

Quantum Internet.

The dream of many a security expert, it's a concept that uses the laws of quantum mechanics to create perfectly secure online communication. The idea is that measuring a characteristic of a quantum object—like a photon—always changes it, so attempts to intercept messages screws them up and renders them incomprehensible.

Problem is, most quantum internet solutions only allow messages to be sent between two locations, and not routed elsewhere. That's because working out where it's supposed to be routed changes the state of the quantum message and turns it into junk.


Bit String, Bit Pattern and Bit Image.

Any data can be represented using bits (bit is smallest unit of information, 0 or 1).

'bit pattern' is a sequence of bits, in a memory, a communications channel or other device. It is of predetermined length.

'bit string' is similar to 'bit pattern', except it is of arbitrary length.

in context of this blog (at least), 'image' is similar to 'bit string' or 'bit pattern', but it is more or less accurate representation of something. for example: complete disk image, incomplete disk image (unimportant bits omitted), compressed picture image (with or without loss of quality).

What is 'Botnet' ?

In a book i could find a 'definition':

'... network of thousands of similarly compromiesd devices, collectively known as botnet ...'

Source: [3],

but i'll call it more elegantly: 'Hacking Network'.

i think it can be managed (or even commanded) skillfully, ethically, and legally... instead of relying on size by broadcasting viruses against 'computer users' will.

Broadcast and Multicast routing.

In context of the Internet, in broadcast routing, the network layer provides a service of delivering a packet sent from a source node to all other nodes in the network.

Multicast routing enables a single source node to send a copy of a packet to a subset of the other network nodes.

Source: [3],

These methods can be combined, for example multicasting information to selected nodes, then broadcasting from each.

Stitie Machine (idea or implementation, core or newer) can be used to multicast skillfully. Selectively and orderly, with option for cascading and more. Cascading happens when strategy reaches node and is used to start new process of sending state(s) and/or strategy(-ies), perhaps cascading again (cascading can happen any number of times) from one or from multiple destination nodes.

See also: Unicast, Multicast Adressing, Broadcast routing.