9 posts
in April - 2007
Two-Book Milestone, Around the Bend
Posted Thursday, April 26, 2007 7:56:31 PM by David Stiller

An alternate title for this entry could easily be “Why my blogging has slowed down lately,” and the shortest answer would be a muffled “busy” — muffled like a voice struggling out from beneath a heavy pile of desktop rubble — but that’s no fun, because it’s a punch line without a story. ;) It’s been nearly a year since I pulled away from an agreeable salaried position to see if I could make it on my own. So far, so good; honestly. June 7 will be the anniversary, and I’m kind of excited about it.
In an open-jawed, stunned sort of way, I’m grateful. Grateful to my wife and daughter, who have been waiting patiently for me, sometimes with a surprise pancake dinner. Grateful to friends who’ve been hanging in there, because my evenings have been shot for time out of mind. It’s all about to return to normal.
Why? Two Flash books are on the way.
I owe a lot, both in support and inspiration, to my colleagues at Community MX and to my friends Chris Georgenes and Branden Hall, who continue to send me work in addition to my usual clientele. I also owe a lot to the varied and interesting people who email me or leave comments on my personal blog, because all these reminders of Flash keep me focused.
I’m just about ready to heave a milestone over my shoulder, more or less by June. In the next few months, there will be two new Flash books in stores with my name somewhere between the endpapers. I can’t think of a better way to round out my first year as an independent contractor!
One book belongs to Chris Georgenes, who is currently finishing up his How to Cheat in Adobe Flash CS3 for Focal Press. Chris has a fantastic style all his own, and has more tips on animation — truly top notch stuff! — than anyone I know. He asked me to contribute a chapter to his book on interactivity, and I count that a privilege.
The other book belongs to Tom and Jerry. That’s the joke, anyway. ;) Tom Green, who has already written half a dozen books on Adobe products, asked me to fully co-author Foundation Flash CS3 for Designers with him for friends of ED. (I was born in Germany, so that makes me the “Jerry”; and yes, Tom really is the big gray pussycat.) We’ve been grinding away on this project since, heck, it’s been about six months. What started as a trickle has roared into a crazy-fun (but challenging!) wild water rapids expedition — which explains my recent temporary drop in blog entries.
We’ll be wrapping up soon, and the fun will really begin.
Category tags: On the Personal Side
Posted by David Stiller
Add comment |
View comments (0) |
Permalink
|
Trackbacks (0)
|
Digg This
CFUnited 2007 - Interview
Posted Monday, April 23, 2007 8:18:37 PM by Chaz
Interview between Michael Smith and Chaz Chumley
Michael Smith: This time we are talking with Chaz Chumley about his CFUNITED-07 talk "Creating and Consuming WebServices". So why should a developer come to your session Chaz?
Chaz Chumley: Web Services make up such an integral part of the web framework when developing applications today. Such technologies as ColdFusion, Flash and Flex make working with XML data easier and quicker than could have been conceived. If a developer plans on sharing data with external customers or consume data from such clients like Google, Yahoo or RSS feeds then they don't want to miss this session. I will be sharing real world examples of just how easy it is to produce and consume web services utilizing ColdFusion.
MS: Can you tell me more specifics about some of those web services and why they are cool to add to my app?
CC: No one wants to reinvent the wheel, so to speak. Web Services are "cool" because we can build some great functionality once and reuse it by sharing it with the outside world just by specifying where the Web Service lives and how to interact with it. Imagine if a client asked you to pull in all the local news into a portal or web site. Do you want to statically write the news items down each day and then republish it. Of course not. Why not browse over to Yahoo!'s Web Services and tap into an already prebuilt API that does all the work for you. In addition to web search results, Yahoo!'s API includes the ability to fetch results for images, local information, news, and video.
MS: OK! So is it hard to create a web service in ColdFusion? What do I need to do?
CC: The great thing about ColdFusion versus other languages is just how easy it is to create a web service. More and more developers are writing ColdFusion Components to encapsulate their logic from their presentation. Following these best practices we can expose the logic inside a CFC simply by adding one attribute (|access="remote"|) to any of your component's methods to turn it into a web service. However if you want to learn more about it in detail you will have to come to my CFUnited session Michael.
MS: One parameter to publish a web service - that is easy! What about reading those cool web services that you mentioned above? That must be hard right?
CC: You might think that but actually it is very simple. Let's take the Yahoo API's for example. All that is needed to get started is to register with Yahoo, obtain an application ID which is just a string that uniquely identifies your application and send a request url to Yahoo. The information is then returned in the form of a REST (Representational State Transfer) response.
MS: Cool! Now it sounds like some of those web services might return complex data - how does ColdFusion deal with that?
CC: When a web service returns a complex data type you can write the return value directly to a ColdFusion variable. You can then access elements of the variable using dot notation the same way you would access a structure. So if we had a person object returned to us we could access the firstname element by specifying "person.firstName".
MS: Do I need CF 7 Enterprise to use web services or do other versions of CF work too?
CC: You can both create and consume web services with any version of ColdFusion.
MS: What about all this SOAP my java buddies keep telling me about? How does that relate to web services and does ColdFusion support SOAP?
CC: SOAP (Simple Object Access Protocol) is just one of the XML-based protocols that you can use to write messages to send and receive web service requests and responses over the internet. ColdFusion does support SOAP thru the use of a WSDL (Web Services Descriptor Language) that describes the arguments accepted by a specific web service. The great thing about ColdFusion is that the WSDL is automatically generated when the ColdFusion Component is deployed.
MS: This all sounds so easy! Are there any gotchas to watch out for with web services?
CC: One of the biggest gotchas when developing web services is forgetting to refresh the web service within the ColdFusion Administrator. CFAdmin caches the web service when it is first generated so any changes will not be reflected until you refresh it. We will be looking at more gotchas in detail in my session.
MS: I am looking forward to seeing you at CFUNITED.
You can see more interviews.
CFUNITED-07 is Wed 6/27/07 - Sat 6/30/07 in Bethesda MD, just outside Washington DC. It costs $949 until 3/31/06 then $1049.
For more information on CFUNITED.
Creating and Consuming WebServices
Web services provide us a channel to communicate using standard XML (Extensible Markup Language) to users over an internet, intranet or extranet without exposing all of the functionality of your application. Using ColdFusion you can easily publish a web service - to make application functionality available for remote use as well as consume a web service - to access remote functionality to perform specific tasks. Join us as we discuss the basic structure of a web service, utilize ColdFusion Components (CFCs) to create simple data typed web services, how to consume a web service and the different data types you may encounter, take a look at working with soap requests including nillable arguments and CFMX7's new isSoapRequest function, error handling and finally best practices to ensure that your experience with ColdFusion MX 7 and web services is a memorable one.
Speaker Bio:
Consultant, Instructor, Author, Husband and Father. Chaz has been specializing in web development and database design since 1995. He currently resides as an Application Developer for Lucidus Corporation, an Internet Application Development & Hosting company as well as an Instructor at the University of Nevada Las Vegas teaching XHTML, CSS, JavaScript, Fireworks, Photoshop and ColdFusion. Chaz is also a contributing author and parnter at CommunityMX as well as as a frequent speaker at Adobe User Groups and such conferences as Todcon and CFUnited.

Category tags: ColdFusion
Posted by Chaz
Add comment |
View comments (0) |
Permalink
|
Trackbacks (0)
|
Digg This
CFUnited 2007
Posted Monday, April 23, 2007 7:43:32 PM by Chaz
The Premiere ColdFusion Conference
If you are a ColdFusion developer and plan on going to any web conference this year, then you definitely don't want to miss CFUnited. Not that I am trying to self-glorify myself but I have the pleasure of speaking this year and can't wait to see all the great presenters and people involved in the ColdFusion community.
CFUnited is the only conference of its kind that is run by developers, for developers. What this means is that the topics are exactly what web developers need to learn now and are based on real world experience.
This year's conference is a 4-day event that includes a bonus on Saturday repeating the most popular sessions. You can purchase the 4 day package, 3 day package, or the Saturday only package. In addition to the keynotes and sessions you expect at any conference, this year will include Birds-of-Feather discussions in the evenings, panel discussions, a community area, and many other social and networking events. If 4 days isn't enough for you, there is a User Group Manager event on the day before the conference, and full-day hands-on classes, instructed by CFUnited presenters, during the two days prior to the conference. Read More...

Category tags: ColdFusion
Posted by Chaz
Add comment |
View comments (0) |
Permalink
|
Trackbacks (0)
|
Digg This
Flash in the Can Toronto
Posted Monday, April 23, 2007 5:54:22 PM by Jim Babbage

