February 06, 2010

Norway, Ireland, and Redmond

Microsoft has a hand in everything, it seems. One of their current ongoing projects is SQL Server Modeling, formerly known as Oslo. (If you're interested, it has been released as a Community Technology Preview.) According to Douglas Purdy, this consists of:
  • M, a language for defining queries, schemas, etc. (like MySQL);
  • Quadrant, a tool for interacting with SQL databases (like Access); and
  • Repository, the back-end that communicates between applications and systems and stores data (SQL Server).
It was originally conceived as a sort of broad cross-platform modeling solution. M is open-source, but MS's implementation ties it to SQL Server. (Parts of the original Oslo project were split off into Dublin, .NET Services, and WF/WCF 4.0, while the modeling bits listed above stayed with Oslo.)

M has three specifications: T-SQL (Transact-Structured Query Language, Microsoft's proprietary extensions to SQL), grammar (originally called MGrammar), and EDMX (an XML file defining an Entity Data Model) (source). M is a domain-specific language (DSL). Its purpose, according to Microsoft, is to make it easier for users to interact with the database.

It's kind of difficult, as someone who has never heard of SQL Server Modeling before this week, to determine what, precisely, is its purpose. On first glance, it appears to be a set of data manipulation tools. However, Microsoft's aim seems to be more all-encompassing than that. It doesn't help that their aim has changed drastically in the three years they've been working on it. Time will tell if it catches on, and in what capacity.

Quote of the Day:
Beckman: Your country is calling you, Mr. Bartowski.
Chuck: Uh, well, then I think my country might have the wrong number.
--Chuck, "Chuck Versus the Ring"

January 16, 2010

Google AdWords

Google ads are everywhere. They appear on searches and websites, usually identified as "Sponsored Links" (since that sounds so much classier than "Ads"). Google's ad programs are more useful than some other ad services, since they are driven by context - instead of getting a random "You are the 1,000,000th visitor to this site! Click here to claim your prize!" you will see something related to what you're reading. This, in theory at least, provides a better return on investment for the advertising company.

There are two sides to the Google advertising platform: AdWords and AdSense. AdWords is for companies or individuals wishing to purchase ads based on certain keywords, while AdSense is for companies or individuals willing to place ads on their website. I'm going to discuss AdWords and how it works from the customer's perspective. Here's a flowchart giving a basic overview of making the decision to use AdWords. It's much easier to read if you click to enlarge it.

Our company - we'll call it Fabulous Widgets - has limited marketing funds, so Marketing requests the budget from Accounting to verify how much they can spend. Once they know that, they can start researching keywords. The keywords for which they purchase ad placement will dictate the searches on which their ad will appear. Google's Keyword Tool provides information about, and suggestions for, keywords. In this case, the Marketing Department wants to purchase ads for searches that are as relevant as possible to their core product - widgets.

After typing "widget", "widgets", and "fabulous widgets" in the keyword box, the Marketing employee is presented with a list of possible search terms, along with popularity, search trends over time, and (optionally) the average cost per click, or CPC, for each term. The top matches include "widget", "dashboard widget", and "web widget". Well, Fabulous Widgets is a purveyor of only the finest dashboard widgets, so "web widget" is not really an applicable search term. Marketing decides, based on their budget, to purchase ads for "widget" and "dashboard widget".

Periodically, Marketing will need to review the performance of the ads they've purchased. How much more business is Fabulous Widgets getting from the new ads? Maybe AdWords is providing them with more profit than a different marketing campaign, and therefore needs more money allotted to it. Maybe the keyword choices should be tweaked. The Internet is a fluid place, and so, by necessity, must Fabulous Widgets' marketing efforts.

Quote of the Day:
I need subtitles walkin' in here.
--Booth, Bones, "The Man in the SUV"

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: