Rixstep
 About | ACP | Get Stuff | Industry Watch | Learning Curve | Newsletter | Search | Test Drive
Home » Industry Watch

Leapfrog!

Stay good. Stay healthy. Thanks for watching.


Get It

Try It

Changes since 29 July 2020.

This is a long one. Covers stuff for both this release and the next. Hope you've all been good. Stay good. Stay healthy.

We're calling this one Leapfrog. We now have releases in the pipeline. So there's another one already waiting in the wings (in the pipeline).

Let's start by telling you what's coming the time after this.

But let's preface that by reiterating our dedication to free and Unix systems.

We don't like mobiles, period. We truly don't understand why people would want a mobile. Steve's great gift to humanity was sadistic.

We also don't like constriction. The pirates and darlings - to some - have turned into slave masters. That's not Unix and that's not us.

Anyway.

The biggest news - coming time after this - is Rixedit, in practice three applications in one.

Rixedit

Rixedit? Yes. Outwardly it looks - or it can look - the same. And as with chimeras, it can change over time. The secrets lie in its Info.plist.



All Rixstep ACP (Xfile) applications contain a special section called RxDefaults. This section is located by the ACP Framework at launch time. The application settings found there are automatically registered with the system.



[ACP users have RxDefaults.app.]

In the case of this version of Rixedit, things go a bit further. The settings are now in two tiers, one at root level immediately under RxDefaults, and then several others at a level right below. Which further group gets consulted depends on the file extension of the document being accessed.



Info.plist already has a section called CFBundleDocumentTypes, and then another called CFBundleTypeExtensions. These are not in wide use in the old fashioned way by Apple today, but they are here at Rixstep, for reasons which become obvious soon. The latter section, CFBundleTypeExtensions, is an array of file extensions.



Part of the goal here is to obviate the need, whenever possible, for extended attributes, which are not transportable, and to instead use file extensions, which are always transportable. So although CFBundleTypeExtensions is still necessary to tell the system which file extensions your app will recognise, there is a new section used by Rixedit alone.

Files

Files. Check Rixedit's Info.plist. Scroll down a bit. You'll find it.



You'll see key-value pairs. The key part is a possible file extension. The value part is a string which becomes a key in another section. So we have a list of file extensions and, for each file extension, a sort of filetype - or configuration - for Rixedit's purposes.



[That's the beauty of the old defaults system from NeXT: data can be stored in formats that Windows and the Linux flavours can't dream of.]

Find the file extension in the Files section and take its value, then scoot over to the Configs section, and you'll see what perks are available for your document. Three configs that are mentioned are CODE, NOTE, and TEXT. These are arbitrary: we made them up. You can make them up too. Read on.



TEXT is the most generic. It's used for editing HTML, for example. CODE is for code files. NOTE is for a type of 'sticky', as Apple would call it - a Post-It note, if you will.



Configs: several possibilities. Align, Bkgnd, Font, Frame, and Spell.

Align - left, right, centred, justified, natural.
Bkgnd - Apple's nine system colours for both light and dark modes. Or no colour at all.
Font - the font family and point size.
Frame - the window frame in a non-cascading scenario.
Spell - for continuous spell checking. You may want this for note/text files but not for code files.

How you want to set these up is up to you.



You determine which file extensions you want to recognise, what corresponding configurations they're to have, and how each config is to be set up.

Be sure to use only our PlistEdit for this: there's an automatic syntax checker in there so you can't corrupt the file, something which would be bad.



So for this XFG feature, what you get OOTB is merely a suggestion. Play with it, and have fun.

You don't need to use this at all. You'll find the root-level RxDefaults key XFG. Turn XFG on and you get these goodies, turn it off and the application will behave as before.

Oh - this high-octane version is also 88 bytes slimmer in the binary. Figure that one out.

The High Key

Again: the High Key is XFG. Under RxDefaults. The XFG key determines the complete functionality of the feature.

The XFG key is represented on the Application menu as Configs. By virtue of XFG being on in Info.plist, Configs would have a tick mark.

Everything follows on this setting.

Font can also be set at this level. Settings at this level are determining if no other settings (configurations) apply.

The Encoding and Extensions settings are at root level and remain for now.



Settings under Configs override settings at root level. Settings not mentioned under Configs use the values found at root level.

Config names are not case-sensitive, but it may take a few boots/logins for your system to recognise them properly. We had to remove everything immediately before cold boot in our user hives under /var/folders/.../? for this to work. Contents of 0, C, and T.

The High Purpose

The scheme of things, as we see it, is a rudimentary but fully capable text editor that can fill a lot of functions. Three apps in one. (Three or more.) It can work side by side with a browser to edit HTML. It can function as a code editor - the only one we've ever used, FWIW. It can fill in to leave Post-Its around. And the colours and fonts and screen placement help the documents be more recognisable.



The one thing we don't yet have is a way to uniquely place - and uniquely colour and set the font etc - individual documents (most desired are the Post-It notes) around without reverting to extended attributes. We might never have this. But at least we have what we have. And what you do with this is up to you. We saved you 88 bytes on disk at any rate, so even if you never touch the features you're still ahead of the game.

Complete Layout

This is the part of Rixedit's defaults that deals with this new feature.

Upon loading a document, Rixedit checks for a match in Files. If a value is found, Rixedit checks Configs for a match for this value.

Rixedit then checks for values for Align, Bkgnd, Font, Frame, and Spell.

<key>RxDefaults</key>
<dict>
    <key>Configs</key>
    <dict>
        <key>CODE</key>
        <dict>
            <key>Align</key>
            <key>Bkgnd</key>
            <key>Font</key>
            <key>Frame</key>
            <key>Spell</key>
        </dict>
    </dict>
    <key>Files</key>
    <dict>
        <key>c</key>
        <string>CODE</string>
    </dict>
    <key>XFG</key>
    <true/>
</dict>

It makes perfect sense to us. Does it make perfect sense to you?

Control Flow At Startup

A brief tutorial on what goes on when and where.

If you start Rixedit with no filename given, you get standard default behaviour as determined by the settings at root level under RxDefaults.

If however you start Rixedit with a filename, the following happens.

  1. The file is read in (but not yet displayed).
  2. Rixedit determines the file extension (if any).
  3. Rixedit compares the extension with 'Files'.
  4. Rixedit compares that value with 'Configs'.

Rixedit sets the configuration twice before displaying. Once from the root defaults, and again from the Configs array, if found.

So We're Finished Finally?

So is this adventure finished? No. But it's at a stage where the product is doable.



BWK's words in his original C tome... Stop here, right at the beginning, play about for a few months. Get to know the basics, get familiar with them.

We've tried a number of ideas over the years. Some catch on, some do not. We like some of them over time, we move on from others. And so forth.

Yes there's work going on, and there's speculation about where we're headed, and it must be obvious to some of you, for it's not that difficult to figure out, but even so. Let's take what we have and play with it. It's not even certain this platform will be viable a few years from now. (Doesn't look it actually.)

The ideas themselves can be ported to almost any platform. In fact, this might be a good project on foreign shores.



Thanks for watching.

PS. No one noticed our toolbar glyph update?

HOW TO UPDATE

  1. Always apply appleclean after downloading (before installing) unless you're running a Keymaster or Seahaven somewhere.

  2. Instructions for appleclean are in appleclean.txt.

  3. You can also use the following:

    % xattr -csrv ~/Downloads

  4. Use Xfile or Xscan to make sure your files are properly cleaned. Use CandS.app as needed after that - and/or your favourite Keymaster (recommended).

About Rixstep

Stockholm/London-based Rixstep are a constellation of programmers and support staff from Radsoft Laboratories who tired of Windows vulnerabilities, Linux driver issues, and cursing x86 hardware all day long. Rixstep have many years of experience behind their efforts, with teaching and consulting credentials from the likes of British Aerospace, General Electric, Lockheed Martin, Lloyds TSB, SAAB Defence Systems, British Broadcasting Corporation, Barclays Bank, IBM, Microsoft, and Sony/Ericsson.

Rixstep and Radsoft products are or have been in use by Sweden's Royal Mail, Sony/Ericsson, the US Department of Defense, the offices of the US Supreme Court, the Government of Western Australia, the German Federal Police, Verizon Wireless, Los Alamos National Laboratory, Microsoft Corporation, the New York Times, Apple Inc, Oxford University, and hundreds of research institutes around the globe. See here.

All Content and Software Copyright © Rixstep. All Rights Reserved.

CONTACT INFO:
John Cattelin
Media Contact
contact@rixstep.com
PURCHASE INFO:
ACP/Xfile licences
User/Family/Business
http://rixstep.com/buy
About | ACP | Get Stuff | Industry Watch | Learning Curve | Newsletter | Search | Test Drive
Copyright © Rixstep. All rights reserved.