I was lucky enough to score a ticket to Flash in the Can Toronto, which opened this past Sunday and continues through till tomorrow. I haven't attended this event in years but was glad I made it down there this time.
I hooked up with Tom Green off and on over the day on Sunday and then we were off to dinner with Betsy Weber and other good people from TechSmith for dinner that evening. Techsmith is the wonderful company which has brought us great programs such as SnagIt for screen capturing (and more) and Camtasia for screen recording.
Tom was non-stop entertainment, let me tell you, as he narrated in gut-splitting humor some of his travel adventures. He really needs his own cable show.
One seminar I attended was of particular interest. Led by Kevin Airgid, the session was titled Relationships + Skills = Money. With a moniker like that, it was no wonder the room was full.
And Kevin delivered, too; for 60 minutes, he spoke and answered questions about how to be successful as a freelance web designer. It was a very enlightening seminar, and I was more than a little proud of myself to note that when it comes to billing and building client relationships, his approach is similar to mine. I also learned many things that I'm going to put into action over the next little while.
Much of his advice comes from his book and - with the support of fitc - Kevin has made his Web Designer's Success Guide freely available in PDF format. It's chock full of useful advice and definitely worth the read.
This session alone made the time spent at FITC worthwhile and I'm planning to head back again on Tuesday. Sadly, today was a teaching day so I could not attend any sessions.
Hanging out at the event has also made yearn for TODCON, coming this June. TODCon is my favorite event, and I schedule work and vacation around it so I never miss attending. It's a great opportunity to learn, network and hook up with good friends, people who I do not see nearly enough throughout the year.
So, if you've got some free time in June, mark your calendar and make sure to head over to TODCon. You'll never learn so much for so little . . . or have so much fun with a hundred or so other geeks. :-)
Category tags: Designing for the Web, Education, On the Personal Side, Web Business
Posted by Jim Babbage
Add comment |
View comments (0) |
Permalink
|
Trackbacks (0)
|
Digg This
Custom CS3 Icons - Free!
Posted Saturday, April 21, 2007 12:52:46 PM by Stephanie

There's been a wide range of reaction to Adobe's new CS3 icons. Admittedly, when I first saw the single Dreamweaver icon, I was taken aback -- "Is this thing finished?" But after seeing the whole suite, especially on the color wheel, I thought they were nicely done and easy to differentiate as I got a few in my dock. There were many who thought differently though. It was a love it or hate it kind of thing.
For those of you in the hate camp, there's an option. Adam Betts, a very talented designer, has created his own set of CS3 icons -- and released them, free, to the public. He based them on the box design and they look quite lovely. He's even made a new set of document icons if the plain ones don't quite do it for you.
What they'll look like at the smaller sizes, I can't say. There are no instructions included for where to install them, and at this point I haven't a clue. (Feel free to point me in the right direction if you know. :))
There are a few other sets I've run into if Adam's aren't your favorite. Mac Themes is similar to Adam's, Louie Mantia has a set that blend the old icons with the new box look, and if you like the new ones from Adobe but would rather have them a little sexier, koregraphik.com made a set with nicer gradients and rounded corners. Check them all out.
Happy iconing!
Category tags: Adobe, Designing for the Web, Dreamweaver, Fireworks, Flash, Illustrator, InDesign, Photoshop
Posted by Stephanie
Add comment |
View comments (2) |
Permalink
|
Trackbacks (0)
|
Digg This
How to Adjust the Audio Portion of Flash Video
Posted Wednesday, April 18, 2007 12:15:36 AM by David Stiller

