Archive for June, 2009

An Open Source Web App Theme

Posted on: June 24th, 2009 by Zach

Here at PRPL we’ve crafted quite a few sites that include an admin section or intranet of some kind. A few weeks ago I was browsing around Github, and found this really great project Web-App-Theme.

The project is described as:

A simple layout by Andrea Franz that you can use in your web applications. Inspired by cool themes like Lighthouse, Basecamp, RadiantCMS and others, it wants to be an idea to start developing a complete web application layout.

This project is really well done, it’s got a myriad of pre-built ui items like tabs, sidebar navigation, tables, feedback messages, etc. all created in a way that makes it trivial to extend and change the look completely. There are about half a dozen contributed themes ready to use, within a few hours I had a customized theme to match the rest of the site I was working on.

Along the way I found a few Internet Explorer 6 bugs (crazy right?), added a few bells and whistles, and modified some things to match our standards here. Overall It sped up development time quite a bit and I will definitely use it again in the future.

The Web Hosting Conundrum

Posted on: June 19th, 2009 by Chris

So, tell me what is wrong with this scenario:

John’s Widgets goes to Purple, Rock, Scissors. for a web site.  After several discovery meetings, a statement of work is written and, in turn, approved by John.  Purple, Rock, Scissors. provides several comps, John approves and work begins.  Six to nine weeks later, John’s widgets has a beautiful website which he absolutely loves and he is ready to go live.  John is ecstatic, he can’t wait…he asks when can the world see his website?

Many web development firms do not take the time to help their clients choose appropriate hosting.  From that perspective, the answer to the conundrum above puts all the responsibility for hosting on John’s widgets.  Does he have web hosting?  Did he ever ensure that the framework or CMS that his Orlando web development firm, Purple, Rock, Scissors used will function on his current hosting provider?  Honestly…most clients don’t really care about hosting.  They want to see their shiny new website, but honestly, they could care less what is happening behind the scenes.  Web hosting, for many clients, is an afterthought.  In reality though, the web application determines what kind of hosting is needed.  Your hosting environment should never define or limit what your application can do.  If John’s Widgets has an inappropriate host or he has no hosting at all, it could be 3-6 weeks including testing to get his site ready for an official live deployment. 

Here at Purple, Rock, Scissors., we never let you go it alone.  From the beginning, our statement of work will always include time allotted in the development schedule for providing hosting recommendations, giving you time to choose a host, and then if you prefer…we’ll take care of the rest.  We’ll guide you through the process of purchasing the server and we set up and configure your server to the exact specifications we require to make your application perform at peak performance.  Knowing the host up front helps us to develop your application so that it will function properly on the chosen environment.

You may be asking, what about my application determines what kind of hosting I need?  Well, this question is actually quite complex…there are many different factors that come into play, so lets take a look at the most important factors.

Estimated Traffic / Bandwidth Utilization – The amount of traffic your site is expected to see can play a large part in your hosting solution.  Many low-end web hosting providers (ie: $200 for 2 years of hosting) impose bandwidth limits on their clients.  You certainly do NOT want to see your site go down 3 days into its launch because you’ve already exceeded your bandwidth for the month, do you?  That is always an embarassing situation and it could take days to sort the situation out with your hosting provider.  We’ll call that the "Failure to Launch" scenario.  Having a good idea of how much bandwidth you utilize may not be a number in the back of your head that you just keep handy when people ask.  We’ll help you to understand what your current traffic patterns / bandwdith utilization are and how they will mesh with different types of hosting providers.

Content Format – Content format is certainly a consideration when choosing a web hosting provider.  Are you planning on hosting video on your site?  Perhaps you should think again.  Hosting videos on your site can quickly eat up even a Terrabyte of allotted bandwidth per month.  Each person that streams your video could be using 60 – 120 MB of bandwidth per view.  Take a look at the average video on YouTube.  If the video is good, it might see 100,000 hits.  To set this in perspective, a 120 MB video viewed 100,000 times can be equivalent to almost 12 terabytes of bandwidth utilization.  Depending on the popularity of your content and target audience, this may not be an issue for you…but it should certainly be considered.

Content Generators – Are you the only person generating content?  Is your site entirely dependent on it’s user-base to generate content?  If you are in complete control of your content, then you have a little less to worry about.  However, the minute you allow users to post their own content…you could develop a fairly large user-base posting content regularly.  These users could lead to increased bandwidth and CPU utilization on the chosen server.

