December 06, 2009

Enterprise 2.0

Facebook, wikis, blogs, YouTube...what do these have in common? They are all examples of Web 2.0.

Web 2.0 is not like HTML5. It's not a new specification, it's not a specific way of formatting or configuring anything online, it is defined by the behavior of the users interacting with the sites. It is community-driven, dynamic, extendable. It's also everywhere.

So it follows logically that business would want to capitalize on that community, and so Enterprise 2.0 was...well, perhaps "born" isn't the right word; "coined", then. Enterprise 2.0 is merely taking the ideas inherent in the Web 2.0 model and applying them to business situations. (Forrester Research begs to differ slightly; according to them, Enterprise 2.0 does not include anything aimed at consumers. I personally disagree with that statement: how else are businesses going to reach consumers, if they're not using Facebook and Twitter-type technologies?)

Are you in the engineering department and you need to collaborate with your coworkers in design? Set up a wiki to provide a centralized place to put mock-ups, specifications, etc. Need quick bursts of promotion? Fire off Tweets about discounts or product launches.

Sounds great, right? So why aren't all businesses Tweeting and Facebooking and blogging and wiki-ing? Dion Hinchcliffe has compiled a list of 14 reasons why Enterprise 2.0 initiatives fail. In essence, most of the problems boil down to the fact that some managers treat Enterprise 2.0 as an afterthought, something that doesn't need to have many resources allocated to it. After all, one may think, how much effort does it take to Tweet "14-inch widget on sale for 20% off, limited time offer"?

But it's not just about Tweeting, or wikis, or any one thing. It's about collaboration across the organization, destroying barriers to communication, and paying attention to the customers. Only by gaining the acceptance of the entire organization can Enterprise 2.0 initiatives succeed.

Extra reading:

Quote of the Day:
Booth: A prodigy violinist disappears and a month later his skull ends up bouncing off a garbage truck?
Cam: Obviously, we are looking for someone who really, really hates classical music.
--Bones, "The Widow's Son in a Windshield"

November 29, 2009

Yay for Holidays...

...when I have way too much time on my hands. Here's some of the stuff I've been doing.
  1. Installed Firefox 3.6 beta 4. I can't begin to describe the joy my nerdy little heart felt when I discovered the Zelda persona. Now my browser is complete with the Triforce, Sages' Medallions, and some Rupees thrown in for good measure. (Personas are skins for Firefox. Chrome supports something similar, but none of their themes appeal to me.) The beta has also changed the behavior for opening links in new tabs: instead of opening all the way to the right, like in Firefox 3.5, they open right next to the parent tab. I still cannot stress enough how much I dislike the Awful Bar, but other than that, I can't complain about anything. Firebug and the Web Developer Toolbar still work, so I'm happy.
  2. Downloaded the source code for Chrome OS. I successfully followed the instructions to build a working version of the OS, but neither my bootable flash drive nor the .vmdk image would work in VirtualBox. For some reason, the OS refuses to log in with my Gmail account, my other Google account, or the default chronos login. Sigh.
  3. Tinkered with some Java. A (non-programming) friend of mine was trying to write a Java program that would display information in some arrays and perform some basic calculations, but didn't know how to get the program to pull individual values out of the array. I helped her figure out how to do that and write a while loop that would perform the calculations on all five sets of values. Yes, perhaps there are greater things to get excited about, but I love the smell of success on a Saturday morning, no matter what form it comes in.
  4. Stayed up way too late on Thursday night/Friday morning to snag all those amazing Black Friday deals. </sarcasm> The best deal came today, when I got Firefly: The Complete Series for $10.99.
  5. Did some video editing. Nothing like a little editing to tell you that your awesome system that scores 5.2 and above on all aspects of the Windows Experience Index is really just an underpowered piece of junk. But I'm happy with the output...quite happy, in fact.
And in the spirit of Thanksgiving, here are some programs I'm thankful for:
  1. Foxit Reader. It does everything Adobe Reader does, only faster and without all the bloat. In addition, Foxit has paid programs for editing and creating PDFs, like Adobe, but their programs are cheaper.
  2. Parallels. I've got a WinXP and a Ubuntu Linux VM with this. The sad thing is that some of my older Windows games function better on the VM with a fourth of the memory that's on my Win7 computer. Some things I just don't understand.
  3. GoldWave. This is the best audio editing software ever. True, it isn't open-source like Audacity, but it just feels more intuitive to me. Plus, it has a very generous trial period -- you'll have plenty of opportunities to decide whether you like it. The Noise Reduction feature is the best thing since cotton candy.
  4. TextWrangler. This far outstrips Notepad. It has (limited) code highlighting, and it preserves indents when you hit Enter.
  5. Tap Tap Revenge 2. I can't afford Guitar Hero, so this is the next best thing. I only wish it had more songs that I like.
Well, I mentioned Firefly, so I have to have another quote from there today!

Quote of the Day:
Take my love, take my land,
Take me where I cannot stand;
I don't care, I'm still free,
You can't take the sky from me.
--Firefly theme song

November 15, 2009

More iPhone!

As a follow-up to "iPhones, the Web, and Dashcode, Oh My!", it is possible to mimic the look and feel of a native app/Dashcode-generated web app without using Dashcode. There are several WebKit-specific CSS stylings that will generate native-like gradients, rounded corners, etc. My favorite (because I like shiny stuff) is -webkit-gradient, which allows you to have a light color gradate to a dark color without having to create a separate image in another program and load it in. Here's the correct syntax for the gradient:
background-image: -webkit-gradient(linear, left top, left bottom, from(#ccc), to(#999));
Explanation from left to right. background-image is the CSS property for, well, displaying a background image. Instead of specifying a URL as a value, though, in this case we're specifying a -webkit-gradient. The gradient requires several values:
  1. Type of gradient. There are two types: linear and radial. Linear gradates in a straight line from Point A to Point B. Radial gradates in a circle from a specified point for a specified radius. An example of the two types is at webkit.org (only viewable on a WebKit-based browser like Safari or Chrome).
  2. One or more points. Point values accepted are coordinates, percentages, or the keywords "left", "right", "top", and "bottom".
  3. Starting color. Colors can be specified in hex values or RGBA (red, green, blue, alpha).
  4. Finishing color. Colors can be specified in hex values or RGBA (red, green, blue, alpha).
Moving on to rounded corners. This is slightly more annoying to code. Each corner must be coded separately. Assuming the rounded corners are being applied to a list, the code to generate rounded corners is as follows:
#header ul li:first-child a {
-webkit-border-top-left-radius: 8px;
-webkit-border-top-right-radius: 8px;
}
#header ul li:last-child a {
-webkit-border-bottom-left-radius: 8px;
-webkit-border-bottom-right-radius: 8px;
}
In the first CSS declaration, the CSS code is looking for an anchor tag within the first instance of a list item within an unordered list within the header div. In the second declaration, the code is looking for an anchor tag within the last instance of a list item. The corner radius has to be applied to the first and last li tags separately, instead of applying it to the entire list, because if it's applied to the entire list the li's style will override the list's.

There are many more things you can do with JavaScript, Ajax, and CSS to approximate the feel of a native app on the iPhone. Check out Building iPhone Apps with HTML, CSS, and JavaScript to learn more.

Quote of the Day:
Jayne: Testing, testing. Captain, can you hear me?
Mal: I'm standing right here.
Jayne: You're coming through good and loud.
Mal: 'Cause I'm standing right here.
--Firefly, "The Train Job"

November 06, 2009

Get A Job In One Hour Or Less!

Well, okay, maybe not, but there's no denying the fact that PivotTable experience is a sought-after skill in today's job market. In fact, the demand for PivotTable people has gone up even as demand for just plain Excel folks has gone down (source: Pivot Table Guy).

It isn't that hard to learn how to use PivotTables, either. If you have an Excel spreadsheet with rows and columns, you already have the source data necessary to generate a PivotTable. The table I was working with had 6 columns: Date, Location, Product, Channel, Quantity, and Revenue. To generate the PivotTable, select a cell anywhere in your table, go to Data > PivotTable and PivotChart Report (Insert > PivotTable in Excel 2007), and complete the wizard. This will create an empty PivotTable. Into the PivotTable you can drag and drop fields to create the final product. My table used Location for its rows, Date for its columns, and Revenue for its comparison data.

The main limitation of PivotTables is they only take up to 255 column values. That means that if you have sales figures for every day of the year, you can't display all of them at once. To fix that, right-click on the appropriate field (in this case, Date), select Group, and choose how you want to group the data. When dealing with dates, you can group by years, quarters, months, or days.

Want more detail than just revenue by location and date? Just drag and drop another field into the appropriate section. I added Channel to the columns, which breaks out the revenue by channel and then by date (which I've grouped by quarter to avoid exceeding the 255-column limit). Excel automatically calculates totals on all rows and columns, as well.

That's not quite good enough for me. I'm the sort of person that color-codes everything. That's where upgrading to Office 2007 finally has a benefit. There are the obvious formatting options (Home > Format as Table), which make the headers, footers, and totals different colors. In addition to that, however, you can add data bars to cells. Data bars are horizontal shadings in cells that show relative quantities according to the range of cells you select, allowing you to gauge at a glance which cells have high or low values. To add data bars, select the cells you want to compare to each other (all first-quarter sales by location, for example), go to Home > Conditional Formatting > Data Bars, and select the color you want. There are menu options (More Rules) to allow you to fine-tune the formatting. Voila, we have color.

Quote of the Day:
'Cause I get a thousand hugs
From ten thousand lightning bugs
As they try to teach me how to dance.
A foxtrot above my head,
A sock-hop beneath my bed,
A disco ball is just hanging by a thread...
--Fireflies, Owl City

November 02, 2009

All Kinds of 'bilities

Findability is the quality of being able to be located by potential users. You may have the greatest website about (insert favorite subject here), but if it's buried, unorganized and unlinked, in the depths of Angelfire, nobody will ever know about it. Findability != SEO; it is focused on humans, not search engines. If findability efforts benefit search engine rankings, that is good, but it is not its primary aim. Findable websites not only facilitate initial visits, but they encourage visitors to return and to recommend the website to friends.

Findability does not exist in a vacuum. It is a part of SEO, but it is not a bunch of keywords stuffed in a page. It is useful content, organized for people to find, read, and use. Once people find your website, they have to be able to use it. Usability describes how easy it is to, well, use the website. Usability is different from accessibility: usability is more about organization and ease of use, while accessibility is about making sure that the website is available to the maximum number of people.

Members of Aarron Walter's Findability class at the Art Institute of Atlanta came up with the following definitions for findability, accessibility, usability, and SEO:
Findability: The quality of being able to be navigated or located.

Accessibility: The general term used to describe the degree to which a product (e.g. device, service environment) is accessible by as many people as possible. Usability and accessibility are often confused. See Also: http://www.w3.org/WAI/

Usability: The term that describes the quality of a website that determines how well tasks can be accomplished and how easy the website can be used. This can be broken down into many qualities, such as learnability, memorability, and efficiency. See also: http://www.useit.com/alertbox/20030825.html

SEO:Search optimization is a hyper-competitive endeavor that requires intense focus and a thorough, up-to-date understanding of how the search engine algorithms and robots operate.

(source)
Resources:
Quote of the Day:

iPhone Web Development Resources

Yay, time for List Monday. Today's list: sites about iPhone web development.

General:
Working with the viewport:
CSS on the iPhone:
Using WebKit:
  • 6 WebKit Tricks, revealing the secrets behind some (rather gimmicky, but pretty cool) tricks to enhance the display of content
iUI:

October 31, 2009

I Will Have No Hair In Five Years.

MySQL is an open-source relational database system. XML is a markup language designed to provide a good way to organize data and allow computers to get meaning from data (as opposed to HTML, where meaning must be inferred - not something today's computers are equipped to do). So what exactly do they have in common, to both be included in the same post?

They are, colloquially stated, a pain in the butt.

Let's start with XML. The Extensible Markup Language is a descendant of SGML (Standard Generalized Markup Language), which was designed to provide a standard document storage format. XML took that one step further by allowing users to define their own schemata. Once the schema has been defined, the XML document can be validated. After that, it can be transformed through the use of a stylesheet document. Pages thusly transformed will render as HTML, with whatever formatting you specify.

Sounds great, doesn't it? You have a language that you can fully customize to your needs and you can make it look pretty! This, my friends, was what I was still doing at 2:30 this morning, after having started some time in the middle of the afternoon. In my foolish, naive way, I believed that I could create an XML document with sample data, define the schema from that, create the stylesheet, and be good to go. Um...not exactly. The stylesheet is a very finicky animal, and it wants things served to it on a silver platter (oops, I meant "in a particular order, in a particular format). So now I have to figure out how to retool my schema and document in order to display the content I want, in the order I want.

However, MySQL was the topic for the day, when I finally dragged myself out of bed late this morning. After my compatriots and I had input all the data in our database, it occurred to me that one of our tables really needed a 1:1 recursive relationship. This particular table has 7 fields in its primary key. After being reminded of the fact that the ALTER TABLE command does, in fact, exist, I added in the appropriate columns and populated them.

Then I tried to add the foreign key constraint. Nothing worked. It simply would not add that foreign key, choosing instead to give me Error #150. At wit's end, I Googled "mysql 150 add foreign key" and came up with a 2006 MySQL bug report (bug 16290) complaining about the unclear error message that results from attempting to create a foreign key on a non-indexed column. "Aha!" I said to myself. "The columns I'm trying to reference aren't indexed." I created an index on all 7 primary key columns and executed the ALTER TABLE command to add the foreign key - and it worked. I was exceedingly happy.

Quote of the Day:
If you'll come up one by one, unarmed, I'll engage to clap you all in irons and take you home to a fair trial in England. If you won't, my name is Alexander Smollett, I've flown my sovereign's colours, and I'll see you all to Davy Jones.
--Captain Smollett, Treasure Island

October 25, 2009

iPhones, the Web, and Dashcode, Oh My!

Scene: A twentysomething plays with his iPhone.

Twentysomething: I love my iPhone! I could spend all day doing stuff on it. (thinks) You know, my personal website doesn't display very well on it, though. Everything's all tiny and jumbled up. I wonder how I could fix that?

And so our hero consults The Google for answers. He's not ready to pay the $99 for the privilege of submitting real native apps to the App Store, so he's settling for a little web app development.

There are two ways to develop for the iPhone. One, you can create a full-blown native app, which you can distribute via the iTunes App Store and possibly make money from. Two, you can create a web-based app, which will display in the iPhone's browser. You can't make money off a web app, but you don't have to pay the $99 fee to be in the iPhone Developer Program, either. On top of that, there are really two options for web development: modify an existing web page so it displays well in Mobile Safari, or use Dashcode to mimic the look and feel of a native app.

First, let's look at modifying an existing web page. Web pages are traditionally designed for full-size computer monitors with resolutions of 800x600, 1280x1024, or something similar. The iPhone is considerably smaller than that at 320x480 pixels. If left to its own devices, the iPhone will assume a page width of 980 pixels and scale that to fit the display. In portrait orientation (home button to the bottom), that means tiny pictures and illegible text, since 980 pixels is being forced into 320. Landscape orientation (home button to left or right) fares a little better, since it's only having to reduce to 480 pixels. Still, it generally ends up being pretty tiny.

So, how do we fix that? Obviously, we could leave it as-is and force the user to manually zoom in by double-tapping elements or pinching, but come on. We're classier than that. We're going to make use of a simple meta tag to change the scale. Drum roll please...

<meta name="viewport" content="width=device-width">

Hallelujah, text that's readable without a microscope!*

"That's great," our hero muses, "but I want something...better. How can I create something that looks more like an app and not a web page?"

Enter Dashcode. This is a free program (Macs only, sorry Windows devs) that includes templates, buttons, and code snippets that allow you to create real web apps that look like native apps. You can't take advantage of as many of the iPhone's built-in features this way, but for someone operating on a budget, it's a pretty good alternative.

When you open Dashcode, you can choose a template for your project: Browser, Utility, RSS, Podcast, or Custom. Browser is pretty much a menu interface: You put in a list of stuff, and when someone taps on an item, they get more information about that item. Utility's default interface is a notepad/text area with customizable settings. RSS lets you specify a Feed URL and displays a list of article headlines from that feed. Podcast functions very similarly, but instead of articles, it displays podcast titles and allows the user to listen to them. Custom presents you with a blank slate that you can customize to your needs. Whichever template you choose, you have to provide it with data sources and whatever functionality you need.

Either way you go, you're well on your way to creating a good web app!

*Obviously, there are more things you can tweak to optimize your web page for the iPhone. This is merely the most obvious and easiest. Seriously, Google is your friend.

Quote of the Day:
I was feeling pretty creaky after hearing the TV reporter say, "To contact me, go to my Facebook page, follow me on Twitter, or try me the old-fashioned way -- e-mail."
--Reader's Digest, November 2009, pg. 210

October 22, 2009

Best Practices for Producing and Distributing Video

Even though the capability to embed videos in web pages has been around since the inception of Macromedia Flash (now Adobe Flash) in 1996, the widespread use of video online has only become truly mainstream during the past few years. Therefore, the guidelines and best practices for Internet videos have still not been completely codified yet. However, in 2005, Adobe posted some best practices for delivering video content:

  • Stream. There are three ways to deliver video content: downloading, progressive downloading, and streaming. If a user has to download a video file to play, he or she has to wait until the entire file downloads in order to watch it. In the case of large files (TV shows or movies, for example), this can take over an hour. Progressive downloading stores the meta information necessary for playback at the front of the file instead of the back, allowing the user to start playing the file before it finishes downloading. Streaming does not download the file to the user's computer at all. Not only does this let users view live events, it also protects the creator's copyright, since the data is never stored anywhere but the server.
  • Pause. If the video loads with the first frame displayed and the video paused, the user can a) get a cursory idea of the video's content and b) decide if and when they want the video to start. YouTube is a high-profile offender: if you search for a video, then open multiple videos in new windows or tabs in your browser, all of them start playing at once and you have to manually pause each one.
  • Preview. This does not seem to be widely implemented, but Adobe suggests playing a five-second clip on mouseover. This would give a better impression of the video's content than just showing the first frame.
  • Detect. Some users simply do not have Internet connections that can handle large downloads. If at all possible, a lower-quality version of the video should be available. If working with Flash Media Interactive Server, the Server auto-detects the user's connection speed and serves up the video with the optimal quality for that connection.
  • Standardize. There are common naming conventions to be observed. If a movie called "filename" is encoded at 600 Kbps, the Flash movie file should be named "filename_600". This allows the Flash Media Interactive Server to more easily deliver the proper file according to the connection speed it detected.
  • Trace. Trace statements aid in identifying server side errors by following the application access activity on the server. It allows you to debug before the page even reaches the user.
  • Optimize. The most annoying facet of streaming video is rebuffering. Make sure that you calculate the buffer time accurately. Adobe provides a tutorial on how to calculate this.
  • Define. Who are you trying to reach? What are their connection limitations? Is the majority of your audience on dial-up? Answering these questions will help you determine what video content you can provide.
  • Encode. The only way to distribute high-quality video is if it is converted into the proper format via an encoder. The best file types will be those that are viewable by most people, such as MPEG.
Other sites add a few more things to think about:

  • Arun Chaudhary suggests that when shooting video initially, you should find a location that will enable you to get good sound. Visuals are not nearly as informative if there are no discernible sounds to accompany them. Also, choose descriptive video titles to aid in searching.
  • Eric Carlsen suggests that companies should invest in hiring a video professional instead of displaying "user-generated" content. This avoids the amateur feel that pervades many YouTube videos.
In short, the basic underpinnings of video distribution best practices are similar to those of search engine optimization: Create good-quality content that is relevant and easy to find and view, and the visitors will come.

October 14, 2009

Web Analytics and SEO

I've written a paper on the use of web analytics and search engine optimization. It's available on Google Docs. If you haven't been given access, and you wish to read it, comment on this post with your email address and I'll see about setting up view permissions. Don't worry, I will not display your email address or send it to those nice folks in Nigeria. :-)

Quote of the Day:
Castle: We make a pretty good team, you know. Like Starsky and Hutch, Tango and Cash, Turner and Hooch...
Beckett: You know, now that you mention it, you do remind me a little of Hooch.
--Castle

September 26, 2009

Coffee Addiction: Reprise

Last week I talked about the fact that web designers have a horrible caffeine habit. Introducing the newest addition to the Coffee Family: Cappuccino.

Cappuccino was created in 2008 by the company 280 North, whose goal was to port Cocoa, Apple's object-oriented desktop application development environment, to JavaScript. It is an open-source framework, built on JavaScript, that allows you to create fully-functional applications that run entirely in your browser. It uses the Objective-J language, which has its roots in JavaScript and Objective-C. One of the key points of Cappuccino is that developers need not tinker with HTML, CSS, or the DOM; the framework takes care of that.

Cappuccino is a cross-browser implementation, working under IE, Firefox, Opera, Safari, etc., on Linux, Windows, and Mac. Some workarounds to address IE's shortcomings have been included in the framework, so web app developers have that much less to worry about.

If you want to get started with Cappuccino, it's easy enough. Download the Starter kit and go through the tutorials. It doesn't seem to be any harder to learn than similar languages. Happy developing!

Quote of the Day:
All that is gold does not glitter,
Not all those who wander are lost;
The old that is strong does not wither,
Deep roots are not reached by frost.
--The Lord of the Rings: The Fellowship of the Ring

Office Online

This is why I'm still using Office 2003:


Microsoft Office has been the de facto standard for office suites for, well, pretty much as long as it has existed. Need to generate a document with words, numbers, formulae, and/or pictures? It's a pretty safe bet you'll be using a Microsoft product for that. However, MS Office is a touch pricey and many people (and businesses, for that matter) cannot justify spending that kind of money every time a new version comes out.

Enter Web office apps. These are stripped-down, but free, MS Office-like programs that run inside your browser: Google Docs, Zoho, and the upcoming Microsoft Office Web Applications, to name a few. Due to limited time, I only tested the slide show apps included in each of these. (I also tested 280 Slides, which is a web app built on Cappuccino; there is no corresponding suite of office programs to go with it, but it's a neat program by itself.) So, how do they compare to each other and with the current non-Web app, MS Office?

Microsoft PowerPoint (Microsoft Office) is the standard. It does not run within your browser; it is a standalone program included in MS Office. It has transitions, animation, clipart, picture cropping, WordArt, everything. By default, files are saved in *.ppt format (except for the newest version of Office, in which case it is saved in *.pptx format). These files are readable in a multitude of viewers, and you can even use the "Pack and Go" wizard to include PowerPoint Viewer with your presentation. MS's decision to replace the menus with a ribbon interface in Office 2007, however, dramatically impacted its usability for longtime Office users who were used to where everything was in the menu system.

Features: 9/10 (could benefit from including more templates)
Ease of Use: 8/10 (Office 95-2003), 5/10 (Office 2007)
Ubiquity: 10/10
Overall: 9/10 (Office 95-2003), 8/10 (Office 2007)

Google Presentation (Google Docs) has the advantage of being run by the ever-ubiquitous Google. It has a word processor, a spreadsheet app, a slide show app, and a form editor. When you create a slide show, you can save it to your computer as a PowerPoint presentation (*.ppt). It has some decent slide templates. Entering text, pictures, and simple shapes is fairly straightforward. There does not appear to be any way to animate slide elements or have transitions between slides. If you want to have different font sizes associated with different list levels, you will have to manually change it yourself; you're also stuck with whatever bullet styles Google has assigned to each level.

Features: 6/10 (includes enough basic tools to get the job done)
Ease of Use: 8/10
Ubiquity: 8/10
Overall: 7.33/10

Zoho Show (Zoho) immediately runs into some issues. Unlike Presentation and PowerPoint, Show lacks any sort of right-mouse click functionality, meaning you have to find everything in the ribbon at the top. It allows you to change bullet styles, but some of the symbols may come across as question marks in your presentation if your browser does not support the proper font. Again, templates are limited, but that seems to be pandemic across all presentation programs. It will export to a *.ppt file on your computer.

Features: 6/10 (comparable to Google Apps)
Ease of Use: 5/10 (lacks context menus)
Ubiquity: 7/10 (lacks Google/MS name recognition)
Overall: 6/10

280 Slides has fewer templates and layouts to choose from than the other applications. You can have any bullet you want, as long as it is a large circle. Its features are simple and relatively easy to find, but limited. It does not support animation. It will export to a *.ppt or *.pptx file on your computer.

Features: 5/10
Ease of Use: 9/10 (no context menus, but good organization)
Ubiquity: 5/10 (lacks Google/MS name recognition)
Overall: 6.33/10

Zoho and Google are fairly comparable, so between those two I would choose Google, due to its ubiquity, (admittedly limited) context menus, and company stability -- Google is not going anywhere anytime soon. 280 Slides is good for tossing together a quick presentation on the go, but it lacks some of the features of the others. All in all, for basic needs, web app suites will get the job done, but for any higher-level functionality, looks like we'll be keeping our copies of Office for a while.

Quote of the Day:
funny pictures of cats with captions
see more Lolcats and funny pictures

September 25, 2009

Stop Reading This Blog.

Seriously. Stop right now. Go watch Dr. Horrible's Sing-Along Blog. And then go watch Firefly and Castle.

Done? Great! Now that you've seen some great shows, let's talk about rich media. Rich media is loosely defined as "pretty stuff that is informative or entertaining in some way". Got a graph showing how Napoleon's army got smaller the closer he got to Moscow? That's rich media, because it has a lot of information packed into one diagram that can be read in many ways. Got a TV show online? That's rich media. Got a website that tells you everything you ever wanted to know about emotions manifesting themselves in blogs? That's rich media, too.

Did you notice anything different about Dr. Horrible's Sing-Along Blog? Instead of showing an air date, Hulu lists it as a "web exclusive". What's really impressive, however, is that it won an Emmy. An Emmy, folks. A television award was given to something that was never shown on the boob tube.

A few years ago, television networks started putting some of their shows up on their websites for viewing (after they aired on TV, of course). Now, most shows are online within 24 hours of their initial air date, which is threatening to invalidate Nielsen ratings and cause a major shift in TV viewers' habits. Since currently online shows have typically only one 30-second commercial at each break instead of two to four minutes' worth, I'd say it's a pretty safe bet that online broadcasts don't generate as much money for the networks as traditional TV.

Still, putting shows online has the potential to expand a show's audience. Maybe someone has a scheduling conflict that prevents them from watching a show when it airs, but they discover it online. Maybe they even go out later and buy the season DVD, which equals money for the network anyway. Networks are already trying to figure out how best to monetize their online content, and I predict that they will continue changing and refining their strategies. Online rich media is here to stay.

Quote of the Day:
Zoe: Cap'n'll have a plan...always does.
Kaylee: That's good, right?
Zoe: It's possible you're not recalling some of the cap'n's previous plans.
--Firefly

September 18, 2009

Twitter = Asparagus

When I was young, my father would always try to get me to eat asparagus.

"I don't like asparagus, Daddy."

"How do you know? You've never tried it."

"I just know. I don't like the way it smells."

I don't like the way Twitter smells, but I figured I would at least do some research into it.

For those of you who have spent the last year or so under a rock, Twitter is a microblogging service. Every post must be 140 characters or less. Everyone and their granny is tweeting now, it seems. Celebrity Twitter is supposed to be really interesting. Just ask Conan O'Brien.

There is no real limit to the content you can post. Everything from the Iran elections to Kanye-bashing to your morning bowel movement is fair game, as long as it's not spam or porn (even that's not particularly well-policed).

Side note: A recent study found that 40% of tweets are "pointless babble".

You can set your account to either public or private, depending on if you want the world to know what you're doing or just your friends. If you see a tweet you like, you can RT, or re-tweet, it to share it with your "followers". You're not supposed to impersonate people, threaten people, infringe on anyone's copyright, or post people's private information.

There are approximately 3,421 Twitter apps on the iTunes App Store (okay, maybe I'm exaggerating a bit, but there are still quite a few). Olly Farshi on The Apple Blog has done a far better job than I could of detailing some of the better Twitter iPhone apps, so here's a link to his blog post.

Are there any positive uses for Twitter? Maybe. Dell broadcasts deals on it; Walmart uses it to promote new products and give an inside look at life as a Walmart employee; Women's Health magazine uses it to link to articles they deem interesting and/or useful.

I still don't understand how using Twitter has any tangible benefit over more traditional methods (blog, email, etc.); to me, the only purpose Twitter serves is to speed up the decline in the world's collective attention span, communication abilities, and command of the written language.

Oh, and @aplusk: Really, we don't care. Seriously.

Quote of the Week:
"Twitter's down. Uh -- I don't know what Ashton Kutcher's having for lunch! I DON'T KNOW WHAT ASHTON KUTCHER'S HAVING FOR LUNCH!!! OH MY GOD, TWITTER'S DOWN!!! WHAT AM I GONNA DO?!" --Conan O'Brien, The Tonight Show with Conan O'Brien

September 13, 2009

JavaScript Will Not Get You Coffee.

Apparently, web developers are chronic coffee abusers. There's Java, the programming language. There's CoffeeCup, a web design program similar to Dreamweaver. There's JavaScript (which, coincidentally, has nothing to do with Java), which was originally codenamed Mocha. I'm definitely sensing a pattern here.

Anyway, JavaScript was developed in 1995 as a relatively accessible language for amateur web developers. It was originally designed for Netscape Navigator; Microsoft developed a similar language, JScript, to fix compatibility issues with Internet Explorer and provide a language that could handle the catastrophe of changing centuries, but today both languages are considered nearly synonymous. JavaScript is run client-side and is object-oriented. According to Tiobe, JavaScript is the ninth most popular programming language, behind such languages as Java, PHP, and Basic.

JavaScript code must be enclosed in <script> tags with the type attribute set to "text/javascript". You can code anything from a simple line of text -- document.write("Hello, world!") -- to a confirm box that appears after you click a link on a page, to a window that opens with a sound clip. The possibilities are endless.

I actually have only passing knowledge of JavaScript. My abilities with that language consist of Googling what I'm after, with "javascript" tacked on the end, and modifying code I find to fit my needs. I know only enough to be dangerous, as they say. But hey, we all have to start somewhere, right?

Quote of the Week:
"What's in a name? That which we call a rose/By any other word would smell as sweet." --Juliet, Romeo and Juliet

September 12, 2009

So, There's This Thing Called Opera...

It takes a lot for me to want to switch browsers. I'm pretty much a diehard Firefox devotee. But every so often, I try out new browsers -- Chrome, Safari, even Flock. So when I heard that Opera had a new version out that has all sorts of nifty features, I had to take a look.

Opera is generally viewed as a "niche" browser, used mainly by a group of hardcore fans. According to StatCounter's global stats, Opera has almost 3% market share, compared with IE at 58% and Firefox at 31%. The buzz seems to be growing, however, since Opera 10 was downloaded 10 million times in the first week after its release. The dynamic is vastly different in the mobile world, however: Opera holds over 25% of that market, above even the iPhone at almost 23% and Nokia at almost 19% (via StatCounter).

Some of Opera's features are not exclusive to it (Sessions, Closed Tabs, Password Manager, Find As You Type, and Fraud Protection all have equivalents in Firefox, for example), but there are some interesting features highlighted in its browser tips.

  • Speed Dial shows a page with thumbnails of up to 25 Web pages, fully configurable.
  • Opera Link allows you to sync your bookmarks with your other Opera-using devices.
  • Opera Turbo routes Web pages through a proxy server for compression purposes before sending it on to you, reducing load time.
  • Visual Tabs shows a thumbnail of opened tabs when you hover over them or expand the tabs pane.
  • Fast Forward and Rewind send you to the latest or first page, respectively, of the site you're currently browsing.
  • Notes seems to be the equivalent of Notepad or Wordpad, integrated directly into the browser.
  • Bookmark Nickname allows you to give a bookmark a short name that you can type into the address bar -- for example, "fb" for "http://www.facebook.com".
  • Search Keywords allows you to specify what site you want to use for a search by using an abbreviation (putting "w" in front of your search searches Wikipedia, or "z" searches Amazon).
As a web designer, one aspect that is of particular interest to me is standards compliance. The Web Standards Project has a test (Acid2) to determine if your browser is compliant with the most up-to-date standards in HTML and CSS. If it is, the test will display the words "Hello World!" and a yellow smiley face. If not...well, you'll see.

Opera 10.00 and Firefox 3.5.3 passed this test with flying colors. This is how the smiley is supposed to appear:
Firefox 2.0.0.6 didn't do quite so well:
Of course, Internet Explorer experienced epic fail:
So overall, Opera seems to have been developed by people who paid attention to standards -- always a plus. They're also committed to spreading knowledge of their browser and Web standards in general through the educational resources on their site.

Quote of the Week (Couldn't Resist Edition):
"Let your mind start a journey to a strange new world! Leave all thoughts of the life you knew before! Let your soul take you where you long to be!" --The Phantom, Phantom of the Opera

September 10, 2009

Saving the Princess, or Why Things Never Change

Special Friday update! Today, I'm going to discuss innovation in the 1980s and how the lessons learned then can be applied now.

Er...actually, I'm just looking for an excuse to discuss The Legend of Zelda.

Rewind to the late 1980s. The NES was the coolest thing ever, with its awesome 8-bit graphics and rockin' sound effects. Nintendo developers were working simultaneously on two game titles: one featuring an Italian plumber saving a princess who was always in another castle, and one featuring a pointy-eared kid saving a princess who was being held hostage inside a mountain. Anyway, both games (Mario and Zelda, respectively, in case you hadn't guessed) went on to become huge successes.

Zelda had simple and intuitive gameplay. You control Link, the protagonist, and use a sword to do away with monsters. It used an overhead view, enabling you to maneuver around creatures you'd rather not fight. There was little strategizing required, just basic hand-eye coordination.

Mario, on the other hand, used a side-scrolling format. Again, relatively simple gameplay, but less ability to avoid "the bad guys".

Nintendo, hoping to maximize the fanbase for Zelda, decided to combine the gameplay methods that had made Super Mario Bros. and The Legend of Zelda popular in the latter's sequel, Zelda II: The Adventure of Link (AoL).

(Oop, my ADD just kicked in. Must correct poorly-worded sentence on Wikipedia. Click section edit link...make change...write edit summary that's longer than my edit...click show preview...looks good...click save...done. Phew. And all done without having to create an account.)

Back to what I was saying. AoL included the best elements of Nintendo's most successful franchises, so it must have been twice as pleasing for fans, right?

Not.

AoL was poorly received, to say the least. Nintendo was derided for abandoning the core format that had made Zelda so popular. They reverted to the old format and have not attempted anything like AoL again.

Let's see...a company has an established product and radically changes it to provide its audience with what it thinks they want. Where have I heard this recently? Microsoft, with Windows Vista. It altered the core functionalities its users were used to, and everyone complained. It thought that these changes would please both new and returning users, but like Zelda, the reaction was "don't fix what ain't broke."

People are creatures of habit. As a developer, if you have a product that is widely accepted, making sweeping changes carries a high risk. You have to decide if the change is beneficial enough to overcome the inertia that exists.

Quote of the Week (Friday Edition):
"After all, a fake is a fake...and no matter how much you dress it up, the real thing always wins!" --Midna, The Legend of Zelda: Twilight Princess

September 06, 2009

Cascading Style Sheets: An Introduction

Last week, I mentioned CSS -- cascading style sheets. CSS is an important tool for any web designer.

What does CSS do? It takes the place of clunky formatting attributes (and tags, in some cases) in (X)HTML.

Wouldn't it be easier to just keep the formatting in the HTML code? Not really, for multiple reasons. First, many old "staples" of HTML formatting are being deprecated. W3 Schools is an excellent resource for finding out which tags have been deprecated. Second, imagine that you have a website with 10 distinct pages and 5 different hyperlinks on each page. You want to make all hyperlinks bold and bright orange. Which would take less time: typing <b><font color="orange"><a href="link.html"> fifty times, or putting a { font-weight: bold; color: #FFA500 } in a separate CSS file and implementing it in each page?

Still not convinced? What happens if you want to change the formatting to italic fuchsia? If you use CSS, you only have to change the CSS in one place. With pure HTML, you would have to change the code fifty times.

Okay. So how do I use CSS? CSS is a collection of rules. A rule consists of two parts: the selector and the declaration. The selector identifies what elements are affected by the rule. The declaration tells the browser what formatting to apply to that element. W3 Schools comes to the rescue again, with an excellent CSS tutorial. Once you have created your CSS rules, save that file with a .css extension in the same folder as your HTML files. Then, in the head section of each page you want to apply the formatting to, use a link tag to call the stylesheet: <link rel="stylesheet" type="text/css" href="mystyle.css">

I only want to implement a particular CSS rule on one page. Is there any way to do that? Yes. Place the CSS code in a style tag inside the head section:
<style type="text/css">
h1 { color: blue; }
</style>

Obviously, there is much more to CSS than that, but that is the basics. The best way to learn it is to use it, so have fun experimenting!

Quote of the Week:
"Live today. Not yesterday. Not tomorrow. Just today. Inhabit your moments. Don't rent them out to tomorrow." --Betty Lou, Love, Stargirl

August 30, 2009

A Mishmosh

Some interesting things I've learned recently:
  1. The tracert command traces the path from one computer to another to a maximum of 30 hops. When your Internet connection is down, the output consists of 30 lines of "* * * Request timed out."
  2. Apple is run by an evil genius. If I weren't so disciplined, I could waste hours of my life on my iPod, getting stuff on the App Store, and reading Kindle books. Wait, that's what I did yesterday...
  3. HTML may do a lot more now than it used to, but trying to figure out which tags are supported, which are deprecated in favor of other tags, and which are deprecated in favor of CSS is a touch annoying. For example, it's apparently okay to use bold and italic tags, but not strikethrough or underline.
  4. If you have a URL, and you want to get its associated IP address, use NSLOOKUP. For Windows users, type nslookup www.website.com in the Command Prompt. When I typed in www.google.com, for example, I got 6 different IP addresses, all in the 74.125.159.* range. What I liked, though, was that the results were preceded by the words "Non-authoritative answer".
Quote of the Week:
"Nothing is more deceitful than the appearance of humility. It is often only carelessness of opinion, and sometimes an indirect boast." --Mr. Darcy, Pride and Prejudice

August 23, 2009

The OSI Model: Lower Layers

According to Networking for Dummies, the OSI Model is a description of the various parts of a computer network. There are seven layers: Physical, Data Link, Network, Transport, Session, Presentation, and Application. Today, I will discuss the first three layers, which are commonly referred to as the lower layers. The lower layers deal only with the mechanics of getting data from Point A to Point B.
  1. Physical Layer: the actual hardware used to connect multiple computers on a network. In this layer, the standards for connection cables, electrical signals, et cetera, are defined. Any device that merely facilitates the transport of data without checking or modifying it in any way is a Physical Layer device.
  2. Data Link Layer: the lowest-level portion of the network that assigns meaning to data. Data Link Layer devices break data into chunks (packets) and works out how to send the packets to the intended recipient. To do this, each piece of hardware is given a Media Access Control (MAC) address. The Logical Link Control (LLC) sublayer then acts as an interface between the MAC sublayer and the Network Layer. Additionally, the Data Link Layer provides some error correction at the packet level.
  3. Network Layer: the layer that deals with transporting "stuff" -- that's a technical term -- from one computer to another. The Network Layer performs logical addressing: the assignment of IP addresses to computers on the network. Routers are classified as Network Layer hardware. They take data from one computer and forward it on to its destination.
Quote of the Week (Second Edition!):
Vizzini: Inconceivable!
Inigo Montoya: You keep using that word. I do not think it means what you think it means.
--"The Princess Bride"

Hello, World!

Hello, hello, hello! This is my first foray into the world of blogging, so pardon me while I learn the ropes, so to speak. In this blog, I will be discussing my point of view on topics related to the Internet, web programming, mobile application development, and other interesting and useful items. Occasionally, if I see something else online that strikes my fancy, I will post about that as well. I will be blogging at least once every week, so feel free to drop by and see what's new.

All comments are moderated, so if you leave a comment, it may take some time for it to display. I will try to approve comments as soon as possible.

Why the name, you ask? Well, I hope to have a web design business in the near future. I am also a fan of The Legend of Zelda video game series, and the two main characters in it are Link and Zelda, so I combined their names into Linzel. (Disclaimer: Any resemblance that name bears to any person, living or dead, is purely coincidental. Also, no animals were harmed in the making of this blog.)

Quote of the Week:
"Don't answer me when I'm asking you questions. Keep your mouth shut. Do you think I'm talking just to hear myself talk? Answer me!" --Clair Huxtable, "The Cosby Show"