If you’re not using the FLVPlayback Component, or one of the older Media Components, then the audio portion of video files may have you scratching your head. The Components have their own volume sliders, which makes volume control a snap, but what about panning (left to right fading), or what if you’re not using Components for video? In ActionScript 2.0, video sound is a bit … well, it’s a bit odd, but one you understand it, audio control isn’t hard.
An answer, short and sweet
In Understanding the Sound Constructor, I went into the usefulness of associating Sound instances with movie clips. To control the audio portion of FLVs, it’s just a bit more of the same. First, we’ll start with the basic “recipe” for bringing video into a Video object:
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
videoPlayer.attachVideo(ns);
ns.play("myExternalVideo.flv");
This is the block of code used in How to Load External Video (FLV) and brings the specified FLV file into a Video object with the instance name videoPlayer. Invoking NetStream methods on the ns instance (such as NetStream.pause()) controls the visual portion, but what’s missing is sound. Here’s how to do it. After the opening block of code, type the following:
this.createEmptyMovieClip("videoAudioContainer", this.getNextHighestDepth());
videoAudioContainer.attachAudio(ns);
var videoVolume:Sound = new Sound(videoAudioContainer);
videoVolume.setVolume(50);
How it works
Four lines; two things going on.
First, the MovieClip.createEmptyMovieClip() method is invoked on the global this property, which refers to the main timeline if you’re typing this code into a main timeline keyframe. This dynamically creates a new MovieClip instance at the next highest available depth, with the instance name videoAudioContainer. The instance name doesn’t especially matter; just keep in mind, this is a movie clip “container” made just for your video’s audio portion. If you wanted to, you could skip this step and put your own empty movie clip on the Stage. Just make sure it has an instance name. On this new instance, the MovieClip.attachAudio() method associates the NetStream instance ns with this movie clip.
Second, a new Sound instance, videoVolume, is instantiated and associated — this is the important part! — is associated with the videoAudioContainer clip that is associated with the NetStream instance. All in the house that Jack built. From there, the Sound instance affects the movie clip which, in turn, affects the audio portion of the video. Set the volume, as shown, or pan.
Category tags: Flash
Posted by David Stiller
Add comment |
View comments (1) |
Permalink
|
Trackbacks (0)
|
Digg This
How to Play Sound Files Sequentially
Posted Friday, April 13, 2007 7:44:25 AM by David Stiller

Many people use Flash to play background music on their site. It’s a good use for Flash, especially if the audio is loaded from external MP3s, which keeps the SWF file size low, and if you give your visitors a way to toggle off the sound. But one song may not be enough. You may want to play a list of files one after the other. If so, the next question is, “How easy is that?” The answer is, “Very.” Let’s take a look.
An answer, short and sweet
The “trick” here — and it’s really no trick at all — is to use an Array instance to store your list of audio files, a variable to keep track of which song is current, and the Sound.onSoundComplete event to trigger each new sound. Type the following ActionScript into a keyframe:
var listOfFiles:Array = new Array("frog.mp3", "loon.mp3", "horse.mp3");
var currentFile:Number = 0;
var audio:Sound = new Sound();
audio.loadSound(listOfFiles[currentFile], true);
audio.onSoundComplete = function():Void {
currentFile++;
if (currentFile < listOfFiles.length) {
audio.loadSound(listOfFiles[currentFile], true);
}
}
How it works
The first variable, listOfFiles, points to a new Array instance that holds three elements, which are the names of three MP3 files. We could have populated this array in a series of lines, like this …
var listOfFiles:Array = new Array();
listOfFiles.push("frog.mp3");
listOfFiles.push("loon.mp3");
listOfFiles.push("horse.mp3");
… but in short sequences, the single-line approach takes less effort to type.
The second variable, currentFile, is set to zero and represents the first sound to play (arrays start counting at zero, rather than one). Finally, a third variable, audio, is declared and set to an instance of the Sound class.
To get things started, the Sound.loadSound() method is immediately invoked on the audio instance, and two parameters are provided. The first parameter is the expression listOfFiles[currentFile], which in this case resolves to the string "frog.mp3" (remember currentFile is zero, which retrieves the first element of the listOfFiles array). The second parameter tells Flash to play the file by progressive download, which means the audio will start before the MP3 has fully loaded.
On its own, the code so far would play the first song and then stop when the audio was complete. The last little bit achieves the original goal, which is to play files sequentially. When the first song (or narration, or whatever you’re presenting) is complete, the Sound.complete event is dispatched. Here, we’re writing a function to be performed in response to that event. The first thing that happens is that the currentFile variable is incremented by one, thanks to the ++ operator. So now its value is one. Next, an if statement checks of currentFile’s value is less than the total number of elements inside the listOfFiles array, thanks to the Array.length property for that instance. There are three elements in the array, and one is less than three, so the final line is executed.
Notice that the last line of code duplicates exactly what we’ve already discussed. The difference is that, this time, the value if currentFile is different. When this second song ends, the complete event will fire again, which means this function will again be triggered. currentFile will increment to two, two is less than three, and the third MP3 will play (element 2 is in the third slot, because arrays start at zero). When the third songs ends, currentFile increments to four, and because four is no longer less than three, the cycle ends.
Variation
Want to repeat the list of files when all three (or four, or however many) songs have completed? Update that last block of code like this:
audio.onSoundComplete = function():Void {
currentFile++;
if (currentFile == listOfFiles.length) {
currentFile = 0;
}
audio.loadSound(listOfFiles[currentFile], true);
} Category tags: Flash
Posted by David Stiller
Add comment |
View comments (3) |
Permalink
|
Trackbacks (0)
|
Digg This
How to Round to the Nearest Ten, Tenth, Hundred, Hundredth, Etc.
Posted Friday, April 06, 2007 12:19:48 PM by David Stiller

