Sunday, March 25, 2007

Learning from spammers

I just visited site from a spam email and... I think there is lots of things we can learn from spammers about design: clean, direct, colorful, pretty


Saturday, March 24, 2007

Stupidity causes global warming, too

Not directly, of course.

But when you do something stupid, you make one or more people proud because they were not you.

That does cause global warming and you should stop making other people proud for not being you..

~

Why did I just post this:

Regarding my article Adobe's Apollo, Google warned me that I violated terms of use by posting a non-useless article on Blogger.

Tuesday, March 20, 2007

Adobe's Apollo



WARNING: People seeking for useless philosophy only, may skip this post

FOR OTHERS, IMPORTANT DISCLOSURE:
I'm Flash, Adobe Reader hater!


http://www.technewsworld.com/story/56394.html


From developer's perspective (and this is going to be our call), there are very important reasons why HTTP/HTML/P*/CSS/JS/mysql/Linux combination took major role in web revolution and Flash became a hooker.

I've worked actively with different models/platforms - C, C++, Borland (OWL), Microsoft (MFC) and Java, directX... (exception is .Net),

...for about 17 years.

Let's see why I've learned:

0)
- Online: I want **nothing** to do with local computer. I want nothing to do with local files, file systems, registry, video resolution,
local API, installation folders, need-this-library-situations (!). If I want to store something for user, It's going to be on my server in file system on a machine which I specially prepared for this application and for which I know how is organized, what can take, under which load it is expected to collapse.

If there is structured data, I want that to be in my mysql, which I configured with around 40 highly specific commands in my my.cnf, which nobody is allowed to touch, not even system administrator.

I want UI totally separated from the application Engine: these are two completely different things. UI is dirty, quickly made up spaghetti code which only needs to work correctly and to be beautiful from outside.

Back engine needs to be clean, structured, stable - to spare machine and crash never. Most importantly -
data needs to be in one pool for every client, not them connecting to each other over and over. That generates routing problem and requires developer's advanced knowledge which we're trying to avoid in order to have more developers on Earth .

When I build UI - I think like a user, I just visualize desired outcome and try to build up to it as fast as possible...

But, when I build back engine - I feel compassionate to the machine which is going to run it, and am very careful for every memory allocation, every open file handle..

UI takes lots of resources (check your browser's memory footprint) and often forces machine (browser) into crashing.

Back engine is simple code, takes little resources but needs to be absolutely reliable.




Being entirely different in almost every aspect, these two should be separated far far away from each other.

Otherwise, imagine this way: every time browser crashes, you lose your data.


Privacy? One of the best manipulated subjects today.
Will probably time out, after majority realizes that attention=money, ranging from $0.04 to $30 per pair of eyes per occasion. Take my word, forget it for a moment.


1)
- Linux: community+simple+stable+familiar. This includes experience in working with file systems, knowing what machine can/cannot do. Even version of OS makes difference to me. I can quite feel what can be done with particular machine, so we don't waste time/money under scaling /overkilling.

2)
- HTTP: switching to url and stateless request was a major milestone in my life!

One request is one life cycle of the micro application. You don't have to keep image of entire system in your mind. An action starts with initialization, does thing, goes away in 500ms. DB carries the burden of managing the state and shared data. In other words, you can focus to serve specific action at a time and you can release everything else from your mind. Beautiful.

Otherwise, you need to think about health of the process, memory allocation and releasing, cleanup threads, occasional saving to disk, dealing with recovery


Is Adobe thinking of taking us back to dark ages of application installation, versions, data loss, incompatibility and when developing was a science? If not so, what is their proposal?

I must be missing something important here...

Application developers are users of platform designers, hence we should be treated as idiots. Appreciated.


This is exactly why HTTP took over everything else. Downside is speed, but developers are more important.

Also with XHTTP/JS you can decide how much you really want to reload, so when developers are ready, they'll use it!

As an ex-desktop developer, it took me some time to get used to it - but now wouldn't change it for anything. It should be treated as a step forward, not backwards.


3)
- Mysql took over because of the community, availability and price. Even postgress seems to be better (heard so), it's not enough. Any mysql's question is answered somewhere, and there is lots of questions when it comes to storing your data.

4)
- P*: in my case PHP, is similar to C, especially function names. That's why I chose PHP, nothing really more to it.. Loads fast (can be used in stateless mode), has well done mysql support, associative arrays - that's why not Java.
- Also, has Zend Studio IDE and I would really rather stay with PHP because of Zend than something else which wouldn't have Zend.
- php has hundreds of libraries built by community, covering almost anything. Done.

4)
- JS/Firebug: I'm actually addicted to it. Firebug is seriously best debugging tool ever built, having MS Visual Studio and Zend studio as competitors. Plus? Available from any(F) browser. No debugging' servers, no client switches, no levers, no howtos... For the first time, ever! Hello?

5)
- Firefox (browser): extensions. Without Firebug, timestamp generator, hashing extension, WebDeveloper toolbar I would kindly try to avoid it.

6)
- HTML+CSS+JS: (I'm coming from OWL, MFC and JavaSwing). This is great combination for building UI. Anything you need, strait on the spot you need. My wife is a lawyer and she is just now building corporate website in HTML in Word. I'm sitting on the other computer and building 2.0 application in Ajax. Using the same paltform.

Ok, actionscript==javascript, but is the whole combination what makes it great.


To be fair, code is dirty but it doesn't matter for UI: if it works - it works. It is far more important to have freedom.



In the other corner we have:

1)
- Coding Flash is just plain nightmare. Even actionscript==javascript, Flash DOM is retarted.


let me document the claim:

// create a layer with a border and write some text inside

// create a layer
_root.createEmptyMovieClip( "myclip", 1 );

// why the hell this way?
var myclip = _root.myclip;

myclip._x = 0;
myclip._y = 0;

// allow me to ask few questions
// why layer is called movie clip?
// why _root has that underscore?
// why I need to specify some number which is level
// and I'm required to do so (think: z-index)
// why the hell this call doesn't return
// pointer to new layer, but instead I need
// to pass string name and retrieve it from soehwere else
// why underscore in x and y ??
// why why why??


// ok, make a rectangle
myclip.moveTo( 10, 10 ); // !!
myclip.lineTo( 100, 0 ); // !!!
myclip.lineTo( 100, 100 ); // !!!!
myclip.lineTo( 0, 0 ); // !!!!

// dont worry, won't even work
// you need to set myclip.setLineStyle before d'oh

// have some text on it

myclip.createTextField( "mytextfield", 1, 0, 0, 100, 50 );

// 100 and 50 are dimensions of text rectangle. Yes! you need to
// specify it and yes, your text will be clipped if you
// anyhow specify smaller than it takes
// "1" was again required z-index and 0 0 are coordinates

// AAH! not to forget. IF YOU SPECIFY TWO OBJECTS IN THE SAME Z-INDEX
// THE SECOND WON'T EVEN SHOW OFF. THEY USED THE SAMEL LEVEL
// RE-FUCKING-TARDED!!


// I won't even comment this again:
var mytextfield = myclip.mytextfield;


mytextfield.text = "Fuck you Adobe";

// and here we go, a layer with rectangle and text inside
// you want some other font, size or something else?
// ooh, you'll need to create TextWhateverStyle object and fill it with values


// leave you there..

what about HTML + CSS?

<div style="position:absolute; top:0px; left:0px; border:1px solid #000000; color:#ff0000;" >Fuck you Adobe!</div>


need to say more?


2)
- The latest Flash IDE is on level of Borland Turbo C 2.0 from 1987.


Odds that Adobe is going to move web revolution to the next stair?


- Why flash then?

Great 2D animation engine underneath. Macromedia/Adobe developed these graphical engines/technologies to support their old products. These seem to me practically ported to Flash and really well done. As is DirectX.


However, this, or most said in Apollo's FAQ page don't have anything to do with Web revolution.

I'd say Adobe doesn't really understand why web is moving in the direction it's moving. Instead, they probably see it going backwards and trying to help us by bringing up '80s.

Sunday, March 11, 2007

Humans from cat's perspective

We, humans, may appear plain stupid in the eyes of cats.

Two reasons:

Reason Number One

At first, we were their food.

Now - we feed them, provide shelter, take care of their health, clean their shit


Reason Number Two



Friday, March 02, 2007

Geek

I caught myself downloading using command line ctorrent while browsing with text browser elinks on a FreeBSD under VMWare, everything running on a Windows box.

I wonder... when did I become such a geek