This is why I love HTML5 !!!

Kamkar’s API comes just days after a lawsuit was filed against a company for making use of the HTML5 Web SQL database storage capabilities that come with Safari, Chrome, and Opera. First exposed by Ars Technica, this particular company (Ringleader Digital) made an effort to keep a persistent user ID even when the user deleted cookies and their HTML5 databases, telling Ars that the only way to opt out of the tracking was to use the company’s opt-out link (which gives the user no confirmation that they are, in fact, opted out.)

See also:  http://arstechnica.com/web/news/2010/09/evercookie-escalates-the-zombie-cookie-war-by-raising-awareness.ars

I don’t know about the rest of you but this strikes me as being just way too cool for school !

 

Advertisements

The End of JavaScript !

JavaScript is perceived to be a fairly secure language in that once the code has been placed into the DOM that code cannot be changed by the end-user.

See also: New Hax can attack any Website !

Consider the following graphical representation of a system that could easily be used to cause client-side code to become obsolete:

Figure 1 – Soft Hax

Secure Web Server

Notice how the Web Server remains secure from any kind of hacking attacks. Port 80 is the only port that would need to remain open and the user need only make normal unmodified requests to fetch content from the target web server.

Notice also that those who monitor the web server for any kind of hacking attacks would not see anything aside from normal typical activities such as those that are used by the browser to fetch content using whatever methods are in-use by the content itself.

The Proxy

Notice also how the real magic in this special method of hacking lies in the Proxy layer. The Proxy is the thing that fetches the content while allowing the end-user to choose how the content is to be presented and then modified.

The Proxy passes requests from the client browser to the server while capturing the content so the client browser can be used to determine how to change the content before it gets to the browser.

The Proxy can be used to make the JavaScript look pretty enough for the human using the browser client to make decisions as to what should be changed.

The Proxy can be used to unpack JavaScript, if you know what JavaScript packing is then this will make sense to you.

The Browser Client

The browser client is not your typical FireFox and FireBug combination most web developers are familiar with, it is however a special type of webkit browser.

The end-user would begin by issuing a request that fetches raw unmodified content from the target server. The raw content is unpacked and unminified, as-required, then passed along to the Browser Client. The End-User then gets to see JavaScript that is now more human readable than not and this one feature alone makes this brand of soft hacking valuable and useful. The End-User is then allowed to determine where to make changes in the content; the changes are passed along to the Proxy and the Proxy is then told to fetch the content again but this time the changes are made to the content per the request of the End-User.

Any changes that cause the server to make conclusions other than those it would normally make would be possible.

For Instance

Let’s assume those who crafted their content chose to off-load much processing from the server to the client (this strategy is in common-use today); let’s also assume the security of the server was left in the hands of the client since it was assumed that nobody could change their content once their content was passed along to the browser once the request had been satisfied.

So now here comes an End-User who has the ability to make changes to the content that comes from the server without anyone knowing what is happening other than this one end-user.

What could the End-User do ?

The End-User could make changes that allow the end-user to be logged-in as a User without the need to have a User Account or the End-User could fetch an existing user account for the purpose of making changes.

At the very least an End-User could legally obtain a user account and then make changes to the way the client operates to achieve what could not otherwise be done in a completely legitimate manner.

JavaScript Singleton Patterns

The JavaScript Singleton Design Pattern seeks to ensure the singleton object can only be created once.

To this end, it is my assertion the best and simplest approach is to simply use a global variable because global variable instances can only exist once and only once and by definition a singleton is a static entity and static is just another way to say global.

As you can see from the links below, there are seemingly numerous ways to get to something one might be tempted to call a Singleton however they all have one thing in common, they all make use of a static to anchor the Singleton into memory… because a Singleton is a static, clean and simple.

The bottom line is no matter how long a way you want to go to get to a Singleton in JavaScript there is only one way to make a Singleton remain in memory and that way is to use a global variable; the rest is nothing more than window-dressing. Those who favor the window-dressing over what sits behind the window are the very people who wish to appear to be smart and intelligent without so much as actually being smart and intelligent. Those who are smart and intelligent will look for methods for doing their jobs that allow them to get more done in less time since time is the finite resource that one can never replace. You will only get a very short limited time with which to impress those who may engage you to get their work done so why not get as much done as possible in a short a time as possible – doing so will only serve to impress their socks off so much so they will likely seek to give you more money rather than not especially if you can continue to impress them every single time they ask you to do some work for them. Far too many professionals seem to think they should do their work for their clients in a manner than consumes as much time as possible by making their design patterns as flowery and ornate as possible while at the same time making others have to look and study what they have done since at the core of what they have done is the simple concept that says a Singleton is always a static variable and nothing more.

Consider this Singleton Pattern: (re: Javascript Design Patterns – 1. The Singleton)

The author wishes to make the Singleton be a single instance thing by denying the ability to make any more instances because… the Class is destroyed the moment the Singleton is created. This is exactly what a global variable is, a single instance that cannot be replicated. (see more below)

Consider this Simpler Singleton Pattern: (re: The Agile Developer’s Blog)

This code performs exactly the same functions as that of the previous example without the need to use prototype.js.

Why does this work ?

After-all, at the end of the day, for JavaScript an Object is just an object regardless of how one gets there.

There is no way to make another instance of mySingleton from the object template since it is assigned to a global and there is no Class from which to make another instance.

One can still make use of a closure, if desired to hide the inner-workings in a nice safe and secure spot, well almost nice and safe until this product come alive.

BTW – mySingleton is a name-space within which one can place items that are segregated from the rest of the global objects, just as-if a Closure had been used.

References:

Singleton Design Pattern

Javascript: best Singleton pattern

WikiPedia’s version

Object-Oriented JavaScript Tip: Implementing The Singleton Pattern

Javascript Design Patterns – 1. The Singleton

The Agile Developer’s Blog

I coded this too !

Yeah, I code Python !!!

Code this myself, using both my little hands and the Wing IDE Pro, what else ?

I have also coded millions of lines of Python code but I lack sufficient time to make movies for all that code…

Sample Run, in HD !

Hey, this means I either know how to code Python OR I know how to produce an interesting video that shows some Python code I got from “somewhere…”, oh yeah, I got that code from me… LOL

I coded this in a week single week !

Yes, I did, code this in a single week !

The CS4 Adobe AIR 1.5 App that came in the door is a pale shadow of the Flash Builder 4 Adobe AIR 2.0 App that is going out the door.

All the knob polish in the world cannot change the fact that this entire App was built in a single week from nothing but the look and feel of the original App.

Features:

  • Built-In PDF Viewer
  • Built-In MP3 Player with Visualization options.
  • Built-In MP4 Player (also handles all the media formats supported by the Adobe AIR Runtime).

I think this level of work means I know what I am doing as a professional !

I am sure there may be some who read this who think to themselves I might not be able to reproduce this level of success…  to them I say, try me !

The short list of improvements…  (I can also code all of these features…)

  • Auto-Update System via the Google CDN.
    • The client did not want this feature but Adobe AIR Apps just love to get updated.
    • Support for Updating the Content that was deployed via DVD would be nice.
  • Native Installer rather than the Shu Player.
    • Shu Player has problems…
      • Shu Player requires the Adobe Runtime to be packaged with the App and this bloats the App way out of proportion.
        • Minimum 25 MB for Windows
        • Minimum 80 MB for the Mac
      • Without Shu Player the App is just about 8 MB which is not bad for what is being done by the App.
  • Native Installer provides the following support options:
    • Ability to run Native Process at the OS Level
      • Opens the door to allowing for locally installed Media Server.
        • Locally Installed Media Server allows content deployed via DVD to be served with greater clarity.
  • Cover Flow for Media Items would be nice as an options.
    • Media Flow is another option for presentation.
      • All the Media Items are presents via a single  Panel rather than 2 Panels as they are now.
  • More Search and Filtering options would be nice.
    • Keyword filtering already exists.
      • Filter using Title.
      • Filter using Text.
      • Filter using Keywords.
      • Filter using All.
  • Media Builder options would be very nice.
    • Branding Support…
    • Interactive Media Builder…
    • Interactive Look and Feel Builder…
    • Ability to Upload Video Media to YouTube would be nice.
      • Support for making Videos Private would be nice.
    • Ability to Upload Image Media to Flickr would be nice.
    • Ability to Upload MP3 Media to the Cloud would be nice.
  • User Management would be nice.
  • User Registration via Self-Serve Kiosk.
  • User Login via Self-Serve Kiosk.
  • Collection of Marketing Data via Emails Addresses and other information would be nice.
  • Opens the Door to Pay per View and eCommerce options.

Yes, I definitely think this level of work means I know what I am doing as a professional !!!!

BTW – This means I have direct experience in the Media and Entertainment Industry !   Just saying… that’s what this App is and does…

Can we give you more money to get the work done faster ?

1 Week to get a complete product up and running !

How long should it take to get a complete product recoded ?

6 months ?

3 months ?

2 months ?

1 month ?

1 week ?

How many software engineers should be required to get a product done ?

5 people ?

4 people ?

3 people ?

2 people ?

1 guy ?

What should it code to get that one product done and out the door ?

$200,000.00 ?

$100,000.00 ?

$50,000.00 ?

$20,000.00 ?

$10,000.00 ?

Now double it !

Two products for the price of one !  Not bad, huh ?

Would you do this ?

If all you wanted from some programmer was to get 5 little items fixed so you could ship your product once again with some updated content, would you engage someone to rework the whole product ?

You might, if you had some difficulty finding some programmer who could fix those 5 little items…

You might, if you realized the person you engaged was doing much better job or higher quality work than anyone else you had ever engaged in the past…

You might, if you realized the look and feel for the new rendition of your old App was significantly better than anything you had seen before…

