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

BCmoney MobileTV

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 iPhone 3GS finally bit the dust. I had been hanging on and managed to make it through a major liquid submersion (thanks to the good folks at Atlantic Cell Phone Repair) several cracked screens (thanks to the good folks at iCracked). I’m pretty stubborn, and now that I’ve finished off my Mobile contract for it, 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 or hack my old 4th generation iPod Touch into something with phone call abilities. Of course, I opted for the latter!

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 using my Anveo VoIP service (please enter Referral Code 5334764 if registering) which I was already using through BRIA on the iPhone. I’ve already described Anveo in the post “My Experiment in Cutting Cords (and costs) with VoIP” where I went over setting the VoIP service up on an iPhone and just how much could actually be saved per month by taking the plunge and switching to VoIP. I’ve found that with a little patience (often using replacements, such as Slingplayer in place of Bell MobileTV, or, SoundHound in place of Shazam) along with some disappointment (can’t get an older versions of Netflix, UFC, Fitocracy, Skype, Instapaper, and several other key apps), I was able to get a good amount (about half) of the apps I was most frequently using on my iPhone, downloaded to the iPod in their older iOS 4-supported versions.

One somewhat irreplaceable one though that I just simply could not find, nor find a replacement for was the basic “Podcasts” app built by Apple (common alternatives RSSradio, Overcast, Downcast, TuneIN, Slacker, etc all did not work either on my device). I mean, seriously Apple, WTF!? Even the very first iPod devices were within a few years of their release to become known as a type of “Podcatcher”. The term “podcasting” was first mentioned by Ben Hammersley in The Guardian newspaper in a February 2004 article as a portmanteau of the words “pod”, from the success in consumerizing digital music with the iPod and “broadcast”. 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? They existed then, and now they’re just plain unavailable it seems. 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 the app. This is an example of planned obsolescence at its worst!!!

Could the Podcast app’s functionality be replaced with a quickly hacked together web app though? 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 (and thanks to Apple’s aforementioned “Podcatching” dominance, also garnished with plenty of Apple-specific iTunes namespace syntactic metadata to appeal to the behemoth that is the iTunes Store and rank better therein).

Read the rest of this entry »

Musa Betsu Kyu Judo club website launch

Posted by bryan on September 1, 2014 in E-Learning, HTML, Philanthropy with No Comments


No Gravatar
Japanese judoka ,Jigoro Kano(right) and Kyuzo ...

Japanese judoka ,Jigoro Kano(right) and Kyuzo Mifune(left) (Photo credit: Wikipedia)

Just a quick update on what I’ve been up to lately in my spare time (well one of the many projects), working on the site for the local (Greater Moncton area) Judo club called “Musa Betsu Kyu”. It is run by Sensei Earl O’Blenis who is an excellent Judo instructor that we’re fortunate to have in the area. If you have a moment please signup for the site and/or Facebook Group and support the club.

The highlights of the site so far are the ability to pay for your monthly club dues online with a single click (for the forgetful you can either set it up as a monthly subscription or one-time payment), as well as two interactive charts; the first being the “Gokyo Tachi Waza” (Judo’s 5 levels of standing techniques) and “Ne Waza” (Judo’s ground grappling/wrestling).

Check out the new website/blog at:

monctonjudo.com

Read the rest of this entry »

DIY Project – Home Theatre Projection Screen Controls

Posted by bcmoney on July 3, 2014 in Multimedia, TV with 2 Comments


No Gravatar
John Underkoffler explains the human-computer ...

John Underkoffler explains the human-computer interface he first designed as part of the advisory work for the film Minority Report. The system, called “g-speak”, is now real and working. Note the gloves Underkoffler is wearing. (Photo credit: Wikipedia)

Inspired by the now infamous TED Talk presentation by John Underkoffler (scroll to the end of this post if you haven’t seen it yet), one of the leading MIT researchers behind the Futuristic UIs and Technologies that appear in the 2002 Sci-Fi film Minority Report, I’ve set out to find my own “best approximation” of a futuristic yet simplistic controller interface for my Home Theatre.