Virality – Anyone who has ever forwarded a YouTube link or a funny email knows what virality is…whether they know it or not.  Viral websites are those sites or pieces of content which are extremely popular and spread by word of mouth…almost like an epidemic.  Viral content is certainly nothing to scoff at.  Most people who create this content tend to get a much-deserved (sometimes undeserved) 15 minutes of fame and will almost certainly go down in the internet history books.  However, hosting content which has the potential for millions of views, is certainly not easy.  It is extremely taxing on a server to support a large number of requests in a short period of time.  Bandwidth utilization also comes into play, as the host who is chosen may not be able to offer you the bandwidth you require…or they will offer it at an undesireable price.

Application Framework – Sometimes in an effort to shorten application development time (and cost), a rapid development framework or Content Management System (CMS) is utilized.  Purple, Rock, Scissors is a PHP web development firm, thus many of the frameworks we utilize require special PHP plugins or require us to set up special libraries that make our code function as expected.  These requirements cannot always be met with certain web hosts.

Mail – Most applications need to send emails…even if you are not running an email server.  Most sites send emails to users for password resets, user signups, and general newsletters.  Many hosts, particularly low-end hosting providers have issues sending email reliably.  This can be a dead-end issue with some hosting providers and usually leads to additional costs as the client site has to be migrated to a new server solution.

OK, so we’ve taken a look at what factors we need to consider with the application content and application design.  Now let ‘s see what we need to look for in our hosting provider, depending on application requirements.

Normal Bandwidth Framework-based Applications

If your application is hosting mostly text-based content, you can probably suffice with a lower-end hosting solution to help cut costs.  Many of these applications host fine on a Virtual Private Server.  There are caveats to this though, as many VPS providers do not offer "Managed Hosting".  It all depends on your application and how often changes will need to be made to the server.  In most cases, the application is self-sufficient and requires very little in the way of server management.  Some applications can even be hosted in a shared hosting environment…although we traditionally do not recommend it.  When you start sharing your server with other people, even though your content is separate and safe from other clients on the server, mail delivery can be an issue.  Many shared hosting providers utilize dynamic SMTP (mail sending) servers which have already been blacklisted as spammers.  Therefore, even though you have legitimate email to send to a client, your client’s mail provider may not accept emails sent from these providers.  In some cases, this may bring your application to its knees as people can’t sign up unless they receive a verification email.

Intermediate Bandwidth / Framework-based Applications

If your application is based on a framework and it requires a predictable amount of bandwidth, we usually recommend a private managed physical server.  We have found that Peer1 provides reliable hosting packages in the $250 / month range with backups.  This way you can be assured that your data is always safe and that your application will be looked after.  They provide 1 Terabyte -> Unlimited bandwidth packages, a la carte upgrades for your server (such as RAM) or hard drive space and an upgrade path so that as your application grows, they can grow with you to meet your needs.  These hosting providers never have issues with mail and we are allowed to install whatever requirements we need to make your application function properly.  This is a great mid-grade solution that can grow with you and is our hosting of choice for even an average web application.

High Bandwidth/Traffic  CMS/Framework Applications

Let’s say your application is vastly popular already and you are looking to upgrade.  Perhaps you just KNOW that your application is going to be viral.  We normally recommend Cloud computing solutions such as RightScale to provide on-demand scalability so your application never goes down…no matter how much traffic you get.  The great part about cloud computing is that your application will scale back to conserve costs when less visitors are on the site.  You essentially only pay for the computing power you need on a day-by-day basis.  Since most applications of this nature make more revenue as the number of visitors to the site increases, the increased and (somewhat unpredictable) cost of hosting is cancelled out.  There is a base cost that you will pay to maintain the environment, but you only pay for usage spikes as they occur.  While RightScale is a great solution, it does have some caveats such as SMTP (mail sending) issues.  As Amazon Web Services provides the actual "virtual" servers, they do not support the necessary reverseDNS pointer record which is required for most recipients to accept your incoming mail.  I’m not going to go in detail here, I’ll cover that in a future post…but regardless running any mail delivery application on an Amazon Machine Instance (virtual server) requires additional third-party SMTP services from a company such as AuthSMTP.  Depending on mail volume, this COULD make or break this solution for some clients.

As odd as it sounds, the earlier we know the hosting, the better.  Many people just assume that hosting is an afterthought, as it is one of the last steps in the application delivery process and that we can call and activate at any time.  Sometimes hosting contracts can take weeks to get things squared away, purchase and have the server provisioned, and set up with our requirements.  Not to mention, if we realize as an afterthought that the application needs to be hosted with RightScale or another cloud computing solution for on-demand scalability, many changes need to be made to the application to make it function properly in a load-balanced cloud computing environment.  These changes could potentially set back deployment by weeks.

I bet you never realized just how much goes into choosing an appropriate hosting provider, did you?  It is a long and arduous process to match an application with appropriate hosting. However, Purple, Rock, Scissors aspires to get you into a hosting solution which gives your web application room to grow without overpaying for processing power you may never use.  Once we have discussed your application and have a final set of features, a good idea of what your traffic patterns will look like, then we can make appropriate recommendations for your web hosting.  By being proactive, we can deliver your application when you are ready without hesitation.  This is actually just a quick glance at hosting and how it can affect project delivery times, and application development requirements. 

When you’re ready to take your web application to the next level, Purple, Rock, Scissors. is here to help!

Free-time Development

Posted on: June 19th, 2009 by Rob Zienert

For those of you who read my blog consistently, it’s probably readily apparent that I’ve been looking for things outside of the work to consume my free time. In the past I found that games, especially World of Warcraft, did a good job doing that. I’ve been WoW free for like a year and feel great about it and now consumed by my original lover: first-person shooters. But that’s not very productive… so I’m consuming my free time with some free-time development

I was going to write out a huge post of what I’m doing, but I guess the easiest thing to do is list them out. How efficient of me.

  • Revitalization of Digital Paintball HL2 mod: A programmer.
  • Summer Book Crusade: Have learned Java, brushed up on C++, working on Objective-C.
  • Zend Framework: Proposal development, trying to get on a few component bug squisher armies.
  • ZFComponents.com: Finalizing programming, soon will do design and build-out.

I’m pretty much just putting my feelers out there for things that I don’t do during the day. For example, I went home one day a few weeks ago and have been trying to implement the various genetic algorithms to our estimates to generate more accurate predictive project/resource scheduling. Sure, that’s work but I wasn’t told to do it.

What I need is someone to find this blog post and say, "Hey. I want you to work with me on this open source project." I’m getting more and more giddy about the open-source movement and would just like to pour what I’ve got into it.

Oh and uh… I’m trying to cook more (culinary development). That’s all.

Inspiration – Alex Trochut

Posted on: June 19th, 2009 by Shayne

I’m sure every designer has felt creatively drained. I know I get that way designing websites everyday. I wanted to start an inspiration post to help keep those juices flowing. My first inspiration piece displays the work of freelance graphic designer Alex Trochut

trochut01

trochut02

trochut03

trochut04

Check out more work by Alex Trochut here.

Dev Toolkit: iPhoney

Posted on: June 18th, 2009 by Mike

Now I’m not sure how behind I am on the times, but I’ve just stumbled upon a pretty useful application for the Mac platform called iPhoney. I inadvertently found this while looking for iPhone templates to display a design comp for one of our special projects.

Produced by Market Circle, iPhoney is a simple, open-source web UI emulator for the iPhone, powered by the best browser on the world on Mac OSX. The website mentions that it works best with Safari 3 Beta, so chances are a lot of people have probably already seen (and or use) it. For noob-piles like me who haven’t, feel free to continue reading.

iPhoney on the desktop

iPhoney looking epic on an Apple desktop

The Good

iPhoney’s core purpose is to demonstrate websites nested in an iPhone interface. The features are simple and precise. The application sits as a window on the desktop in the shape of, well… you guessed it, an iPhone. The UI contains basic browser controls such as a URL bar, back, forward, and refresh. It also has various aesthetic controls that are disabled, such as bookmarks and general iPhone controls. Since the application is meant to emulate websites, it seems like this is the best way to go. Fundamentally it just feels like an iFrame, with the iPhone UI as the parent.

The application comes with some slick tricks as well. You can change the orientation between Portrait and Landscape, and the display of the website adjusts accordingly.

Viewing Mobile Youtube in Landscape

Viewing mobile Youtube in landscape mode, on my amazingly gray desktop

