5 Links Of Interestingness

http://0to255.com/ – “0to255 cures your color manipulation woes. Simply pick the color that you want to start with and 0to255 gives you a range of colors from black to white using an interval optimized for web design. Then, just click the variation you want to use and the hex code is automatically copied to your clipboard.” My favorite part is that it uses a RESTful API so you can do things like http://0to255.com/0099ff You know I just love things that you can manipulate with a url.

http://cssdesk.com/ – A tool for quickly mocking up snippets of HTML/CSS. I would prefer to just create a new HTML file in Dreamweaver and play with it using Firebug, but this could work too. I found the cursor in the HTML/CSS box to be a little off when hitting return. CSSdesk has a nice interface which is almost like a desktop application. And since you can download it and run it locally, I guess it qualifies as a genuine application.


Please Do Not Change Your Password – Alot of security’s best practices cause more problems than they solve. “At countless conferences and seminars, experts have consistently called for more education and outreach as the answer to user apathy or ignorance. But the research of Herley and others is causing many to realize most of the blame for noncompliance rests not with users, but with the experts themselves — the pros aren’t able to make a strong case for all their recommendations.”

Holistic Web Browsing: Trends Of The Future – “The future of the Web is not at your desk. It’s not necessarily in your pocket, either. It’s everywhere.” How do we design for a Web that was only intended to be used in a single context?

WTF? (Video) – “This clip comes from Hard Ticket to Hawaii, possibly the worst 1980’s movie made (though to be fair, it’s tagline of Bombs, Babes, and Beaches is quite… radical).” At first I thought the acting was WTF, then I saw the ending.

“How many SEO copywriters does it take to change a lightbulb, light bulb, light, bulb, lamp, bulbs, flowers, flour…?” — Chris Rowe

Inspiring TED Talks

One of the best things about a 45 minute commute each way by train is you can watch some TED videos for inspiration. Here are some of my favorite talks from the series.
Temple Grandin: The world needs all kinds of minds
Temple makes the case that there is a little autism in all of us. Its what makes great minds and needs to be celebrated.

Jill Bolte Taylor’s stroke of insight
What happens when a brain scientist experiences the very thing she has been studying? Jill talks about her experience during a massive stroke which she knows all about.

David Blaine: How I held my breath for 17 min
David goes into detail about the great lengths he took pushing his body to the limit of oxygen deprivation.

Lewis Pugh swims the North Pole
This guy is tough. To help spread awareness to global warming, Lewis swam in the icey waters of the North Pole in nothing but a speedo.

Kevin Kelly tells technology’s epic story
Kevin explains how technology evolves like a cell or a meme.

Hans Rosling: Asia’s rise — how and when
Hans has a thick Sweedish accent that you would expect from a great mind. Here he predicts the exact day when India and China will outstrip the US as the economic powerhouse of the world. I marked the date in my Google Calendar.

Willard Wigan: Hold your breath for micro-sculpture
Willard makes incredibly detailed sculptures out of single grains of sand. His patience for his work, which can be inhaled without thinking , is really mind blowing.

Ultimate List Of Mega Man Songs

The Mega Man series of video games has a distinctive soundtrack. The music from the games is so influential that a bunch of cover bands have incorporated the melodies into their own versions of the popular songs.

Mega Man 1 -10 soundtracks – This is the full collection featuring music from Mega Man 1 for the original NES all the way through the recently released Mega Man 10. It weighs in at 684 MB and you will need 7 Zip for the PC or keka for OS X. The password for the archive is reddit.

8-Bit Instrumental is a video game-focused instrumental band from Brazil popular for their covers of Contra, Super Mario Bros, Street Fighter II, Altered Beast and others. They have an entire album dedicated to Mega Man 2 songs available for free on their website. The release was so popular that a hacked version of Mega Man 2 was released replacing the original soundtrack with the cover songs by 8-Bit Instrumental.

Project X has a 14-track album based on Mega Man 2 available for download in one 33 MB zip file. The Boston-based band produces guitar/electronica music.

Overclocked Remix has several remixes (mostly techno) based on Mega Man songs. The songs can be streamed via YouTube or downloaded for free.

Game Over, a Swedish Nintendo metal band, has three songs based on Mega Man. They’re kind of catchy.

Finally, thepulperizer.com breaks down the top 25 Mega Man songs. It is a pretty thorough list that I mostly agree with except I think the Bubble Man theme song should be number one, not number two.

So there you have it, the ultimate list of Mega Man songs for any video game aficionado. After all, the best thing to do when you’re not playing video games, is to rock out to their soundtracks until you can.

Making JavaScript And The Blip.tv Player Work

It sure would be nice if the blip.tv player had an easy way to change which video is playing in a playlist using their JavaScript API. But they don’t, so I had to roll my own to make the two play together nicely. Here is the end result (Note there are some line breaks I put in here for visual formatting, it might not work):

var player;
var currentPlaylistItem;
var currentState;
function getUpdate(type, arg1, arg2) {
	switch(type) {
        case "state":
			currentState = arg1;
		break;
		case "item":
			currentPlaylistItem = arg1;
			var episode = player.getCurrentItem();
			document.title = episode.title;
        break;
    }
}

var flashvars = {
	'file': 'http://blip.tv/play/ha0CjMVEh_8o',
    'enablejs': 'true',
    'javascriptid': 'blip_player',
    'autostart': 'false'
};

var params = {
	'allowscriptaccess': 'always',
	'allowfullscreen': 'true',
	'expressinstall': '/millennials/flash/expressInstall.swf'
};

var attributes = {
	'id': 'blip_player',
	'name': 'blip_player'
};
swfobject.embedSWF('http://blip.tv/play/ha0CjMVEh_8o',
'blip_player', '770', '470', '8.0', false, flashvars,
params, attributes, swfCallBack);

function swfCallBack() {
	player = document.getElementById('blip_player');
	$('#agenda h3 a, #agenda a.blip_tv').click(function(){
		var playlistItemNum =
                    $(this).attr('href').split('#')[1];
		changePlaylist(Number(playlistItemNum));
		$.scrollTo('.video .player', 800);
		return false;
	});
}

function changePlaylist(num) {
		var direction = 'prev';
		var diff = currentPlaylistItem - num;
		if (diff < 0) {
			direction = 'next';
			diff = Math.abs(diff);
		}
		for(i=0; i < diff; i++) {
			player.sendEvent(direction);
		}
		if (currentState == 0) {
			player.sendEvent('play');
		}
}

There are three requirements to getting started as outlined in the blip.tv wiki:

  1. The player must be embeded with the enablejs=true Flash variable set
  2. The player must be embeded with allowScriptAccess=always object/embed parameter set
  3. A JavaScript function must exist named getUpdate()

The first part of my script sets up three global variables that we’ll use.

  • player will reference the object/embed element by an ID. It is how we send commands to the show player.
  • currentPlaylistItem is the number of the video selected (or position) in the playlist.
  • currentState is either 2 (playing), 1 (loading), or 0 (stopped) depending on the current state of the player.

The getUpdate() function listens to the blip.tv player for changes like when the player is stopped or a video is changed in the playlist. The type argument is a string which we can send through a switch statement to determine what we need to do.

If the state of player has changed then we update our currentState variable with the value of arg1 (which will be a number between 0 and 2). If the event is an item change, we will update the currentPlaylistItem variable to reflect that. As an added bonus we get the title of the current playing video and change the title of the webpage to reflect this. This has zero SEO value and is really only a convenience to our audience.  Now that we know what is going on, lets get to the fun stuff.

Three variables (which are really Objects) are created for swfobject so we can easily embed the video player dynamically into the page. The ‘blip_player’ paramter is the ID of the player that we’ll be referencing shortly. The swfCallBack() function is called once the blip.tv player has loaded. There we set our player variable to reference the element of the blip.tv player. I used a line of jQuery to set the onClick() events of a group of links that will change the playlist when they are clicked.

In the HTML the links contain direct links to each blip.tv video and an anchor with a number after it. This number is the playlist position of the specific video. jQuery makes it a snap to extract just that number from the URL which we store in the playlistItemNum variable. The playlistItemNum variable is passed along to a function called changePlaylist() which does all of the heavy lifting.

Since the blip.tv show player doesn’t have a direct way of going to a specific video in a playlist, we have to hit the next or previous button on the player programmatically. The direction is set to ‘prev’ initially.  diff is calculated by subtracting the number passed to the function from the position of the currently playing video, currentPlaylistItem.

If diff is a negative number than we need to switch the direction variable to ‘next’ and get rid of the negative number by calling the absolute value method ( Math.abs() ). Now we simply send the player a command to go to the next or previous video as many times as we need to get to the desired video via a loop. Finally, if the player is stopped, we send the video player a command to start playing the video.

As an added nicety, we gently scroll the viewer up the page to the top of the video player so they’re not left wondering why nothing happened. The jQuery scrollTo plugin makes this a breeze to do.

There is one caveat for the changePlaylist() function to work: the playlist needs to be visible on the blip.tv show player. This is simply an option you set on the player configuration screen on blip.tv. Without it showing, we can’t get which video is playing and the whole thing falls apart.

That wraps up how to roll your own playlist changing function as well as shed some light on how you might control other things about the blip.tv show player using JavaScript. You can see this in action on the Pew Research Center Millennial Conference video page. If you have any questions leave them in the comments or get in contact.

Dummyimage.com Gets New Features

Ever since the surge of interest in my pet project dummyimage.com I’ve been meaning to add some new features. Today is the International Day of Awesomeness (which coincides with Chuck Norris’ birthday) and I couldn’t think of a better time to unveil DummyImage.com‘s new functionality to the public.

a 600x200 Dummy Image

Here is a run down of the changes:

Specify Custom Colors

You can choose the background and foreground colors of the dummy image right in the url using a 6,3,2, or even 1 character hexcode. Don’t worry if you forget to do this as dummy image will default to gray and black.

Add Your Own Text

A lot of people wanted to be able to add their own text to a dummy image to better communicate what it is representing. Now using the &text= parameter you can.

A Better Typeface

Arial be damned! Font geeks cringed at my basic choice of a font. Some seemed worried about my distribution of the most popular font on Earth. Now both camps can be happy as I’m now using the completely free and open M+ Font. I also changed the X in the middle of the images to a multiplication sign × as pointed out by Erinah and Dave Cortright.

Standard Image Sizes

Dummyimage.com is a useful prototyping tool and a lot of prototypes and wireframes have ad positions. Instead of memorizing dimensions you can now bring up ad sizes by their industry-standard name like largerectangle, skyscraper, and fullbanner. You can even customize the colors, text, and formats of theses sizes as well.

Pick Your Format

Before you could add any image format extension to the url but my script would still generate a GIF image everytime. Now you can generate proper PNG, JPG, and GIF images and drag them into another app trouble free.

Happy Birthday Chuck Norris

And with these new features I figured it was time to give the site a proper, though still simple, design. Rather than bury how these features work in long, boring text I made a little tool that shows you everything you need to know with minimal fuss.

Not a fan of change? Don’t worry, you can still use Dummyimage.com to generate place holder images exactly the same way you have always been doing it.

So thank you to everyone who has e-mailed me, tweeted me, left a comment on a post somewhere or otherwise provided feedback on dummyimage.com. I’m glad so many people found it as useful as I think it is. Keep the ideas and dummyimage variations coming. I’m sure this thing could be better.

A List Of Weird Song-Site Memes

trololololololololololo.com has been making the rounds around Twitter the past couple days. The site shows a Russian man singing a cheery song in what I assume to be Russian. How could you not listen to it over and over? Justin Erik Halldór Smith has a good write-up about the background of this video on his blog if you want to read all about its history.

