one feature per day is a lot
Yep, I should have posted something before before yesterday
and same before yesterday, etc.
and same for yesterday etc.
and I didn't, does that mean the procrastrination kicked back ?
nope
Let's be realistic guys, during the week, I got about 2h per day to work
on personnal projects, and to implement features (and I mean real features),
humm it's just not enougth time for what I got in mind.
So ok, if you allow me, I'll change the rules a little bit,
let's make it a big real feature every week, and if during the week
I can add more, well let's consider that as bonuses.
Right now, nothing more to show yet (emphasis on the yet ;)),
but during that week I thought a lot and yes worked a lot on the console app itself, ok not features per se, but more how it should reacts and works.
So I've been mostly Working on the UI, but on the graphic and design side, not delved too much on the API.
Ok, I failed posting a tag release for december 4th/5th/6th/7th/etc., but the good news is that now I cleared a lot of the ideas I got to navigate the UI.
Remember, I said that tabs suck (for a console, not necessary for other type of applications), and I persist to say it :p, but then how to design an UI to be able to switch console context without tabs ?
well.. you ARE inside a console indeed, so you should be able to write commands to do that, something as
shell>switch othershell
othershell>other command here
yes, I'm thinking of a console having different display context depending on what you want to log/watch/track/etc.
and yes the prompt should show you in which context you are.
But wait it's not only that, if you read me well I said that I was inspired by the OS X finder preview UI, but other things in OS X do inspire me, and for example how you edit the settings of widgets, on one side you got the application interface, you click on the config button, got a flip effect, and then on the other side you can edit your settings.
Please, bare with me a little, I'll come to the point.
I also said that I was not a fan of the info/verbose/warning/etc. paradigm, and this still stands.
Now let's put all these concepts together;
You got a console with a main shell where you can execute commands,
this main shell can flip to a main setting where you define tags.
shell>config [enter]
[flip effect, switching from a command line context to a setting panel]
A tag, allow to assign a color and a name for a a log, for exemple:
green for info and red for error.
The setting panel allow to change the color per name, and to filter what tags
are displayed in the console or not; basic switch on/off.
Within the console1 API, you should be able to dynamically add (but not remove) tags,
so imagine you want to log the IN and OUT of some FTP clients you're working on,
you could define something as
console1.defineTag( "ftpin", colors.blue );
console1.defineTag( "ftpout", colors.pink );
and when the console1 UI kick in, those tags would be present,
after you can decide to switch them off if you don't want to see them,
either going into the setting panel of the console, or by adding some code
maybe something like
console1.switchOff( "ftpin", "ftpout" );
Why doing like that ?
just for the reason that you need more and less than just 5 type of logs imho,
and during logging/debugging sessions maybe you just want to see in your logs
the "errors" and the "ftpin", and 10mn after just the "ftpout" and the "info".
So, my main problem with that concept is that I wanted to have a flip effect
that, one, can be somehow easyly implemented, and two, does not need any 3D library dependencies, thanks to some cool guys who researched a lot on the subject of displacement map filters within flash I will nail this weekend a small class that can allow to do just that.
So here the credits, kudos to you guys: psyark thanks mate I don't read japanese but I do read code :), Alan Shaw for psyark tutorial translation, Paul Ortchanian of reflektions for his numerous examples and the Flash Forward 2007 (Boston) lecture notes, also to Emanuele Feronato who happened to post on this very same subject when I looked for more infos.
For other credits, well the tags idea come from gmail directly, I'll keep it simple for now, but it could happen that you also be able to define more than one tag per log, I need to think more about it.
Now, let's investigate more about those different shells you could have in console1.
I will provide at the beginning, one main shell with basic commands (no, I don't plan to emulate bash or other well known shell), and later I will provide more shells, and a way to add your own shell as a plugin.
Ideally, the main shell will provide a default tag for the logs, and depending on your needs, you will be able to define a global tag or define a local tag.
A global tag would be something as a "XML" tag, so wether you are in your "WSDL" shell or in the main shell and you just want to dump the content of some XML instances, the tag will be applied globally.
A local tag would be a tag that will be activated only if you're inside a particular shell, for exemple if you have a "ftpdebug" shell, the tags "ftpin" and "ftpout" would be active only within this shell.
Note that this kind of API will not appear in the next days, but let's say it's the end of the month goal to obtain such architecture.
And if I plan it like that it's because just for my needs I need those different shells, I need a shell to run some unit tests from the ASTUce project, I also need another shell for the edenRR project, and last but not least also a shell for a AIR FTP client I plan to start later.
So basically if I need those kind of different shells, you may need them too for your own projects :).
And all that bring me to the end of this already too long post.
One thing that is lacking a lot in the flash world is the concept of the CLI (Command Line Interface).
Ok, agreed, Flash can allow you to build great UI, but as a coder a CLI do have a lot to offers.
We can borrow a lot of the concepts you can find in different CLI and apply or adapt them to flash, and I'll try to demonstrate that with console1 :).
If all go well I should be able to show something next monday.
read more ...

