• Still Connected; and anyone here?

    From Scott Street@1:266/625.1 to All on Wed Jun 4 08:30:42 2025
    Greetings Everyone,

    Just wondering if NET_DEV is still connected and if anyone is still reading it. I had a couple questions come up in my development of a new BBS; which I think I have figured out (time will tell), but I wanted to know if other resources, like this forum, are still alive.

    I started out writing a tosser/packer in Python, but put that aside for a bit and began focusing on the BBS engine. Well, back to coding!

    - Scott

    ---
    * Origin: <=-[ The Digital Post ]-=> (DevPoint) (1:266/625.1)
  • From Wilfred van Velzen@2:280/464 to Scott Street on Wed Jun 4 16:30:51 2025
    Hi Scott,

    On 2025-06-04 08:30:42, you wrote to All:

    Just wondering if NET_DEV is still connected and if anyone is still reading it. I had a couple questions come up in my development of a
    new BBS; which I think I have figured out (time will tell), but I
    wanted to know if other resources, like this forum, are still alive.

    I started out writing a tosser/packer in Python, but put that aside for a bit
    and began focusing on the BBS engine. Well, back to coding!

    SEEN-BY: 4/0 90/0 93/1 103/705 105/81 106/201 124/5009 5016 128/187
    129/12
    SEEN-BY: 129/14 102 125 160 165 153/757 7715 154/10 30 110 203/0 218/700 SEEN-BY: 221/0 226/30 227/114 229/110 114 206 317 426 428 470 664 700 SEEN-BY: 229/705 240/1120 5832 261/1 220 266/75 512 618 625 630 267/152 SEEN-BY: 267/154 280/464 5003 5006 291/111 292/854 8125 301/1 310/31 SEEN-BY: 320/219 322/757 341/66 234 342/200 396/45 423/120 460/58 467/888 SEEN-BY: 633/280 712/848 770/1 900/0 102 106 902/0 19 26 26 905/0 5020/400 SEEN-BY: 5075/35
    @PATH: 266/625 512 229/426 902/26 280/464

    It gets around... ;-)

    Bye, Wilfred.

    --- FMail-lnx64 2.3.2.4-B20240523
    * Origin: FMail development HQ (2:280/464)
  • From Andrew Leary@1:320/219 to Scott Street on Wed Jun 4 11:26:50 2025
    Hello Scott!

    04 Jun 25 08:30, you wrote to all:

    Just wondering if NET_DEV is still connected and if anyone is still reading it. I had a couple questions come up in my development of a
    new BBS; which I think I have figured out (time will tell), but I
    wanted to know if other resources, like this forum, are still alive.

    I'm still here; although I haven't seen any messages here for a while before yours.

    I started out writing a tosser/packer in Python, but put that aside
    for a bit and began focusing on the BBS engine. Well, back to coding!

    I'm still working on MBSE BBS as time permits...

    Andrew

    --- GoldED+/LNX 1.1.5-b20250409
    * Origin: Phoenix BBS * phoenix.bnbbbs.net (1:320/219)
  • From Alex Galiyev@1:129/14.1 to Scott Street on Wed Jun 4 13:12:20 2025
    Hello Scott!

    Wednesday June 04 2025 08:30, you wrote to All:

    Just wondering if NET_DEV is still connected and if anyone is still
    We are here. =)

    I started out writing a tosser/packer in Python, but put that aside
    Great. Are you planning to support Squish?

    Alex

    --- GoldED+/W64-MSVC 1.1.5-b20250409
    * Origin: Glory to Ukraine! Glory to Heroes! Dump Trump! (1:129/14.1)
  • From Scott Street@1:266/625.1 to Wilfred van Velzen on Wed Jun 4 13:15:06 2025
    It gets around... ;-)

    Bye, Wilfred.

    Thanks Wilfred, good to know

    ---
    * Origin: <=-[ The Digital Post ]-=> (DevPoint) (1:266/625.1)
  • From Scott Street@1:266/625.1 to Alex Galiyev on Thu Jun 5 13:40:36 2025

    I started out writing a tosser/packer in Python, but put that aside
    Great. Are you planning to support Squish?

    Initially, just JAM. However, I write very modular code - so adding additional message base types should be /relatively/ straight forward.

    I chose JAM as I'm very familiar with it, and I've written object-oriented classes for it in several languages now. Lets see. Obj-C, Java, PHP, and now Python.

    ---
    * Origin: <=-[ The Digital Post ]-=> (DevPoint) (1:266/625.1)
  • From Alex Galiyev@1:129/14.1 to Scott Street on Fri Jun 6 03:01:51 2025
    Hello Scott!

    Thursday June 05 2025 13:40, you wrote to me:

    I chose JAM as I'm very familiar with it, and I've written
    object-oriented classes for it in several languages now. Lets see.
    Obj-C, Java, PHP, and now Python.
    Can you please describe the cons and pros between Squish and JAM? Squish seems to be stable, but only through the latest Husky SMAPI, no more corruptions and bugs. I know nothing about JAM.

    I was trying to write a squish2json converter in multiple languages (C++, Python, Go) using SMAPI for like a month and couldn't figure out SMAPI, it's weird.

    Alex

    --- GoldED+/W64-MSVC 1.1.5-b20250409
    * Origin: Glory to Ukraine! Glory to Heroes! Dump Trump! (1:129/14.1)
  • From Scott Street@1:266/625.1 to Alex Galiyev on Fri Jun 6 07:21:52 2025
    Can you please describe the cons and pros between Squish and JAM?
    Squish seems to be stable, but only through the latest Husky SMAPI,
    no more corruptions and bugs. I know nothing about JAM.

    I have little experience with Squish, but I did find the file structures for a Squish message base. Quickly, the main difference is the style of how the data gets stored, obviously right :)

    Full disclosure, I've used JAM as my primary message datastore since 1987. I was an early adoptor of RemoteAccess and switched from the Hudson message base to JAM rather quickly. Since I was soon to be on OS/2 (1.3) as my system's operating system (must have been 89, I remember going to a big computer software retailer and purchasing a box copy of OS/2) JAM solved a lot of performance and capacity issues that the Hudson message base suffered. (if you're not familiar with the Hudson message base, it is the base developed by the author of QuickBBS, that it, and later DOS bbses could use to store many areas in a single message base, corruption was common; especially for multi-line systems, as every line battled to lock, write, unlock using DOS's lackluster file locking (SHARE.EXE) system.

    JAM has three files that do the work of storing messages. .JHR - the headers, .JDT - the message text, and .JDX - the header index.

    The JDX file is all fixed records, so counting the number of records is as easy as getting the size of the file and dividing my the record size (which is 8 bytes, two ulongs (2*32 unsigned integers)

    The JHR file is the heart of the message store, the JDX can be rebuilt by reading the JHR, but not the other way around. The JHR consists of a fixed record length structure that contains all of the numeric values of the message, things like attributes, dates, and location of size of the text stored in the JDT. It also has a variable length set of fields that contain the 'strings' part of the message, like the sender and receiver names, subject, various control parts like MSGIDs, and REPLYIDs.

    The JDT file a file full of the text of the message. the JHR points to the first byte of the given message in the file and the JHR also provides the length of the text to read. think fread(file,&buffer,length) to grab the whole chunk in one go.

    There is a fourth file, the .JLR, it is optional, used by the BBS software to store last read information. It's been a number of years since any of my BBSs used, or even created this file.


    Squish, in comparision, has two files. (reading documentation here) .SQD for the message header and body, and .SQI which is an index into .SQD It appears that it was laid out like a double-linked list; where each message has a pointer to the previous and next messages. the SQI is a series of fixed record length entries, which the doc says "is used primarily for performing random access look-ups by message number."

    Thus, like JAM, Squish uses a fixed record length file as an index to find the messages in the larger header file.

    However, Squish, unlike JAM, puts all the rest of the data into a single file. The documentation says this file contains a required "frame header" that has links to the previous and next messages in the store, as well as "optional message header, control information and message body fields."



    I think the main difference between the two, is the 'difficulty' in updating it. Like editing header information, say changing the receiptant's name - which being contained in the variable length record parts means:

    JAM: add on a new header record to the JHR, update JDX record to point to new JHR, mark the old JHR invalid (deleted)

    Squish: add on new header record to SQD, also write new body text. and update SDI, mark the old header frame invalid, update the previous header with next next pointer, and update the next header with a new previous pointer.

    I suppose the difference is trivial with today's computers, but in the 80's and early 90's every byte and CPU cycle counted - especially moreso on multi-line systems like mine was. I still think that JAM is slightly superior to Squish, but I admit I know JAM a whole lot more in depth then Squish.


    I was trying to write a squish2json converter in multiple languages
    (C++, Python, Go) using SMAPI for like a month and couldn't figure
    out SMAPI, it's weird.

    SMAPI is absolute SPAGHETTI; it works but the learning curve is very steep. I would have thought that SMAPI would be a wrapper around all of the different databases it supports, but in my initial attempt to use it (many years ago) it was more of a goto place to get all the different store's API - you had to code to each store. I may have gotten it wrong, but it should have been straight forward to use. IE. call gizmo to open message base, call function in the gizmo to read and write messages, unaware of the specific store.

    In my code, being object oriented and all -- I could create a template class named "MsgBase" to which "JAMMsgBase" and "SquishMsgBase" would inherit. Thus, if the program knew how to interact with "MsgBase", it wouldn't matter if it was really a "JAMMsgBase" or a "SquishMsgBase" as that abstraction is contained in each of the implemented classes. Thus adding more messages bases "DOTMsgBase" for example, or my goal "MySQLMsgBase" or "SQLiteMsgBase"

    Do you still need that squish2json? Bet I could rip one out in a couple days if needed, in Python of course.


    Cheers,
    Scott

    ---
    * Origin: <=-[ The Digital Post ]-=> (DevPoint) (1:266/625.1)
  • From Alex Galiyev@1:129/14.1 to Scott Street on Fri Jun 6 13:15:52 2025
    Hello Scott!

    Friday June 06 2025 07:21, you wrote to me:

    Do you still need that squish2json? Bet I could rip one out in a
    couple days if needed, in Python of course.
    Yes please, I want to see how you handle SEEN-BY and Kludges separation. Python is fine.

    Alex

    --- GoldED+/W64-MSVC 1.1.5-b20250409
    * Origin: Glory to Ukraine! Glory to Heroes! Dump Trump! (1:129/14.1)