According to Market Circle, iPhoney is "pixel accurate", which means that though it appears larger on your desktop, it still packs in the exact same number of pixels as the iPhone, showing exactly the same web content, including where the screen fold lies, how text wraps, and how large graphics appear.

The Not So Good

Some issues (lack of features, really) impact the ability to use this as a replacement platform for developing mobile versions. Since it only simulates the window display via screen, it doesn’t correctly differentiate between appropriate style sheets for mobile. This means that any development testing through this must only parse the mobile styles. A lot of websites normally provide this via sub-domain such as m.facebook.com, or m.cnn.com.

It also doesn’t differentiate header information, so if you attempt to visit a fancier website that parses based on HTTP headers and then redirects you, such as m.nytimes.com, then you’re SOL.

Forcing Best Practice

Either way, the not-so-good can be seen as a gift, since it will force you to develop for best practices. A lot of Blackberry devices can’t differentiate between Screen and Mobile either (at least not by default), so providing a sub-domain that parses only the mobile style sheet is definitely the way to go. iPhoney works great in testing this scenario.

Conclusions

If you haven’t tried it, try it. Especially if you don’t have access to an iPhone. It’s great for quick mobile demonstrations to clients, stakeholders, and fellow employees.

Summer Book Crusade: Essential Buffet

Posted on: June 12th, 2009 by Rob Zienert

Last week I started a Summer Book Crusade where I will read one book a week. In a continuation of this Crusade I decided to read The Essential Buffet by Robert G. Hagstorm. It was really hard finding the time to read this book, and to be perfectly honest, I’m not quite done yet but couldn’t wait. When can a boy find the time to read with the Magic and Red Wings in the finals?

The Essential Buffet

I kind of feel ashamed that I’m writing a blog post on a financial book. I have absolutely no credibility when it comes to money except that I manage to make $1 into $2 every now and again. As far as I’m concerned, money is a game and I love winning but I lose more than anything. Good thing is you can only get better by knowing and experiencing first hand so it can’t phase me tremendously.

I’m not going to talk about what the book entails because I’m in fear of losing something important in translation. But, overall, it was a concrete reinforcement of what I always had an idea of when it came to stocks: It’s not about just buying and crossing fingers, but a detailed process of analysis of a business model and figuring out if it’s fundamental value is really worth investing in.

I play this game on the iPhone called iTrade, it’s a virtual stock market where they give you $100,000 and you can trade NYSE/NASDAQ stocks, and if you really screw up they reset the game every month. Very entertaining, but through playing that it became quickly apparent on a larger scale that buying shares of companies because you think it’s a good company isn’t the way to do it. I haven’t seen tangible results from the game after a week (understandably so) over past behavior but some stocks are beginning to look less appealing and others more so. While the app is unrelated to the book review, I thought I’d plug my favorite iPhone game.

Anyway, of the few books I’ve read when it comes to money, this is certainly my favorite so far. It’s extremely easy to read and retain the message inside. Better yet, it’s real short and has medium-sized text so page flipping is a common occurance. If you’re like me, you read slow and get discouraged from reading books when it takes a few years to get to the next page flip: no problem here.

Conclusion

Based on the fact that I don’t want to get remotely detailed with financial book reviews, I’m going to probably stick to nerd books for the remainder of the Summer Book Crusade. I was unable to give a reasonable review even if I wanted to just because of my novice nature in the subject. However, I can’t praise it enough, The Essential Buffet was real interesting, an easy read, and very informative. I’d recommend it through and through.

Next Book

Uh, I just put myself on the spot — I haven’t given this any thought: I think I’m going to read a book on iPhone development. Having a few unread books from this genre, I’ll have to take a look when I get into work in… 5 hours (if I can remember I’ll also take a picture of my in-office library). I really wanted to read the book on Collective Intelligence but I forgot to buy it. Soon.

Rick, you’re a jerk (also known as: OpenID Phone Numbers)

Posted on: June 10th, 2009 by Rabbit 1 Comment

Sometimes I’m very late in getting the latest and greatest. I wait until I can say “I need” something rather than “I want” something. My last cell phone lasted me about 5 years to become the only one on the block with an antenna in its old age. Aww, I loved that phone — it was so punk rock! A speaker volume so loud that entire city blocks knew I was getting a call. Tough as nails it had been dropped, thrown, slammed, burned, drowned, spit on, knifed (yes, I said knifed), and still worked flawlessly without a single scratch on the screen. Alas, while the iPhone might be a physical pansy compared to my old friend, it was more attractive for the apps to be more productive. So I got an iPhone, gave my old friend a proper burial, and was given a new number and the start of the problem known as “Rick.”

So who’s Rick? That’s part of the problem, I don’t know. Through my powers of deductive reasoning I can only surmise that he is a jerk face that left me with his number while he is reclined on a yacht drinking fairy beverages out on the pacific somewhere while watching me with his spy satellites and laughing hysterically with two gorgeous babes on his arms as all of his jerk friends call me completely baffled that I’m not Rick!! For the past 6 months, I’ve received a call asking to speak to Rick between 3 to 15 times a week. I kindly inform the callers that Rick is a jerk face who probably hated them too much to remind them to update their contacts. Perhaps Rick is Mr. Astley and this is his way of saying he’s never going to give me up.

Maybe I’m being too hard on Rick. After all, I got a new number too and I had to notify all my contacts. The real problem is that we’re still using phone numbers — an identifier invented where teller operated switch boards would use the numbers to drill down to a specific state, city, or neighborhood. The OpenID community thinks URL’s are difficult for people to understand! Imagine a series of seemingly random numbers that actually point to locations on a grid. Phone numbers were invented to point to a machine but I want an identifier that will point to me. My phone number is just an attribute to my identity. This would be like trying to find your best friend in a crowded restaurant but you’re only able to identify him by what shoes he’s wearing. What we really need is an OpenID.

If phones were actually “smart” phones capable of taking an OpenID, Rick would not be a jerk. He would have changed his phone number attribute and all of his friends would never know the wiser. Maybe even that luxurious example is missing the mark though. Why bother with phone numbers at all? I mean, when was the last time you went to Google by typing their IP address? What Rick really needs to do is allow his phone service provider to respond on his behalf and the only identity attribute Rick needs to handle is “Current Phone Service Provider”. I’m getting ahead of myself, though.

This illustrates a subtle point to why URI-based identifiers are so powerful and superior to other identifiers (such as e-mail, imho). Just like the DNS system itself, there are no special guarantees of application support. A registered domain does not necessarily have the ability to respond to website requests through HTTP nor does it necessarily have the ability to respond to SSH, FTP, SMTP, or any other number of applications. It does, however, provide a human-readable identifier that can be used by applications that need to point to that machine. In the context of a web browser, we’re informing the application that we expect the domain to be able to respond to HTTP requests. In the context of a mail client, we’re informing the application that we expect the domain to be able to respond to SMTP requests.

Following that logic through to fruition, I believe my iPhone Contacts application should know that the OpenID I am supplying should be able to respond to HTTP requests following a “Get-Phone-Number” protocol yet to be defined. So Rick, if you’re out there and you read this, I understand. It’s okay. I forgive you … you jerk.

Technical Note: XRD would actually be the more important technology in the scenario described here. OpenID is not necessarily a requirement to something like this existing but I would imagine some form of identity attribute ownership authentication would be needed.

Restaurant of the Week – Bavarian Restaurant Bar & Grill

Posted on: June 9th, 2009 by Chris

So…I’ve been pre-occupied for the past month or so with buying a house, so I really haven’t been cooking as much as I used to.  While I love a good desert or homemade meal, when I’m busy…a little something on the grill (even a hotdog or hamburger) certainly cuts it for a quick meal.  However, I decided to take the time to start a "Restaurant of the Week" column, as I do love to go out to eat, as well as cook my own meals.

On that note, I thought I would recognize some of my favorite places that I feel really do not get the attention they deserve.  To start out the column, I’d love to recognize Bavarian Restaurant Bar & Grill.  


Located on 300 South Hwy 17-92, Longwood FL, the name and building may turn off some people at first.  Apparently the building used to be a Hardy’s Burgers or similar establishment…explaining the random drive through window which is unused and the name is appropriate, but certainly does not do their restaurant justice.  The environment is laid back with a friendly owner, cook and waitstaff who are some of the nicest people you will ever meet when you take the time to chat.  Owned by a husband and wife team from european backgrounds, they are celebrating 38 years of love for eachother and great cuisine.  For anyone who knows the secrets to great cooking, you know that this will lead to a truly unforgettable dining experience.  