In considering this home Do-It-Yourself (DIY) project, I wanted to cover the full spectrum of possibilities, from the most simplistic options to the most complex. Another major restriction I put on myself was budget. No single solution should cost more than $100 to implement, and in fact, the cheaper the better! Of course, I should also acknowledge that most of my intended use-cases could have been solved by purchasing a Smart TV (depending on the brand and software version of the unit) however again, due to budget limitations that’s out of my range and I’m assuming also out of the range of the majority of readers here, not to mention it really defeats the purpose of trying to get this all working on a 100+ inch projection screen, which is a screen size that’s definitely out of most people’s price range!

 

The projector I’m using is the Optoma EW1610, which I purchased for about $800 back in late 2009. Its four years old now but it has aged quite well, and the specs were the best I could afford at the time. The point was, I knew that it would come in far more affordable, not to mention handy (and be a heck of a lot lighter during my frequent moves) than a big-screen TV with similar specs.

Its specs are:

  • Display Technology: 0.65” DMD DLP™ Technology (by Texas Instruments)
  • Brightness: 2700 ANSI Lumens
  • Native Aspect Ratio: 16:10 Native (4:3, 5:4 & 16:9 compatible)
  • Contrast Ratio: 2000:1
  • Video Definitions: 720p, 1080i, 1080p/60, 576i, 576p, 480p, 480i
  • Native Resolution: 1280 x 800
  • Image Size Range:  40″-300″
  • Digital Inputs/Outpus: DVI-I (HDCP), S-Video, USB, RS-232, VGA in/out
  • Audio Inputs: Stereo/AUX
  • Built-In Speakers: 2.0 W Mono

There are significantly more powerful projectors available for the same price-range today, or for even less.

The following are the main PROJECTOR CONTROL OPTIONS I evaluated:

Read the rest of this entry »

HTML5 Audio Player Jukebox

Posted by bcmoney on April 21, 2014 in AJAX, Flash, HTML, JSON, Multimedia, XML with No Comments


No Gravatar
A jukebox icon

A jukebox icon (Photo credit: Wikipedia)

Here’s a piece of work I did on a freelance basis back in early 2012 for a client who allowed me to retain the full rights to the code as a “library” which I could distribute. (I offered them two prices of course, one cheaper rate where I retain the rights and one premium rate in which the code was exclusive to them and I would not distribute). After explaining that based on their request, I would be building it as HTML5/CSS3/JS front-end code that lives in the browser client and regardless of which choice they made it would be entirely possible for someone else to simply hit “view source” and/or sniff out raw traffic packets to copy it in full, they of course chose the cheaper option; they knew from all the hype around HTML5 in 2012 that they wanted it done in HTML5 and browser-based without relying on Flash (using Flash as a fallback). Of course, the ease with which it would be copyable would depend entirely upon how well they protect their site through SSL-certs/code-signing/code-obsfucation/disabling-ViewSource or for example, put it behind a web viewer in a Mobile App or RIA viewer (Flex/Silverlight/JavaFX) and hiding URLs, if they really want it private. But that’s another point altogether!

They chose the cheaper option so I’ve been sitting on the code and until now I had been a combination of “too lazy”, “too busy” and “out-of-respect-for-them” not bothering to release or advertise the existince of said code. However, the time has come to unleash it! For those who’ve been at this for as long as me or longer, you may recognize that it is inspired heavily by some earlier 2009-2010 HTML5 audio demos done by the Mozilla development team as far as the look & feel; but I’ve added quite a few new features to it (for example the Flash-based fallback for old browsers like IE 5-8), CSS for a slick flat direct-link playlist if both HTML5 & Flash are missing, and the main feature which is support for both XSPF and JSPF playlist formats, which are by far the most popular open playlist data formats which really should be supported by all Online Music services (but that’s another story).

Ironically enough (as I blogged about benefits and annoyances of skeumorphs last year) it is more of a skeumorph for my old iPod shuffle which had two simple arrows (left for “previous”, right for “next”) than it is for an actual Jukebox, but I’m still calling it a jukebox where you can pick from multiple albums as long as they are all aggregated to the same XSPF/JSPF Playlist. Either way, I rather like it and think it borderline qualifies as a flat-design, web-based version of a Jukebox. It was also a disproportionately lot of work to put together considering it was ultimately only going to be used to play a specific band’s 4 albums they had at the time online. As mentioned, it can pretty much support up to 1000’s of songs at a time (though I haven’t tested its limits or ran any browser comparison benchmarks or anything fancy-pantsy like that, should theoretically fit as many as could fit into single XML/JSON file without bringing your browser to a griding halt when trying to parse it which is defintiely in the hundreds if not thousands).