Would you try to get this developer you found to take more money ?

More importantly, would you ask this developer to take more money more than once ?

I was told this very scenario is just impossible !

Not possible for one single developer to successfully recode a complete product in a single week ?

Possible or not, it happened.

Possible or not, I am that single developer who got this done !

Possible or not, I could care less if it was possible, I only care that I got it done !

One Developer, Two Projects, Two Months, $20k !

Flash CS5 Adobe AIR 1.5 came in the door.

Flash Builder 4 Adobe AIR 2.x for Windows and Mac went out the door.

Two months of work, could have been just one month !

Expedited Delivery of Projects

Adobe AIR Projects can be fast-tracked or expedited just by doing one simple thing… Code an Auto-Update Process !

One your Auto-Update Process is done get yourself a CDN !

What’s a CDN ?

Content Delivery Network is a fancy way to say website.

Once you have your CDN you are set !

Your Auto-Update process connects to your CDN and whenever the CDN has a fresher copy of your Adobe AIR App the Auto-Update process will download the latest code and install it for your user.

Auto-Update give you the ability to get your App into your user’s hands faster !

Any time you can shorten time to market this is a huge win !

Your developer, that’s me, can focus on getting the App out the door faster.

Your App can begin as a Public Beta, Google does this all the time with great success.

Beta products can have bugs.

Your users can leave feedback to help drive your development efforts.

Your product can be FREE for all those who download to use during the Beta.

If you are smart you will require your users to Register to use the Beta – this gives you their email address and other information.

All this can be done in a matter of days, not weeks or months.

Total time to market could be less than a single month for a total cost of just about $15,000.00 !

See the sample online Video Comparison and the Final Product !

Just to recap, this product was recoded by a single developer in less than 6 weeks per product; two products were released on DVD for a total cost of just about $20,000.00 !

Contact RayCHorn.Com to get your next project done for less than you thought possible !

Contact VyperLogix.Com to see more work samples…

Hey, can I please do this work for you for less money ?!?

Part of what I do as a professional is to look for ways to reduce the cost of development…

Okay, this is NOT what every other professional looks to do since everybody else I have ever worked with has wanted to increase the development cost rather than working to lower it.

I have enough development experience that I can work to reduce the development cost and so I always try to do so.

Case In Point

Recently I was asked to work on a Media Player App using Adobe AIR 1.5 via Flash CS4 and I chose to recode the whole thing using Flash Builder 4 and Adobe AIR 2.x which I completed, with some rough spots in a single week.

One of the requirements for this Media Player was to play all the media from the DVD which on the surface seems reasonable however… older computers don’t have the chops to allow this to happen and a problem with playing MP3 files arose in the 11th hour.

Very early on I wanted to craft an Installer that could copy the contents of the 7.56 GB DVD to the user’s local hard drive because doing this solved enough problems, in my mind, to warrant taking this route down the path.

My choice was disallowed because much value was placed on ensuring the media was being played entirely from the DVD even though one of the requirements was to allow selected content items to be copied to the users local disk.

Just about 3-4 weeks of effort has gone into the original set of requirements rather than taking the route I wanted to take with development and in the end I have been paid more money than I might have made otherwise – on the other hand had I been allowed to fast-track development the product could have shipped earlier and the development process might have unfolded differently.

Managers who have less experience than I have will very often end-up paying me more money than I actually wanted…

This has been the case during my entire career.

Every single time I have made a suggestion I knew would reduce the cost of development and I was not allowed to do the thing I wanted to do the result was that I made more money in the long-run.

It’s not about control !  It’s about the technology !

I don’t stand around trying to tell my car mechanic how to work on my car !  Why not ?   Could it be I just do not know what goes-on inside my car ?!?   Well I don’t know what goes-on inside my car – so I step out of the way and let the mechanic do his thing.

I know this software engineering thing just well enough that I can help those who engage me to save themselves money even when it takes money out of my own pocket…

Why ?!?

Because when the development cost has been lowered more projects can be completed in less time.

When you can get your projects done faster at a lower cost you just might want to return to get more projects done at a lower cost.  And why not ?

Most Managers are more willing to make a mistake than to admit a lack of experience…

Nobody knows it all.

Nobody can know it all.

Those who wish to manage how the work is being done should be more open to the feedback they get from their professional software engineers.

Most Managers are less willing to take advice from those they manage…

Since most software developers seem to want to take the long way around to the solutions they provide most Managers have learned to reject what they hear from those professional software engineers they manage. And then here I come along giving advice that will decrease their time to market and before I know it my advice is rejected and I am being asked to take more money rather than less to get the job done.

Two Software Products in less than 12 weeks ain’t bad !

Any time your team of software engineers can produce a single product in anything less than 2-3 months is nothing less than phenomenal – just ask anyone who Manages any number of programmers.

What would you pay to get 2 software products done and in production in less than 2 months ?  Ask yourself and then engage me and I will get your project(s) done faster than your other team of developers !

%d bloggers like this: