Behavior, Content, Money – 3 Things you should never give away for free!!!

BCmoney MobileTV

JS Podcatcher v2.0

Posted by bcmoney on September 18, 2015 in AJAX, JavaScript, XML with No Comments


No Gravatar

This is the first revision of my quick and dirty Podcatcher (podcasting client).

English: Podcast or podcasting icon Français :...

English: Podcast or podcasting icon (Photo credit: Wikipedia)

It adds three new features:

  1. Ability to search for Podcasts by name (via iTunes API)
  2. Resolving the actual RSS feed URL from the Podcast ID
  3. Caching a copy of the RSS feed on the server in XML and only requesting updates if changes have been made

The last features I want to add in my next post will be the ability to arrange and sort multiple Podcasts you’ve “subscribed to” by dragging their “album art covers”, and . This little Podcatcher app would by then have pretty much the full capability of the native “Podcasts” app (official Podcatcher from Apple).

 

I’ve done quite a bit of research into Podcasting lately, particularly because they are making a comeback in popularity, far surpassing their original interest. There are a number of factors contributing to this resurgence, including:

 

Read the rest of this entry »

E-Commerce Shopping Cart in JavaScript and PHP

Posted by bcmoney on May 18, 2015 in E-Commerce, JavaScript, PHP with No Comments


No Gravatar
English: Jewel-Osco - monster shopping cart truck

English: Jewel-Osco – monster shopping cart truck (Photo credit: Wikipedia)

In E-Commerce, a “frictionless experience” is often described as the ultimate design goal when it comes to the consumer’s purchasing experience. An easy-to-use, robust shopping cart solution that can easily have any number of diverse types of items added to it, calculate shipping & handling, taxes and any other additional fees (where such apply), provides transparency and immediacy to the customer’s purchase decision. Doing this well can mean the difference between huge sales numbers and lackluster or disappointing sales figures.

Boiling all the Shopping Cart solutions out there to the most common, key functions we should expect a solution to support are:

  • Add/Remove items
  • Tabulate itemized sub-total
  • Calculate shipping & handling
  • Calculate taxes & fees
  • Tabulate total
  • Remember History for later purchase completion
  • Purchase/Checkout confirmation process

Other nice-to-have features that begin to move away from basic “Cart” functionality and into holistic E-Commerce platforms, include:

  • Multi-Address memory (billing, shipping… home, work, summer, etc)
  • Multi-Currency support (switch currency at any time)
  • Multi-Lingual support (switch languages at any time, i18n)
  • Multi-Layout support (switch look & feel at any time, l10n)
  • Storefront & “canned store templates”
  • Layout drag&drop/point-click customization (as per SquareSpace, Wix, etc)
  • Auto-fill forms (with customers’ stored Address info)
  • Auto-billing (subscriptions/recurring payments)
  • Notification options for receipt (Email, SMS, Phone notification, etc… in addition to on-screen)
  • International Shipment Tracking (parcel status check)
  • Returns processing
  • 3rd party payment support options (CreditCard, Interac eTransfer via Moneris/PaySafe, PayPal, 2checkout, etc)
  • PCI & PA-DSS compliance (possibly by payment gateway deferral for sensitive data)
  • Item import/export
  • Ratings (star, thumbs up/down, etc)
  • Reviews (public or private textual customer feedback)
  • Search
  • Wish List curation
  • Product/Service Recommendations
  • Discounts (coupons, limited-time offers, affiliate codes, etc)
  • Promotions (buy X get Y, welcome emails, inactive account enticements, etc)
  • Loyalty Program (points, rewards, etc)
  • Tracking company/brand affinity & engagement
  • Inventory Management (real-time RFID, NFC, etc)
  • Supply-Chain Management (SCM)
  • Customer Relationship Management (CRM)
  • Advertising platform integration
  • Analytics platform integration
  • Social Media platform integration

There are tons more possible features but those two lists capture the main ones. Having defined a Shopping Cart and our expectations of its basic capabilities, the remainder of this post will summarize how to roll your own super simple yet intuitive E-Commerce Shopping Cart in JavaScript and PHP that gets out of the customer’s way as much as possible, focusing on the first key set of options only; it will also include thoughts on how the base functionality could easily be expanded out to include some or all of the nice-to-haves of a full-fledged E-Commerce platform.
Read the rest of this entry »

LayerPlayer released for SkipSearch