The menu is filled with a host of german wine and beer, succulent deserts and some of the best german / european food you will ever have.  Their menu has entire pages devoted to 30 or so types of Schnitzel, a myriad of sausages, rouladen, goulash, beef stroganoff and even a steak au poivre…my dish of choice for the evening.  Traditionally, Steak Au Poivre, in my humble opinion, should be made with an 8-10 oz filet mignon, but they were serving it on a 10 oz sirloin.  A minor detail, as I enjoy a good cut of sirloin as well.  And in the end…it was a very minor detail.  I don’t think I’ve ever had a sirloin which was quite that tender, nor have I had an Au Poivre sauce that rich in my life.  Not to mention, at a price point of $17 with two sides, as opposed to a Filet Au Poivre in the 30-50 range…it was quite the bargain.  Just remember, if you like your steak medium, order an Au Poivre-style steak medium rare or rare, as the sauce that is on top of the steak is extremely hot when it is poured on top of your steak.  It will cook your steak at least half to a full level of ‘doneness’ on its way to the table.

Most dishes come in around the $13-20 range, so it is certainly not the cheapest meal…especially with a good glass of wine and desert, but it is certainly worth every penny.  It is also not a quick meal, so be prepared to invest an hour or more into a full dining experience.  As their sign says as you walk in, "Good food takes time, as we prepare everything from fresh ingredients to order, please pardon any delays".  The last time I went, we went as a party of 20 and basically took over the entire restaurant.  While Chris (the chef) was more than willing to oblige in cooking, he would not dare sacrifice the quality of any persons meal.  From start to finish, it took us about three hours…but as I said, their food is certainly worth the wait.  Oh, and don’t forget to try the Schnitzel as well…old germany style is a ‘to die for’ dish as well!

So, if you ever happen to be in northern central Florida and have an undying urge for good german food, bring an empty stomach and enjoy the company and food at Bavarian Restaurant Bar & Grill!

  • Location: 300 South Hwy 17-92  Longwood, FL 32750
  • Phone: 407-332-7029
  • Website: http://bavarianrestaurantbarandgrill.com
  • Hours: closed Mondays, Tuesday-Sunday: Lunch – 10:30 a.m.-2:30 p.m., Dinner: 4:30 p.m.- 9:30 p.m.
  • Price:  Lunch ($9-15), Dinner ($15-25)
  • Reservations requested for large parties

I hope you enjoy and stay tuned for the next restaurant review!

~Chris

Content is King

Posted on: June 3rd, 2009 by EJ

Good SEO relies on content.  Fresh, accessible, natural, content.  Without it no matter how much time or money you spend on SEO, your rankings will not improve.  Good content is what drives users to your site, and gets people to link to you.  It’s that simple.

Here are 5 tips for keyword integration in your copy:

1. Titles

The most important place your keywords should appear is in the title meta tag of your page. If you are a PRPL client with an SEO retainer, chances are we did this research for you.  If you are using blogging software like wordpress your post or page title will be automatically transformed into both title tags and either an H1 or H2 heading tag as well. Remember, your headline should wrap your keywords.

2. Opening

I have always found it useful to repeat the targeted keywords in the opening sentence, as long as it can be done in a way that is appealing to a reader and reinforces relevancy. Since many search engines use this initial copy as the description of the content, you may want to make sure you are accurately selling the searcher on clicking through as well.  If you are using a meta description this is what the search engine will display in lieu of that copy.

3. Subheadings

Another important place that keywords can appear is in subheading that aid the reader in navigating down the page. A subheading that matches up with the targeted keyword phrase should work as an introduction to the next topical section of the page. Subheading are typically created using the H3 tag.  The term ‘subheadings’ in this subheading, for example, is in an H3 tag.

4. Related Words and Synonyms

Good copy should naturally result in words that are related to, as well as synonyms for, the keyword phrases you are optimizng for. Rather than mindlessly repeating the same words ad nauseam, also known as keyword stuffing, assume that search algorithms are advanced enough to look for proper contextually-related words that support your targeted keywords.

5. Specificity

One of the hallmarks of great copy is specific, descriptive words in lieu of bland general terminology. Specificity aids the reader by clearly demonstrating relevancy, allows for more dynamic copy, and provides opportunities to increase the general on-page keyword frequency. Make sure to employ your specific keywords when feasible within the context of the copy, rather than relying on generic wording.