HTML5 and the Flash Platform – A Call for Sanity

A strange thing has been happening over the past year or so. It has become quite fashionable amoung open source advocates, social media “experts”, and HTML5 zealots to talk down Flash with every breath…

Well, that was the start of an article I’ve been writing for the past three weeks or so. It was a difficult article to write and I’ve been stuck on more than one occasion – causing some frustration for me. There’s no need for me to do so now as similar thoughts have been expressed elsewhere with more grace than I would have allowed and a more informed perspective.

I encourage anyone who is interested in the subject to read the following posts and the comments that come along with them:

My general take is this; Flash and HTML are not in any way enemies or opposed to one another. Both can serve very different purposes and both are useful in many different (and sometimes similar!) circumstances. It is ridiculous to go after Flash as it it is the worst thing to ever happen to the Internet and needs to “die” – as many have stated.

Am I biased? Hell, yes! I love working with the Flash Platform for many reasons and am heavily affiliated with Adobe. Do I hate HTML5 or any other tech due to my bias? Hell, No.

There is true evil in the world and it is not Flash, Silverlight, JavaFX, HTML5 or any other technology platform.

A call for sanity – everyone just chill out. It’ll be okay :)


UPDATE 1: In regard to Apple and iPad; Serge Jespers has a nice post, of which I’ve made comments on.

UPDATE 2: Okay, I give in – “Just To Put Things In Perspective…

Ghetto Greenscreen

I built a greenscreen for chroma keying video/photos in my studio for about 5 dollars. Grabbed about six sheets of neon-green poster board from a local store and used some other bits I had lying around; easel, cardboard, non-reflective tape, staple gun, duct tape…

You can see the result below! Admittedly ghetto… but for my current purposes, it will work just fine. You can see the seams in the photo but this isn’t a big deal as depth of field and After Effects can both be used to get around something like that. It’s large enough that I can place it a few feet behind the subject without issue, so blurring it with depth of field in the camera is probably a good option. You can see here that it’s pretty evenly lit without any special lighting- though I do have some lights to be used in case they are needed.

As a test, I grabbed this rabbit and snapped a quick photo.

After a few seconds of keying in After Effects – Parisian Rabbit.

Parsing Tweets with the TwitterString Class

While building a little Twitter aggregator for an upcoming conference, I found myself in need of a set of methods to create hyperlinks from three distinct elements that can be included within a tweet; links, usernames, and hashtags.

I was able to find regular expressions to do all the heavy lifting from various sources on the Web and have created a class which pretty much does all the processing with one method call. Here’s an example of the thing working, followed by example code, and the class itself.

Example SWF

Flash Player 10.2 or greater is required!


Example MXML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   creationComplete="init()" width="300" height="100" 
			   backgroundColor="#1E1E1E" preloaderBaseColor="#989898">
 
	<fx:Script>
		<![CDATA[
			import flashx.textLayout.elements.Configuration;
			import flashx.textLayout.elements.TextFlow;
			import flashx.textLayout.conversion.TextConverter;
			import flashx.textLayout.formats.TextLayoutFormat;
			import com.fracturedvisionmedia.utils.TwitterString;
 
			private var myTxt:String = "Everyone should follow @josephlabrecque (http://bit.ly/7NkqrB) - really cool stuff and super-informative insights! #Awesome #Super #LOL";
 
			private function init():void {
				// Configure styling the TextFlow links to match richTxt
				var cfg:Configuration = TextFlow.defaultConfiguration;
				var normalTLF:TextLayoutFormat = new TextLayoutFormat(cfg.defaultLinkNormalFormat);
				normalTLF.color = 0xDCD9D9;
				cfg.defaultLinkNormalFormat = normalTLF;
				TextFlow.defaultConfiguration = cfg;
 
				// Import tweet as HTML
				richTxt.textFlow = TextConverter.importToFlow(TwitterString.instance.parseTweet(myTxt), TextConverter.TEXT_FIELD_HTML_FORMAT);
			}
		]]>
	</fx:Script>
 
	<s:RichEditableText id="richTxt" selectable="false" editable="false" right="10" top="10" bottom="10" color="#DCD9D9" left="10"/>
 
</s:Application>

TwitterString Class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.fracturedvisionmedia.utils {
 
	/**
	 * The TwitterString class assists with the parsing of a tweet to add hyperlinks 
	 * around Links, HashTags, and UserNames in a tweet.
	 * @author Joseph Labrecque
	 * v. 0.1.2
	 */ 
 
	public final class TwitterString {
		private static var _instance:TwitterString = new TwitterString();
 
		public function TwitterString(){
			if (_instance != null){
				throw new Error("TwitterString can only be accessed through TwitterString.instance");
			}
		}
 
		public static function get instance():TwitterString {
			return _instance;
		}
 
		public function parseTweet(t:String):String {
			var step1:String = parseHyperlinks(t);
			var step2:String = parseUsernames(step1)
			var step3:String = parseHashtags(step2)
			return step3;
		}
 
		private function parseUsernames(t:String):String {
			var result:String = t.replace(/(^|\s)#(\w+)/g, "$1#<a href='http://search.twitter.com/search?q=$2' target='_blank'>$2</a>");
			return result;
		}
 
		private function parseHashtags(t:String):String {
			var result:String = t.replace(/(^|\s)@(\w+)/g, "$1@<a href='http://www.twitter.com/$2' target='_blank'>$2</a>");
			return result;
		}
 
		private function parseHyperlinks(t:String):String {
			var urlPattern:RegExp = new RegExp("(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)", "g")
			var result:String = t.replace(urlPattern, "<a href='$1' target='_blank'>$1</a>");
			return result;
		}
 
	}
}

Download TwitterString

Strangling Strangers [DEMO SS001]

After the release of Shudderflowers by An Early Morning Letter, Displaced last Autumn, I decided to explore some of the harsher elements of that album within my other aural project, Strangling Strangers.

Strangling Strangers is a project that I’ve tinkered with for years after coming up with alternate material at the turn of the century when developing music for Through Darkened Eyes:

i think these things i shouldn’t think
in places i shouldn’t think them
sawing off the head of a prostitute
or strangling strangers
and this pain in my side
keeps me awake at night

I’ve decided to experiment with some of these new ideas in earnest for 2010. I’m unsure on where this project might go from here… but for now- we have a demo…

The only way I can describe it right now is that Strangling Strangers is much more intense and immediate than An Early Morning Letter, Displaced. Granted, I may decide to abandon the project as soon as tomorrow, but feel free to friend/fan if this strikes you.

Visit Strangling Strangers on:

  • Facebook
  • MySpace

A Word About Bread

I haven’t done a lot of Flash development this weekend. Mostly I’ve been baking bread.

I love good breads, so when a co-worker of mine introduced me to the No-Knead Bread method developed by Jim Lahey… I developed a quick fanaticism over it. I’ve made three loafs of bread in the past few days. Awesome bread- well developed crust… nice, airy inside… simple, timeless flavor. Just great, great bread!

I don’t normally write about anything here that isn’t in some way related to my work in one way or another- this is just too good not to share though. I encourage everyone to give this a shot if you want a quality loaf of bread to share over wine or beer. This really cannot be beat.

I made these. In my home oven. Electric.


3rd Loaf


2nd Loaf (with Rosemary!)


1st Loaf

I am a man obsessed.