Bracer Jack
If only someone tried to look at it seriously as a stand alone entity, a concept unto itself and dare to disconnect it from the Star Trek World [in the superficial “pretty interface” sense], this notion alone would cause a lot of bimbo LCARS fan to go nuts and start a witch-hunt and if you are annoyed by the fact that you wouldn’t be seeing random numbers and blinkies in LCARS, you really shouldn’t have read this far, please stop reading and go roll on the floor a little bit.
If one is to think of LCARS as an interface filled with random numbers and flashing bars, LCARS would never truly see the light of day for serious application usage.
This single element represents the sweeping elegant of LCARS along with its flaw [space efficiency].
The LCARS swept IS LCARS.
An interface design that can be expressed in a single shape...what simplicity, what unity !
The unquestionable LCARS button is the round rectangular button:
However, if the descriptive text is too long, there is only so much the round rectangular button could stretch before it breaks the LCARS ratio.
When this happen, the round rectangular button should transform itself into anyone of these variations in accordance to its surrounding elements.
LCARS twist and bend itself into localized frames to theoretically, frame relevant controls together.
It is advisable that all buttons observe a sense of harmony within its own frame and not standout too much from one another.
It is ok that buttons of different frames are of different variations.
If the first easily committed crime of LCARS is color, the second would be the total disregard of the very nature of the LCARS frame.
LCARS frames are NEVER the same in thickness on the next turn, this is OMEGA !
We shouldn’t even be talking about this, all LCARS users should just instinctively know this.
It is fine to add legacy decorative ornaments [all your flashies and what not] to butter up your interface [making something pretty is not a sin] but it is of vital importance that it does not get in the way during the actual operation of the application.
Do not add buttons if you can break the frames itself into buttons unless it’s too thin for the fingers to press on.
An empty LCARS Frame that has lots of blank space but with its frame being totally useful is beautiful.
An LCARS frame that does nothing either than to frame a category is already a 20% sin.
Just make sure that the buttons within a frame looks the same like every other button in the same frame [Of Conformity].
Please read “Creating a Coherent LCARS interface” to understand the nature of color usage.
LCARS should not be restricted to solid colors, gradient or any other crazy form of shading method can be used as long as it doesn’t become a visual distraction.
Free will; just don’t make it too annoying because it’s almost always the case.
The original idea of LCARS is that it has the ability to “reconfigure” itself to fit specific tasks.
In the real world, an interface that keeps on “rearranging” itself will send shockwaves of heart attack to its user as they constantly struggles to find where the new allocated position for an existing control is, this is absolutely destructive.
If a new task is required, a new screen should appear.
If new controls do appear within an existing LCARS display, it should not off-shift any existing button’s allocation, if this is not possible, revert to the new screen method.
Animations to signal interface changes should be simple and snappy like fade in and out [not cross fade].
Interface animation sequence should not exceed 1 second [1 second being way too long].
Developers should think of Interface transition animations as something that can be done without, more often than not, the user will not appreciate it [the first few seconds of wow from a user that have never seen the animation before doesn’t count, interface animations gets real tired real fast when they are just trying to get the job done].
However due to the fact that the human language is a reflection of the human species, with all its contradiction and misunderstanding that could arise, LCARS will always be best programmed in the “computer language” syntax.
Hereby lay the fundamental ideas behind the mythical LCARS programming language.
The LCARS programming language will know what resources [header files in the programmer’s language] it needs by examining the usages of specific keywords in the codes.
There is no reason why a language cannot do that [namespace problems are not an issue if the language prefixes its own header].
A great many will mistaken this for a language that embeds everything and makes for huge footprints, let me restate, the complier ANALYZE the code and figure for itself what resources needs to be included, this is VERY Different to the brain dead “embed all headers” idea.
This is in compliance with “The Omega Idea of LCARS” rule #2:
The computer will not labor a human being into doing task it could in this case, figure it out for itself, a programmer shouldn’t have to sort through documents wondering what header files needs to be included, it’s the computer’s job, you call the function, the language sort through itself and import whatever header files that are required.
Humans are an absolutely mess when it comes to cleaning up their act and the LCARS programming language should be designed from the ground up to be able to stand on its own even if the human programmer didn’t clear resources that the system no longer needs.
[The transitional phase will be abhorring, there will be a phase where contextual understanding is at its early experimental stage and we’ll end up with compliers that have the wrong idea about what the human programmer is trying to do and for a time, programmers will reject the idea and say that the complier shouldn’t pretend to be a smart ass but this phase will come to pass and future programmers will not be able to imagine those day where their ancestors have to program everything themselves without the syntax analyzer kicking in to help the programmer by asking if this is what they are intending to do and if so, auto fill a large amount of codes all by itself, spelling the end of boiler codes.]
A new programming language arise, and for a time, it was good, then slowly as it adapts new technology/metaphor ideas, old terminologies in the language are being used to describe the new order and newcomers are asked to read about the history of the programming language to know why so and so is named a certain way because apparently, the only way to make sense of it is by understanding its history.
It is in my personal experience that when a programming language reaches this stage, its end is near and will eventually be phase out of existence.
Even if the internal construction of the LCARS programming language haven’t been updated yet, it is none of the language user’s business, the surface can be altered to conform to the new common sense first, the internal restructuring can be done in time [and MUST be done].
Some of the current programming languages trend at the current point of writing this manifesto seems to implement seemingly unnecessary inconsistencies.
For example in QT, calling a form’s exec() function will make it modal while using the show() function will not.
The creator of the LCARS programming language must keep on asking himself “Really ?” in a sarcasm way to design the LCARS programming language correctly.
In this case, it would make more “common sense” if the functions are showModal() and showModalLess() since it would allow the programmer to know simply by common sense which one to pick when the code editor pop up the two option hints side by side [which they would be since their lettering order are similar].
A programmer’s coding time can usually be shortened by really smart code editors that provide lots of hints.
All the programmer has to do is to use his common sense to type out the first few letters of whatever properties he wants to set and the code editor pops out a range of options he can choose from.
You would image if the programmer knows that, he would have probably already know what keyword to use and the code editor would serve little purpose to him.
The only sense Hungarian Notation makes is to the internal creator of the programming language and not to the “user” programmer.
This manifesto was written during a time where the “Object Orientated Programming” metaphor was way hyped as the end all and every programming language seemingly wants to become an Object Orientated Programming language and forgotten about the root of its creation [which may have nothing to do with OOP at all].
This is akin to having a secretary that spend more time showing you her beautiful long hair or whatever instead of using that time to get your job done.
This makes sense to the worshippers of Object Orientated Programming [the more objects the better] but it is an absolute disgrace to Common Sense as one expects the Sound object to have the ability to stop the sound since it’s the Sound object that started/played the sound.
Just remember, when in doubt, Common Sense is always the final verdict even if it goes against the ENTIRE hierarchy structure of the internal LCARS Language Construct [why would this even happen if one didn’t go all OOP obsessive ?]
It is an unfortunate trend that people still associate syntax complexity with power or the idea of a system language.
Remember, if a programming language [or a system language for that matter] is so “powerful”, it wouldn’t ask the programmer for unnecessary craps.
#import <AudioToolbox/AudioToolbox.h>
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:Soundpath], &soundID);
AudioServicesPlaySystemSound(soundID);
#include <QSound>
QSound::play(“mysounds/bells.wav”);
Why is it that in today’s world the human programmer still have to do it himself is absolutely unthinkable, that one line of import code is one line too much.
Don’t be surprise if you were to ask a kick ass programmer how to do something simple [which is a relative term] and he wouldn’t be able to tell you right off his head.
Do not mistaken a good memorizer with a good programmer, though they could go hand in hand, this is rarely so.
Gone were the days where a simple language with a few keywords is all you need to program well.
This is either due to the requirement to spread a series of codes throughout multiple files just to get a single function working or just pure retardation from the factors mentioned so far.
#include <mdaaudiosampleplayer.h>
subclass public MMdaAudioPlayerCallback
then proceed to made public:
CMdaAudioPlayerUtility
virtual void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration)
virtual void MapcPlayComplete(TInt aError)
Create an instance of CMdaAudioPlayerUtility and play the sound using “OpenFileL”
These are just the generalization of the implementation, NOT the actual implementation which is far too many lines for comfort.
Before anyone say these are not too many lines of codes [remember, that is not the full implementation], please see QT’s “almost” one line code execution:
QSound::play(“mysounds/bells.wav”);
It really makes you wonder why retardation is an accepted form for programming languages for this day and age.
Don’t get me started on the idea of using functions like “OpenFileL” to play a sound instead of using something like “play”, and yes ladies and gentleman, that “L” in “OpenFileL” is the god forsaken Hungarian Notation that LCARS must never coat itself with.
It is common practice for programmers to wrap classes/methods/functions/whatever into some simple wrapper/object to make deployment/usage easier.
As a matter of fact, this is such a common phenomenon that it begs the question why does programming language creators makes a habit out of chocking user programmers for lines and lines of initialization codes before any useful functions can be executed.
It is examples like these that put language creators to shame.
Example, only one line of code is needed to play sound, with the filename passed as the argument along with some other optional arguments IF necessary, don’t give the user crap like initialize some stupid soundID nonsense that pertains to how the language handle sound [or anything for that matter] internally, it makes the user programer go: “do you want me teach you how to play the tune through the speaker as well you retarded piece of shit”.
In a perfect perfect object orientated world, all similar traits shared by various objects in a program/framework will be in a single object which all other objects then inherit from so as to enable the “change one, change all” concept.
This passion allows them to “just do it”.
The initial code will be all over the place, spaghetti codes, bad programming...etc and it’s perfectly ok.
Future changes will have to happen in accordance to the structure already laid out by the then finalize OOP structure.
This is akin to the final bright flicker before the candle goes out.
The LCARS graphical user interface was designed by scenic art supervisor and technical consultant Michael Okuda. The original design concept was influenced by a request from Gene Roddenberry that the instrument panels not have a great deal of activity on them. This minimalist look was designed to give a sense that the technology was much more advanced than in the original Star Trek.
LCARS was born from a great idea and though it has been altered to look more drama-cool for the series, the original idea had been set, and in the eyes of these two great ones, it was perfect.
In view of using LCARS for actual application usage, we have to go back to the word of Gene himself.
LCARS should go all out of its way to make sure the users only need to do what the computer cannot do without them.
This applies even in the programming level; at this current moment in time, we still have programming languages that require programmers to type similar codes in two or more files to make a single property accessible, manual unload for visual elements during program termination that have nothing to do with data saving mechanisms, and the need for multiple lines of code for simple string concatenations.
The LCARS programming language must end the “making computer languages complex so that it feels like a system programming language” trend, a system language don’t have to be retarded.
The retard-ness ends now.
Against the basic interface design rules that states that you should treat your users as idiots, my stand is, if one is retarded, one shouldn’t be using the LCARS system at all, it was never catered to them and nor should it.
Make it simple in the sense that it should not ask a human to handle what it can handle itself but not withdraw control to “fake” the look of simplicity.
It’s a dedicate balance and such is the curse of the future programmer trying to create the mythical LCARS system.
This is not in accordance with today’s requirement and everyone knows that tapping on the screen for an extended period of time is not a good feeling.
Still this idealize part of LCARS will not be compromised.
One can only hope that by the time the mythical LCARS is actualize, some sort of real-time generated tactile feedback technology [super sonic, force field or whatever] would be in place.
The mythical LCARS system can be relatively well controlled by voice, unfortunately but accepted, with all the disarray and misunderstanding that the human language delivers, this is not a computer fault.
It is unadvisable to program LCARS using voice under most circumstances even if this becomes a possibility.
I cannot imagine LCARS not being 3D and holographic in nature, this has got to be the way for the LCARS interface to go in the long run.
By hologram I don’t mean just your semi transparent hologram that will look nothing more than a poor quality display to future generations, opaque hologram are included.
Video Example [Youtube Link]:
Imagine an LCARS system so perfect that most of the time, you are answering only yes and no questions because computers are no longer retarded.
Under this perfect LCARS system, if its minimalist spirit is still to be respected, we are looking at a blank screen with two buttons most of the time, now that doesn’t resemble the LCARS most have come to love, but this is the true spirit of LCARS, nothing useless should be shown and if the computer were to display many options to the user, the computer should really starts its own recursive “really...I can’t figure this out myself ?” routine.
In the farthest reach of our imagination where computer have direct access to our neural net [with all the curse and blessing it brings], LCARS will be working with us on that level, in this form LCARS would have left its graphical nature behind and enter completely into its pure essence, the essence that LCARS is just very simply a perfect computer/human interface system, so perfect that it doesn’t make a sound, a voice, anything, and it just works, this is the Omega state of LCARS and this will be a long time coming indeed.
This is Bracer Jack, signing off.
I can be contacted at bracercom@hotmail.com.
www.bracercom.com