« November 2008 | Main | June 2009 »

May 30, 2009

Do you really have to give up standards for simplicity?

Yes, absolutely, when it makes sense to do so.

I'm amazed how humans seek approval of an authority and feel comfortable when they have it.

Lets take W3C recommendations. A committee decides on something and many people think of them as rules, laws (kind of like god made), they do not try to understand the reasoning behind them, they just accept them as they are.

I have blogged about this before. According to my criteria many W3C 'standards' are totally wrong, and to my surprise it's no secret how they do things and why. Still, many people don't want to think one step further. I believe many will have agreed with me, if they really gave a minute of thought on the subject.

(BTW, Scott Adams' Power of Ridiculous Reasons is a good read).

What are standards? Why are the standards as they are? Why is something a standard?

QWERTY keyboard layout was designed to slow the typer (at the time of mechanical typewriters, to avoid jams). It's the standard layout many of us still use, though we will like to type faster and there's no jamming issue with our current computer keyboards.

If faster typing is your goal, when you hit the QWERTY layout barrier, you should question the standard. What was the reasoning, did it ever make sense, does it make sense now?

I can agree to disagree - afterall, we are all different, we can't agree on everything. But defending an argument by mentioning 'standards' really doesn't make an impression on me.

I value simplicity. If some standard is making things unnecessarily complicated (when there's a clear simple choice with no drawbacks), I will question the standard first rather than give up simplicity.

Of course, I'm not saying that simple is always better:

"Make everything as simple as possible, but not simpler." -  Albert Einstein

You have to recognize it when it is better, and not simpler than necessary.

Einstein also said:

"Any fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."

And while at it, the following is one of my favorite quotations, from Einstein:

"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former."

[This post is not an answer to another post - hence no link. It's just that a sentence in a blog post inspired me to write about this. Still let me state what I think about namespaces vs. prefixes again:

- IMO Namespaces do not solve any real problem. They solve artificial problems.

- There's something that looks elegant and cool about namespaces, just like some furniture that looks great but has awful functionality. Deceiving, I say. Must think one step further.

- Using a prefix is inherently simpler and better than using namespaces. (Assume there was no namespace type. If a simple prefix solves the problem, you don't need namespaces at all).

- As I don't think namespaces are any good, and should not ideally be in a language as a type, even without any context, if one solution makes use of namespaces and the other does not. I'd say that the other solution is better.

- When you need to use a prefix, you just do it. There is no problem to write home about. Even if you think there is a problem, it exists only for a tiny moment until you realize you can use a prefix. Prefixes are not features of a language, they are just naming conventions. What do you do when you realize you have redefined a local variable named "a" a second time, and the compiler is not happy about it? Define namespaces to fix the name collision, or, just rename the new variable "a" to "b"?

- I value backwards compatibility very much (maybe more than most). But you don't have to be consistent if you are moving forward. (Take AS1/2 and AS3. Flash player runs AS1/2, but AS3 is not consistent with AS1/2).]

May 30, 2009 in Flash, Flex, Language design | Permalink | Comments (3) | TrackBack

May 27, 2009

I don't believe in NameSpaces

I've been professionally programming for more than 20 years [1] and I've never needed to use a namespace.

I do know what a Namespace is. I think I shouldn't have.

Rarely, when the compiler cannot figure out what variable or function I'm referring to, it just signals an error and I fix this by writing the qualified name. That's all there is and there should be to it.

Of course namespaces can be there as leaked abstractions of implementation details. Ideally, a programmer should not know about them [2].

Why? Because, they don't help much, don't have much use, They are extra things to learn and complicate things unnecessarily. (Objects as abstractions actually help programming, Namespaces don't). (And there are XML namespaces, which I don't like in a different way).

Namespaces in a programming language solve an artificial problem and they create a bigger problem than they solve.

Still you may like them. But if that's the case, can you tell me how these fit in a scripting language that doesn't have a pointer type or memory management (by user)?

The first time I heard about 'Advanced' data structures called linked lists(!), I was surprised but later this made sense [3].

ActionScript should be simple. A namespace soup complicates things without much, if any, benefit in return. I don't think any language needs a spelled out Namespace type but scripting languages more so [4].

But we do have namespaces in AS3. I'm not proposing that they should be removed (Backwards compatibility is important). They just should not be made to look like a fundamental property of the language. Someone who has never heard of namespaces should be able to program in AS with no side effects caused by language design. This will make AS better than the rest [5].

Luckily, currently the situation is not hopeless, you can do without namespaces most of the time. What I'm afraid is the future directions.

I call namespaces  the unnecessary evil ...

[1] Actually 21. I've programmed in Basic, Z80 and 80x86 assembly, C, C++, Delphi Pascal and briefly in Cobol, Fortran, Lisp and Prolog. I won't bother listing numerous scripting languages.

[2] C++ has many features that many programmers don't know and care about. You can do without them and this is totally OK with me.

[3] Linked lists are simple data structures, not advanced.

[4] In AS3 there are some features that make use of namespaces which IMHO should have been implemented in other ways.

[5] Computer language design is my hobby. It's one of the two subjects I feel like I'm truly qualified to talk about. Of course, you are free to disagree. But my thoughts on language design has many years of background and it's unlikely that I will change my opinion on namespaces.

May 27, 2009 in Flash, Flex, Language design | Permalink | Comments (8) | TrackBack

May 26, 2009

The change from Fx prefix to namespaces is an EPIC FAIL for Flex

I borrowed the title from Aral's original post, couldn't think of a better one.

I don't know Flex as much as some do, but I know other things and I know Aral. So what can I add to his excellent post?

People defending the change mention a voting by community. I have a problem with this.

Public/community vote at best can get you to the mean. If you have no idea, no vision, just listen to the community and you will soon become the average.

Leading products are not developed this way. True leaders don't work this way.

You should have a vision and you should evaluate each change according to that vision. If you want to sell more products and make more money, in the short term, (or if you have no vision of your own) it's fine to be lead by the community.

Sometimes you act against the wishes of the community, that's when truly wonderful things happen, and the community appreciates it in the end. Of course, this is the risky option, but it's the only option that may bring those results.

As Aral mentions, simplicity is a key factor. The problem is not 'not making things more complicated', it is ' making thing simpler'. AS3 already has a steep learning curve compared to easy use nature of AS1/2. This is a problem on the table, that hasn't been addressed yet (I expected at least some work towards this with CS4).

Both Adobe and Microsoft tried to beat Flash in the past, and failed miserably. You can't beat MS by trying to be more like MS. You can't beat Java or .Net by trying to be more like them. Does Flash/Adobe wants to beat Java in the first place? Do they have the vision? I've been losing my faith in that lately.

Addendum:

I must add, I don't think 'Fx' was a good choice as a prefix. Too long and sounds like 'effects'...

May 26, 2009 in Flex | Permalink | Comments (3) | TrackBack

May 22, 2009

Accessibility: Is a CC button deaf-friendly?

You learn something each day, sometimes it has a big impact.

Suppose you are designing a FLV video player. Unless the player is to be extremely simple, you will want to support displaying closed-captions/subtitles, either because you are truly accessibility conscious and care about it, or, because you find the idea of displaying subtitles for a foreign language movie cool. Surely, you will want to cover all bases.

Lets start adding captions support to the design:

  1. You will need to have a button, labeled 'CC', that toggles display of captions.
  2. Not all FLVs will have associated captions, so a feature can be to hide the CC button (rather than displaying it in disabled state) when there are no captions available. This will also provide more space for other controls, a slider may benefit from the extra space. [1]
  3. Some people will want to start with captions-on, so you will provide the programmatic interface to start with the CC button already clicked once.

Can you think of any other option? (Other than supporting multiple language tracks) Anything missing?

Until some minutes ago, I wouldn't know the missing option, and the CC button would be the symbol of my accessibility support.

Missing option is having captions on all the time without the CC button to turn them off.

What good is that for? Obviously you could have thought about this, but why would you want it?

Because, at a site for the deaf (which is what accessibility is really all about in this case), a CC button is not considered deaf-friendly. Captions must be present and displayed at all times [2].

Just like the way you (and I) think, 'let's not display the CC button because there won't be captions for some FLVs', you should also think, 'let's not display the CC button because there are times there will be captions all the time and they will never be turned off'.

A FLV player with a CC button, sure, is accessible. But if you really care about accessibility, you should have the option for not displaying that button.

That's what I learned today, from one of our Captionate [3] customers, who is creating web sites targeting deaf consumers, and who himself is also deaf. He is passionate about this. For him, it's not an option to have the CC button displayed, it's inappropriate, it's not deaf-friendly, end of story.

Could I ever, by myself, have thought about supporting captions without a CC button? Maybe... Could I ever have shared the passion about this? I don't think so.

Nothing is as simple as it looks, accessibility included.

[1] Obviously, if you have designed a player that works with different skins, you will want to have skins without a CC button (no captions support) and skins with a CC button that support captions. For the sake of this discussion, this is irrelevant.

[2] 'They can embed captions onto video in that case' will be too shallow thinking,

[3] We do not provide a player for deploying captioned FLVs with Captionate. We do not have a FLV player product.

May 22, 2009 in Captionate, Flash, MG | Permalink | Comments (0) | TrackBack

May 20, 2009

What should be the new name for Flash Authoring Tool...

I hated the Flash Builder name change and found it totally wrong, it turns out some of my reasoning was caused by different understanding of what Flash and Flash Platform means. I've updated my definitions in my previous post, but my concerns about increased confusion are still valid.

If Flash Builder name is indeed to clear up confusion, logical next step is renaming Flash authoring tool, AKA Flash Professional or Flash IDE (or simply Flash before Flash Builder).

Flash is currently a catch-all name, can refer to a SWF file, Flash Player (AKA Flash Platform in marketing talk), the IDE and more. It's comparatively easy to change the authoring tool name.

Other tools by Adobe, that start with 'Adobe Flash', does not end there. Sure, now current usage is becoming 'Flash Professional' but this also creates its own problems (see below) and it sounds like it's part of the version, not the actual product name.

Flash Professional is the premiere tool for creating Flash content. The day it's gone, will be the day sealing certain death for future of Flash. It's more than an animation tool, or a designer tool. It's a complete development tool, which also appeals to designers. Some Flex/Flash Builder users don't get this. I can understand them, they just don't know what Flash Professional is and so they cannot appreciate it.

I think, in all fairness, Flash Professional is still a good name, which needs no change. But Flash Builder users, who think they are the professional users and the Eclipse plug-in is the professional tool, don't like how 'Flash Professional' sounds more 'professional' and above 'Flash Builder'. So, something must be done, sooner or later.

Suggestions coming from Flash Builder users like 'Flash Designer' and 'Flash Animator' are IMHO quite unacceptable. 'Flash Studio' might have been a good name but it's sure to cause more confusion as initial expectation will be that 'Studio' includes 'Builder'.

The new name, should not be unfair to the tool and it should not sound more professional than Flash Builder. It should not be too different from what it is today. Tough job.

But I think I have a good suggestion, something only Adobe can do:

Adobe Flashshop


That's it. Everybody knows Photoshop and this name IMHO fits like a glove and has a good vibe. What do you think?

May 20, 2009 in Flash | Permalink | Comments (6) | TrackBack

May 19, 2009

Updating my definitions... Done.

In Flash world, even the most obvious and simple word 'Flash' has a dubious meaning. After online and off-line reactions to my recent posts, I have updated my definitions (actually they are not formal or complete definitions, but what you need to really understand when the 'term' is used unless the context strongly suggests another meaning).

Following may seem obvious to some (kudos to them), but it took me some time to come up with this. Hope it helps. Feel free to correct me if I'm wrong.

Flash
1 SWF file.
2 Adobe authoring tool for creating Flash Platform content (current version is Flash CS4 Professional)

SWF File
1 A file that runs on Flash Platform

Flash File
1 SWF file. Flash.

Flash Platform
1 Flash Player. Runs SWF files.
2 Flash Player and related tools by Adobe.

Flash Player
1 Flash Platform. Runs SWF files.
2 Actual file which implements the Flash Platform functionality. Most of the time either the browser plug-in or stand-alone executable version.

Adobe Flash xxx
1 An application by Adobe, which creates Flash Platform related content.

Flash Professional
1 Adobe authoring tool for creating Flash Platform content (current version is Flash CS4 Professional)

Flash Builder
1 Former Flex Builder. An Eclipse plug-in, by Adobe, for creating Flash Platform content.

Notes:
- After 'Flex Builder' got renamed as 'Flash Builder', 'Flash Pro' is the least confusing way to refer to the authoring tool which was simply known as 'Flash'.
- Expect a name change to 'Flash Pro' sooner or later, as 'Flash Builder' developers are unhappy how 'Flash Professional' sounds more professional than 'Flash Builder'.

May 19, 2009 in Flash | Permalink | Comments (3) | TrackBack

May 18, 2009

What's wrong with the Flash Platform?

When Microsoft bought FoxPro, leading database app of the day, in 1992, I remember, an intriguing question among programming community and geeks was whether MS will use the Watcom compiler, which was used for building FoxPro to that day, a compiler which was state of art at the time and better, or, use their own inferior MS compiler to build the next version of FoxPro... I never followed-up, and don't know the answer, still the question remains as a fundamental one. (FoxPro was later renamed as Visual FoxPro and died in 2007 at version 9).

A platform needs to be taken seriously. For quite some time Flash (whatever you meant by it) was seen as a toy for creating animations for the web, including the ones that made you look for the 'skip into' link and really annoying advertisements that hid content. Most of the time this was true.

Things improved in time, but it's always hard to change initial perceptions.

I'm now skipping pages of info that may bring the reader up to date with Flash history, for the sake of coming to my point.

I may be seeing what is not there... But I see the Flash Platform as the main platform of the future: OS-wise cross-platform, on both desktop and web, and on other devices... "Flash Platform" is not "Flash" (whatever you understand by it). You can't consider something as a platform just because you can write RIAs for it or it has a desktop component, or just because you have a few different editions. It's bigger than that. It has to be...

Java started with the promise of making apps that you write once and run everywhere. As I see it, it failed to achieve this. I see Flash replacing Java, achieving this initial goal. I see Java (not JavaFX) as a rival to Flash as a platform...

The developer types who were expected to jump into Flash train with Flex were mainly Java developers, as Java is also a scripting language, just like actionscript.

How do you convince a Java developer that Flash (platform) is better? Will you have any answer when he reminds you that 'recommended professional developer tool', now named 'Flash Builder', is just a plug-in for Eclipse [1], which is build primarily in Java? Will you have an answer when he mentions that the AS3 compiler is also build in Java?

If I were a Java developer, at best I'd say Flash might be better for 'animation and stuff' only. If Flash Platform relies on Java, then it's inferior to Java, as a platform, no need for further discussion.

I don't think embracing Java is an option for Flash Platform. Flash will be the platform of choice and the better one, or it will be a toy animation platform (with some scripting capability). I don't consider being open source or not coming from MS as valid reasons for embracing Java. Also I cannot picture a stable co-existence, with similar usage ratios, being 'second best' is not an option I will be content with.

With AS3 and JIT, as I had written before, I was hoping the AS3 compiler would be in AS3... AFAIK, this has not happened yet. For this reason, professionally as a programmer, I don't consider actionscript as mature. If actionscript is a serious language (even though it's a scripting language), it has to have a compiler written in actionscript (this is my idea for maturity, you are welcome to disagree).

As I see it, for success, Flash Platform should get rid of any reliance on rival platforms (Java, .Net etc.) as soon as possible. (3rd party tools are OK, after all, they are additional tools. I think a platform should provide at least basic building tools, sufficiently advanced, that does not rely on rival platforms. [As soon as possible may mean years - but I believe this should be the agreed goal]).

Silverlight is not a rival to Flash Platform, .Net is. Silverlight is the toy animation [2] part of (web part of) .Net Platform. I believe Flash, as a platform, should have bigger goals than beating that.

People ridiculed Microsoft, when they used Flash rather than SilverLight for promoting some stuff. I'm surprised I'm not seeing anyone mentioning Java use with Flash. Is Java a better programming platform, and Flash Platform is really only a sub-platform for animation (and maybe minor RIA stuff)? Is this the planned and expected future role for the Flash Platform?

Is it because it's so obvious that Flash will ditch Java use when the time comes, that nobody mentions it? or are my expectations for the Flash Platform unrealistically high? I wonder.

I can write more, but I think I made my point.

Watcom C compiler went to Open Source heaven in 2000. Borland C++, which was considered better than Microsoft Visual C++ compiler (MSVC) by many in its time, died even before Watcom. Whatever route MS took then, when building next FoxPro version in 1992 doesn't really matter now. Today, MSVC is alive as it can be at version 10 (as preview, to be released)...

(And I now think blogging more is sure to make me unpopular, so I will stop).

[1] I don't mean to show disrespect to "Flex Builder" developers (both actual developers and people using it). Sorry if I sounded rude,  it was to make my point clear. I think "Flex Builder" should be a native or Flash application, in principle. I don't 'demand' it to be done 'now', but I believe this is something everybody involved should know and agree and expect as a realistic future goal: A better IDE than Eclipse in every way, written in actionscript, running way better than any Java app can run, in Flash VM... (Same applies for the AS compiler).

[2] Obviously SilverLight (or Flash) is more than just a 'toy for animation'. The usage is for making my point, hopefully, more clear.

May 18, 2009 in Flash, Flex | Permalink | Comments (8) | TrackBack

May 17, 2009

Why I don't think Flash Builder is a good name...

A man applies to court to legally change his name. Judge asks "What's your current name?", man replies "John Shit". Judge says "I see why you want the change. What would you like your new name to be?". Man says "James"...

I admit there was some confusion because "Flex Builder" could actually build more than Flex Framework based work etc. I admit another name be it "Flash Builder" or "XYZ" will help cut this confusion.

But the name "Flash" already means many things to many different people. Confusion around the word "Flash" is probably more deep than any Flex related confusion.

What is Flash? To me it's still the Flash authoring tool. For some it's the Flash Player. For too many people it's 'a SWF file'. Does anyone take 'Flash' as 'Flash Platform'? I don't think more than a few if any, you need to explicitly refer to it as 'Flash Platform'.

So is 'Flash' a 'platform'? Has 'Flash' become a 'platform'? I'd say 'yes' but not in 'words'. Confusion rules. And we are to welcome another member.

There are some catchy words, sometimes software companies use for all their applications, like 'Smart', 'Cute', 'Easy' etc. Then when they release any application they will use the cute name first, as a trade mark, like Smart Editor, Smart DVD Ripper, Smart Doc Shredder... I don't dislike the practice, it's totally fine and we can even do that in the future (if we can find a name not taken). I think this is what 'Flash' is becoming. Not a platform but a cute name, a buzz word you find on (hopefully only) Flash related Adobe applications.

I don't want see the word 'Flash' like this. I want it to refer to the platform.

If you refer to a "SWF file" as "Flash", then the word "Flash" can never mean the platform. This is something I strongly believe. Do you think someone when referring to a "SWF file" as a "Flash file" will ever even unconsciously think he is actually referring to a "Flash Platform file"? Do you ever think of a "GIF platform" when you refer to a GIF file?

'Flash Builder' is a better name than 'Flex Builder' in a sense. But if 'Flash Builder' is building Flash, then Flash is the SWF file, not the platform.

Does anyone remember how Microsoft guidelines urged developers for calling their applications as "XXX for Windows" and not as "Windows XXX"? (I assume they still do). Is it "MS Windows Word" or "MS Word for Windows"? Obviously when Windows was new this made more sense, it was totally normal someone would want to include the name "Windows" in their application name as "Windows XXX"... I hope you get my point.

If 'Flash' was a platform, then the new name should have been 'Builder for Flash', not 'Flash Builder' *.

This would have also caused confusion. Heck, it's still creating confusion if SWF refers to 'Shockwave Flash' or not. Unfortunately, we have to accept that 'some' confusion is here to stay. With correct moves you make it less, with wrong ones you create more.

There are levels of confusion. To the clueless, a guitar (with 6 strings) can look like the same as a bass guitar (with 4 strings) (I have actually seen this happen more than once). You can either call all guitars as 'bass guitars' which will, on the surface look like it has cut the confusion (but will create more in the future). Or you can accept that level of confusion as a fact of life, that cannot be fixed for the clueless at that level (At least you should avoid a move that will create more confusion than it fixes)...

I want to finish with a positive note. It's good that, myself included, now not many people think it's still necessary to avoid the word 'Flash' to make 'Flex, Flex Builder' taken seriously (by people with Java background etc. who may think Flash is 'animation with a skip intro button').

Another positive note: It seems most people, many fellow bloggers I respect, don't agree with me on this one. This means probably I'm wrong and this is a good thing because Adobe won't change the naming policy because I don't agree, Flash Builder name is here to stay. Hopefully, I'm wrong and the name change will be better for the Flash platform.

* I don't think 'Builder for Flash' is a better name, or 'for Flash' use will be better. My point is that you shouldn't use the 'platform' name as a prefix to applications that create content for that platform. If I were to make the decision, probably the next version of Flex Builder would be called 'Adobe RedLight'...

May 17, 2009 in Flash, Flex | Permalink | Comments (6) | TrackBack

May 16, 2009

ASV is 9 today...

So I haven't been posting lately.

I was obviously busy, but main reason was (as I have written before) I didn't want to sound like trying to sell more copies of ASV using my blog, and I didn't want to post off-topic, but any on topic useful bits of info I could share was un-shareable. What was left was Adobe press release like news, like the recent Flash CS4 10.0.0.2 update, but I decided I didn't want that long ago.

Of course, I can always post about hot topics of the day, like recent Flex Builder name change to Flash Builder. Well, I hate it and I think it's wrong. Adobe is exploiting the 'Flash' name and I think it will not help the 'Flash' brand or the platform. A totally, absolutely wrong move - will cause lots of confusion in the long run* (so I totally disagree with KP on this one). OK I said it, it won't change anything (other than maybe some people with strong feelings about this will start not having good thoughts about me).

A few months ago I even did an off-topic test blog to see if I can really post at least daily. I saw that I could.

Anyway...

Today is ASV's 9th anniversary. I had to post, because I realized if I didn't, some people might get wrong ideas about us, ASV, ASV's future etc. We are on pre-release for quite some time now, for various reasons, but we are working and alive just as we always have been (We released last pre-release ASV just 16 days ago with improved SWF 10 and AS3 support). Second of all, I call myself 'ASV Guy', so this makes this post appropriate. And 9 years is quite a long time for any product.

I don't know how often I will post here, hopefully my next post will not be exactly this day next year...

* Unless Adobe is getting ready to 'phase out' Flash IDE, the authoring tool, which would be a worse (or probably the worst) move and Lee Brimelow says this is not the case.

May 16, 2009 in MG, Misc. | Permalink | Comments (3) | TrackBack