Showing posts with label UUID. Show all posts
Showing posts with label UUID. Show all posts

Pipi Nestspace update - what I learned this week

Mike's Notes

The experiments continue, with progress slow but steady, and with a lot of new stuff learned.

Ongoing test results at the end. This one seems to be working without error.

😎😎😎😎

Update 19/04/2026

  • Nestspace /9cc/ passed all critical tests
  • The next job is to add the System Engine (sys) to nestspace /9cc/ and test it.
  • Then add a Nestspace Engine (nst) inside the System Engine (sys) to enable Pipi to build, configure, and repair nestspaces on demand, so that Pipi can then deploy itself to production and also create archives of itself.
Update 18/05/2025
  • Create a NEST mapping
  • Add Application.cfc to /9cc/
  • Add nest_boxlang.cfm, nest_cfml_engine.cfm, nest_java.cfm, nest_os.cfm to /9cc/

Update 27/05/2026

Nest Engine (nst) renamed as Nestspace Engine (nst)

Resources

References

  • Reference

Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

2705/2026

Pipi Nestspace update - what I learned this week

By: Mike Peters
On a Sandy Beach: 15/04/2026

Mike is the inventor and architect of Pipi and the founder of Ajabbi.

Problem

Last week, I created Pipi Nestspace, a container that uses the standard root directory convention to host Pipi.

  1. The problem I discovered was that a standard deployment was not working across multiple CFML Engine environments on various operating systems.
    • Adobe ColdFusion Server 11+
    • Lucee
    • BoxLang
  2. Pipi (robot version) is required to manipulate enterprise applications.
  3. Mission Control requires a website
  4. Some of the configuration files were outside the webroot.
    • Application.cfc (1), (2)

Solution

  • Install side by side in <pipi nest>/pipi/
    • <user account>/ (none, one, or many)
    • <pipi instance-n>/ (one or many)
  • <nestspace>/pipi/<pipi instance>/www/
    • mission-control/
  • Create CFML server mappings where a Pipi Instance is the only user.
    • data/
    • pipi/
    • work/

Database support

Adobe ColdFusion, Lucee, and BoxLang are all built on the Java Virtual Machine (JVM). This means they can technically connect to any relational database that provides a JDBC (Java Database Connectivity) driver

Pipi Core example (Windows)

/9cc/ (Nestspace)

  • Application.cfc
  • nest_boxlang.cfm
  • nest_cfml_engine.cfm
  • nest_java.cfm
  • nest_os.cfm
  • nest_probe.cfm
  • data/
    • pipi_data.cfm
    • couchbase/
    • db2/
    • derby/
    • h2/
    • hsqldb/
    • informix/
    • mariadb/
    • msaccess/
      • 32/
      • 64/
    • mssql/
    • mysql/
    • oracle/
    • pg/
      • 18/
    • sqllite/
    • sybase/
    • virtuoso/
  • pipi/
      • Application.cfc (1) - Nest settings
      • pipi_nest.cfm
      • loki-01/ (instance)
        • ...
      • loki-02/ (instance)
        • Application.cfc (2) - Account settings
        • pipi_account.cfm
        • pip/
          • Application.cfc (3) - Version settings
          • pipi_version.cfm
          • i18n/
          • log/
          • pipi_<pipi version>.txt
          • sys/
            • Application.cfc (4) - System settings
            • pipi_system.cfm
          • temp/
          • template/
            • _include/
            • _layout/
              • _log/
        • www/
          • mission-control/
            • Application.cfc (4) - Website settings
    • work/
      • pipi_work.cfm
      • backup/
      • install/
      • project/

    Pipi Enterprise example (Windows)

    /9ae/ (Nestspace)

    • Application.cfc
    • nest_boxlang.cfm
    • nest_cfml_engine.cfm
    • nest_java.cfm
    • nest_os.cfm
    • nest_probe.cfm
    • data/
      • pipi_data.cfm
      • couchbase/
      • db2/
      • derby/
      • h2/
      • hsqldb/
      • informix/
      • mariadb/
      • msaccess/
        • 32/
        • 64/
      • mssql/
      • mysql/
      • oracle/
      • pg/
        • 18/
      • sqllite/
      • sybase/
      • virtuoso/
    • pipi/
      • Application.cfc (1) - Nest settings
      • pipi_nest.cfm
      • ajabbi/ (Account Name)
        • Application.cfc (2) - Account settings
        • pipi_account.cfm
        • com/
        • dat/
        • lib/
        • log/
        • plu/
        • tmp/
        • www/
          • learn.ajabbi.com/
            • Application.cfc (4) - Website settings
          • wiki.ajabbi.com/
            • Application.cfc (4) - Website settings
      • dis-01/ (Instance)
      • ...
      • dis-04/ (Instance)
        • Application.cfc (2) - Account settings
        • pipi_account.cfm
        • pip/
          • Application.cfc (3) - Version settings
          • pipi_version.,cfm
          • i18n/
          • log/
          • pipi_<pipi version>.txt
          • sys/
            • Application.cfc (4) - System settings
            • pipi_system.,cfm
          • temp/
          • template/
            • _include/
            • _layout/
              • _log/
        • www/
          • mission-control/
            • Application.cfc (4) - Website settings
    • work/
      • pipi_work.cfm
      • backup/
        • pipi_9ae_ajabbi_pip_www_learn.ajabbi.com_20260411.zip
      • install/
      • project/

    Automated installs

    • Adobe ColdFusion Server 11+: Many XML files store the server configuration. Any pipi instance doing Pipi Nest installs could rewrite these XML files.
    • Lucee: Yet to discover
    • BoxLang: Yet to discover

    Production obfuscation

    Pipi will obfuscate these names using UUIDs and other dastardly methods on public-facing production websites. But the names are very useful for UI labels and visualisation.


    DevOps log (edit)

    A record of work done.

    NZ DateTime Action Object Status
    2026-04-15 14:15 Edit server.xml Mappings Success
    2026-04-15 14:20 Create Mapping Docs Complete
    2026-04-15 14:26 Rename Named instances Success
    2026-04-15 14:48 Create Mission Control Success
    2026-04-15 17:24 Test Application.cfc (1) - Pipi Nest settings Success
    2026-04-15 17:40 Test pipi_nest.cfm Success
    2026-04-16 13:22 Test pipi_account.cfm Success
    2026-04-16 13:54 Test Application.cfc (2) - Pipi Account settings
    Not inheriting Application.cfc (1)
    Success
    2026-04-16 15:09 Test Application.cfc (3) - Version settings Success
    2026-04-16 15:40 Test pipi_version.cfm Success
    2026-04-16 16:02 Test Application.cfc (4) - Pipi Website settings Success
    2026-04-16 16:03 Test pipi_website.cfm Success
    2026-04-16 19:09 Create Named instance website Success
    2026-04-16 19:44 Test pipi_nest_probe.cfm Success
    2026-04-16 20:28 Test java.lang.System class - get properties Success
    2026-04-17 11:23 Test Add a 32-bit datasource using the CFML Engine CFIDE Success
    2026-04-17 11:56 Test Add a 64-bit datasource using the CFML Engine CFIDE Success
    2026-04-17 13:33 Test Add a datasource using Coldfusion Administrator API
    • couchbase/
    • db2/
    • derby/
    • h2/
    • hsqldb/
    • informix/
    • mariadb/
    • msaccess/
    • mssql/
    • mysql/
    • oracle/
    • pg/
    • sqllite/
    • sybase/
    • virtuoso/
    Success
    2026-04-19 18:00 Demo 9cc/ live demo to Open Research Group Success

    TIL: 8 versions of UUID and when to use them

    Mike's Notes

    A recent issue of Architecture Notes referenced a blog article about the different types of UUID.

    Resources

    References

    • Reference

    Repository

    • Home > Ajabbi Research > Library > Subscriptions > Architecture Notes
    • Home > Handbook > 

    Last Updated

    17/11/2025

    TIL: 8 versions of UUID and when to use them

    By Nicole Tietz
    Technically a Blog: 29/06/2024

    "Nicole dives into the world of UUIDs, explaining the eight different versions and their specific use cases. Here's a quick guide to help you choose the right UUID version for your needs. They also touch on the deprecated and specialized versions, highlighting that v7 should be used over v1 and v6 when possible, and v2 is reserved for specific, often secretive, security uses." - Architecture Notes

    About a month ago [1}, I was onboarding a friend into one of my side project codebases and she asked me why I was using a particular type of UUID. I'd heard about this type while working on that project, and it's really neat. So instead of hogging that knowledge for just us, here it is: some good uses for different versions of UUID.

    What are the different versions?

    Usually when we have multiple numbered versions, the higher numbers are newer and presumed to be better. In contrast, there are 8 UUID versions (v1 through v8) which are different and all defined in the standard.
    Here, I'll provide some explanation of what they are at a high level, linking to the specific section of the RFC in case you want more details.

    • UUID Version 1 (v1) is generated from timestamp, monotonic counter, and a MAC address.
    • UUID Version 2 (v2) is reserved for security IDs with no known details [2].
    • UUID Version 3 (v3) is generated from MD5 hashes of some data you provide. The RFC suggests DNS and URLs among the candidates for data.
    • UUID Version 4 (v4) is generated from entirely random data. This is probably what most people think of and run into with UUIDs.
    • UUID Version 5 (v5) is generated from SHA1 hahes of some data you proivde. As with v3, the RFC suggests DNS or URLs as candidates.
    • UUID Version 6 (v6) is generated from timestamp, monotonic counter, and a MAC address. These are the same data as Version 1, but they change the order so that sorting them will sort by creation time.
    • UUID Version 7 (v7) is generated from a timestamp and random data.
    • UUID Version 8 (v8) is entirely custom (besides the required version/variant fields that all versions contain).

    When should you use them?

    With eight different versions, which should you use? There are a few common use cases that dictate which you should use, and some have been replaced by others.

    You'll usually be picking between two of them: v4 or v7. There are also some occasions to pick v5 or v8.

    • Use v4 when you just want a random ID. This is a good default choice.
    • Use v7 if you're using the ID in a context where you want to be able to sort. For example, consider using v7 if you are using UUIDs as database keys.
    • v5 or v8 are used if you have your own data you want in the UUID, but generally, you will know if you need it.

    What about the other ones?

    Per the RFC, v7 improves on v1 and v6 and should be used over those if possible. So you usually won't want v1 or v6. If you do want one of those, you can use v6.

    • v2 is reserved for unspecified security things. If you are using these, you probably can't tell me or anyone else about it, and you're probably not reading this post to figure out more about them.
    • v3 is superceded by v5, which uses a stronger hash. This one is one where you probably know if you need it.

    References

    1. Despite the title of "today I learned," I did learn this over a month ago. In between, that month contained a lot of sickness and low energy, and I'm finally getting back into a cadence of having energy for some extra writing or extra coding.
    2. These were used in a project that either failed or is extremely secretive. I can't find much information about it and the official page's copyright notice was last updated in 2020.

    Universally Unique Identifier (UUID)

    Mike's Notes

    UUIDs are handy.

    Resources

    References

    • Reference

    Repository

    • Home > Ajabbi Research > Library >
    • Home > Handbook > 

    Last Updated

    17/05/2025

    Universally Unique Identifier (UUID)

    By: 
    Wikipedia: 2024

    "A Universally Unique Identifier (UUID) is a 128-bit label used for information in computer systems. The term Globally Unique Identifier (GUID) is also used, mostly in Microsoft systems. [1][2]

    When generated according to the standard methods, UUIDs are, for practical purposes, unique. Their uniqueness does not depend on a central registration authority or coordination between the parties generating them, unlike most other numbering schemes. While the probability that a UUID will be duplicated is not zero, it is generally considered close enough to zero to be negligible.[3][4]

    Thus, anyone can create a UUID and use it to identify something with near certainty that the identifier does not duplicatAe one that has already been, or will be, created to identify something else. Information labeled with UUIDs by independent parties can therefore be later combined into a single database or transmitted on the same channel, with a negligible probability of duplication.

    Adoption of UUIDs is widespread, with many computing platforms providing support for generating them and for parsing their textual representation." - Wikipedia

    Versions

    The OSF DCE variant defines eight "versions" in the standard, and each version may be more appropriate than the others in specific use cases.

    • Versions 1 and 6 (date-time and MAC address)
    • Version 2 (date-time and MAC address, DCE security version)
    • Versions 3 and 5 (namespace name-based)
    • Version 4 (random)
    • Version 7 (timestamp, counter and random)
    • Version 8 (custom)

    Collisions

    For example, the number of random version-4 UUIDs which need to be generated in order to have a 50% probability of at least one collision is 2.71 quintillion, computed as follows:



    This number is equivalent to generating 1 billion UUIDs per second for about 86 years. A file containing this many UUIDs, at 16 bytes per  UUID, would be about 45 exabytes.

    The smallest number of version-4 UUIDs which must be generated for the probability of finding a collision to be p is approximated by the formula

    Thus, the probability to find a duplicate within 103 trillion version-4 UUIDs is one in a billion.

    Issues

    Collisions have occurred when manufacturers assign a default UUID to a product, such as a motherboard, and then fail to over-write the default UUID later in the manufacturing process. For example, UUID 03000200-0400-0500-0006-000700080009 occurs on many different units of Gigabyte-branded motherboards.