Posted by bcmoney on December 21, 2014 in AJAX, Cloud Computing, HTML, JavaScript, Semantic Web, TV with No Comments


No Gravatar

Announcing the availability of SkipSearch’s new Layer Player ALPHA version. This is still early days even though its a multi-year project for me, as I continue to work on this in my very rare spare time. This new feature will much more readily bring to light the capabilities of the recommendation engine built under the hood of SkipSearch (powered by OpenRecommender). With this release, SkipSearch is effectively moving from Alpha to Beta in 2015 and getting further and further from vaporware and inching slightly closer to being a legitimate full-blown, widely usable (and hopefully well-used) Web 3.0 application. Please take a moment to check it out, and sign up for the BETA if you haven’t already:

131818816_80_80

 

For comparison’s sake, here’s the architecture of a typical Web Crawler that powers most Search Engines:

Read the rest of this entry »

JS Podcatcher (a Podcast client written in JavaScript)

Posted by bcmoney on November 29, 2014 in HTML, JavaScript, Multimedia, TV with No Comments


No Gravatar
English: The "Made for iPod, iPhone, iPad...

English: The “Made for iPod, iPhone, iPad” emblem appearing on accessories approved by Apple Inc. for iPod, iPhone, and iPad. (Photo credit: Wikipedia)

So just this month my 5-year old iPhone3GS finally bit the dust. I had been hanging on and managed to extend its life well beyond its 3-year Telco contract (which I immediately cancelled the day I was out) by pairing it with a MiFi hotspot for much cheaper VoIP-based calling and using data-intensive applications only when on WiFi. That trusty iPhone3GS made it through a major liquid submersion (thanks to the good folks at Atlantic Cell Phone Repair) two cracked screens (thanks to the good folks at iCracked). At some point I may even replace the screen again, which is what’s gone a third time. I’m pretty stubborn though, and now that I’ve finished off my Mobile contract for the MiFi as well, pretty much at all costs I really didn’t want to have to buy another discounted device which usually requires one to agree to the terms of a foolishly one-sided/restrictive 2-year or 3-year contract; likewise, I really don’t want to shell out anywhere near the full asking price in the $500-$1000 price range for a new smartphone. So it’s either go back to my old Nokia flip-phone and live in the early 2000’s on a basic voice-calling only plan, or, hack my old 4th generation iPod Touch into something with phone call abilities. Of course, I opted for the latter!

iPhone 3G and iPod Classic 5G.

iPhone 3G and iPod Classic 5G. (Photo credit: Wikipedia)

Luckily thanks to an excellent VoIP app called BRIA (of which a 4th gen. iOS 4 version is still available in the iTunes App Store), I was able to continue doing voice calling by using my Anveo VoIP service (highly recommend this low-cost VoIP provider, please enter Referral Code 5334764 if registering). I was already using Anveo through BRIA on the iPhone, over MiFi when on-the-go, for over a year and a half since I got out of that first contract. I’ve described Anveo in great detail in “My Experiment in Cutting Cords (and costs) with VoIP” where I went over setting the VoIP service up on an iPhone (with BRIA app) and just how much could actually be saved per month by taking the plunge and switching to VoIP instead of a traditional Telco calling/data plan. I’ve found that with a little patience and using replacements (such as Slingplayer in place of Bell MobileTV, or, SoundHound in place of Shazam) along with some occasional disappointment (can’t get older versions of Netflix, Skype, Fitocracy, and several other top apps), I was able to get a good amount (about half) of the apps I was most frequently using on my iPhone3GS, downloaded to the iPod4th gen, in their older iOS 4-supported versions.

One somewhat irreplaceable app though that I just simply could not find, nor find a replacement for was the basic “Podcasts” app built by Apple (common alternatives such as Overcast, Downcast, TuneIN, Slacker, and even RSSradio all did not work on my device either). I mean, seriously Apple, WTF!? Even the very first iPod devices were within a few years of their release to become known as the cannonical “Podcatcher” (Podcatcher means a podcast downloader/player).

The term “podcasting” itself was first mentioned by Ben Hammersley in a February 2004 article in The Guardian newspaper as a portmanteau of the words “pod”, from the success in consumerizing digital music with the “iPod” line of Apple products and “broadcast” (as in traditonal Radio/TV broadcasting to many receivers over a wide area, constantly). As such, the native “Podcasts” app has been around since the early days, as Podcatching (better known as receiving and listening to Podcasts), became one of the main functions of iPods just as it continues to be a core functionality on the many other iOS devices. Why then, are older (iOS < 6) versions of the Podcasts app not still available through the iTunes App Store? The app existed back then, for those devices, and now its just plain unavailable it seems. Why not keep the old versions around? What if a legacy iPod user (anyone still on iOS 4 or lower for that matter) accidentally wipes or restores their device to factory settings? Tough luck if they didn’t store a backup that had that legacy version of the app which still runs on their device. This is an example of planned obsolescence at its worst!!!

Apple be damned, could the Podcast app’s functionality be replaced with a quickly hacked together web app though? Being a developer, that’s the question I wanted an answer to. So I realized it definitely should be doable, as Podcasts to me have always simply been RSS news feeds with links to Audio files embedded in them in a variety of ways. Thanks to Apple’s aforementioned “Podcatching” dominance, and iTunes’ position of oligopoly, Podcasts also need to be garnished with plenty of Apple-specific syntactic metadata to satisfy the behemoth that is the iTunes Store and rank better therein, so have to be able to parse that crap too.

All that to set the context for this experiment, which aims to concisely (I promise hah, from here on) describe how I took my original RSS parser from the post “RSS Reader in jQuery .vs. JavaScript”) on using JavaScript and/or jQuery to implement an RSS news reader, and modified it a few weeks ago to allow me to read the media links and embed codes.

Read the rest of this entry »

Working with LimeSurvey’s RemoteControl2 JSON-RPC API in PHP

Posted by bcmoney on April 17, 2014 in Cloud Computing, JavaScript, Mobile, PHP, Semantic Web with 2 Comments


No Gravatar
Hideous LimeSurvey shirt

Hideous LimeSurvey shirt (Photo credit: juhansonin)

Recently, I needed to switch away from SurveyMonkey, which, while still a useful free service for quickly collecting some basic Survey results, leaves much to be desired in terms of what they offer in their basic version. Of course the fully paid versions offer significantly more functionality, but the upper-end of the pricing schemes that do everything I needed are just way out of my price range for small individually-funded and/or non-budget independent projects.

This lead me to LimeSurvey (formerly PHPsurveyor), the leading open source web-based Survey data collection software, with a back-end written entirely in PHP.

Getting LimeSurvey installed on my own server was incredibly easy, just download the latest release version and upload the files via FTP. Then load the installation script and it will guide you through the remaining install steps (which are basically just setting a username/password for the administrator account, as well as database configurations such as connection info, table naming, etc). Pretty standard fare for a long-running open source PHP project with a solid development community in place.

What really set LimeSurvey apart from the alternatives though, was the extensibility offered by its API, dubbed RemoteControl2 (with support for both XML-RPC and JSON-RPC).

I had initially started out with XML-RPC since I’m kind of a nerdcore “semantics” guy, and favour XML over JSON for most server-side integration use cases (unless I’m publishing data for client-side consumption, then I almost always favour JSON). The reason, well there simply are way more tools and methodologies already in place for XML than JSON and the reliability mechanisms built into XML such as well-defined schemas (DTD/XSD) which provide data validation, namespsaces (ns) which prevent conflicts in name/value label namings and help ensure you get the right values when parsing, stylesheets (XSL/XSLT)  which allow for on-the-fly transformations, query languages (XPath and XQuery) which simplify data filtering and extraction tasks, and XML security mechanisms such as Digital Signatures which enable better security. However that’s all sure to start a debate on here.

The point is, I wanted to go XML-RPC, I really did! However I have to say, the simplicity of their JSON-RPC API which seems particularly well-implemented won me over.

So here’s what I made, a simple Survey response submission script that I call “limesurvey.collector.php“:
Read the rest of this entry »

BC$ = Behavior, Content, Money

The goal of the BC$ project is to raise awareness and make changes with respect to the three pillars of information freedom - Behavior (pursuit of interests and passions), Content (sharing/exchanging ideas in various formats), Money (fairness and accessibility) - bringing to light the fact that:

1. We regularly hand over our browser histories, search histories and daily online activities to companies that want our money, or, to benefit from our use of their services with lucrative ad deals or sales of personal information.

2. We create and/or consume interesting content on their services, but we aren't adequately rewarded for our creative efforts or loyalty.

3. We pay money to be connected online (and possibly also over mobile), yet we lose both time and money by allowing companies to market to us with unsolicited advertisements, irrelevant product offers and unfairly structured service pricing plans.

  • Archives