Seeing this site reminded me of a few other wacky-song memes that made their way across the Internet. If you like trololololololololololo.com, you’ll like these similiar sites. All of them are songs and most of them loop infinitely. Enjoy!

http://www.lalalalalalalalalalalalalalalalalala.com/

http://www.iiiiiiii.com/

http://www.ooooiiii.com/

http://www.dabadabadab.com/

http://www.lalalaa.com/

http://www.leekspin.com/

http://www.manamanadoodoodoodoodoo.com/

http://breadfish.co.uk/

http://www.getonmyhorse.com/ & http://shutupwomangetonmyhorse.com/

http://www.hristu.net/

All of these sites descend from badgerbadgerbadger.com which first launched in September, 2003.

Put Your Print Stylesheet At The Bottom

I woke up this morning with a profound realization. “Why not put print stylesheets at the bottom of the page so they load last?”, I thought to myself. It makes perfect sense to any performance-conscious web developer who savors every last millisecond of performance gained. Your print styles aren’t needed until you print the page, so it is okay if it takes a little while longer to download.  Unfortunately the quirkiness of the browser makers trumps our otherwise sound logic.

According to tests done by Steve Souders, web performance guru extraordinaire, Internet Explorer blocks the rendering of content until all of the stylesheets have been downloaded regardless of their media type. And since Internet Explorer is the dominant browser by visitors to most mainstream sites, there is absolutely no benefit to including the print stylesheet at the bottom of the page.

A possible workaround would be to dynamically insert the print stylesheet (using JavaScript) into the web page after it has finished loading. This just feels icky to me as the poor sap who is most likely to print out the webpage I so meticulously coded is also the poor sap using Internet Explorer 5.5 with JavaScript turned off and BonziBUDDY turned on.

City Caller ID Android App Is No More

One of my favorite Android apps, City Caller ID, is no more today. The simple app displayed the city and state of the incoming phone number when you receive a call. Apparently the technology for displaying this information is patented by Cequint who has sued the developer of the free app. At first the developer was asking for help with donations and legal advice, but as of Saturday night, he has given up.

I can’t believe something like this can even be patented! From a programming perspective, it’s a fairly simple app. All of the area code data can be found on a site like http://www.bennetyee.org/ucsd-pages/area.html. When you get a call on your phone, a program can pull the first 3 digits and do a simple lookup for what state the phone number is issued in. It looks like no one will have the chance to download the app now, but I wonder what will happen to those lucky few like me who have already downloaded it?

I don’t think this will be the last Android city/state app for incoming calls as a Cequint employee introduced himself on an Android forum. Something must be up.

A Black Tie For Web Geeks

Kristina got me some ties from cyberoptix.com for Valentines Day. My favorite one is this black tie for web nerds which reads #000000. For those not in the know, #000000 is the hexadecimal representation of the color black familiar to any web designer.

The octopus sucker tie is pretty rad too!

DC Snowpocalypse Bury Meter

Everyone in the DC area is making a ruckus about the impending snowstorm of doom! Throughout the weekend I will measure how much snow has fallen here in Glenmont, MD, and track it via this silly picture of me.

The National Weather Service is calling for 20 – 30 inches of the white stuff so if we get 30″, then my entire photo will be completely white.

Saturday, 1:45am – 28 inches: While everyone is asleep, I’m out trudging around in snow. Ok, I’m sure this measurement is due to drifting but it’s consistent in both places that I have been measuring all day (a bush near my building and on the hood of my Rav-4). The Weather Channel just reported Columbia, MD, officially has 13.9″ of fallen snow. I’ll keep updating my image which will easily go out of the frame tomorrow.

The snow is coming up to my knee in low areas and my mid thigh in the deep spots. It keeps coming down at a strong, relentless pace. I like how dead-silent it is outside.

Friday, 11:30pm – 9 inches
Friday, 7:45pm – 3.75 inches
Friday, 3:30pm – 2 inches

Twitter Tags #snowpocalypse, #snowmageddon, #snOMG