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 !!!

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


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

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

Day #11 – Billable Hours #1 -4

The Goal now… Recode that lame Auto-Updater Code from Yesterday

Not going to go back over why this is being done but rest assured this code module will be cool once I am done with it. Honestly, I think the original author would have done what I am about to do had he thought about it but alas he probably doesn’t have the required experience level to allow him to go where I will take this code module.

Auto-Updater is no longer lame !

As it turns out the Auto-Updater code just needed a bit of server-side magic to complete that circuit. Still have to test this part of the product however for being in Day #11 there is no need to get all axel-wrapped over whether or not all the code is perfect since the ability to perform Auto-Updates will come out in the wash sooner or later and surely before the product has been releases as a Beta version.

Needless to say, I do not allow code into my own products unless I know it will work and has been thoroughly tested – again I do not even bother to call this “Unit Testing” because this is just a fact of life – code must be tested and so it shall be.

Day #11 – Billable Hours #5 -8

Badge Installer / Enterprise Edition / Trialware-Freeware-Personal Versions

Then Badge Installer for those who just don’t want to download the installer – Badge Installers know how to install the product from the web – click on an icon or something then watch the installation happen, this sort of thing. Obviously those who install using the Native Installer will have a more powerful Application due to the Native Process support that goes along with the Native Installer; those who install from the Badge Installer will be getting into the Trialware Version where they can try-it-before-buying-it sort of thing. The Native Installer Version will be the Enterprise Edition and the Badge Installer Version will be the Trialware/Freeware/Personal Version.

Downloads are too big !

Yup, I have produced so much code during the first 11 days… well Google App Engine has limits and one of them is the file size so now I have to relocate the downloads to another server farm – also Google App Engine has bandwidth limits but never fear all this takes is a bit of time. Google App Engine remains a free resource for me and not only because I know how to use that TCP/IP thing… but I do !

Project Recap so far…

During the previous 11 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 Project Diary :: Rapid Project Development :: Day #12


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

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

Day #10 – Billable Hours #1 -5

The Goal now… Terms and Conditions of Service and Automatic Updates

Now the goal is to craft some Terms and Conditions for use and all that legal stuff nobody likes to think about except Lawyers and those who like to cover their buns.

Users must now read and respond to the Terms and Conditions before they can upload Bank Statement PDF Documents for processing.

Day #10 – Billable Hours #6 -8

Automatic Updates

Then Automatic Updates… this is why people love using Adobe AIR Apps – they keep themselves updated.

The Auto-Updater code I found doesn’t work very well so I am recoding it using my own specifications which as you may know from reading my blog posts, it has to work and when it don’t work I make it work. I am not a fan of XML at-all because when I am paying for the bandwidth JSON works better, when you pay for the bandwidth you can use XML, no worries. Also the code the author of the Auto-Updater module I found used a rather lame technique for fetching XML from a URL and let’s face it I have much better code that just works better – duh ! But seriously folks, what’s the point of using code that only works sometimes when you can deploy code that works all the time. By the time I am done with this Auto-Updater Code rewrite I will have a much more robust system for handling Auto-Updates for my Native Installer Version which should also work for the Bade Installer Version as well but I will have to see how this all works.

Badge Installer / Enterprise Edition / Trialware-Freeware Versions

Then Badge Installer for those who just don’t want to download the installer – Badge Installers know how to install the product from the web – click on an icon or something then watch the installation happen, this sort of thing. Obviously those who install using the Native Installer will have a more powerful Application due to the Native Process support that goes along with the Native Installer; those who install from the Badge Installer will be getting into the Trialware Version where they can try-it-before-buying-it sort of thing. The Native Installer Version will be the Enterprise Edition and the Badge Installer Version will be the Trialware/Freeware Version.

Project Recap so far…

During the previous 10 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.
    • Initial version of the Auto-Updater has been installed but must be recoded due to lameness.
  • 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 Development :: Day #11


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

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

Day #9 – Billable Hour #1

The Goal now… code the PDF Export to Data Function

Now it is time to write the code that exports PDF content as Data. I wrote this code some weeks ago as a precursor for this project and to prepare for this project; so all I have to do is reuse some code from a past project.

Obviously for Version 1.0.0.0 all of this can be fairly simplistic – just export the contents of the PDF as Text and call it a day. The next version can refine this process further. The next version can export the PDF as an .XLS or .CSV. The version after that can export the PDF as a small Database (glob of Objects aka. JSON) – the client which is an Adobe AIR 2.5 App can provide allow the user to run reports on the data as well as process the data into Income and Expenses.

For now, all I need is the ability to upload the PDF – export the data into a Blob then allow the user to download the Blob as a JSON object and call it a day for Version 1.0.0.0

Version 1.0.0.0 Can be Freeware

The first several versions can be Freeware with no cost for Users at-all. Once I get enough Users I can establish a pay-per-use model – License Management changes not at all by then other than to limit the functions a non-paying user gets to use along with an extra dialog that asks for money via PayPal, etc.

Day #9 – Billable Hour #2

PDF Export function is online now !

PDF into Text is noting to talk about. This can be done with pretty much any PDF Reader program.

Next Up is the PDF to Data

Making Data out of Text you might export from your Bank Statement PDF is a bit more of a trick than simply getting ASCII Text. This is where PDFXporter will shine of course. In the meantime, I think I will spend a short time playing with the PDF Exporter function that runs in the Google Cloud just to make sure it will run fast enough. Again, you can call this Unit Testing if you must however I hardly doubt this is any more than just doing my job as a Software Engineer; write it and test it is about as profound as breathing air and pumping blood – has to be done either way.

Day #9 – Billable Hour #3-8

Now it is time to build and deploy the Distribution Site

Version 0.1.0.0 is online and ready for deployment so you and others reading this Blog Series can play with a real live Application so you might know what I am writing here is real and substantial. Surely your first response will be to disbelieve that anyone can produce a working Adobe AIR 2.5 Application in 9 short days of development – actually I could have done this faster if I were actually being paid to do the work – I tend to work faster when I am being paid although I am not sure why – call it a sense of urgency, if you must.

Next Step is to Deploy the Site people can use to test-drive PDFXporter

The Pre-Alpha Installer come first… The goal is to make a Native Installer for PDFXporter running in the Google Cloud.

You can sample this product now during the pre-Alpha stage here. Kindly report all issues to the proper Support Department.

Project Recap so far…

During the previous 9 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.
  • 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 Development :: Day #10


Follow

Get every new post delivered to your Inbox.

Join 328 other followers