And now for some digital nirvana ;-)

Dig this… 16 YouTube Videos all playing from the same SWF… digital nirvana !!!

digital nirvana

Once upon a time, in the not too distant past, I was asked to fix a rather nagging performance issue that involves playing more than 4 videos using a SWF-based streaming video player… well my first impression was to reduce the number of SWFs to just 1 while increasing the number of videos being displayed to something closer to 16 !!!

While I was not told doing this would be “difficult” or otherwise “challenging”… I was met with a certain amount of healthy skepticism and not only because the development team I relayed my solution to was not all that informed as to what the Flash Player might be able to do – they also were not all that informed as to what the Flash Player might be able to do in this regard.

So far, I can tell you all there is no real trick in playing 16 YouTube videos using the same SWF via a Browser – this works !!!   Now I think I will try to update the video player to use something a bit slicker than the standard-run-of-the-mill Chromeless YouTube Video Player…

Gee, I wonder what else I might make this little ditty do… ?!?  Maybe deploy itself to the Android Market ?!?  Oh, yes, this would be far too easy !!!  Try doing this with Java – I dare you !!! – LOL

Enjoy !!!

Advertisements

More Android Adventures

Getting some good downloads just from word of mouth and no advertising while working on the back-end to make sure I won’t have to pay any money to Google for the Google App Engine.

BTW – I now have a slick method for ensuring only 2000 emails per day are sent by aggregating over a 1 week period; all excess emails are shunted to a PHP Script running on a low-cost resource I have secured in 5 year intervals (unlimited bandwidth and unlimited disk space, yeah – one of those…).

See the status:

Android Development Project #1 – Game Tube

Game Tube is a new Android App for Android 2.2+ and Adobe AIR 2.5+

Game Tube 1.0

Game Tube 1.0 will allow people to view certain selected Gaming Sessions for entertainment purposes only.

New Gaming Sessions will be added on a regular basis.

Game Tube 2.0

Game Tube 2.0 will allow users to “upload” their gaming videos via You Tube as a way to share their Brag Clips with other users of Game Tube 2.0.   People will have the option of installing a Desktop Version of Game Tube 2.0 to their Windows/Mac/Linux Desktop to Administer their Game Tube Brag Clips;  there may be some support in the Android version for this also.

Game Tube 3.0

Game Tube 3.0 will allow users to build their own Social Networks of friends and others they wish to share their videos with.  There may be a FaceBook App that interfaces with Game Tube 3.0 to allow users to share their Brag Clips via FaceBook.  Support for Twitter and other Social Networks may be added depending on user support and user requests.

Stay Tuned for the ride !

Check back here for additional details whenever they become available.

Charting Stress Test for Flash and the Google Cloud

This is a story about LitePoint.Com and how they need to hire someone who can resolve their terribly messed-up Flash Builder 4 Code that cannot perform real-time charting of only 5000 data points.

Once upon a time a skilled software engineer went on an interview with the aforementioned company who said they wanted to hire someone who has worked with Charting Apps that chart a bunch of data points, in this case some 5000 every 250 ms.  The skilled programmer told them he could do the work.  They asked what past coding projects could they view as proof of the skill our rugged Hero said he had.  All went well for the first part of the interview until… The two guys who had created their problems had their chance to interview our rugged Hero.  Neither of those guys had any experience to speak of with Flash or Flex (Flash Builder 4 is really Flex).

One of these guys was a C++ programmer and neither knew anything about Object Finalization, as if knowing how to cause objects to be garbage collection is all that big of a deal – which it is not, of course.  Let’s forget the fact that one need not be the least bit concerned about either object finalization nor garbage collection when performing real-time charting of 5000 data points every 250 ms – because none of that is the least bit required.

Let’s also forget the fact that one need not create a bunch of objects to get 5000 data points charted every 250 ms; unless someone tried to build their own charting display objects and they had no clue what they were doing.

Let’s also forget the fact that not only can Flash Builder 4 produce Apps that can chart 5000 data points every 250 ms one can also easily optimize this system to handle far more than just 5000 data points every 250 ms.

Let’s also forget the fact that our two llama C++ guys who caused their own problems were trying to convince their bosses that Flash Player cannot handle charting 5000 data points every 250 ms, as-if the only way to get this done would be to code it in C++.

Let’s also forget the fact that if one really wanted to one could shove C++ code into a Flash App to get the performance up, if one had to do so.  It’s called Alchemy, not that those two Llama’s had any clue about this aspect of Flash anyway.

So now that we have chosen to ignore all the facts we can focus on the solution which by the by only required 12 hours time to build but then this is how a skilled programmer handles such trivial tasks as charting 5000 data points every 250 ms.  This is worth 12 hours because this is a non-issue for Flash Builder 4.

See also: Charting Demo – go ahead and download it.  The published version handles 5000 data points every 250 ms with ease.  The simplest of optimizations could easily boost performance to 20,000 data points every 250 ms with ease.  Additional optimizations would result in 50,000 or more data points charted every 250 ms, also with ease.  Just in case Flash Player might prove too slow one could always achieve this goal using any number of techniques capable of displaying 30 charting updates per second by using some optimization techniques any suitably skilled programmer should be able to manage with ease.

Anyway, Charting Demo took 12 hours to build – time-permitting some additional features may be added such as a slick Dashboard with gauges and dials to show the performance.  It would also be nice to boost the performance as high as possible just to prove this can be done with Flash.

Moral of the story is… if you need to hire someone to fix your problems you might as well hire the guy who says he can get the work done… who knows he might even get it done right away and save you some money OR you can just live with your problems and keep on interviewing until you find Mr. Perfect who may or may not be able to get the job done.  Either way, this is nothing but a trivial problem for those who are suitably skilled – the rest cause the problems without knowing how to fix them.

BTW – The skilled programmer who wanted to fix these problems for that wayward company has also NEVER created a problem he could not fix – hey, I am talking about myself anyway in the 3rd person – this is a story so deal with the literary stuff however you wish… those who create problems they cannot fix should also not piss those off who can fix whatever problems anyone may care to create.

It should be noted Charting Demo was created with a couple Frameworks (Flex and the Google App Engine) that don’t exist anywhere else; Flash Builder 4 for the client and Python/Django 1.1 for the server.  Reusable code make Application Development a breeze – 12 hours is pretty quick for any development effort and this one has some pretty cool features – all those features are 100% reusable.  No reason to spend time reinventing the wheel – unless you are in Corporate America and cannot figure-out how to make your code reusable.

AmazingFacts.Org sells 50,000 units of the Product produced by Ray C Horn !!!

Their development investment was less than $50,000.00 !!!

Not bad for a product that was produced for Windows and Mac in English and Spanish based on a prototype that was produced during the first 30 hours of development !!!

Try as hard as you might you cannot beat this value in any single individual contributor !!!

Way to go Ray !!!

PDFXporter + Polymorphical Project Diary :: Rapid Project Development :: Day #13

Read the Disclaimers and Warranties and download the Pre-Alpha now

Day #13 – Billable Hours #1 -6

Application Prototype in a Single Day !

This is the first big real-world test for the concepts published in this article series. Someone needed a complete Application rather quickly and since this is something near and dear to my own heart I chose to step-up and provide the prototype in just about 6 hours or effort.

Polymorphical is born !

By using the exact same code model from the PDFXporter Project I was able to build-out a completely functional Prototype for Polymorphical in just 6 hours of work.

Requirements:

These are the only two Requirements, there are no others.

  • Scan a bunch of JavaScript files and determine the Class Hierarchy for all these JavaScript files such that a Tree can be displayed.
  • Cache the Class Hierarchy based on the timestamps of all the files that describe nodes in the Class Hierarchy so that users can display the information quickly without having to scan each time.

Why use the PDFXporter Project as the template for Polymorphical ?

The answer is simple.

Because I can !

Because the new Application should inherit 100% of the functionality of the former !

Because doing this is just cool !

And because the guy for whom this work is being done might just be a little bit impressed and that might work wonders for my career.

Day #13 – Billable Hours #6 -8

Rework the Model so both Projects share more code !

Now that there are two different Projects sharing the underlying Framework the time has come to allow many more Projects to be spawned from this Framework by building a common upper-level Framework; the lower-level or Core code is already 100% reusable.

Project Recap so far…

During the previous 12 days of development the following has been accomplished by one single individual contributor:

  • Reusable Cloud-based versioned API has been created, tested, validated and placed online with live code.
    • The Cloud-based API can easily be reused for ANY project or product that requires License Management.
      • If one Product can be produced then ANY number of Products can also be produced with minimal effort.
        • Two (2) different Projects have been built so far using very little time and effort.
          • ALL Projects that stem from the original share the very same Cloud-based Back-end now this saves time and money like there is no tomorrow.
    • The License Management System can be easily extended to require Pay-Per-Use or Pay-Per-User or any other viable model.
      • The Payment processing System could be any usable provider such as PayPal or Google Checkout.
      • License Management System also supports Freeware.
      • License Management System does not use OpenID nor does it require Users to have Google Accounts.
        • OpenID or Google Account Authentication could be used going forward as options.
        • FaceBook Authentication is also an option going forward.
    • Terms and Conditions have been installed in the product.
    • Auto-Updater has been coded but needs to be tested using a real-world scenario.
    • Badge Installer for the Personal Version has been completed and is online.
    • Version 0.1.1.0 has been deployed and is online.
  • Reusable Adobe AIR 2.5 Framework has been created, tested, validated and placed online with live code.
    • Adobe AIR 2.5 also means there could easily be an Android App using much of the same code as is used by the Desktop App.
    • Native Installer means Native Process Support is automatic – this allows the Desktop versions to be augmented by some rather powerful client-side code, should this become a requirement.
    • Adobe AIR 2.5 also means the Desktop version could run in Windows, Mac and Linux however for now the pre-Alpha version is Windows only.

PDFXporter Project Diary :: Rapid Project Start-Up :: Day #1

PDFXporter Project Diary :: Rapid Project Development :: Day #12

Read the Disclaimers and Warranties and download the Pre-Alpha now

Day #12 – Billable Hours #1 -4

Reworking the Security Model a bit at this time

Making sure the Security Model is a bit more secure… And now the Security Model is more secure.

The Goal now… Export PDF Bank Statement as .XLS or .CSV

Now I can focus on exporting the information (ASCII Text) from a PDF Bank Statement as Data in the form of .XLS or .CSV.

Day #12 – Billable Hours #5 -8

Beginning to get data from Bank Statement PDFs

The process has begun… getting data… building the GUI… fleshing-out the API… building the Cloud Support.

Google App Engine requires API Requests to complete within 10 secs.

Much processing is required to handle the conversion of ASCII Text to Data for each page of the Bank Statement PDF. The process must be carved-up into a pipelined process for Personal Version Users who are running the App from the Cloud. It may be necessary to process the ASCII Text into Data via the Client rather than the server however for now the process is being run in the Cloud since code can be reused from a previous effort for this purpose; and let’s face it, Python is a much better language for processing text into data than AS3.

Project Recap so far…

During the previous 12 days of development the following has been accomplished by one single individual contributor:

  • Reusable Cloud-based versioned API has been created, tested, validated and placed online with live code.
    • The Cloud-based API can easily be reused for ANY project or product that requires License Management.
      • If one Product can be produced then ANY number of Products can also be produced with minimal effort.
    • The License Management System can be easily extended to require Pay-Per-Use or Pay-Per-User or any other viable model.
      • The Payment processing System could be any usable provider such as PayPal or Google Checkout.
      • License Management System also supports Freeware.
      • License Management System does not use OpenID nor does it require Users to have Google Accounts.
        • OpenID or Google Account Authentication could be used going forward as options.
        • FaceBook Authentication is also an option going forward.
    • Terms and Conditions have been installed in the product.
    • Auto-Updater has been coded but needs to be tested using a real-world scenario.
    • Badge Installer for the Personal Version has been completed and is online.
    • Version 0.1.1.0 has been deployed and is online.
  • Reusable Adobe AIR 2.5 Framework has been created, tested, validated and placed online with live code.
    • Adobe AIR 2.5 also means there could easily be an Android App using much of the same code as is used by the Desktop App.
    • Native Installer means Native Process Support is automatic – this allows the Desktop versions to be augmented by some rather powerful client-side code, should this become a requirement.
    • Adobe AIR 2.5 also means the Desktop version could run in Windows, Mac and Linux however for now the pre-Alpha version is Windows only.

PDFXporter + Polymorphical Project Diary :: Rapid Project Development Day 13


%d bloggers like this: