# Tuesday, April 6, 2010

There is a reason why computer languages are called "languages". These languages share many common characteristics with the languages that humans use to communicate.

Humans use languages like English, French, Mandarin Chinese, and Farsi to communicate with one another. Programmers use languages like Java, C# and Visual Basic to communicate with computers.

Human languages contain words and each word has one or more correct spelling and one or more meanings; Computer languages have keywords that have a single correct spelling and one or more correct meanings.

Human languages have a grammar to which writers and speakers are expected to adhere. Deviating from this grammar makes it more difficult to understand the message. Computer languages also have a grammar that we call "syntax". It is not sufficient to throw together correctly-spelled keywords: They must be structured properly. Some languages have stricter grammar rules than others, such as a requirement that we declare each variable before using it.

Writing quality software in a computer language is similar to writing a good book or article in a human language. It is possible to write a poorly-written book in English that has perfect spelling and grammar. Microsoft Word will report no errors when you press F7 when editing such an article, but that tells us nothing about the quality of the writing, which may still be confusing or boring. Similarly, it is possible to write slow, non-scalable, difficult-to-maintain software that violates no rules of spelling or syntax. This software will compile but will not perform well.

The main difference between human languages and computer languages is the precision required by each. We can communicate reasonably well in a human language, even if we use poor grammar and poor spelling. This is because we have other communication mechanisms to use, such as expression, tone, gestures and a shared context with others. Computers are generally not smart enough to understand us unless we are very specific in the words we use and in the way we structure those words. We must be more careful what we type and how we compose our words when communicating with a computer.

This is why I believe that writing software has improved my communication skills in general. By forcing me to choose carefully my words and grammar, I get in the habit of communicating with greater clarity.

Tuesday, April 6, 2010 5:53:25 PM (GMT Daylight Time, UTC+01:00)
# Monday, April 5, 2010

Episode 80

Monday, April 5, 2010 5:20:24 PM (GMT Daylight Time, UTC+01:00)
# Thursday, April 1, 2010

The last couple years, I have significantly increased my use of social media.

I don't believe that online social media is a replacement for face-to-face human contact or for a phone call. But it is a good way to stay connected with others between personal visits.

My primary social media sites are LinkedIn, Twitter, Facebook and Flickr. I use each of these channels for a different purpose and to communicate with a different audience: My resume is on LinkedIn; I chat with IT professionals daily on Twitter; I re-connect with old friends on Facebook; and I use Flickr to share photos.

I joined LinkedIn a couple years ago in order to connect with professionals with whom I had worked. I input my resume and built up a network of current and former co-workers. At the time I was building this virtual network, I didn't realize how useful it would be. A few months after joining LinkedIn, I found myself out of work and needing to network. I reached out to my connections and asked people to log in and write their opinions of the quality of my work. The response was overwhelming. Over 30 people wrote recommendations within a few days of my request. Several times, a potential employer mentioned these online praises during a job interview. I ended up finding a job quickly, via networking.

I use Twitter to communicate with like-minded souls in the tech community. As a software developer, I'm drawn to people who share my passion for learning and for technology. Many of the developers I know are also on Twitter. As a general rule, I tend to follow only those people that I've met in person or that I think I might meet soon. I see many of them at conferences a couple times; but our conversations on Twitter help to keep the relationships going between in-person visits.

I'm a pretty passive user of Facebook. I see my kids using the chat feature and I often see long, threaded conversations on the walls of others. About the only thing I do actively and regularly is advertise new blog posts, announce new episode of Technology and Friends, and show off photos I've taken. Despite being passive, I have reconnected with quite a few friends from my past. Many classmates from my high school days sent me friend requests and now I am using Facebook as a communication medium for our upcoming 30-year reunion. Facebook also provides a good way to get a message out to a lot of people in a hurry. Last year, my sister passed away and I was able to widely communicate her funeral arrangements by posting the details on Facebook. A number of people came to pay their respects after reading my Facebook message.

Flickr provides a social media mechanism: You can connect with other users, comment on photos and share ideas; but I don't use its built-in features. Instead I post photos on Flickr and link to them from Twitter or Facebook. Taking photos at a conference or other event and sharing them online is a great way to stay connected with the community. Recently, I have begun to cross-post my photos on SmugMug because this makes it easier for others to buy prints of my photos.

The sites you choose to connect with others online are not nearly as important as the messages are delivering and the connections you are making.

Thursday, April 1, 2010 2:48:21 PM (GMT Daylight Time, UTC+01:00)
# Monday, March 29, 2010

Episode 79

In this interview, Brian Genisio describes the Prism documentation and library and explains how he uses it to build applications.

Monday, March 29, 2010 12:00:16 PM (GMT Daylight Time, UTC+01:00)
# Saturday, March 27, 2010

I have removed the word "easy" from my business vocabulary. I've come to resent the overuse of this word.

What I do is not easy: If it were easy, anyone could do it.

Customers sometimes refer to a task as "easy" in order to drive down the price; Managers sometimes refer to part of your job as "easy" in order to lower expectations of high performance reviews (a dangerous strategy).

This mindset is generally an offshoot of the belief that the time spent coding is equivalent to the time spent typing. It isn't.  Understanding requirements, planning, designing, clarifying, testing, configuring, troubleshooting, communicating, error handling, logging, deploying, and validating assumptions go into nearly every software task I complete.

I cannot count the number of times I was told "The code is already written. You only need to copy it." In nearly every case, this was a gross misrepresentation of the complexity of the task assigned.

A task can be measured on a scale from Complex to Straightforward. Every task has unknowns that add risk and can make it more difficult than our original estimates.

Developers sometimes fall into this trap, telling customers that something is easy. Many of us overestimate our skill and minimize the risks inherent in every task. I caution against doing this because it creates unrealistic expectations and makes it nearly impossible to exceed those expectations.

When describing a task that isn't complex, I refer to it as "straightforward"; Or I give an estimate of how long I realistically think the task will take.

The only time the word "easy" might be justified in describing a task is after that task is 100% complete. In the past, all uncertainties are eliminated and risk reduces to 0.

Replace the word easy with "straightforward" when dealing with software developers (or any professionals) and your relationship with them will improve.

Saturday, March 27, 2010 2:15:17 PM (GMT Standard Time, UTC+00:00)
# Tuesday, March 23, 2010

Episode 78

In this interview, Jim Holmes discusses the importance of unit testing in writing high-quality, maintainable code.

Tuesday, March 23, 2010 4:25:14 AM (GMT Standard Time, UTC+00:00)
# Saturday, March 20, 2010

I have been recording and producing the online TV show Technology and Friends for over a year. After over 70 episodes, I have found things that work well for me. This series is a detailed account of how I put together each episode.

Part 1: Preparation

Part 2: The Interview

Part 3: Equipment

Part 4: Post-Production

Part 5: Sharing with the world

Saturday, March 20, 2010 6:57:11 PM (GMT Standard Time, UTC+00:00)
# Wednesday, March 17, 2010

In the last article, I explained how to edit a video and export it to a single MPG file. In this article, I will discuss how I share this video with the world.


After I finish editing the video in Adobe Premiere Elements, I export it to a single MPG file. This is done by selecting the "Share" tab in the top right section of the editor. On the Share tab, I use the following settings: Personal Computer |MPG | NTSC DVD Standard. I enter a file name and select a directory and click the [Save] button to create a single MPG file containing my complete show.

Once I have a single MPG file, I can easily share it with others.


I upload the exported WMA file to a video-sharing site. I use Viddler because it is free and provides reasonably high-quality playback.

Viddler provides the ability to upload a file directly from their web site. I add metadata, such as a name and a description to each video.


I link these videos from both DavidGiard.com and TechnologyAndFriends.com.