I was helping a friend the other day with a rounding issue. He needed to round numbers not to the nearest integer, but to the nearest hundred. So 52.3 would round to 100. 86 would round to 100 as well. 13 would round to 0 and 101.287 would round to 100. You get the idea. The Math.round() method doesn’t take any parameters except the to-be-rounded value itself, so how could this be accomplished? The answer couldn’t be simpler.
An answer, short and sweet
Basic arithmetic does it. Let’s say the original number is 52.3. To round to the nearest hundred, follow these steps:
- Divide by 100
- Round
- Multiply by 100
var num:Number = 52.3;
num /= 100;
num = Math.round(num);
num *= 100;
trace(num);
How it works
The above ActionScript could have been written out a bit longer …num = num / 100;
… but the division assignment (/=) operator reduces the required typing. They amount to the same thing (and the same goes for the multiplication assignement (*=), as well as addition and subtraction assignment operators (+= and -=).
The division/multiplication steps move the decimal place where it needs to go. The rounding functions as it always does.
Variation
If you need to round to the nearest hundredth — 189.5287 becomes 189.53 — just reverse the division and multiplication steps:
var num:Number = 52.3;
num *= 100;
num = Math.round(num);
num /= 100;
trace(num); Category tags: Flash
Posted by David Stiller
Add comment |
View comments (4) |
Permalink
|
Trackbacks (0)
|
Digg This
A very nice new toy
Posted Tuesday, April 03, 2007 7:52:51 AM by Zoe Gillenwater

Yesterday I received a 24 inch widescreen monitor at work, and I'm very pleased, to say the least. t's gorgeous, and working in InDesign in particular is going to be so much easier.
I'm in the process of trying to figure out how to organize all my windows now, though. My first thought was to move Thunderbird to the left side of the screen and Firefox to the right side so I could always have them side by side. The problem with this is that I'm very concerned about ergonomics, and having my neck turned to either side for any length of time is not going to be good. I've left Thunderbird on the left for now, since I'm not going to be staring at my Inbox for great lengths of time, but have the message window and compose window pop up on the top center of the screen, since those are windows I spend more time with. I've moved Firefox to the center of the screen since I spend a lot of time there, and sized it to 990x950. I'm not 100 percent happy with this setup, but until I get some better ideas, I'll try it out.
I'd still like some help with my Dreamweaver setup, which is the program that I use the most. I would love it if the Split View could be split vertically, instead of horizontally, so that I could have the Design View on the left and the Code View on the right. My compromise has been to size the Dreamweaver window to fill about the left half of my screen, with the panels on the very left and the Design View on the right. Then, I've opened the Code Inspector and pulled it entirely out of the main DW window so it fills the right side of the screen. This is ok, but it would be better if it was the true split view, because then I could just hit a button to toggle between letting the Design View or the Code View take up the full width of the screen. Right now, if I want to do that, I have to manually resize all the windows. Or, create different workspace layouts, give them keyboard shortcuts, and use those to toggle between the different window configurations I like. I guess that's not too bad.
Anyway, I'm not complaining — this is a very good problem to be having! If anyone has any suggestions for how to organize my workspace, examples of their own widescreen workspaces, or links to "lifehack" articles on the subject, I'd appreciate it!
Category tags: Dreamweaver, On the Personal Side
Posted by Zoe Gillenwater
Add comment |
View comments (7) |
Permalink
|
Trackbacks (0)
|
Digg This
9 posts
in April - 2007


Blog RSS feed