Here it is, with 4 sample albums (only one song per album for rights purposes) with royalty-free music I downloaded from Jamendo before they went under and/or re-focused their “open music community”.

HTML:

...

 

CSS:

...

 

JavaScript:

...

 

Playlist (XML):

<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
	<title>Example Playlist</title>
	<creator>bcmoney</creator>
	<annotation>4 tracks in this playlist</annotation>
	<info>http://localhost/audio/</info>
	<location>http://localhost/audio/playlist.xml</location>
	<identifier>example:playlist.xspf</identifier>
	<image>http://localhost/audio/img/logo.jpg</image>
	<date>2010-06-24T09:36:02</date>
	<license>http://creativecommons.org/licenses/by-nc-sa/2.5/</license>
	<trackList>
		<track>		
			<location>http://localhost/audio/songs/Kendra%20Springer/Hope/Hope.mp3</location>
			<identifier>http://musicbrainz.org/track/324f2713-0134-4ffb-9774-7c1b3613ab8c.html</identifier>
			<title>Hope</title>
			<creator>Kendra Springer</creator>
			<annotation>Lyrical piano music to lift your spirits</annotation>
			<info>http://www.jamendo.com/en/track/469312</info>
			<image>http://localhost/audio/img/album-covers/Kendra%20Springer%20-%20Hope.jpg</image>
			<album>Hope</album>
			<trackNum>1</trackNum>
			<duration>187</duration>
		</track>
		<track>
			<location>http://localhost/audio/songs/DEUS/There%27s%20nothing%20impossible/There%27s%20nothing%20impossible.mp3</location>			
			<identifier>http://musicbrainz.org/track/dbaa6332-cb93-41b4-8060-b86bd54626e1.html</identifier>
			<title>There's Nothing Impossible</title>
			<creator>DEUS</creator>
			<annotation>Electronic techno instrumental chillout, made famous by the "Web2.0 - The Web Is/Using Us" viral video by Professor Michael Wesch</annotation>
			<info>http://www.jamendo.com/en/track/620</info>
			<image>http://localhost/audio/img/alb/-covers/DEUS%20-%20There%27s%20nothing%20impossible.jpg</image>
			<album>There's Nothing Impossible</album>
			<trackNum>2</trackNum>
			<duration>262</duration>
		</track>		
		<track>		
			<location>http://localhost/audio/songs/The%20Kyoto%20Connection/The%20Kyoto%20Connection%20II/Right%20time%20wrong%20universe.mp3</location>			
			<identifier>http://musicbrainz.org/track/cf52b003-7e58-4f4e-9473-0ac5c7aa51cd.html</identifier>
			<title>Right time Wrong Universe</title>
			<creator>The Kyoto Connection</creator>
			<annotation>The Kyoto Connection is a musical Voyage. It's sweet electronic music, with a Japanese feeling.</annotation>
			<info>http://www.jamendo.com/en/track/212294</info>
			<image>http://localhost/audio/img/album-covers/The%20Kyoto%20Connection%20-%20The%20Kyoto%20Connection%20II.jpg</image>
			<album>The Kyoto Connection II</album>
			<trackNum>3</trackNum>
			<duration>246</duration>
		</track>
		<track>
			<location>http://localhost/audio/songs/Azoora/The%20Big%20Bang%20EP/Cruise%20Control.mp3</location>			
			<identifier>http://musicbrainz.org/track/db18f325-399e-49a2-ab19-8ae533a1b7ef.html</identifier>
			<title>Cruise Control</title>
			<creator>Azoora</creator>
			<annotation>6 brilliant songs that takes you deeper into the deep. A true psychedelic journey through space and time...</annotation>
			<info>http://www.jamendo.com/en/track/254187</info>
			<image>http://localhost/audio/img/album-covers/Azoora%20-%20The%20Big%20Bang%20EP.jpg</image>
			<album>The Big Bang EP</album>
			<trackNum>4</trackNum>
			<duration>174</duration>
		</track>
	</trackList>
</playlist>

 

Playlist (JSON):

