Nov. 24th 2021

Updates on the progress of this project
Post Reply
User avatar
OpenXTalkPaul
Posts: 1485
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

Nov. 24th 2021

Post by OpenXTalkPaul »

So I wanted to report some great progress, and there HAS been some winding on down the road progress, but the truth is I'm fumbling around a bit lately going in 3-4 different directions ...and now I've totes borked my internal M.2 SSDs partition tables!

@Barko had mentioned that he had to comment out my darkMode scripts because the IDE wouldn't launch with them, so I wanted to test the latest versions of my Home stack and other modified IDE files on a clean installed Xubuntu. During the process of getting Xubuntu onto a USB drive, somehow it changed the internal SSD's partition table into Linux LVM (Logical Volume Management) non partition table system, which seems to have had the effect of ruining the partition tables, my EFI boot partition is gone, and I have some small volume related to Linux LVM ? Anyway this REALLLY SUCKs! Even the volumes that were formatted as NTFS or FAT64 for cross-platform file exchange are not accessible! In GParted (because now I'm stuck in Xubuntu world) I can see one big Unknown Volume Format that I think must contain the Apple APFS, and other partitions.
But if my worst fears are true I may have just lost a whole bunch of files!

The good thing is that I had recently backed up a bunch of files on my laptop to make room for 3 installs of Xcode to try to build the engine, Googles dev stuff, JAVA, Pascal, Node, etc. An I've been doing a lot of my free time hobby work using GitHub to manage projects in the open, so most of that stuff, including OXT changes (but not my Xcode setup, small experiments, and things like that) are safely, and fairly up to date on GitHub.

The bad thing is I think I may have lost some irreplaceable personal photos, like vacation family photos, music compositions, experiments, sketches, my bookmarks, receipts, random documents I've downloaded, etc. But hey, I know what can happen when you mess around trying to build a multi-boot-setup of three or four OS'es on the same drive, this ain't my first rodeo!

I haven't reformatted the internal drive yet, I'm hoping when I get it running a newer macOS (10.13+ for APFS) again maybe it will somehow recognize that 500GB Unknown Volume and mount be able to mount the partitions?

Anyway before the Xubuntu install fiasco with my laptop I did get to test the current version of Linux OXT and it seemed pretty OK to me, on a freshly installed Xubuntu, with both of the default darkMode themes that it come with Xubuntu. No problems loading the IDE, toggled the preferences UI back and forth seemed OK. On non-mac OS, the scripts should just set things like foreground/background colors for various IDE palettes/stacks (on macOS there's a Builder extension involved too. I'm thinking perhaps he just needed to reset his preferences file, I've had to do that several times while modifying the IDE's preference file.

So what progress DID happen over the last 3+ weeks? Well lets see...

I was working on a more cross-platform "darkMode", which I've added as a IDE preference ( the cDarkMode of stack "revPreferences"). The scripts set some IDE stacks/palettes back/foreColors to Black or White to make them better suited towards that mode (ie Light Text on Dark Text Field, solid black foreground button text, etc.)

So some of these stacks aren't actually stack files on your local disk, they're generated into existence from a script, as needed. The Property Inspector for example, where we spend a lot of time, in recent versions is generated on the fly from the scripts of a script-only stack and allow for multiple instance copies of the palette to be used. This got me thinking if I could record a stacks GUI makeup, positions, styles, colors, images, etc., I can synthesize my own copy from that data, or synthesize different, separate palettes based on them and the info from the recorded stack UI description.

So then I started to look at how others have gone about doing that, serializing the stacks format, like stacks converted from HyperCard format, which is a RIFF chunk like format which seems to translate well into JSON or XML, along with a resource fork. All Mac Apps, and some files, had resource forks, as well as the Macintosh toolbox rom, where things like App ICON resources, PICT previews, or SND audio, or DLGT Dialog box or Palettes and WIND window definitions, XCMD/XFCN Foreign CODE, or whatever binary, could be stored. So this was like an inherently encapsulated format, as it should be for portability!

Looking at this problem from that angle has got me hooked onto this idea that we could abstract the GUI & it's resources away from the app engine in a portable way, create and XML tagged GUI, include Scripts/Behavior scripts included, AND have Binary64 ASCII safe encoded Resources like Icon Images, SVG Paths, Sounds, MIDI Data, everything included in the same STACK/CARD Markup Language. These files could then be parsed and brought back into existence as a STACK, perhaps even with some conversion process in the middle for parsing the stack markup in different ways for multiple different xTalk interpreting app engines. The could allow a build-once run on any xTalk mechanism! Maybe there can be special attributes for a script inside a script tag which depends on what the target interpreter engine is to allow for differences in interpreters (not all xTalk engines have case/switch control structure for example).

So then I got on to updating the ResourceCenter Stack. TerryL has sent me some nice "Stack Ideas" stack the quickly shows some basics, as well as some interesting tricks as information along the way. Much if not all of this would be better than some of the cards in revResourceCenter that are so old they still show a Windows Vista themed. But his stack is very plain. Once I stripped away the Runtime Revolution branded stack theme (it's obvious this stack has gotten no attention in the last 15 years), the ResourceCenter stack is very plain and bare. So I made a quick, single button control, group that can navigate the cards in that stack and then script places it's group onto any card that gets visited, new super simple navigation system complete!

Of course it's not complete! Must make it look nice, with a background group with some graphic elements, fancier navigation with data tree navigation of index, and then incorporate TerryL's work... Hmm, I want to pull in info from his stack, as sort of a record that can be combined with some of the cards in the ResourceCenter, on the fly would be best, perhaps in a format that can easily be pulled in from remote repositories, on GitHub or wherever, and added in and cached in the IDE user's My OpenXTalk folder on request.

A template format so people can add to it easily, even just using a plain text editor, one that can encapsulate binary imageData and SVGicon path data, inline or separately via URL link tags,, and viewable code window and inherently version control friendly.

Basically like HTML but this markup is but centered around the Stack/Card/Live Controls & Script metaphor instead of BrowserWindow/WebPage/Controls metaphor... with Resource Tags used for embedding resources of any type of data. Maybe it's a tab delimited list with styled text, meant for inserting into a field named " description" on three different layouts, or maybe it's a set of SVGData to be used for vector sprites, whatever you want.

This is the GUI Equivalent of what LC did with Script part of stacks with ScriptOnly.livecodescript version of a stack, and would serve as a good companion to that, a text based representation of the Graphics and layout. Which reminds me that Adobe InDesign has a markup language it supports, IDML, independent of its .indd binary file format which is Indesign version specific. This could be used in a mechanism for converting Indesign Layout / Pages into a Stack/Card layout programmatically, which could facilitate using InDesign to create the layout for your stack.

Having read the Postscript Language Cookbook and other things nerdy graphics guys did long ago, and from looking at innards of many different binary formats but particularly EPS and PDF files, over the years I've seen the way objects are embedded into them. Which reminds me Postscript is a scripting language as much as it is a page description, you can have resources like a font, that could be images generated by code, that can be controlled and reused by a script.

I wonder what we'd have had if Bill Atkinson had joined Steve Jobs at new company NeXT, and then completed HyperCard or some other xTalk there? NeXT step drawing was done with Display Postscript, so NeXTcard could've been resolution independent vector graphics all through the 1990s and been inherently part of the OS and brought along when NeXTStep became Cocoa and macOS X, it would've been open sourced and we'd have something like GNUCard that came along with GNUStep!

This stack UI tagging system idea I think is a bit like EPS (Encapsulated PostScript) or PDF format, where the resources such as fonts, vectors path data, pixel image data, text data, etc. are included in a tagged chunk within the file. With PDF XObjects an image may be loaded into memory just once and then the same in-memory data is used when rendering references to that same image when it's used on other pages. This way you can have a single "Invitation Background" art, image data that is render on every page, along with a Different "Guest" in Text box, scaled to fit width each different length guest name from a database record, a different record printed onto of that art for each page. Such a PDF could be 5000 pages long, but the file size isn't going to be much larger then a single copy of that image data because only one copy of the image data was stored along with along data from a spreadsheet like list, like a mail merge, or in prepress it's called VDP (Variable Data Printing which can also be with generated or altered with JS code or reg exp). So our format should have a method to embed binary resources for fonts, images, path data, unicode text, data, sounds, etc. or be a URL or filePath / relative location, that points to that resource stored elsewhere (the way webpages do).

I'm thinking ".ESTK" or .ESTAK for Embedded Stack Format, like the stack/card version of what EPS/PDF is for postscript.
But I want to use some high level of readability of tags, so to me that means XML (or similar, YAML or Apple's PLIST XML-like Markup extensively throughout macOS) so XTCcard ML? XTALK Community Card Markup XTCML ? (I like that last one)

I've started work on a script that takes a stack passed to it and returns an XML markup of that STACK, returned as text, stack, card, and most types of controls are parsed for commonly used attributes, rectangle, loc, like textColor, foregroundColor, autoHighlight etc. along with any Text data, imagedata, SVGpath data (for a SVGIcon widget control embedded as Base64 encoded. I need to work on the decoding back to stack part.

I have been using revTools a one of the stacks to test this out with. revTools is a programmatically created stack, and I want to make it have a theme that is SVG for resolution independence, and easily toggle-able from light to darkmode.

Some of the revTools icons are already SVG (Widgets), and some are images from a folder of platform specific images, I want to make them all SVG Icons, which means making some SVG Paths, which I did.

But now I have to straighten out my laptop drive problem :(
...with Christmas coming I may just splurge and buy myself a 1TB M2 SSD to replace the current one, doubling the capacity available for additional operating systems, might as well double the ram too :) !

Anyway Happy ThanksGiving to all my North Americans out there.
User avatar
OpenXTalkPaul
Posts: 1485
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

Re: Nov. 24th 2021

Post by OpenXTalkPaul »

I've been looking at the WebCard and WyldCard JS engine based xTalk implementations, they're both very much modeled on HyperCard, both have a JSON serialization of controls as their stack formats which could be converted to Array and then to an XML

I like the simplicity of the HC tools palette (of course I had "Addon" palettes like PowerTools for moving groups of controls and align and such, a ResMover, etc. for the HC IDE as well.) So I decided to do a vector version of all the cursor / icons in that palette for starters. This could become a whole OpenXTalk Symbols Font if we keep adding vectors to it,

I know I want SVG icons for musical staffs for different note durations (q=Quarter Note symbol, s=Sixteenth Note symbol, etc. As well as play, fast-forward, rewind, rewind to beginning, etc. labeled sensibly. I'd also like toadd instrument icons for a complete General MIDI instrument icon set (can reuse some, I mean a piano & harpsichord look the same), including GS drum banks, which is a lot of icons!

attachment=0]Screen Shot 2021-11-23 at 7.44.45 PM.png[/attachment]
Attachments
Screen Shot 2021-11-23 at 7.44.45 PM.png
Screen Shot 2021-11-23 at 7.44.45 PM.png (95.47 KiB) Viewed 3948 times
User avatar
OpenXTalkPaul
Posts: 1485
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

Re: Nov. 24th 2021

Post by OpenXTalkPaul »

OH, a few other things I've done since Oct.

I started to make a separate align-distribute objects palette with custom SVG path icons modeled on Adobe's align palette but with a few more that I created from entirely from scratch. This is semi-complete and semi-functional.

I figured out at least one other IDE Library besides extension-utils, had some inline documentation, which I then parsed out to an lcdoc for adding to the dictionary, It was basically a lot of IDE specific functions, the kind used with publish / subscribe by IDE add-ons, to which I've added docs for a few other IDE commands that I'd already been playing around with (align objects, functions for paths to specific folders in the IDE). So this is basically the start of another section for the Dictionary for IDE specific syntax for things for making add-ons, mods, rebuilding palettes, etc.

This markup, in the template system use case, and the IDE documentation will be very helpful in making various new layouts for the IDE's tools and property palettes, and in trying different styles out. Maybe the entire IDE "desktop" could be in layout(s) that can be adjusted for other bounding rects, rearranged tools, menus for portrait or landscape, altering color scheme or icon sets, on the fly from SVG paths in the Encapsulated resources in ESTAK Files.

If you wanted to make a mobile version of the IDE you would have to do this sort of redesign work anyway, this could speed that later work up significantly I think.
User avatar
OpenXTalkPaul
Posts: 1485
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

Re: Nov. 24th 2021

Post by OpenXTalkPaul »

Sounds like this guy did exactly what I did, so maybe there's no hope for getting back access to my internal volumes:

https://askubuntu.com/questions/1352865 ... -partition

This person has got a similar problem in the screenshot:
https://askubuntu.com/questions/217571/ ... om-gparted

Seems like they should make it super extra clear that continuing would immediately wipe out my partition tables and replace them with something else even on a drive I'm not even installing anything on to!

Oh well, nows a good time to double my storage capacity for my laptop, all these development kits and compiling stuff really chews through disk space!
User avatar
OpenXTalkPaul
Posts: 1485
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

Re: Nov. 24th 2021

Post by OpenXTalkPaul »

The good news is, after pulling my hair out for a bit, and stuffing my face with Turkey and Pies and such for a couple of days, my wife got me a nice “Black Friday Sale”price on a nice gen.4.0 2TB m2 SSD, AND a RAM upgrade to 32GB for my laptop! Festivus came early!

So I’ve already got it setup, Windows 10 running. I just need to install a couple of more operating systems and then I’ll be back in action with plenty of room for 3 or 4 copies of XCODE and whatever else I need for OXT development!
User avatar
OpenXTalkPaul
Posts: 1485
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

Re: Nov. 24th 2021

Post by OpenXTalkPaul »

Got some OS's installed on the new 2TB SSD.

For macOS I had to update to BigSur (because it seemed Mohave and High Sierra were both having trouble recognizing the latest gen NVME), which seems to be running GREAT so far! Time to see what this "Catalyst" thing is about ...

Basically "Catalyst" is supposed to be about making it easy for devs to port iOS apps to run on macOS, which is interesting if it mean easy cross-compiling between Arm/Intel, they've also been porting UIKit and some other iFrameworks along the way, which should all now be accessible from FFI...How about some voice dictation so you can recite some pseudo-code into a button's script :D
Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests