Sunday, June 28, 2020

I glanced at the mm-ADT docs and started searching

All the links do is allowed me to focus on the mm-ADT docs more. I glanced at them the other day and looked for key words and started digging.

https://www.youtube.com/watch?v=iOEHgBL_GmA,
(Phil Trelford - Write your own compiler in 24 hours - Bristech Conference 2015)
https://www.youtube.com/watch?v=OjaAToVkoTw
(How to build a virtual machine)

I am also having to spend a lot of time with the data structures book.

https://www.youtube.com/watch?v=eF9qWbuQLuw
(Parser and Lexer — How to Create a Compiler part 1/5 — Converting text into an Abstract Syntax Tree)


In the Science of Functional Programming, section on AST.

Here are the mm-ADT docs:
https://www.mm-adt.org/vm/

Edit::
https://www.meetup.com/Category-Theory/events/vmkkjrybckbkb/
(a presentation about mm-ADT is here.)

Thursday, June 25, 2020

Plan of Action for the Crypto Chip

I switched to the default configuration. (see script)

https://www.youtube.com/watch?v=_MjjF211BM8
(Product Showcase: SparkFun Cryptographic Co-Processor Breakout)

Cryptographic Co-Processor ATECC508A (Qwiic) Hookup Guide :: Example 1: Configuration
https://learn.sparkfun.com/tutorials/cryptographic-co-processor-atecc508a-qwiic-hookup-guide/example-1-configuration

Cryptographic Co-Processor ATECC508A (Qwiic) Hookup Guide :: Example 2: Sign
https://learn.sparkfun.com/tutorials/cryptographic-co-processor-atecc508a-qwiic-hookup-guide/example-2-sign

From this I derived a plan of action for the crypto chip and the computer.

(asymmetric cryptography (public key cryptography))
https://searchsecurity.techtarget.com/definition/asymmetric-cryptography
"If the public key is used for encryption, then the related private key is used for decryption; if the private key is used for encryption, then the related public key is used for decryption."

Read first:
https://www.hudatutorials.com/java/basics/java-arrays/java-byte-array

Read second:
https://www.geeksforgeeks.org/python-convert-bytearray-to-hexadecimal-string/

How to turn the crank:
https://www.youtube.com/watch?v=ovuM5Zmn7X0
(How to Encrypt Files and Strings with Python? (Part 1 - Symmetric Encryption) - Paul Mahon)

https://www.youtube.com/watch?v=bd5nsMscPo0
(How to Encrypt a File with Python? (Part 2 - Asymmetric Encryption) - Paul Mahon)

I am not sure how to deal with the list of hex values. the values for the public key look something like:
https://www.includehelp.com/tips/c/how-to-initialize-array-elements-with-hexadecimal-values-in-c.aspx

Maybe a list of hex values in Python is the way to do it??
https://codereview.stackexchange.com/questions/147160/efficiently-creating-a-list-of-formatted-hex-values













collections in Java (inspired by current mm-ADT murmurings)

 murmur:
https://twitter.com/_mmadt/status/1275888408137695233


Collections in Java:

https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html

actually it is Scala collection.

https://github.com/mm-adt/vm/search?q=Collection&unscoped_q=Collection

However, isn't Scala based on the Java VM?

here is some documentation that I am finding...

https://www.tutorialspoint.com/scala/scala_collections.htm

https://docs.scala-lang.org/overviews/collections-2.13/introduction.html

remember to see an earlier blog post where you examined concurrent programming.

Extra:

running with mmadt vm with sbt:
https://www.scala-sbt.org/1.x/docs/Running.html

Wednesday, June 17, 2020

Can I have multiple LoRa connections at the same frequency, but with a different password?

In "LoRa Mesh Communication without Infrastructure: The Meshtastic Project (ESP32, BLE, GPS)"[1] Andreas Spiess mentions that with a password more than one channel can operate in the same area.

Perhaps this means that I can have multiple LoRa connections operating at the same frequency, but with different passwords.



[1] https://www.youtube.com/watch?v=TY6m6fS8bxU&t=5m20s

I may want to explore if this also means that I can have different cryptographic keys and the same frequency.


 

Sunday, June 14, 2020

websocket musings

https://websocket.org/quantum.html  (about the advantages of websockets)
https://socket.io/get-started/chat/ (getting started with websockets)

After much belaboring, you cannot use socket.io with a websockets server. I suppose you could use it with  socket.io server if you wanted?

This means that the server in this example will not work with my websockets client on the esp32:
https://www.youtube.com/watch?v=rxzOqP9YwmM
(Build a Real Time Chat App With Node.js And Socket.io)
See :
https://socket.io/docs/#What-Socket-IO-is-not

For a websockets server, check out:


https://medium.com/hackernoon/implementing-a-websocket-server-with-node-js-d9b78ec5ffa8