{
    "playlist": {
        "title": "Example Playlist",
        "creator": "bcmoney",
        "annotation": "4 tracks in this playlist",
        "info": "http://localhost/audio/",
        "location": "http://localhost/audio/playlist.xml",
        "identifier": "example:playlist.xspf",
        "image": "http://localhost/audio/img/logo.jpg",
        "date": "2010-06-24T09:36:02",
        "link": [],
        "meta": [],
        "license": "http://creativecommons.org/licenses/by-nc-sa/2.5/",
        "extension": {},
        "track": [
            {
                "annotation": "Lyrical piano music to lift your spirits",
                "title": "Hope",
                "creator": "Kendra Springer",
                "info": "http://www.jamendo.com/en/track/469312",
                "image": "http://localhost/audio/img/album-covers/Kendra%20Springer%20-%20Hope.jpg",
                "album": "Hope",
                "trackNum": 1,
                "duration": 187,
                "location": [
                    "http://localhost/audio/songs/Kendra%20Springer/Hope/Hope.mp3"
                ],
                "identifier": [
                    "http://musicbrainz.org/track/324f2713-0134-4ffb-9774-7c1b3613ab8c.html"
                ],
                "link": [],
                "meta": [],
                "extension": {}
            },
            {
                "annotation": "Electronic techno instrumental chillout, made famous by the "Web2.0 - The Web Is/Using Us" viral video by Professor Michael Wesch",
                "title": "There's Nothing Impossible",
                "creator": "DEUS",
                "info": "http://www.jamendo.com/en/track/620",
                "image": "http://localhost/audio/img/album-covers/DEUS%20-%20There%27s%20nothing%20impossible.jpg",
                "album": "There's Nothing Impossible",
                "trackNum": 2,
                "duration": 262,
                "location": [
                    "http://localhost/audio/songs/DEUS/There%27s%20nothing%20impossible/There%27s%20nothing%20impossible.mp3"
                ],
                "identifier": [
                    "http://musicbrainz.org/track/dbaa6332-cb93-41b4-8060-b86bd54626e1.html"
                ],
                "link": [],
                "meta": [],
                "extension": {}
            },
            {
                "annotation": "The Kyoto Connection is a musical Voyage. It's sweet electronic music, with a Japanese feeling.",
                "title": "Right time Wrong Universe",
                "creator": "The Kyoto Connection",
                "info": "http://www.jamendo.com/en/track/212294",
                "image": "http://localhost/audio/img/album-covers/The%20Kyoto%20Connection%20-%20Right%20time%20wrong%20universe.jpg",
                "album": "The Kyoto Connection II",
                "trackNum": 3,
                "duration": 246,
                "location": [
                    "http://localhost/audio/songs/The%20Kyoto%20Connection/The%20Kyoto%20Connection%20II/Right%20time%20wrong%20universe.mp3"
                ],
                "identifier": [
                    "http://musicbrainz.org/track/cf52b003-7e58-4f4e-9473-0ac5c7aa51cd.html"
                ],
                "link": [],
                "meta": [],
                "extension": {}
            },
            {
                "annotation": "6 brilliant songs that takes you deeper into the deep. A true psychedelic journey through space and time...",
                "title": "Cruise Control",
                "creator": "Azoora",
                "info": "http://www.jamendo.com/en/track/254187",
                "image": "http://localhost/audio/img/album-covers/Azoora%20-%20The%20Big%20Bang%20EP.jpg",
                "album": "The Big Bang EP",
                "trackNum": 4,
                "duration": 174,
                "location": [
                    "http://localhost/audio/songs/Azoora/The%20Big%20Bang%20EP/Cruise%20Control.mp3"
                ],
                "identifier": [
                    "http://musicbrainz.org/track/db18f325-399e-49a2-ab19-8ae533a1b7ef.html"
                ],
                "link": [],
                "meta": [],
                "extension": {}
            }
        ]
    }
}

 

-or-

Make sure you pass ing the playlist file as a GET parameter to the player by the name of “url”, and with a value that points out the full or relative path to your “playlist.xml” or “playlist.json” file.

So if I’m running it on my own local dev environment, I would use:

http://localhost/audio/?url=http://localhost/audio/playlist.xml

The really cool part of this is that it doesn’t have to be a static XML or JSON playlist file, the playlist URL could point to a dynamic local script or an external Web Service that generates or exports playlists in the XSPF (or JSPF) format.

That’s all there is to it!

Feel free to include it in your own projects or modify it as you see fit. License is MIT like the Mozilla examples and guides I was inspired by.

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 1 Comment


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