Viddler provides a button ("Embed This") that generates the HTML necessary to embed a video into a web page. I copy this HTML and paste it into a post on my two sites. Above the embedded video, I add some text to describe the video and any relevant links, such as the guest’s blog. I release both posts on the same day.

After releasing a new episode, I promote it via Twitter. I also send an e-mail to my guest, telling him or her that the interview is now available. Often my guest will link to the show from a blog or tweet, driving more traffic. If we are discussing someone else in the video, I often will e-mail that person or organization. After interviewing Jamie Wright about 37 Signals last year, I e-mailed 37 Signals to tell them about it. They linked to the video, which drove over 10,000 viewers to watch it.

My goal is to release at least one video every week, so I usually have a backlog of videos recorded, produced and ready to release.

Final Thoughts

On average, it takes me approximately 2 hours to produce a 20-30 minute show. This is in addition to the hour or so it takes to set up, prepare and record a show. So far, I’ve done this almost 80 times.

Wednesday, March 17, 2010 10:42:47 AM (GMT Standard Time, UTC+00:00)
# Tuesday, March 16, 2010

I always edit my interviews prior to posting them. The first step is to get the recorded video onto my computer. I record to Mini DV tapes and the easiest way to get this content from the tape to my computer is to insert the tape into my video camera, attach the camera to my PC via firewire, and import the video.  Windows 7 ships with a utility to import videos directly into my PC as an AVI file. When I connect the camera and turn it on in 'Play' mode, my PC prompts me to import the video.

Adobe Premiere Elements basics

After I import the video, I use Adobe Premiere Elements to edit the show. Here are a few of the basic skills you will need in order to edit a show like mine in Premiere Elements.

I start by creating a new project. To do this, select File | New | Project from the top menu and enter a name and folder location for the project. A blank editor appears with three main sections:

  • The Timeline at the bottom of the screen controls the content in your video and allows you to add or manipulate that content. You can add content at any point in the timeline, even overlapping multiple videos or slides, so they are superimposed on one another. You can modify a point in the video by selecting that point in the Timeline.
  • The top right area of the screen includes a tabbed interface so you can organize, edit or share your video. Functions in this area are organized under different tabs.
  • The top left area of the screen allows you to preview and edit the video. VCR buttons below this allow you to play, fast-forward and rewind the video, beginning at the point selected in the Timeline.

Premiere Elements has a number of ways to add content to a project. The two I use most often are adding an existing video or photo; and adding a slide. A slide can stand on its own, such as in the opening or closing credits, or it can be overlaid with the video, so it acts as a caption.

To add existing media to a project, select the "Organize" tab in the top-right section of the editor; then select Get Media | PC Files and Folders and navigate to the video or picture to import. An icon representing the imported media appears. Drag this icon to the desired area in the timeline.

To add a new slide, select Title | New Title | Default Still from the top menu. A slide appears at the currently selected position in the timeline. You can edit the text of the slide by clicking it with your mouse and deleting, replacing or adding to the existing text. With the text selected, tools appear under the “Edit” section in the top right of the screen, allowing you to select the font and alignment of the text. You can change the length of time a slide is displayed by dragging the right edge in the timeline.

To remove sections of the video, you need to first split a clip at the beginning and end of the area you want to remove. To split a clip, click the point at which you wish to apply the split and select Timeline | Split Clip from the top menu. To delete a section of video, select the section between the splits you added (the selection will highlight purple) and press the Delete key. To delete the beginning or end of a video, you only need to insert a single split and select / delete the video section before or after that split.

Editing "Technology and Friends"

Each show consists of the 5 sections in the following order

  1. Introduction
  2. Interview
  3. Ending Credits
  4. “Technology” and “Friends” quote
  5. Title page


The Introduction plays at the very beginning of each episode and is broken into a Title Sequence, followed by a slide listing the episode number and a slide listing the speaker and topic.

Title Sequence

The title sequence is the same for every show. Last year, I created a short video and I use this same video for each show, so I import it from my computer. This video displays a montage of photos of past guests as the show title – “Technology and Friends” - appears on screen. This is  followed by some photos of me surrounded by the words “Hosted by David Giard”. I add this media to the beginning of the timeline.

Episode Number slide

The Episode Number slide displays immediately after the Title Sequence, I insert a slide listing the episode number. The text on the slide is centered vertically and horizontally.  This slide lasts for 5 seconds.

Guest/Topic slide

Immediately after the Episode Number slide, I insert a slide listing the guest and the topic ([Guest] on [Topic]). For example, when Jim Holmes was on the show to talk about CodeMash, this slide said “Jim Holmes on CodeMash”. The name, the word “on” and the topic each appears on a separate line. Longer topics may be split into multiple lines. The text on this slide is center-aligned and is centered vertically and horizontally on the slide. 


The interview is the most difficult thing to edit. I sometimes need to watch an interview 3-4 times to decide what to cut.

I always need to cut out the beginning where I am walking into the camera frame and setting up; and the ending where I walk out of the frame to turn off the camera. If I had someone to operate the camera, the recording would not have these sections.

Some interviews include time that doesn’t add any information and I cut out these parts as well. Examples include: Me clarifying a question that I asked poorly the first time; a guest misspeaking, then correcting himself; a joke or anecdote that falls flat; and redundant information. I want the interview to be concise and entertaining. Often a video can be improved by removing the less interesting parts.

If a guest mentions a specific URL, I add an overlay slide to display that URL. This reinforces the information and provides the proper spelling to the user. URL text is displayed in the bottom third of the screen and the text does not wrap. It is acceptable to eliminate "http://" from the URL as this is implied and tends to clutter the slide.

Ending Credits

At the end of each show, I display a series of slides, one after another. Each slide lasts 5 seconds. The text of each slide is

Guest on Topic

where Guest is the full name of the guest and Topic is the main topic we discussed

Recorded Mmmm DD YYYY, Location

where Mmmm DD YYYY is the date the interview was recorded and Location is the city in which it was recorded, such as “January 20 2010, Sandusky, OH”

XXX performed by YYY

where XXX is the name of the song selected to play during the Introduction and Ending Credits and YYY is the name of the artist who performed that song. (More on this later)

See more at TechnologyAndFriends.com and DavidGiard.com

The text on this slide is the same each episode.

Copyright David Giard, YYYY

where YYYY is the current year.

"Technology" and "Friends" quote

During each interview, I ask my guest to speak a sentence using the words “Technology” and “Friends”. During the editing process, I clip this section of the video and move it to the end, immediately following the final credits.

Title page

The very last thing that I drag to the end of the timeline is a graphic image – TechnologyAndFriends.gif. This is a logo I created for the show. It displays for 5 seconds and serves as a final reinforcement of the show name.


After nearly four decades collecting, I have accumulated a substantial library of music. Technology and Friends does not have a theme song: Instead, I choose a different song for each episode. I try to choose a song in which the title, lyrics or artist relate in some way to the subject or guest of the current show. Sometimes, I’ll pick a song or artist that I know the guest enjoys. If I cannot find an appropriate song, I select an upbeat instrumental. I drag the song to the very beginning of the timeline on a separate track from the Introduction. This causes the music to play at the same time as the introduction and opening credits. I clip the audio track and end the music at the same time the introduction ends and the interview begins.  Then I drag the remaining music track to the end, so that it plays during the closing credits and ends when the guest speaks the “Technology” and “Friends” quotation.

In my next article, I'll describe how I share the video on the web and on TV.

Tuesday, March 16, 2010 11:19:15 AM (GMT Standard Time, UTC+00:00)
# Monday, March 15, 2010

Episode 77

In this interview, Mike Amundsen explains the concept of REST and how a developer can use this pattern to build web applications.

Monday, March 15, 2010 3:21:38 PM (GMT Standard Time, UTC+00:00)