which gives a great reference:
https://www.ably.io/concepts/websockets

+ establish http connection (handshake?)
+ upgrade to websocket connection
 + keep opne



Thoughts of the early morning - June 14th

A computer can only really represent integers (0 and 1). [1]

Algorithms perform arithmetic operations with integers. [2]

Floating point numbers are expressed with integers. [3]

A ring has to deal with integers (I must have misread this).

[1] personal memory
[2] Discrete Mathematics and Its Applications with Combinatorics and Its Applications, 7th Ed, Kenneth Rosen
[3] http://cstl-csm.semo.edu/xzhang/Class%20Folder/CS280/Workbook_HTML/FLOATING_tut.htm

Saturday, June 6, 2020

Equivalence Between Assembly Language and Modelling Computation Musings

I was looking at Chapter 12, Modelling Computation, in Discrete Mathematics and Its Applications, 7th ed. by Kenneth Rosen and wondered what is was good for. I thought to search for "relationship between turing machines and assembly" [duckduckgo] and "how to know whether your programming language is turing complete" [Google].

What would the assembly language equivalents of the operations on the original Turing machine be?

https://stackoverflow.com/questions/3537715/what-would-the-assembly-language-equivalents-of-the-operations-on-the-original-t#3537799

Criteria to determine if it's a programming language

https://stackoverflow.com/questions/4850022/criteria-to-determine-if-its-a-programming-language

The first link reminded me of op-codes that I studied in the ATECC508A Datasheet.

https://www.sparkfun.com/products/15573
: Documents > DataSheet #>
https://cdn.sparkfun.com/assets/learn_tutorials/1/0/0/3/Microchip_ATECC508A_Datasheet.pdf

See opcodes in Pete Lewis' ATECC_X08A Sparkfun Library:  https://github.com/sparkfun/SparkFun_ATECCX08a_Arduino_Library/blob/master/src/SparkFun_ATECCX08a_Arduino_Library.h

The more complete [and complex] version is here: https://github.com/MicrochipTech/cryptoauthlib
(should compile down to machine readable op-codes like pete lewis' library?) [check notes]
looks like it:
https://github.com/MicrochipTech/cryptoauthlib/blob/102d7fcfa2cc1671fddb814bf8079756f70f7109/lib/atca_command.h
(a python wrapper library is here: https://github.com/MicrochipTech/cryptoauthtools)

*compare studies to mmlang. where does all of the SRT algebra fit in? Is it low level enough to be considered an op-code, or is it built upon the types (which are expressed as op-codes??).

I think an analog might be in the linux kernel, and I think I found a link one time by digging deep into an ardunio library. (by looking for what unint8_t was defined as?)
Anyway, a lot of header files for the linux kernel are here:
/usr/src/linux-headers-4.15.0-99/include/linux

Thursday, June 4, 2020

Algorithms, Data Structures, Effective Unit Testing, and Design Patterns

There is a lot of fun stuff out there.

https://www.youtube.com/watch?v=09_LlHjoEiY
[Algorithms Course - Graph Theory Tutorial from a Google Engineer]
https://github.com/williamfiset/Algorithms
----------------------------------------------------------------------------------------------------
Side Note:
Brad is the best FFT teacher ever!!
https://www.youtube.com/watch?v=gZNm7L96pfY&list=PL3BE932B7751329E7
-----------------------------------------------------------------------------------------------------
[Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer]
https://github.com/williamfiset/data-structures

edit::
Algorithms Course - Graph Theory Tutorial from a Google Engineer
(https://www.youtube.com/watch?v=09_LlHjoEiY)
[Design and Analysis of Algorithms - MIT 6.046J]
[Effective Unit Testing by Eliotte Rusty Harold]
[Design Patterns Video Tutorial] --- Object Oriented

Functional Programming, Procedural Programming, Assembly ...:P

https://blog.ploeh.dk/2017/10/04/from-design-patterns-to-category-theory/
[Blog Post] -- Focuses on Functional Programming

Guy with goofy hair talking about unit tests vs. integration tests:
https://www.youtube.com/watch?v=vqAaMVoKz1c


Wednesday, June 3, 2020

Category Theory and Group Theory

A question about the relationship between category theory and group theory led to https://en.wikipedia.org/wiki/Groupoid_object .

A query of groupoid ring led to:

Generalized ring-groupoids
https://pdfs.semanticscholar.org/ad50/bcc3bf7f4dfb1ebb5319644d2f43408c01fd.pdf

" Groupoids.In this section, we introduce the elementary concepts of the groupoid theory.  Then, it is given some recalls about the concept of ring-groupoid which is a ring object in the category of groupoids."

"In other words, a generalized ring groupoid is a generalized ring object in the category of groupoids"


and

https://en.wikipedia.org/wiki/%E2%88%9E-groupoid (infinity groupoid)


Do all of the axioms of a groupoid object apply to string ring theory??