Alarmist stories at Gigaom, Arstechnica, and elsewhere have recently villainized Adobe Systems for collecting e-book analytics (in unencrypted form) from readers, surreptitiously. "Adobe is Spying on Users, Collecting Data on Their eBook Libraries," a headline from http://the-digital-reader.com blares. Arstechnica is shocked, shocked that people's reading habits are being monitored. And the data's being sent over the wire unencrypted! OH MY GOD!
Give me a freakin' break.
Let's get something straight. Amazon "steals" your reading stats every time you read an e-book. So does Apple. (See the WSJ story "Your Ebook Is Reading You.") Oh, and by the way, who do you think owns Goodreads (which knows a lot about your reading habits)? Amazon, that's who.
Google processes your Gmail to uncover keywords that help it put customized Amazon ads in your face every day. Somehow that's not news, but the fact that Adobe slurps e-book analytics from users of Adobe Digital Editions is treated as if it's the scandal of the century.
Analytics is a big (and I mean BIG) part of what Adobe does now. Do you remember when Adobe acquired Omniture in 2009 for $1.8 billion? What do you suppose that was all about?
It was about analytics, that's what.
Some of the largest web properties in the world run on top of Adobe's Experience Management suite. The latter ties world-class content management to world-class analytics solutions.
Read up on Adobe's SiteCatalyst here.
Arstechnica, by the way, is a Conde Nast property, and Conde Nast is a bigtime Adobe customer. So for Arstechnica to run a sensationalistic screed saying Adobe is stealing people's private reading data is a bit silly. Every time you visit Arstechnica's site, every detail of your visit is captured, rest assured.
Folks, everything you do online is captured, measured, stored, analyzed, by someone, somewhere. Sure, Amazon knows how fast a reader you are, what you like to read, what you finish and don't finish reading, etc. Apple knows this stuff too. Adobe too.
That world we used to live in where no one knew this stuff about you? That world before web analytics? The world of paper-and-ink books that could be read in private? That world is pretty much gone with the wind. Unless you do, in fact, still mostly read paper books. (As I do.)
Let's drop the hysterics about Adobe "spying on readers." Everyone with a web connection is being "spied on" (if that's what you want to call it) nonstop, all the time.
If you don't like it, write your Congressperson. Start a petition. Unplug from the Internet.
But don't heap scorn on Adobe. That's just plain immature.
Disclosure: I used to work for Adobe Systems. I do not work for them, in any capacity, today. These are my opinions. They come solely from me. No one handed them to me. Got it?
Tuesday, October 07, 2014
Wednesday, October 01, 2014
And Now for a Bit of Perspective
A little perspective can be a good thing, so the next time you feel a need to have your mind blown, just watch this short video and you're sure to come away with a "perspective reset."
Some additional perspective: On a clear night, using only your naked eye, you can see about 5,000 stars, and the furthest of them is around 21,000 light-years away, but most are much closer. The most distant object visible (barely!) with the naked eye is the Andromeda galaxy, 2.5 million light-years distant. Everything else you see at night is "only" a few thousand light-years away.
If you were to travel from the Milky Way to Andromeda, it's possible that most of your trip would occur in total blackness; you would almost certainly traverse areas of space where no stars are visible to the naked eye (because of sheer distance). You'd look out the space ship's window and see nothing at all (unless you used a telescope).
More perspective: If you were to shrink the solar system down to where the earth is a foot away from the sun, the nearest star would be 50 miles away. But if you were to shrink the Milky Way galaxy down to a foot in diameter, the nearest galaxy is only 25 feet away.
I know. Hard to imagine.
Sci-fi authors: Take note!
Monday, September 29, 2014
Don't Just Mind the Gap, Trade It
I don't often write about investing tips, but this morning's market action was such a classic example of a money-making situation, I feel obliged to share what I (think I) know.
Many investors know about the principle of "trading the gap." The scenario: A stock (or the entire market) gaps lower on the open, which of course simply means the opening price was lower than the previous session's closing price. Instead of continuing to go down (which sometimes happens), the stock immediately begins to trend higher.
This morning, the market indices were sharply lower on the open, but immediately began heading higher. This is a classic gap-trading opportunity, particularly if you pick stocks whose behavior you know well, and that have recently been trending higher, with no fundamental reason to go lower. Today's examples: AAPL, AMZN, YHOO. All gapped low on the open, then went higher.
The gap-trading philosophy says: When a stock gaps low on the open, then moves up, it will keep moving up until the gap is "filled" or "covered" (reaching the level indicated by the dotted horizontal line in the above graphic). No one knows why gap-filling occurs, but the fact is, it occurs often enough that you should consider "trading the gap."
I bought AAPL and AMZN call options about 30 miutes after the market opened. They went up smartly. Now because I don't have $25K in my account, I can't sell those contracts in the same session without triggering a day-trader warning. What do you do if your call-option contracts go up and you want to get out (but can't, without triggering a warning)? Buy corresponding puts. You'll lock in the profit until you can get out (and maybe make a little on the put, if the stock opens lower the next day).
I made a little money on AMZN call options on Friday. To lock in the profit, I bought corresponding puts. When the market gapped low (WAY low) this morning, I was delighted. My puts had gone in-the-money. I liquidated them and rode the calls back up again.
For the record: I consider AAPL a good buy in the $97-98 range and I think Amazon will be at $340 sometime within the next two months. Yahoo is severely undervalued at $40.
I am not an investment advisor and this is not professional advice. Seek the advice of a professional before making any investment decisions.
Many investors know about the principle of "trading the gap." The scenario: A stock (or the entire market) gaps lower on the open, which of course simply means the opening price was lower than the previous session's closing price. Instead of continuing to go down (which sometimes happens), the stock immediately begins to trend higher.
![]() |
| When a stock gaps lower on the open (red arrow), it often fills the gap in the next hour. |
This morning, the market indices were sharply lower on the open, but immediately began heading higher. This is a classic gap-trading opportunity, particularly if you pick stocks whose behavior you know well, and that have recently been trending higher, with no fundamental reason to go lower. Today's examples: AAPL, AMZN, YHOO. All gapped low on the open, then went higher.
The gap-trading philosophy says: When a stock gaps low on the open, then moves up, it will keep moving up until the gap is "filled" or "covered" (reaching the level indicated by the dotted horizontal line in the above graphic). No one knows why gap-filling occurs, but the fact is, it occurs often enough that you should consider "trading the gap."
I bought AAPL and AMZN call options about 30 miutes after the market opened. They went up smartly. Now because I don't have $25K in my account, I can't sell those contracts in the same session without triggering a day-trader warning. What do you do if your call-option contracts go up and you want to get out (but can't, without triggering a warning)? Buy corresponding puts. You'll lock in the profit until you can get out (and maybe make a little on the put, if the stock opens lower the next day).
I made a little money on AMZN call options on Friday. To lock in the profit, I bought corresponding puts. When the market gapped low (WAY low) this morning, I was delighted. My puts had gone in-the-money. I liquidated them and rode the calls back up again.
For the record: I consider AAPL a good buy in the $97-98 range and I think Amazon will be at $340 sometime within the next two months. Yahoo is severely undervalued at $40.
I am not an investment advisor and this is not professional advice. Seek the advice of a professional before making any investment decisions.
Labels:
investment,
stocks
Thursday, September 25, 2014
What Young People Don't Know
Young people today don't realize what has happened to the U.S. economy over the past 40 years. Their sense of what's "normal" is shaped by current reality, not the reality their parents grew up in. They don't know how things were; how prosperous America used to be.
When I think back on what my life was like in 1980, it horrifies me to see how badly the economic environment has deteriorated since then. Let me put try to put it in concrete terms.
Four years out of college, I was making $25,000 a year (in 1980). Which doesn't sound like a lot of money, right? Well, consider how I was living at the time. I had bought a nearly new (three years old) two-bedroom house on two acres of wooded land in North Carolina, for $30,000. I bought a new Chevy truck for $4100. I owned a 9-year-old Cessna 182, which I'd bought from a Delta pilot for $16,500. I was easily able to make the monthly payments on all these items. The combined payments came to a little over $600 a month.
Today, the new Chevy truck would cost $25,000. The average home price in the North Carolina town I lived in is now $300,000. A nine-year-old Cessna 182 can be had for $189,000. Basically, everything costs 6 to 10 times more now.
To live the same lifestyle today that I lived in 1980, four years out of college, would require an income of at least $200,000 in 2014 dollars. Few recent grads make anywhere near that amount.
Life was good in America in 1980. It was really easy to live really well on not much money.
What can I say?
Things have changed.
When I think back on what my life was like in 1980, it horrifies me to see how badly the economic environment has deteriorated since then. Let me put try to put it in concrete terms.
![]() |
| The value of the dollar over time. In this graph, 2012 equals 1. In 1900, a dollar was 29 times as powerful as in 2012. |
Today, the new Chevy truck would cost $25,000. The average home price in the North Carolina town I lived in is now $300,000. A nine-year-old Cessna 182 can be had for $189,000. Basically, everything costs 6 to 10 times more now.
To live the same lifestyle today that I lived in 1980, four years out of college, would require an income of at least $200,000 in 2014 dollars. Few recent grads make anywhere near that amount.
Life was good in America in 1980. It was really easy to live really well on not much money.
What can I say?
Things have changed.
Tuesday, September 23, 2014
Don't Grinf*ck Me
You've seen the scenario play itself out a million times before. A client or coworker comes to you for advice; you offer your very best insights. The other person nods, smiles, thanks you, and agrees to put some of your ideas into action. But then you find out, hours or days later, the person not only ignored your advice but went against it.
You've been grinf#(ked.
The Urban Dictionary defines grinf*ck (noun form) as follows.
I'm not a psychologist (so if any specialists are reading this, please speak up here), but it seems to me that grinf**kery, in at least some cases, qualifies as a type of passive-aggressive behavior, meant to humble the advice-giver while bolstering the other person's authority. In other cases, grinf**king is just a byproduct of someone's opinion-gathering requirement. The person who asked for your advice was required to get a second or third opinion on something; there was never any intent to use that opinion to deviate from an already chosen agenda.
And then there are those who mean you no disrespect, but who simply feel embarrassed or timid about disagreeing with you to your face. These are well-meaning people who aren't trying to be disingenuous. They just don't like to appear disagreeable. Or maybe they're confrontation-averse.
Regardless of motivations, it seems to me we all have a duty to be honest and forthright in our dealings with clients and coworkers. We can always agree to disagree on things, if need be. There's room (or should be, in any organization) for honest divergence of opinions. Transparent, open debate of ideas is healthy and should be encouraged.
But don't be disingenuous. Don't camouflage dissent as agreement. Don't tell me one thing when you mean another. Don't deliberately mislead me into thinking you value what I'm saying, when in fact you intend to ignore what I'm saying. When I learn the truth, later, it does nothing good for our relationship.
Just be honest with me. Let me know what you really think. I can take it. I promise.
Don't be a grinf#(ker.
You've been grinf#(ked.
The Urban Dictionary defines grinf*ck (noun form) as follows.
In business, when someone smiles and shakes your hand, assuring you that they have heard and will act upon your recommendation or concerns, when in truth you have already been ignored and dismissed.I think the expectation of being grinf#(ked is why many of us are hesitant to take user satisfaction surveys when asked to do so by banks, e-commerce sites, etc. We suspect we'll get the nod, the sincere thank you—and see our suggestions ignored. (Have you ever dialed the 800 number listed under one of those "How is my driving?" stickers on the backs of trucks? Me neither.)
I'm not a psychologist (so if any specialists are reading this, please speak up here), but it seems to me that grinf**kery, in at least some cases, qualifies as a type of passive-aggressive behavior, meant to humble the advice-giver while bolstering the other person's authority. In other cases, grinf**king is just a byproduct of someone's opinion-gathering requirement. The person who asked for your advice was required to get a second or third opinion on something; there was never any intent to use that opinion to deviate from an already chosen agenda.
And then there are those who mean you no disrespect, but who simply feel embarrassed or timid about disagreeing with you to your face. These are well-meaning people who aren't trying to be disingenuous. They just don't like to appear disagreeable. Or maybe they're confrontation-averse.
Regardless of motivations, it seems to me we all have a duty to be honest and forthright in our dealings with clients and coworkers. We can always agree to disagree on things, if need be. There's room (or should be, in any organization) for honest divergence of opinions. Transparent, open debate of ideas is healthy and should be encouraged.
But don't be disingenuous. Don't camouflage dissent as agreement. Don't tell me one thing when you mean another. Don't deliberately mislead me into thinking you value what I'm saying, when in fact you intend to ignore what I'm saying. When I learn the truth, later, it does nothing good for our relationship.
Just be honest with me. Let me know what you really think. I can take it. I promise.
Don't be a grinf#(ker.
Labels:
grinfuck
Tuesday, September 16, 2014
Google Plus Is Irrelevant
It's interesting to compare the social media sites on Google Trends to see how they're doing. Twitter and Facebook dwarf all the others, so I'm not going to dwell on them (but see discussion further below). What's fascinating is the comparison of Google Plus against Pinterest, LinkedIn, and challenger Wattpad.
LinkedIn has been around longer than the others and has gained considerable traction in recent years, although it seems to be starting to plateau. What's interesting is that Pinterest and Google Plus both spiked in poplarity in 2011-2012, but Pinterest maintained its post-spike popularity whereas Google Plus quickly fell right back down to near-nothing. (This is all the more noteworthy in that if you Google "Google Plus," you get over 3 billion hits. You can't say Google Plus has no visibility on Google.) In the meantime, the tortoise in this race, Wattpad, has slowly overtaken Google Plus.
Naturally, Google Trends data should be taken with a bit of caution. Wattpad has an Alexa.com global rank of 1835, for example, while Goodreads (not shown above) is ranked much higher in traffic, at No. 280 worldwide, yet Wattpad outperforms Goodreads in a Trends graph (not shown) by a 4:1 margin. Clearly, interest is building in Wattpad, at least in Google searches. But it might not relate directly to site traffic.
I became curious about these relationships after a blog post of mine went to No. 1 on BigThink.com. The post in question garnered over 4,000 social shares. I was interested in seeing how the various social shares broke out: How do people share things? Which channels do they use?
The shares for the aforementioned blog (as of this writing) break down as follows:
Facebook: 3,600+
Twitter: 246
LinkedIn: 89
Google+: 64
The extremely poor showing by G+ augurs ill (I think) for Google's social platform. How can you claim to have a major social platform when not even two percent of people use it to share anything? Or is this another Mac vs. PC situation where the product with 2% market share comes from behind, over a period of decades, to overtake the category leaders?
I don't think this is another Mac vs. PC situation. I think Google Plus is finished.
I know many very smart people who think Google Plus is a great platform for various reasons. And it does do certain things well; the UI is less annoying (arguably) than Facebook's, at this point, and it integrates well with other Google offerings. (No surprise there.) But still, hardly anyone uses it, compared to the other major social platforms (look again at the above numbers), and it's not gaining popularity fast enough to keep up, so the inescapable conclusion is that Google (if it intends to keep G+ going) needs to remake G+ yet again, although who's to say another incarnation of it will achieve greater traction? Many would argue (and I would be among them) Google is merely flogging a dead horse at this point.

In the online world, as in the proton-based world, there's room at the top for, at most, two overdogs: Coke, Pepsi. GM, Toyota. Android, iOS. Chrome, Firefox. After the Top Two, all the other long-tail stragglers put together don't add up to much of a pie-slice.
This feels like a battle Google not only lost, but lost years ago (in 2011). If Google decides to walk away from G+, at this point, it won't come as a surprise to me. Its relevance is low and dwindling. The momentum simply isn't there. Even the mighty Google colossus (with its huge Gmail user base) can't move the needle on this one.
The social world has voted, and sad to say, Google Plus now very much appears to be (as some of us suspected from the outset) the answer to a question nobody asked.
LinkedIn has been around longer than the others and has gained considerable traction in recent years, although it seems to be starting to plateau. What's interesting is that Pinterest and Google Plus both spiked in poplarity in 2011-2012, but Pinterest maintained its post-spike popularity whereas Google Plus quickly fell right back down to near-nothing. (This is all the more noteworthy in that if you Google "Google Plus," you get over 3 billion hits. You can't say Google Plus has no visibility on Google.) In the meantime, the tortoise in this race, Wattpad, has slowly overtaken Google Plus.
Naturally, Google Trends data should be taken with a bit of caution. Wattpad has an Alexa.com global rank of 1835, for example, while Goodreads (not shown above) is ranked much higher in traffic, at No. 280 worldwide, yet Wattpad outperforms Goodreads in a Trends graph (not shown) by a 4:1 margin. Clearly, interest is building in Wattpad, at least in Google searches. But it might not relate directly to site traffic.
I became curious about these relationships after a blog post of mine went to No. 1 on BigThink.com. The post in question garnered over 4,000 social shares. I was interested in seeing how the various social shares broke out: How do people share things? Which channels do they use?
The shares for the aforementioned blog (as of this writing) break down as follows:
Facebook: 3,600+
Twitter: 246
LinkedIn: 89
Google+: 64
The extremely poor showing by G+ augurs ill (I think) for Google's social platform. How can you claim to have a major social platform when not even two percent of people use it to share anything? Or is this another Mac vs. PC situation where the product with 2% market share comes from behind, over a period of decades, to overtake the category leaders?
I don't think this is another Mac vs. PC situation. I think Google Plus is finished.
I know many very smart people who think Google Plus is a great platform for various reasons. And it does do certain things well; the UI is less annoying (arguably) than Facebook's, at this point, and it integrates well with other Google offerings. (No surprise there.) But still, hardly anyone uses it, compared to the other major social platforms (look again at the above numbers), and it's not gaining popularity fast enough to keep up, so the inescapable conclusion is that Google (if it intends to keep G+ going) needs to remake G+ yet again, although who's to say another incarnation of it will achieve greater traction? Many would argue (and I would be among them) Google is merely flogging a dead horse at this point.
In the online world, as in the proton-based world, there's room at the top for, at most, two overdogs: Coke, Pepsi. GM, Toyota. Android, iOS. Chrome, Firefox. After the Top Two, all the other long-tail stragglers put together don't add up to much of a pie-slice.
This feels like a battle Google not only lost, but lost years ago (in 2011). If Google decides to walk away from G+, at this point, it won't come as a surprise to me. Its relevance is low and dwindling. The momentum simply isn't there. Even the mighty Google colossus (with its huge Gmail user base) can't move the needle on this one.
The social world has voted, and sad to say, Google Plus now very much appears to be (as some of us suspected from the outset) the answer to a question nobody asked.
Sunday, September 14, 2014
Do Dashboards Have to Be Crappy?
Paul Cothenet has written a terrific blog called "The Laws of Shitty Dashboards," which resonated with me and apparently, also, with thousands of other people. How do I know? I checked my Twitter Analytics dashboard. I found that only two hours after tweeting Paul's blog, 7200 people saw the tweet and 1.8% "engaged" with it either by clicking through to the blog or retweeting (or favoriting) it.
I happen to like the Twitter Analytics dashboard, but Paul is right, most dashboards are only better than the alternative: an Excel spreadsheet.
Interestingly, many dashboards (including the one for Twitter Analytics) provide a data export button. When you click the button, you get to download your data as a spreadsheet. Thus, a dashboard is really just a skin over a spreadsheet's worth of data: a CSV file in an HTML party dress. I confess, I would rather look at the party-dress version. But that's not saying much. Nothing beats a spreadsheet for Ugly. Who wouldn't rather look at a web page?
What's wrong with dashboards? They try to do too much, basically. And in the process, they stymie and befuddle, rather than empower, the user.
Here are Paul's "laws," incidentally:
Law #1: Most software dashboards are shitty
Law #2: If it’s called “Dashboard”, it’s probably shitty
Law #3: If you don’t know what to take away from your dashboard, your users won’t
Law #4: Not talking to users will result in a shitty dashboard
Law #5: I don’t need no shitty control
Law #6: Because it was useful in a Powerpoint doesn’t mean it’s useful on a dashboard
Law #7: Because it moves doesn’t mean it’s not shitty
Law #8: You probably don’t need a dashboard
Try to think of a dashboard that's truly great. (Hard to do, isn't it?) I gave up on Google Analytics a long time ago, precisely because the dashboard sucks so much. StatCounter isn't any better. The WordPress admin dashboard feels horribly cumbersome and disorienting, no matter how much I stare at it. And I stare at it a lot.
Most content management systems are fronted by a dashboard of some kind. They all suck. It's really not a question of which ones are good, but which ones blow the fewest chunks. The number of clickable elements is usually excessive; the UI is almost always cognitively challenging (too many clickable elements); the ratio of unhidden to hidden data too high.
I suspect dashboard designers take delight in "empowering the user" by giving the user access to dozens of things all from one screen. But really, does the user want to be faced with that many choices? Does the user need to see that much data? Might this not be a case of "less is more"?
Might most dashboards not need to exist?
Do we really need another one?
Please, before you design a dashboard, see if there's an alternative. Prototype some simple alternatives. Huddle with customers. Do usability testing. (But be careful to observe how people actually use something, in practice; don't simply ask users what's good and what's not good. User surveys can be garbage.) Oh, and don't forget to test your UI on an iPad and a phone. If it doesn't work well on a small screen, chances are it's not going to be better on a large one.
If it's truly all about the data? Mail me the spreadsheet. I'll have my macros get back to you.
I happen to like the Twitter Analytics dashboard, but Paul is right, most dashboards are only better than the alternative: an Excel spreadsheet.
Interestingly, many dashboards (including the one for Twitter Analytics) provide a data export button. When you click the button, you get to download your data as a spreadsheet. Thus, a dashboard is really just a skin over a spreadsheet's worth of data: a CSV file in an HTML party dress. I confess, I would rather look at the party-dress version. But that's not saying much. Nothing beats a spreadsheet for Ugly. Who wouldn't rather look at a web page?
What's wrong with dashboards? They try to do too much, basically. And in the process, they stymie and befuddle, rather than empower, the user.
Here are Paul's "laws," incidentally:
Law #1: Most software dashboards are shitty
Law #2: If it’s called “Dashboard”, it’s probably shitty
Law #3: If you don’t know what to take away from your dashboard, your users won’t
Law #4: Not talking to users will result in a shitty dashboard
Law #5: I don’t need no shitty control
Law #6: Because it was useful in a Powerpoint doesn’t mean it’s useful on a dashboard
Law #7: Because it moves doesn’t mean it’s not shitty
Law #8: You probably don’t need a dashboard
Try to think of a dashboard that's truly great. (Hard to do, isn't it?) I gave up on Google Analytics a long time ago, precisely because the dashboard sucks so much. StatCounter isn't any better. The WordPress admin dashboard feels horribly cumbersome and disorienting, no matter how much I stare at it. And I stare at it a lot.
Most content management systems are fronted by a dashboard of some kind. They all suck. It's really not a question of which ones are good, but which ones blow the fewest chunks. The number of clickable elements is usually excessive; the UI is almost always cognitively challenging (too many clickable elements); the ratio of unhidden to hidden data too high.
I suspect dashboard designers take delight in "empowering the user" by giving the user access to dozens of things all from one screen. But really, does the user want to be faced with that many choices? Does the user need to see that much data? Might this not be a case of "less is more"?
Might most dashboards not need to exist?
Do we really need another one?
Please, before you design a dashboard, see if there's an alternative. Prototype some simple alternatives. Huddle with customers. Do usability testing. (But be careful to observe how people actually use something, in practice; don't simply ask users what's good and what's not good. User surveys can be garbage.) Oh, and don't forget to test your UI on an iPad and a phone. If it doesn't work well on a small screen, chances are it's not going to be better on a large one.
If it's truly all about the data? Mail me the spreadsheet. I'll have my macros get back to you.
Saturday, September 13, 2014
How Automated Comments Work
Anyone who runs a popular blog knows that many Comments are posted by bots. But they often sound surprisingly human. How does that work?
The answer is, certain text-generating programs, like Manhood, exist that can be scripted to produce semi-random variations on templated sentences that a human provides.
The other day, a person or bot with e-mail address of nicolaspeach@web.de left a Comment at Author-Zone.com, only they messed up. The comment contained the entirety of the script they were using to auto-generate "plausible" messages. The script is pasted below. Scroll to the bottom for my comments on the comment-generator.
{
{I have|I’ve} been {surfing|browsing} online more than {three|3|2|4} hours today,
yet I never found any interesting article like yours.
{It’s|It is} pretty worth enough for me. {In my opinion|Personally|In my view}, if
all {webmasters|site owners|website owners|web owners} and bloggers made good content as you did, the {internet|net|web} will be {much more|a lot
more} useful than ever before.|
I {couldn’t|could not} {resist|refrain from} commenting. {Very well|Perfectly|Well|Exceptionally well} written!|
{I will|I’ll} {right away|immediately} {take hold of|grab|clutch|grasp|seize|snatch} your {rss|rss
feed} as I {can not|can’t} {in finding|find|to find} your {email|e-mail} subscription {link|hyperlink} or {newsletter|e-newsletter} service.
Do {you have|you’ve} any? {Please|Kindly} {allow|permit|let} me {realize|recognize|understand|recognise|know} {so that|in order
that} I {may just|may|could} subscribe. Thanks.|
{It is|It’s} {appropriate|perfect|the best} time to make some plans for the future and {it
is|it’s} time to be happy. {I have|I’ve} read this post and if I could I {want to|wish
to|desire to} suggest you {few|some} interesting things or {advice|suggestions|tips}.
{Perhaps|Maybe} you {could|can} write next articles referring to this article.
I {want to|wish to|desire to} read {more|even more} things about it!|
{It is|It’s} {appropriate|perfect|the best} time to make {a few|some} plans for {the future|the longer term|the long run} and {it
is|it’s} time to be happy. {I have|I’ve} {read|learn} this {post|submit|publish|put up}
and if I {may just|may|could} I {want to|wish to|desire to} {suggest|recommend|counsel} you {few|some} {interesting|fascinating|attention-grabbing} {things|issues} or {advice|suggestions|tips}.
{Perhaps|Maybe} you {could|can} write {next|subsequent} articles {relating to|referring to|regarding} this article.
I {want to|wish to|desire to} {read|learn}
{more|even more} {things|issues} {approximately|about} it!|
{I have|I’ve} been {surfing|browsing} {online|on-line} {more than|greater than}
{three|3} hours {these days|nowadays|today|lately|as
of late}, {yet|but} I {never|by no means} {found|discovered} any {interesting|fascinating|attention-grabbing} article like yours.
{It’s|It is} {lovely|pretty|beautiful} {worth|value|price} {enough|sufficient} for me.
{In my opinion|Personally|In my view}, if all {webmasters|site owners|website owners|web owners} and bloggers made {just right|good|excellent} {content|content material} as {you
did|you probably did}, the {internet|net|web} {will be|shall be|might
be|will probably be|can be|will likely be} {much more|a lot more} {useful|helpful} than ever
before.|
Ahaa, its {nice|pleasant|good|fastidious} {discussion|conversation|dialogue} {regarding|concerning|about|on the topic of}
this {article|post|piece of writing|paragraph} {here|at this place} at this {blog|weblog|webpage|website|web site}, I have read
all that, so {now|at this time} me also commenting {here|at this
place}.|
I am sure this {article|post|piece of writing|paragraph}
has touched all the internet {users|people|viewers|visitors}, its really really
{nice|pleasant|good|fastidious} {article|post|piece of writing|paragraph} on building up new {blog|weblog|webpage|website|web site}.|
Wow, this {article|post|piece of writing|paragraph} is {nice|pleasant|good|fastidious},
my {sister|younger sister} is analyzing {such|these|these kinds of} things, {so|thus|therefore} I am going
to {tell|inform|let know|convey} her.|
{Saved as a favorite|bookmarked!!}, {I really like|I like|I love} {your blog|your site|your web site|your website}!|
Way cool! Some {very|extremely} valid points! I appreciate you {writing this|penning
this} {article|post|write-up} {and the|and also the|plus the} rest of the {site is|website
is} {also very|extremely|very|also really|really} good.|
Hi, {I do believe|I do think} {this is an excellent|this is
a great} {blog|website|web site|site}. I stumbledupon it {I will|I am going to|I’m going to|I may} {come back|return|revisit} {once again|yet again} {since I|since i have} {bookmarked|book marked|book-marked|saved as a
favorite} it. Money and freedom {is the best|is the greatest} way to change,
may you be rich and continue to {help|guide} {other people|others}.|
Woah! I’m really {loving|enjoying|digging} the template/theme of
this {site|website|blog}. It’s simple, yet effective.
A lot of times it’s {very hard|very difficult|challenging|tough|difficult|hard} to get that “perfect balance” between {superb usability|user friendliness|usability} and {visual appearance|visual appeal|appearance}.
I must say {that you’ve|you have|you’ve} done
a {awesome|amazing|very good|superb|fantastic|excellent|great} job with this.
{In addition|Additionally|Also}, the blog loads {very|extremely|super} {fast|quick} for
me on {Safari|Internet explorer|Chrome|Opera|Firefox}.
{Superb|Exceptional|Outstanding|Excellent} Blog!|
These are {really|actually|in fact|truly|genuinely} {great|enormous|impressive|wonderful|fantastic} ideas in {regarding|concerning|about|on the topic of} blogging.
You have touched some {nice|pleasant|good|fastidious} {points|factors|things} here.
Any way keep up wrinting.|
{I love|I really like|I enjoy|I like|Everyone loves} what
you guys {are|are usually|tend to be} up too. {This sort of|This type of|Such|This
kind of} clever work and {exposure|coverage|reporting}! Keep
up the {superb|terrific|very good|great|good|awesome|fantastic|excellent|amazing|wonderful} works guys I’ve {incorporated||added|included} you guys to {|my|our||my personal|my own} blogroll.|
{Howdy|Hi there|Hey there|Hi|Hello|Hey}! Someone in my {Myspace|Facebook} group shared this {site|website} with us so
I came to {give it a look|look it over|take a look|check it out}.
I’m definitely {enjoying|loving} the information. I’m
{book-marking|bookmarking} and will be tweeting this to my followers!
{Terrific|Wonderful|Great|Fantastic|Outstanding|Exceptional|Superb|Excellent} blog and {wonderful|terrific|brilliant|amazing|great|excellent|fantastic|outstanding|superb} {style
and design|design and style|design}.|
{I love|I really like|I enjoy|I like|Everyone
loves} what you guys {are|are usually|tend to be} up too.
{This sort of|This type of|Such|This kind of} clever work and {exposure|coverage|reporting}!
Keep up the {superb|terrific|very good|great|good|awesome|fantastic|excellent|amazing|wonderful} works guys I’ve
{incorporated|added|included} you guys to {|my|our|my personal|my own}
blogroll.|
{Howdy|Hi there|Hey there|Hi|Hello|Hey} would
you mind {stating|sharing} which blog platform you’re {working with|using}?
I’m {looking|planning|going} to start my own blog {in the near future|soon} but I’m having a {tough|difficult|hard} time {making a decision|selecting|choosing|deciding} between BlogEngine/Wordpress/B2evolution and Drupal.
The reason I ask is because your {design and style|design|layout} seems different then most blogs and I’m looking for something {completely unique|unique}.
P.S {My apologies|Apologies|Sorry} for {getting|being} off-topic but I had to ask!|
{Howdy|Hi there|Hi|Hey there|Hello|Hey} would you mind letting me know which {webhost|hosting company|web host} you’re {utilizing|working with|using}?
I’ve loaded your blog in 3 {completely different|different}
{internet browsers|web browsers|browsers} and I must say this
blog loads a lot {quicker|faster} then most. Can you {suggest|recommend} a good {internet hosting|web hosting|hosting} provider at a {honest|reasonable|fair} price?
{Thanks a lot|Kudos|Cheers|Thank you|Many thanks|Thanks},
I appreciate it!|
{I love|I really like|I like|Everyone loves} it {when people|when individuals|when folks|whenever people} {come together|get together} and share {opinions|thoughts|views|ideas}.
Great {blog|website|site}, {keep it up|continue the good work|stick with it}!|
Thank you for the {auspicious|good} writeup. It in fact was a amusement account it.
Look advanced to {far|more} added agreeable from you!
{By the way|However}, how {can|could} we communicate?|
{Howdy|Hi there|Hey there|Hello|Hey} just wanted to give you a
quick heads up. The {text|words} in your {content|post|article} seem
to be running off the screen in {Ie|Internet explorer|Chrome|Firefox|Safari|Opera}.
I’m not sure if this is a {format|formatting}
issue or something to do with {web browser|internet browser|browser} compatibility but I {thought|figured} I’d post to let you know.
The {style and design|design and style|layout|design} look great though!
Hope you get the {problem|issue} {solved|resolved|fixed} soon. {Kudos|Cheers|Many
thanks|Thanks}|
This is a topic {that is|that’s|which is} {close to|near to} my heart…
{Cheers|Many thanks|Best wishes|Take care|Thank you}!
{Where|Exactly where} are your contact details though?|
It’s very {easy|simple|trouble-free|straightforward|effortless} to find out any {topic|matter} on {net|web} as compared to {books|textbooks}, as I found this {article|post|piece of
writing|paragraph} at this {website|web site|site|web page}.|
Does your {site|website|blog} have a contact page?
I’m having {a tough time|problems|trouble} locating it but, I’d like to {send|shoot} you an {e-mail|email}.
I’ve got some {creative ideas|recommendations|suggestions|ideas} for your blog you might be interested in hearing.
Either way, great {site|website|blog} and I look forward to
seeing it {develop|improve|expand|grow} over time.|
{Hola|Hey there|Hi|Hello|Greetings}! I’ve been {following|reading} your
{site|web site|website|weblog|blog} for {a long time|a while|some time} now and finally got the {bravery|courage} to go ahead and give you a shout out from
{New Caney|Kingwood|Huffman|Porter|Houston|Dallas|Austin|Lubbock|Humble|Atascocita} {Tx|Texas}!
Just wanted to {tell you|mention|say} keep up the {fantastic|excellent|great|good} {job|work}!|
Greetings from {Idaho|Carolina|Ohio|Colorado|Florida|Los angeles|California}!
I’m {bored to tears|bored to death|bored} at work so I decided to {check
out|browse} your {site|website|blog} on my iphone during lunch break.
I {enjoy|really like|love} the {knowledge|info|information} you {present|provide} here and can’t wait to take a look when I get home.
I’m {shocked|amazed|surprised} at how {quick|fast} your
blog loaded on my {mobile|cell phone|phone} .. I’m not even using WIFI, just 3G ..
{Anyhow|Anyways}, {awesome|amazing|very good|superb|good|wonderful|fantastic|excellent|great} {site|blog}!|
Its {like you|such as you} {read|learn} my {mind|thoughts}!
You {seem|appear} {to understand|to know|to grasp} {so much|a lot} {approximately|about} this, {like you|such as you}
wrote the {book|e-book|guide|ebook|e book} in it or something.
{I think|I feel|I believe} {that you|that you simply|that you
just} {could|can} do with {some|a few} {%|p.c.|percent} to {force|pressure|drive|power} the message {house|home} {a bit|a little bit}, {however|but}
{other than|instead of} that, {this is|that is} {great|wonderful|fantastic|magnificent|excellent} blog.
{A great|An excellent|A fantastic} read. {I’ll|I will} {definitely|certainly} be back.|
I visited {multiple|many|several|various} {websites|sites|web sites|web pages|blogs} {but|except|however} the audio {quality|feature} for audio songs {current|present|existing} at
this {website|web site|site|web page} is {really|actually|in fact|truly|genuinely} {marvelous|wonderful|excellent|fabulous|superb}.|
{Howdy|Hi there|Hi|Hello}, i read your blog
{occasionally|from time to time} and i own a similar one and i was just {wondering|curious}
if you get a lot of spam {comments|responses|feedback|remarks}?
If so how do you {prevent|reduce|stop|protect against} it,
any plugin or anything you can {advise|suggest|recommend}?
I get so much lately it’s driving me {mad|insane|crazy} so any {assistance|help|support} is very much appreciated.|
Greetings! {Very helpful|Very useful} advice {within this|in this particular} {article|post}!
{It is the|It’s the} little changes {that make|which will make|that produce|that will make} {the biggest|the largest|the greatest|the most
important|the most significant} changes. {Thanks
a lot|Thanks|Many thanks} for sharing!|
{I really|I truly|I seriously|I absolutely} love {your blog|your
site|your website}.. {Very nice|Excellent|Pleasant|Great} colors & theme.
Did you {create|develop|make|build} {this website|this site|this web site|this amazing site} yourself?
Please reply back as I’m {looking to|trying to|planning to|wanting to|hoping to|attempting to} create {my own|my
very own|my own personal} {blog|website|site} and {would
like to|want to|would love to} {know|learn|find out} where you
got this from or {what the|exactly what the|just what the} theme {is called|is named}.
{Thanks|Many thanks|Thank you|Cheers|Appreciate
it|Kudos}!|
{Hi there|Hello there|Howdy}! This {post|article|blog post} {couldn’t|could
not} be written {any better|much better}! {Reading through|Looking at|Going through|Looking
through} this {post|article} reminds me of my
previous roommate! He {always|constantly|continually} kept {talking about|preaching about} this.
{I will|I’ll|I am going to|I most certainly will}
{forward|send} {this article|this information|this post} to him.
{Pretty sure|Fairly certain} {he will|he’ll|he’s going to} {have a
good|have a very good|have a great} read.
{Thank you for|Thanks for|Many thanks for|I appreciate you for} sharing!|
{Wow|Whoa|Incredible|Amazing}! This blog looks {exactly|just} like my old one!
It’s on a {completely|entirely|totally} different {topic|subject} but it has pretty much the same {layout|page
layout} and design. {Excellent|Wonderful|Great|Outstanding|Superb} choice of
colors!|
{There is|There’s} {definately|certainly} {a lot to|a great deal
to} {know about|learn about|find out about} this {subject|topic|issue}.
{I like|I love|I really like} {all the|all of the} points {you made|you’ve made|you have made}.|
{You made|You’ve made|You have made} some {decent|good|really good} points
there. I {looked|checked} {on the internet|on the web|on the net} {for more info|for more information|to find
out more|to learn more|for additional information} about the issue and found {most individuals|most people} will go along with your views on {this website|this site|this web site}.|
{Hi|Hello|Hi there|What’s up}, I {log on to|check|read} your
{new stuff|blogs|blog} {regularly|like every week|daily|on a regular basis}.
Your {story-telling|writing|humoristic} style is {awesome|witty},
keep {doing what you’re doing|up the good work|it up}!|
I {simply|just} {could not|couldn’t} {leave|depart|go away} your {site|web site|website} {prior to|before} suggesting that I {really|extremely|actually} {enjoyed|loved} {the
standard|the usual} {information|info} {a person|an individual}
{supply|provide} {for your|on your|in your|to
your} {visitors|guests}? Is {going to|gonna} be {back|again} {frequently|regularly|incessantly|steadily|ceaselessly|often|continuously} {in order to|to} {check
up on|check out|inspect|investigate cross-check} new posts|
{I wanted|I needed|I want to|I need to} to thank you for this
{great|excellent|fantastic|wonderful|good|very good} read!!
I {definitely|certainly|absolutely} {enjoyed|loved} every {little bit of|bit of} it.
{I have|I’ve got|I have got} you {bookmarked|book marked|book-marked|saved as a favorite} {to check out|to look at}
new {stuff you|things you} post…|
{Hi|Hello|Hi there|What’s up}, just wanted to {mention|say|tell you}, I {enjoyed|liked|loved} this
{article|post|blog post}. It was {inspiring|funny|practical|helpful}.
Keep on posting!|
{Hi there|Hello}, I enjoy reading {all of|through} your {article|post|article post}.
I {like|wanted} to write a little comment to support you.|
I {always|constantly|every time} spent my half an hour to read this {blog|weblog|webpage|website|web site}’s {articles|posts|articles or reviews|content} {everyday|daily|every day|all the time} along with a {cup|mug} of
coffee.|
I {always|for all time|all the time|constantly|every
time} emailed this {blog|weblog|webpage|website|web site} post page to all my {friends|associates|contacts}, {because|since|as|for
the reason that} if like to read it {then|after that|next|afterward}
my {friends|links|contacts} will too.|
My {coder|programmer|developer} is trying to {persuade|convince} me to
move to .net from PHP. I have always disliked
the idea because of the {expenses|costs}. But he’s tryiong none the less.
I’ve been using {Movable-type|WordPress} on {a number of|a variety of|numerous|several|various} websites
for about a year and am {nervous|anxious|worried|concerned} about switching to another platform.
I have heard {fantastic|very good|excellent|great|good} things about blogengine.net.
Is there a way I can {transfer|import} all my wordpress {content|posts} into it?
{Any kind of|Any} help would be {really|greatly} appreciated!|
{Hello|Hi|Hello there|Hi there|Howdy|Good day}!
I could have sworn I’ve {been to|visited} {this blog|this web site|this website|this site|your blog} before but
after {browsing through|going through|looking at} {some of the|a few of the|many of the} {posts|articles} I realized it’s
new to me. {Anyways|Anyhow|Nonetheless|Regardless},
I’m {definitely|certainly} {happy|pleased|delighted} {I found|I discovered|I came across|I stumbled upon}
it and I’ll be {bookmarking|book-marking} it and checking back {frequently|regularly|often}!|
{Terrific|Great|Wonderful} {article|work}! {This is|That is} {the
type of|the kind of} {information|info} {that are meant to|that are supposed to|that should} be shared {around the|across the} {web|internet|net}.
{Disgrace|Shame} on {the {seek|search} engines|Google} for {now not|not|no longer} positioning this {post|submit|publish|put up} {upper|higher}!
Come on over and {talk over with|discuss with|seek advice from|visit|consult
with} my {site|web site|website} . {Thank you|Thanks} =)|
Heya {i’m|i am} for the first time here. I {came across|found} this board and I find It {truly|really} useful & it helped me out {a lot|much}.
I hope to give something back and {help|aid} others like you {helped|aided} me.|
{Hi|Hello|Hi there|Hello there|Howdy|Greetings}, {I think|I believe|I do
believe|I do think|There’s no doubt that} {your site|your website|your web site|your
blog} {might be|may be|could be|could possibly be} having {browser|internet
browser|web browser} compatibility {issues|problems}.
{When I|Whenever I} {look at your|take a look at your}
{website|web site|site|blog} in Safari, it looks fine {but when|however when|however,
if|however, when} opening in {Internet Explorer|IE|I.E.}, {it has|it’s got} some overlapping
issues. {I just|I simply|I merely} wanted to {give you a|provide you with a} quick heads
up! {Other than that|Apart from that|Besides that|Aside from that}, {fantastic|wonderful|great|excellent} {blog|website|site}!|
{A person|Someone|Somebody} {necessarily|essentially} {lend a hand|help|assist} to make {seriously|critically|significantly|severely} {articles|posts} {I would|I might|I’d} state.
{This is|That is} the {first|very first} time I frequented your {web page|website page} and {to this point|so far|thus far|up to now}?
I {amazed|surprised} with the {research|analysis} you made to {create|make}
{this actual|this particular} {post|submit|publish|put up} {incredible|amazing|extraordinary}.
{Great|Wonderful|Fantastic|Magnificent|Excellent} {task|process|activity|job}!|
Heya {i’m|i am} for {the primary|the first} time here. I {came across|found} this board and I {in finding|find|to find}
It {truly|really} {useful|helpful} & it helped me out {a lot|much}.
{I am hoping|I hope|I’m hoping} {to give|to offer|to provide|to present} {something|one thing} {back|again} and {help|aid} others {like
you|such as you} {helped|aided} me.|
{Hello|Hi|Hello there|Hi there|Howdy|Good day|Hey there}!
{I just|I simply} {would like to|want to|wish to} {give you a|offer you a} {huge|big} thumbs up {for the|for your} {great|excellent} {info|information} {you have|you’ve got|you
have got} {here|right here} on this post. {I will be|I’ll be|I
am} {coming back to|returning to} {your blog|your site|your website|your web site} for more soon.|
I {always|all the time|every time} used to {read|study} {article|post|piece of writing|paragraph} in news papers but now as
I am a user of {internet|web|net} {so|thus|therefore} from now I am using net for {articles|posts|articles or reviews|content}, thanks to web.|
Your {way|method|means|mode} of {describing|explaining|telling} {everything|all|the
whole thing} in this {article|post|piece of writing|paragraph} is {really|actually|in fact|truly|genuinely} {nice|pleasant|good|fastidious}, {all|every one} {can|be able to|be capable of} {easily|without difficulty|effortlessly|simply} {understand|know|be aware of} it, Thanks a
lot.|
{Hi|Hello} there, {I found|I discovered} your {blog|website|web site|site} {by means of|via|by the use of|by way of}
Google {at the same time as|whilst|even as|while} {searching for|looking for} a {similar|comparable|related} {topic|matter|subject}, your
{site|web site|website} {got here|came} up, it {looks|appears|seems|seems to be|appears to be like} {good|great}.
{I have|I’ve} bookmarked it in my google bookmarks.
{Hello|Hi} there, {simply|just} {turned into|became|was|become|changed into} {aware of|alert to} your
{blog|weblog} {thru|through|via} Google, {and found|and located} that {it is|it’s} {really|truly} informative.
{I’m|I am} {gonna|going to} {watch out|be careful} for
brussels. {I will|I’ll} {appreciate|be grateful} {if you|should you|when you|in the event you|in case you|for those who|if you happen to} {continue|proceed}
this {in future}. {A lot of|Lots of|Many|Numerous} {other folks|folks|other
people|people} {will be|shall be|might be|will probably be|can be|will likely
be} benefited {from your|out of your} writing. Cheers!|
{I am|I’m} curious to find out what blog {system|platform}
{you have been|you happen to be|you are|you’re} {working with|utilizing|using}?
I’m {experiencing|having} some {minor|small} security {problems|issues} with my latest {site|website|blog} and {I would|I’d}
like to find something more {safe|risk-free|safeguarded|secure}.
Do you have any {solutions|suggestions|recommendations}?|
{I am|I’m} {extremely|really} impressed with your writing skills {and
also|as well as} with the layout on your {blog|weblog}.
Is this a paid theme or did you {customize|modify} it
yourself? {Either way|Anyway} keep up the {nice|excellent} quality
writing, {it’s|it is} rare to see a {nice|great} blog like this
one {these days|nowadays|today}.|
{I am|I’m} {extremely|really} {inspired|impressed} {with your|together
with your|along with your} writing {talents|skills|abilities}
{and also|as {smartly|well|neatly} as} with the {layout|format|structure} {for your|on your|in your|to your} {blog|weblog}.
{Is this|Is that this} a paid {subject|topic|subject matter|theme} or
did you {customize|modify} it {yourself|your self}? {Either way|Anyway} {stay|keep} up the {nice|excellent} {quality|high
quality} writing, {it’s|it is} {rare|uncommon} {to peer|to
see|to look} a {nice|great} {blog|weblog} like this one {these
days|nowadays|today}..|
{Hi|Hello}, Neat post. {There is|There’s} {a problem|an issue} {with
your|together with your|along with your} {site|web site|website} in {internet|web} explorer, {may|might|could|would} {check|test}
this? IE {still|nonetheless} is the {marketplace|market}
{leader|chief} and {a large|a good|a big|a huge} {part of|section of|component to|portion of|component of|element of}
{other folks|folks|other people|people} will {leave out|omit|miss|pass
over} your {great|wonderful|fantastic|magnificent|excellent} writing {due to|because of} this problem.|
{I’m|I am} not sure where {you are|you’re} getting your {info|information}, but {good|great} topic.
I needs to spend some time learning {more|much more}
or understanding more. Thanks for {great|wonderful|fantastic|magnificent|excellent} {information|info} I
was looking for this {information|info} for my mission.|
{Hi|Hello}, i think that i saw you visited my
{blog|weblog|website|web site|site} {so|thus} i came to “return the favor”.{I am|I’m} {trying to|attempting to} find things to {improve|enhance} my {website|site|web site}!I suppose its ok
to use {some of|a few of}
\
It seems the person forgot to close off the script with a closing brace: }. Instead, there's a backslash. (See it? Its the final line.) This caused the entire script not only to fail but to be inserted as raw code into the Comment.
The pipe character, "|", groups together alternative words or phrases to be substituted or cycled-through. This script contains numerous individual scripts for individual messages. Somehow the person posting this mishmash managed to post his entire script collection.
Thanks, dude. You're really on top of things.
The answer is, certain text-generating programs, like Manhood, exist that can be scripted to produce semi-random variations on templated sentences that a human provides.
The other day, a person or bot with e-mail address of nicolaspeach@web.de left a Comment at Author-Zone.com, only they messed up. The comment contained the entirety of the script they were using to auto-generate "plausible" messages. The script is pasted below. Scroll to the bottom for my comments on the comment-generator.
{
{I have|I’ve} been {surfing|browsing} online more than {three|3|2|4} hours today,
yet I never found any interesting article like yours.
{It’s|It is} pretty worth enough for me. {In my opinion|Personally|In my view}, if
all {webmasters|site owners|website owners|web owners} and bloggers made good content as you did, the {internet|net|web} will be {much more|a lot
more} useful than ever before.|
I {couldn’t|could not} {resist|refrain from} commenting. {Very well|Perfectly|Well|Exceptionally well} written!|
{I will|I’ll} {right away|immediately} {take hold of|grab|clutch|grasp|seize|snatch} your {rss|rss
feed} as I {can not|can’t} {in finding|find|to find} your {email|e-mail} subscription {link|hyperlink} or {newsletter|e-newsletter} service.
Do {you have|you’ve} any? {Please|Kindly} {allow|permit|let} me {realize|recognize|understand|recognise|know} {so that|in order
that} I {may just|may|could} subscribe. Thanks.|
{It is|It’s} {appropriate|perfect|the best} time to make some plans for the future and {it
is|it’s} time to be happy. {I have|I’ve} read this post and if I could I {want to|wish
to|desire to} suggest you {few|some} interesting things or {advice|suggestions|tips}.
{Perhaps|Maybe} you {could|can} write next articles referring to this article.
I {want to|wish to|desire to} read {more|even more} things about it!|
{It is|It’s} {appropriate|perfect|the best} time to make {a few|some} plans for {the future|the longer term|the long run} and {it
is|it’s} time to be happy. {I have|I’ve} {read|learn} this {post|submit|publish|put up}
and if I {may just|may|could} I {want to|wish to|desire to} {suggest|recommend|counsel} you {few|some} {interesting|fascinating|attention-grabbing} {things|issues} or {advice|suggestions|tips}.
{Perhaps|Maybe} you {could|can} write {next|subsequent} articles {relating to|referring to|regarding} this article.
I {want to|wish to|desire to} {read|learn}
{more|even more} {things|issues} {approximately|about} it!|
{I have|I’ve} been {surfing|browsing} {online|on-line} {more than|greater than}
{three|3} hours {these days|nowadays|today|lately|as
of late}, {yet|but} I {never|by no means} {found|discovered} any {interesting|fascinating|attention-grabbing} article like yours.
{It’s|It is} {lovely|pretty|beautiful} {worth|value|price} {enough|sufficient} for me.
{In my opinion|Personally|In my view}, if all {webmasters|site owners|website owners|web owners} and bloggers made {just right|good|excellent} {content|content material} as {you
did|you probably did}, the {internet|net|web} {will be|shall be|might
be|will probably be|can be|will likely be} {much more|a lot more} {useful|helpful} than ever
before.|
Ahaa, its {nice|pleasant|good|fastidious} {discussion|conversation|dialogue} {regarding|concerning|about|on the topic of}
this {article|post|piece of writing|paragraph} {here|at this place} at this {blog|weblog|webpage|website|web site}, I have read
all that, so {now|at this time} me also commenting {here|at this
place}.|
I am sure this {article|post|piece of writing|paragraph}
has touched all the internet {users|people|viewers|visitors}, its really really
{nice|pleasant|good|fastidious} {article|post|piece of writing|paragraph} on building up new {blog|weblog|webpage|website|web site}.|
Wow, this {article|post|piece of writing|paragraph} is {nice|pleasant|good|fastidious},
my {sister|younger sister} is analyzing {such|these|these kinds of} things, {so|thus|therefore} I am going
to {tell|inform|let know|convey} her.|
{Saved as a favorite|bookmarked!!}, {I really like|I like|I love} {your blog|your site|your web site|your website}!|
Way cool! Some {very|extremely} valid points! I appreciate you {writing this|penning
this} {article|post|write-up} {and the|and also the|plus the} rest of the {site is|website
is} {also very|extremely|very|also really|really} good.|
Hi, {I do believe|I do think} {this is an excellent|this is
a great} {blog|website|web site|site}. I stumbledupon it {I will|I am going to|I’m going to|I may} {come back|return|revisit} {once again|yet again} {since I|since i have} {bookmarked|book marked|book-marked|saved as a
favorite} it. Money and freedom {is the best|is the greatest} way to change,
may you be rich and continue to {help|guide} {other people|others}.|
Woah! I’m really {loving|enjoying|digging} the template/theme of
this {site|website|blog}. It’s simple, yet effective.
A lot of times it’s {very hard|very difficult|challenging|tough|difficult|hard} to get that “perfect balance” between {superb usability|user friendliness|usability} and {visual appearance|visual appeal|appearance}.
I must say {that you’ve|you have|you’ve} done
a {awesome|amazing|very good|superb|fantastic|excellent|great} job with this.
{In addition|Additionally|Also}, the blog loads {very|extremely|super} {fast|quick} for
me on {Safari|Internet explorer|Chrome|Opera|Firefox}.
{Superb|Exceptional|Outstanding|Excellent} Blog!|
These are {really|actually|in fact|truly|genuinely} {great|enormous|impressive|wonderful|fantastic} ideas in {regarding|concerning|about|on the topic of} blogging.
You have touched some {nice|pleasant|good|fastidious} {points|factors|things} here.
Any way keep up wrinting.|
{I love|I really like|I enjoy|I like|Everyone loves} what
you guys {are|are usually|tend to be} up too. {This sort of|This type of|Such|This
kind of} clever work and {exposure|coverage|reporting}! Keep
up the {superb|terrific|very good|great|good|awesome|fantastic|excellent|amazing|wonderful} works guys I’ve {incorporated||added|included} you guys to {|my|our||my personal|my own} blogroll.|
{Howdy|Hi there|Hey there|Hi|Hello|Hey}! Someone in my {Myspace|Facebook} group shared this {site|website} with us so
I came to {give it a look|look it over|take a look|check it out}.
I’m definitely {enjoying|loving} the information. I’m
{book-marking|bookmarking} and will be tweeting this to my followers!
{Terrific|Wonderful|Great|Fantastic|Outstanding|Exceptional|Superb|Excellent} blog and {wonderful|terrific|brilliant|amazing|great|excellent|fantastic|outstanding|superb} {style
and design|design and style|design}.|
{I love|I really like|I enjoy|I like|Everyone
loves} what you guys {are|are usually|tend to be} up too.
{This sort of|This type of|Such|This kind of} clever work and {exposure|coverage|reporting}!
Keep up the {superb|terrific|very good|great|good|awesome|fantastic|excellent|amazing|wonderful} works guys I’ve
{incorporated|added|included} you guys to {|my|our|my personal|my own}
blogroll.|
{Howdy|Hi there|Hey there|Hi|Hello|Hey} would
you mind {stating|sharing} which blog platform you’re {working with|using}?
I’m {looking|planning|going} to start my own blog {in the near future|soon} but I’m having a {tough|difficult|hard} time {making a decision|selecting|choosing|deciding} between BlogEngine/Wordpress/B2evolution and Drupal.
The reason I ask is because your {design and style|design|layout} seems different then most blogs and I’m looking for something {completely unique|unique}.
P.S {My apologies|Apologies|Sorry} for {getting|being} off-topic but I had to ask!|
{Howdy|Hi there|Hi|Hey there|Hello|Hey} would you mind letting me know which {webhost|hosting company|web host} you’re {utilizing|working with|using}?
I’ve loaded your blog in 3 {completely different|different}
{internet browsers|web browsers|browsers} and I must say this
blog loads a lot {quicker|faster} then most. Can you {suggest|recommend} a good {internet hosting|web hosting|hosting} provider at a {honest|reasonable|fair} price?
{Thanks a lot|Kudos|Cheers|Thank you|Many thanks|Thanks},
I appreciate it!|
{I love|I really like|I like|Everyone loves} it {when people|when individuals|when folks|whenever people} {come together|get together} and share {opinions|thoughts|views|ideas}.
Great {blog|website|site}, {keep it up|continue the good work|stick with it}!|
Thank you for the {auspicious|good} writeup. It in fact was a amusement account it.
Look advanced to {far|more} added agreeable from you!
{By the way|However}, how {can|could} we communicate?|
{Howdy|Hi there|Hey there|Hello|Hey} just wanted to give you a
quick heads up. The {text|words} in your {content|post|article} seem
to be running off the screen in {Ie|Internet explorer|Chrome|Firefox|Safari|Opera}.
I’m not sure if this is a {format|formatting}
issue or something to do with {web browser|internet browser|browser} compatibility but I {thought|figured} I’d post to let you know.
The {style and design|design and style|layout|design} look great though!
Hope you get the {problem|issue} {solved|resolved|fixed} soon. {Kudos|Cheers|Many
thanks|Thanks}|
This is a topic {that is|that’s|which is} {close to|near to} my heart…
{Cheers|Many thanks|Best wishes|Take care|Thank you}!
{Where|Exactly where} are your contact details though?|
It’s very {easy|simple|trouble-free|straightforward|effortless} to find out any {topic|matter} on {net|web} as compared to {books|textbooks}, as I found this {article|post|piece of
writing|paragraph} at this {website|web site|site|web page}.|
Does your {site|website|blog} have a contact page?
I’m having {a tough time|problems|trouble} locating it but, I’d like to {send|shoot} you an {e-mail|email}.
I’ve got some {creative ideas|recommendations|suggestions|ideas} for your blog you might be interested in hearing.
Either way, great {site|website|blog} and I look forward to
seeing it {develop|improve|expand|grow} over time.|
{Hola|Hey there|Hi|Hello|Greetings}! I’ve been {following|reading} your
{site|web site|website|weblog|blog} for {a long time|a while|some time} now and finally got the {bravery|courage} to go ahead and give you a shout out from
{New Caney|Kingwood|Huffman|Porter|Houston|Dallas|Austin|Lubbock|Humble|Atascocita} {Tx|Texas}!
Just wanted to {tell you|mention|say} keep up the {fantastic|excellent|great|good} {job|work}!|
Greetings from {Idaho|Carolina|Ohio|Colorado|Florida|Los angeles|California}!
I’m {bored to tears|bored to death|bored} at work so I decided to {check
out|browse} your {site|website|blog} on my iphone during lunch break.
I {enjoy|really like|love} the {knowledge|info|information} you {present|provide} here and can’t wait to take a look when I get home.
I’m {shocked|amazed|surprised} at how {quick|fast} your
blog loaded on my {mobile|cell phone|phone} .. I’m not even using WIFI, just 3G ..
{Anyhow|Anyways}, {awesome|amazing|very good|superb|good|wonderful|fantastic|excellent|great} {site|blog}!|
Its {like you|such as you} {read|learn} my {mind|thoughts}!
You {seem|appear} {to understand|to know|to grasp} {so much|a lot} {approximately|about} this, {like you|such as you}
wrote the {book|e-book|guide|ebook|e book} in it or something.
{I think|I feel|I believe} {that you|that you simply|that you
just} {could|can} do with {some|a few} {%|p.c.|percent} to {force|pressure|drive|power} the message {house|home} {a bit|a little bit}, {however|but}
{other than|instead of} that, {this is|that is} {great|wonderful|fantastic|magnificent|excellent} blog.
{A great|An excellent|A fantastic} read. {I’ll|I will} {definitely|certainly} be back.|
I visited {multiple|many|several|various} {websites|sites|web sites|web pages|blogs} {but|except|however} the audio {quality|feature} for audio songs {current|present|existing} at
this {website|web site|site|web page} is {really|actually|in fact|truly|genuinely} {marvelous|wonderful|excellent|fabulous|superb}.|
{Howdy|Hi there|Hi|Hello}, i read your blog
{occasionally|from time to time} and i own a similar one and i was just {wondering|curious}
if you get a lot of spam {comments|responses|feedback|remarks}?
If so how do you {prevent|reduce|stop|protect against} it,
any plugin or anything you can {advise|suggest|recommend}?
I get so much lately it’s driving me {mad|insane|crazy} so any {assistance|help|support} is very much appreciated.|
Greetings! {Very helpful|Very useful} advice {within this|in this particular} {article|post}!
{It is the|It’s the} little changes {that make|which will make|that produce|that will make} {the biggest|the largest|the greatest|the most
important|the most significant} changes. {Thanks
a lot|Thanks|Many thanks} for sharing!|
{I really|I truly|I seriously|I absolutely} love {your blog|your
site|your website}.. {Very nice|Excellent|Pleasant|Great} colors & theme.
Did you {create|develop|make|build} {this website|this site|this web site|this amazing site} yourself?
Please reply back as I’m {looking to|trying to|planning to|wanting to|hoping to|attempting to} create {my own|my
very own|my own personal} {blog|website|site} and {would
like to|want to|would love to} {know|learn|find out} where you
got this from or {what the|exactly what the|just what the} theme {is called|is named}.
{Thanks|Many thanks|Thank you|Cheers|Appreciate
it|Kudos}!|
{Hi there|Hello there|Howdy}! This {post|article|blog post} {couldn’t|could
not} be written {any better|much better}! {Reading through|Looking at|Going through|Looking
through} this {post|article} reminds me of my
previous roommate! He {always|constantly|continually} kept {talking about|preaching about} this.
{I will|I’ll|I am going to|I most certainly will}
{forward|send} {this article|this information|this post} to him.
{Pretty sure|Fairly certain} {he will|he’ll|he’s going to} {have a
good|have a very good|have a great} read.
{Thank you for|Thanks for|Many thanks for|I appreciate you for} sharing!|
{Wow|Whoa|Incredible|Amazing}! This blog looks {exactly|just} like my old one!
It’s on a {completely|entirely|totally} different {topic|subject} but it has pretty much the same {layout|page
layout} and design. {Excellent|Wonderful|Great|Outstanding|Superb} choice of
colors!|
{There is|There’s} {definately|certainly} {a lot to|a great deal
to} {know about|learn about|find out about} this {subject|topic|issue}.
{I like|I love|I really like} {all the|all of the} points {you made|you’ve made|you have made}.|
{You made|You’ve made|You have made} some {decent|good|really good} points
there. I {looked|checked} {on the internet|on the web|on the net} {for more info|for more information|to find
out more|to learn more|for additional information} about the issue and found {most individuals|most people} will go along with your views on {this website|this site|this web site}.|
{Hi|Hello|Hi there|What’s up}, I {log on to|check|read} your
{new stuff|blogs|blog} {regularly|like every week|daily|on a regular basis}.
Your {story-telling|writing|humoristic} style is {awesome|witty},
keep {doing what you’re doing|up the good work|it up}!|
I {simply|just} {could not|couldn’t} {leave|depart|go away} your {site|web site|website} {prior to|before} suggesting that I {really|extremely|actually} {enjoyed|loved} {the
standard|the usual} {information|info} {a person|an individual}
{supply|provide} {for your|on your|in your|to
your} {visitors|guests}? Is {going to|gonna} be {back|again} {frequently|regularly|incessantly|steadily|ceaselessly|often|continuously} {in order to|to} {check
up on|check out|inspect|investigate cross-check} new posts|
{I wanted|I needed|I want to|I need to} to thank you for this
{great|excellent|fantastic|wonderful|good|very good} read!!
I {definitely|certainly|absolutely} {enjoyed|loved} every {little bit of|bit of} it.
{I have|I’ve got|I have got} you {bookmarked|book marked|book-marked|saved as a favorite} {to check out|to look at}
new {stuff you|things you} post…|
{Hi|Hello|Hi there|What’s up}, just wanted to {mention|say|tell you}, I {enjoyed|liked|loved} this
{article|post|blog post}. It was {inspiring|funny|practical|helpful}.
Keep on posting!|
{Hi there|Hello}, I enjoy reading {all of|through} your {article|post|article post}.
I {like|wanted} to write a little comment to support you.|
I {always|constantly|every time} spent my half an hour to read this {blog|weblog|webpage|website|web site}’s {articles|posts|articles or reviews|content} {everyday|daily|every day|all the time} along with a {cup|mug} of
coffee.|
I {always|for all time|all the time|constantly|every
time} emailed this {blog|weblog|webpage|website|web site} post page to all my {friends|associates|contacts}, {because|since|as|for
the reason that} if like to read it {then|after that|next|afterward}
my {friends|links|contacts} will too.|
My {coder|programmer|developer} is trying to {persuade|convince} me to
move to .net from PHP. I have always disliked
the idea because of the {expenses|costs}. But he’s tryiong none the less.
I’ve been using {Movable-type|WordPress} on {a number of|a variety of|numerous|several|various} websites
for about a year and am {nervous|anxious|worried|concerned} about switching to another platform.
I have heard {fantastic|very good|excellent|great|good} things about blogengine.net.
Is there a way I can {transfer|import} all my wordpress {content|posts} into it?
{Any kind of|Any} help would be {really|greatly} appreciated!|
{Hello|Hi|Hello there|Hi there|Howdy|Good day}!
I could have sworn I’ve {been to|visited} {this blog|this web site|this website|this site|your blog} before but
after {browsing through|going through|looking at} {some of the|a few of the|many of the} {posts|articles} I realized it’s
new to me. {Anyways|Anyhow|Nonetheless|Regardless},
I’m {definitely|certainly} {happy|pleased|delighted} {I found|I discovered|I came across|I stumbled upon}
it and I’ll be {bookmarking|book-marking} it and checking back {frequently|regularly|often}!|
{Terrific|Great|Wonderful} {article|work}! {This is|That is} {the
type of|the kind of} {information|info} {that are meant to|that are supposed to|that should} be shared {around the|across the} {web|internet|net}.
{Disgrace|Shame} on {the {seek|search} engines|Google} for {now not|not|no longer} positioning this {post|submit|publish|put up} {upper|higher}!
Come on over and {talk over with|discuss with|seek advice from|visit|consult
with} my {site|web site|website} . {Thank you|Thanks} =)|
Heya {i’m|i am} for the first time here. I {came across|found} this board and I find It {truly|really} useful & it helped me out {a lot|much}.
I hope to give something back and {help|aid} others like you {helped|aided} me.|
{Hi|Hello|Hi there|Hello there|Howdy|Greetings}, {I think|I believe|I do
believe|I do think|There’s no doubt that} {your site|your website|your web site|your
blog} {might be|may be|could be|could possibly be} having {browser|internet
browser|web browser} compatibility {issues|problems}.
{When I|Whenever I} {look at your|take a look at your}
{website|web site|site|blog} in Safari, it looks fine {but when|however when|however,
if|however, when} opening in {Internet Explorer|IE|I.E.}, {it has|it’s got} some overlapping
issues. {I just|I simply|I merely} wanted to {give you a|provide you with a} quick heads
up! {Other than that|Apart from that|Besides that|Aside from that}, {fantastic|wonderful|great|excellent} {blog|website|site}!|
{A person|Someone|Somebody} {necessarily|essentially} {lend a hand|help|assist} to make {seriously|critically|significantly|severely} {articles|posts} {I would|I might|I’d} state.
{This is|That is} the {first|very first} time I frequented your {web page|website page} and {to this point|so far|thus far|up to now}?
I {amazed|surprised} with the {research|analysis} you made to {create|make}
{this actual|this particular} {post|submit|publish|put up} {incredible|amazing|extraordinary}.
{Great|Wonderful|Fantastic|Magnificent|Excellent} {task|process|activity|job}!|
Heya {i’m|i am} for {the primary|the first} time here. I {came across|found} this board and I {in finding|find|to find}
It {truly|really} {useful|helpful} & it helped me out {a lot|much}.
{I am hoping|I hope|I’m hoping} {to give|to offer|to provide|to present} {something|one thing} {back|again} and {help|aid} others {like
you|such as you} {helped|aided} me.|
{Hello|Hi|Hello there|Hi there|Howdy|Good day|Hey there}!
{I just|I simply} {would like to|want to|wish to} {give you a|offer you a} {huge|big} thumbs up {for the|for your} {great|excellent} {info|information} {you have|you’ve got|you
have got} {here|right here} on this post. {I will be|I’ll be|I
am} {coming back to|returning to} {your blog|your site|your website|your web site} for more soon.|
I {always|all the time|every time} used to {read|study} {article|post|piece of writing|paragraph} in news papers but now as
I am a user of {internet|web|net} {so|thus|therefore} from now I am using net for {articles|posts|articles or reviews|content}, thanks to web.|
Your {way|method|means|mode} of {describing|explaining|telling} {everything|all|the
whole thing} in this {article|post|piece of writing|paragraph} is {really|actually|in fact|truly|genuinely} {nice|pleasant|good|fastidious}, {all|every one} {can|be able to|be capable of} {easily|without difficulty|effortlessly|simply} {understand|know|be aware of} it, Thanks a
lot.|
{Hi|Hello} there, {I found|I discovered} your {blog|website|web site|site} {by means of|via|by the use of|by way of}
Google {at the same time as|whilst|even as|while} {searching for|looking for} a {similar|comparable|related} {topic|matter|subject}, your
{site|web site|website} {got here|came} up, it {looks|appears|seems|seems to be|appears to be like} {good|great}.
{I have|I’ve} bookmarked it in my google bookmarks.
{Hello|Hi} there, {simply|just} {turned into|became|was|become|changed into} {aware of|alert to} your
{blog|weblog} {thru|through|via} Google, {and found|and located} that {it is|it’s} {really|truly} informative.
{I’m|I am} {gonna|going to} {watch out|be careful} for
brussels. {I will|I’ll} {appreciate|be grateful} {if you|should you|when you|in the event you|in case you|for those who|if you happen to} {continue|proceed}
this {in future}. {A lot of|Lots of|Many|Numerous} {other folks|folks|other
people|people} {will be|shall be|might be|will probably be|can be|will likely
be} benefited {from your|out of your} writing. Cheers!|
{I am|I’m} curious to find out what blog {system|platform}
{you have been|you happen to be|you are|you’re} {working with|utilizing|using}?
I’m {experiencing|having} some {minor|small} security {problems|issues} with my latest {site|website|blog} and {I would|I’d}
like to find something more {safe|risk-free|safeguarded|secure}.
Do you have any {solutions|suggestions|recommendations}?|
{I am|I’m} {extremely|really} impressed with your writing skills {and
also|as well as} with the layout on your {blog|weblog}.
Is this a paid theme or did you {customize|modify} it
yourself? {Either way|Anyway} keep up the {nice|excellent} quality
writing, {it’s|it is} rare to see a {nice|great} blog like this
one {these days|nowadays|today}.|
{I am|I’m} {extremely|really} {inspired|impressed} {with your|together
with your|along with your} writing {talents|skills|abilities}
{and also|as {smartly|well|neatly} as} with the {layout|format|structure} {for your|on your|in your|to your} {blog|weblog}.
{Is this|Is that this} a paid {subject|topic|subject matter|theme} or
did you {customize|modify} it {yourself|your self}? {Either way|Anyway} {stay|keep} up the {nice|excellent} {quality|high
quality} writing, {it’s|it is} {rare|uncommon} {to peer|to
see|to look} a {nice|great} {blog|weblog} like this one {these
days|nowadays|today}..|
{Hi|Hello}, Neat post. {There is|There’s} {a problem|an issue} {with
your|together with your|along with your} {site|web site|website} in {internet|web} explorer, {may|might|could|would} {check|test}
this? IE {still|nonetheless} is the {marketplace|market}
{leader|chief} and {a large|a good|a big|a huge} {part of|section of|component to|portion of|component of|element of}
{other folks|folks|other people|people} will {leave out|omit|miss|pass
over} your {great|wonderful|fantastic|magnificent|excellent} writing {due to|because of} this problem.|
{I’m|I am} not sure where {you are|you’re} getting your {info|information}, but {good|great} topic.
I needs to spend some time learning {more|much more}
or understanding more. Thanks for {great|wonderful|fantastic|magnificent|excellent} {information|info} I
was looking for this {information|info} for my mission.|
{Hi|Hello}, i think that i saw you visited my
{blog|weblog|website|web site|site} {so|thus} i came to “return the favor”.{I am|I’m} {trying to|attempting to} find things to {improve|enhance} my {website|site|web site}!I suppose its ok
to use {some of|a few of}
\
It seems the person forgot to close off the script with a closing brace: }. Instead, there's a backslash. (See it? Its the final line.) This caused the entire script not only to fail but to be inserted as raw code into the Comment.
The pipe character, "|", groups together alternative words or phrases to be substituted or cycled-through. This script contains numerous individual scripts for individual messages. Somehow the person posting this mishmash managed to post his entire script collection.
Thanks, dude. You're really on top of things.
Tuesday, September 09, 2014
A Caution about Killing Apps with Task Manager
I just encountered a situation with Firefox that's distressing and potentially dangerous (but for which I discovered the workaround).
I'm a heavy user of Firefox (and Chrome) and often finish the day with Firefox eating 2 gigs of RAM or more. It sometimes runs out of memory and crashes. I know of no answer for that. Avoid using AJAX-intensive sites? Not easy to do. Keep fewer tabs open? Yeah. Thanks, Mom.
Many times, when I notice Firefox slowing down (because it's been open a long time and is using huge amounts of memory), I deliberately crash it with Task Manager, then restart it. Bringing it down with Task Manager is quicker than waiting for Firefox to exit normally.
But therein lies a danger.
I was noticing that Firefox seemed to be issuing duplicate mouse events. For example, I would click someone's Follow button on Twitter and see the button quickly toggle twice, back to Follow. Usually the button will just change to Followed. But sometimes, it would quickly blink and go back to Follow as if I never clicked it. That's because when you've followed someone, the button (after changing to Followed) will go to Unfollow when you hover over it. It becomes an Unfollow button in the hover state.
What I saw happening is Follow changing to Unfollow and back to Follow in the blink of an eye. This was my first tipoff to duplicate events being fired.
The second tipoff was that when I single-clicked in the header bar of the browser, it went to fullscreen (maximized), something that should happen only if you double-click the header bar.
I went to Task Manager and found two instances of Adobe Flash Player running. As soon as I killed those (with End Task) and reloaded my browser pages, the duplicate-event-passing stopped.
So the lesson is: If you kill Firefox with Task Manager, be sure to kill Flash as well. Otherwise a zombie copy of Flash remains, and can interfere with event-passing later on when Firefox is running again. (Apparently.)
The reason this duplpicate-event stuff is dangerous is that when you pay bills online, some sites need you to be careful not to click a Submit button twice by accident. You could issue two payment requests.
I'm sure there are other hazards associated with duplicate events; but you get the picture now.
Be careful killing Firefox (or any app) with Task Manager. You can leave zombie processes running, and they can have unwanted side effects later.
I'm a heavy user of Firefox (and Chrome) and often finish the day with Firefox eating 2 gigs of RAM or more. It sometimes runs out of memory and crashes. I know of no answer for that. Avoid using AJAX-intensive sites? Not easy to do. Keep fewer tabs open? Yeah. Thanks, Mom.
Many times, when I notice Firefox slowing down (because it's been open a long time and is using huge amounts of memory), I deliberately crash it with Task Manager, then restart it. Bringing it down with Task Manager is quicker than waiting for Firefox to exit normally.
But therein lies a danger.
I was noticing that Firefox seemed to be issuing duplicate mouse events. For example, I would click someone's Follow button on Twitter and see the button quickly toggle twice, back to Follow. Usually the button will just change to Followed. But sometimes, it would quickly blink and go back to Follow as if I never clicked it. That's because when you've followed someone, the button (after changing to Followed) will go to Unfollow when you hover over it. It becomes an Unfollow button in the hover state.
What I saw happening is Follow changing to Unfollow and back to Follow in the blink of an eye. This was my first tipoff to duplicate events being fired.
The second tipoff was that when I single-clicked in the header bar of the browser, it went to fullscreen (maximized), something that should happen only if you double-click the header bar.
I went to Task Manager and found two instances of Adobe Flash Player running. As soon as I killed those (with End Task) and reloaded my browser pages, the duplicate-event-passing stopped.
So the lesson is: If you kill Firefox with Task Manager, be sure to kill Flash as well. Otherwise a zombie copy of Flash remains, and can interfere with event-passing later on when Firefox is running again. (Apparently.)
The reason this duplpicate-event stuff is dangerous is that when you pay bills online, some sites need you to be careful not to click a Submit button twice by accident. You could issue two payment requests.
I'm sure there are other hazards associated with duplicate events; but you get the picture now.
Be careful killing Firefox (or any app) with Task Manager. You can leave zombie processes running, and they can have unwanted side effects later.
Monday, September 01, 2014
Are You Up to Speed on Microdata?
Today's post is reblogged (with permission) from Author-Zone.com.
Do you have a web site? Do you care about Google search ranking? Do you tag blog posts with keywords? Practice safe SEO?
Well, everything you know is about to change. But first a bit of backstory. Not long ago, Google announced the official end of its Authorship markup program. best known as the scheme that allowed people to appear with their G+ picture off to the left in a highly structured "rich snippet" search-result. Google talked about the death of the program here.
The even bigger news, though (already well known to hard-core SEO geeks but still making its way out to the hinterlands), is that Google will increasingly rely on semantic hints in HTML markup (hints that you need to be sure are there) when indexing web pages. The hints can be RDFa, or microformat-based, or microdata-based (using the schema.org schema). The latter is "recommended."
According to Google, failure to use any of these hinting schemes will not adversely affect page rank, nor will using them affect rank. But let's be honest here. It's pretty clear that your pages are unlikely as hell to show up in cosmetically pleasing rich-snippet format, on any Google page, if you've neglected to use microdata in your markup. It doesn't take a rocket surgeon to understand that eventually, if your site isn't using microdata (and everyone else's is), you're going to be at a disadvantage in certain situations. Extrapolate that however you wish.
What do you have to do to get microdata into your content? Basically stand on your goddam head and count backward to infinity. No rich text HTML editor I know of has built-in support for microdata (and yet, this support is clearly needed in all rich text editors, going forward). Who'll get there first? I have no idea. It's wide open. I expect the tooling situation will change, quickly. But in the meantime, you have only a couple of options for making your site's pages microdata-savvy (read: super-Google/Bing-friendly).
The first option is really a workaround, not a solution; and that's to head over to Google Webmaster Tools, where you can manually train Google to know where the key itemtypes and itemprops are (or should be) located on your site's pages. Once you've registered your site with GWT, flip open the Search Appearance item in the command tree on the left edge of the page, then start clicking around.
That's good enough as a right-this-minute workaround, but it obviously doesn't leave your site with different markup than it had before. And that's where Option No. 2 (the stand-on-your-head option) comes into play: Insert microdata yourself. By hand.
Mind you, this is not something a human being should have to do without proper tooling, and frankly, until tooling arrives I think you'd be crazy to invest a lot of time in marking up your stuff by hand. But to give you a quick visual idea of what kind of markup I'm talking about, here's what needs to happen to, say, a blog post. First, the entire post needs to be wrapped in an article tag with microdata inside it, like so:
WordPress developers? HTML rich-text tooling geeks? Open source community? Content management vendors? We need your help. This situation calls for immediate action. Lots of people could use lots of great tools. Please help us out. I can't stand on my head and count backward much longer.
Want great tips, news, and resource links in your inbox? Sign up for the Author-Zone Newsletter!
Do you have a web site? Do you care about Google search ranking? Do you tag blog posts with keywords? Practice safe SEO?
Well, everything you know is about to change. But first a bit of backstory. Not long ago, Google announced the official end of its Authorship markup program. best known as the scheme that allowed people to appear with their G+ picture off to the left in a highly structured "rich snippet" search-result. Google talked about the death of the program here.
The even bigger news, though (already well known to hard-core SEO geeks but still making its way out to the hinterlands), is that Google will increasingly rely on semantic hints in HTML markup (hints that you need to be sure are there) when indexing web pages. The hints can be RDFa, or microformat-based, or microdata-based (using the schema.org schema). The latter is "recommended."
According to Google, failure to use any of these hinting schemes will not adversely affect page rank, nor will using them affect rank. But let's be honest here. It's pretty clear that your pages are unlikely as hell to show up in cosmetically pleasing rich-snippet format, on any Google page, if you've neglected to use microdata in your markup. It doesn't take a rocket surgeon to understand that eventually, if your site isn't using microdata (and everyone else's is), you're going to be at a disadvantage in certain situations. Extrapolate that however you wish.
What do you have to do to get microdata into your content? Basically stand on your goddam head and count backward to infinity. No rich text HTML editor I know of has built-in support for microdata (and yet, this support is clearly needed in all rich text editors, going forward). Who'll get there first? I have no idea. It's wide open. I expect the tooling situation will change, quickly. But in the meantime, you have only a couple of options for making your site's pages microdata-savvy (read: super-Google/Bing-friendly).
The first option is really a workaround, not a solution; and that's to head over to Google Webmaster Tools, where you can manually train Google to know where the key itemtypes and itemprops are (or should be) located on your site's pages. Once you've registered your site with GWT, flip open the Search Appearance item in the command tree on the left edge of the page, then start clicking around.
That's good enough as a right-this-minute workaround, but it obviously doesn't leave your site with different markup than it had before. And that's where Option No. 2 (the stand-on-your-head option) comes into play: Insert microdata yourself. By hand.
Mind you, this is not something a human being should have to do without proper tooling, and frankly, until tooling arrives I think you'd be crazy to invest a lot of time in marking up your stuff by hand. But to give you a quick visual idea of what kind of markup I'm talking about, here's what needs to happen to, say, a blog post. First, the entire post needs to be wrapped in an article tag with microdata inside it, like so:
<article itemscope itemtype="http://schema.org/Article" id="post-410" class="post-410 post type-post status-publish format-standard hentry category-uncategorized tag-font tag-legibility tag-readability tag-reading-comprehension tag-serif tag-typeface"> <!-- CONTENT GOES HERE --> </article>I've highlighted microdata in peach so you can get a taste of the deliciousness. (Blech!) The headline for your peach piece needs to be wrapped something like this:
<h2 class="entry-title"> <a href="http://author-zone.com/serif-readability-myth/" title="Permalink to The Serif Readability Myth" rel="bookmark"> <span itemprop="name">The Serif Readability Myth</span></a> </h2>If you've got a byline, it needs to look something like:
<span class="date-time"><a href="http://author-zone.com/serif-readability-myth/" title="1:15 am" rel="bookmark"><time itemprop="datePublished" content="2014-08-29" class="entry-date" datetime="2014-08-29T01:15:55+00:00">August 29, 2014</time></a></span> / <span class="author vcard"><a class="url fn n" href="http://author-zone.com/author/kasmanethomas/" title="View all posts by Kas Thomas" rel="author"> <span itemprop="author" itemscope itemtype="http://schema.org/Person"> <span itemprop="name">Kas Thomas</span></span>And the content itself should begin with:
<span itemprop="articleBody"><p>I’ve been involved in publishing all my life, and like many others I’ve always accepted as axiomatic the notion that typefaces with serifs (such as Times-Roman) are, in general, are more readable than [ . . . ]Don't use curly-quotes; those are a WordPress artifact. So as you can see, this stuff is butt-fugly, not at all intuitive (unless you're a taxonomy geek), and clearly not something an unaided human being should be doing by hand. It's a situation that very obviously calls for better tools, and right now we have [crickets chirping].
WordPress developers? HTML rich-text tooling geeks? Open source community? Content management vendors? We need your help. This situation calls for immediate action. Lots of people could use lots of great tools. Please help us out. I can't stand on my head and count backward much longer.
Want great tips, news, and resource links in your inbox? Sign up for the Author-Zone Newsletter!
Saturday, August 30, 2014
How to Get JavaScript to Work in a WordPress Page
Why does it so often happen that the things you thought were going to be easy turn out to be hard, and the things you knew were going to be hard turn out to be easy?
Case in point: I wanted to get a bunch of RSS feeds onto a news page at Author-Zone.com, and did. (See my previous post about the great free HungryFEED plugin for WordPress.) But the various feed items were not in date-sorted order, because the individual feeds were added in no particular order (and who knows which feed will update at which time anyway?).
What to do. What to do . . .
I thought it would be doable (but hard) to parse out the dates from the 70+ items manually (with JavaScript), then sort the items, and redisplay them. "Redisplay them" means first you remove all the DOM elements in question, then add them back to the page in sorted order. Fortunately, that turns out to be easy. You can call remove() on a node to vanish it from the page. But if you capture a reference to the node before doing that, the node will still exist in memory after it's been removed from the DOM. So you can then just add it back in to the page using appendChild() on a given target node. No problem.
The greater problem turned out to be how to get WordPress to accept JavaScript inside a page or a post. Turns out the rich text editor will stomp on embedded scripts pretty badly. This is a known sore point for WordPress users. And as with so many content management system problems (involving dynamic page assembly), it turns out there's a workaround, but it's the kind of thing that's not at all obvious and could drive you crazy for a solid day if you're not working with a partner who already has hit such snags and found the cure.
The magic workaround is to, first, put your script in a file and place it somewhere on the site on a public URL. Then reference that file from a script tag, and make your call to the file's main method inside a commented-out section of page (so the rich text editor ignores it) with CDATA wrappering (so the browser doesn't parse it either), with appropriate JS comments (double-slash) so the JS parser doesn't get confused by the CDATA directives. Like so:
I know, it seems weird as hell that the JS parser doesn't choke on the <!-- line. Apparently it treats it as an undefined quantity, but since you're not using that undefined "thing" for anything it doesn't trigger an exception. But guess what? It works! That's the main thing. The garblesnarble works. And (perhaps because I pasted the above lines AFTER the shortcodes in my WordPress content page, not in the <head> section of the page) the call to reorderItems() occurs after the DOM is safely loaded, hence there's no timing issue of woops! I can't mess with the DOM until after onload-time.
With this magic incantation in place, my script finally worked and the RSS feeds get date-sorted in real time no matter which feed updates first. I set HungryFEED's cache timeout to 3600 seconds, so the feeds are pulled once an hour. Unfortunately, it means that once an hour some unlucky soul gets to be the first person to request a fresh version of the page with all-updated RSS feeds (and there are 70+ feeds, so it's a lot of feed-slurping); wait-time up to 90 seconds. (Ugh!) It all happens on the server, though, with no AJAX. Once the feeds update, the content is static for the next hour, and during that time, the Author-Zone News Page loads in about four seconds, which is tolerable.
If you're a code geek and you want to see my code for date-ordering a bunch of feeds, the 40 lines of code are shown below. The first function is admittedly fugly. It hard-parses a bit of feed text to get the date string on the end, which will be something like "August 30, 2014, 3:23 pm". Fortunately, JavaScript is such an ace language that you can hand such a string to the Date() constructor and you'll get a real Date object back! Once you have that object, you can (again in genius JS fashion) multiply it by one to convert it to milliseconds-since-the-dawn-of-time. A number! Perfect for sorting!
The rest of the code is not terribly interesting. I loop over the nodes of interest and collect them into an array along with date-as-number. Then I sort using a custom comparator function (an inner method). Then I have to loop over the nodes-of-interest and remove them from the DOM. Then I have to loop again to add them back to the DOM in sorted order, and voila! Sorted RSS feeds.
Case in point: I wanted to get a bunch of RSS feeds onto a news page at Author-Zone.com, and did. (See my previous post about the great free HungryFEED plugin for WordPress.) But the various feed items were not in date-sorted order, because the individual feeds were added in no particular order (and who knows which feed will update at which time anyway?).
What to do. What to do . . .
I thought it would be doable (but hard) to parse out the dates from the 70+ items manually (with JavaScript), then sort the items, and redisplay them. "Redisplay them" means first you remove all the DOM elements in question, then add them back to the page in sorted order. Fortunately, that turns out to be easy. You can call remove() on a node to vanish it from the page. But if you capture a reference to the node before doing that, the node will still exist in memory after it's been removed from the DOM. So you can then just add it back in to the page using appendChild() on a given target node. No problem.
The greater problem turned out to be how to get WordPress to accept JavaScript inside a page or a post. Turns out the rich text editor will stomp on embedded scripts pretty badly. This is a known sore point for WordPress users. And as with so many content management system problems (involving dynamic page assembly), it turns out there's a workaround, but it's the kind of thing that's not at all obvious and could drive you crazy for a solid day if you're not working with a partner who already has hit such snags and found the cure.
The magic workaround is to, first, put your script in a file and place it somewhere on the site on a public URL. Then reference that file from a script tag, and make your call to the file's main method inside a commented-out section of page (so the rich text editor ignores it) with CDATA wrappering (so the browser doesn't parse it either), with appropriate JS comments (double-slash) so the JS parser doesn't get confused by the CDATA directives. Like so:
<script
src="http://author-zone.com/wp-content/uploads/2014/08/myscript.js">
</script> <script>// <![CDATA[ <!-- reorderItems(); //--> ]]></script>
I know, it seems weird as hell that the JS parser doesn't choke on the <!-- line. Apparently it treats it as an undefined quantity, but since you're not using that undefined "thing" for anything it doesn't trigger an exception. But guess what? It works! That's the main thing. The garblesnarble works. And (perhaps because I pasted the above lines AFTER the shortcodes in my WordPress content page, not in the <head> section of the page) the call to reorderItems() occurs after the DOM is safely loaded, hence there's no timing issue of woops! I can't mess with the DOM until after onload-time.
With this magic incantation in place, my script finally worked and the RSS feeds get date-sorted in real time no matter which feed updates first. I set HungryFEED's cache timeout to 3600 seconds, so the feeds are pulled once an hour. Unfortunately, it means that once an hour some unlucky soul gets to be the first person to request a fresh version of the page with all-updated RSS feeds (and there are 70+ feeds, so it's a lot of feed-slurping); wait-time up to 90 seconds. (Ugh!) It all happens on the server, though, with no AJAX. Once the feeds update, the content is static for the next hour, and during that time, the Author-Zone News Page loads in about four seconds, which is tolerable.
If you're a code geek and you want to see my code for date-ordering a bunch of feeds, the 40 lines of code are shown below. The first function is admittedly fugly. It hard-parses a bit of feed text to get the date string on the end, which will be something like "August 30, 2014, 3:23 pm". Fortunately, JavaScript is such an ace language that you can hand such a string to the Date() constructor and you'll get a real Date object back! Once you have that object, you can (again in genius JS fashion) multiply it by one to convert it to milliseconds-since-the-dawn-of-time. A number! Perfect for sorting!
The rest of the code is not terribly interesting. I loop over the nodes of interest and collect them into an array along with date-as-number. Then I sort using a custom comparator function (an inner method). Then I have to loop over the nodes-of-interest and remove them from the DOM. Then I have to loop again to add them back to the DOM in sorted order, and voila! Sorted RSS feeds.
function getDateFromItem(item) {
var d =
item.
getElementsByTagName('div')[1].
innerHTML.split(/<\/b>\s?/).
pop();
return 1 * new Date(d);
}
function reorderItems() {
var rootClassName = "entry-header";
var rootNode =
document.
getElementsByClassName(rootClassName)[0];
var cl =
document.
getElementsByClassName("hungryfeed_item");
var r = []; // scratch array to hold nodes, dates
// loop over nodes of interest
// & push them into r[] as [node,date]
for (var i = 0; i < cl.length; i++) {
var item = cl[i];
var d = getDateFromItem(item);
r.push([item, d]);
}
// we need this comparator function to
// sort the array on Date
function comp(a, b) {
var aa = a[1];
var bb = b[1];
return bb - aa;
}
r = r.sort(comp); // sort on date using comparator
// remove all news feed items!
// they're shown in random order!
for (var i = 0; i < r.length; i++)
r[i][0].remove();
// add them back, in date order
for (var i = 0; i < r.length; i++)
rootNode.appendChild(r[i][0]);
}
reorderItems(); // do it
Thursday, August 28, 2014
Putting a News Stream into a WordPress Site
Over at Author-Zone.com, I managed to put together a News page in record time using the WordPress plugin HungryFEED. The (free) plugin was worth its weight in gold. And validates (in my mind) the superiority of the WordPress platform as a blogging platform.
Most plugins are easy to install or uninstall on WordPress and can be figured out quickly. HungryFEED was and is way better than most, though. It pulls RSS feeds from any source (you drop a shortcode into a page to render the feed or feeds you want to use) and lets you apply custom CSS and/or custom JavaScript to your streams very easily. It has easy ways to strip out img tags or table tags or other tags you might not want to render from the RSS sources. I was able to override any and all features easily using a few lines of custom JavaScript or CSS.
Way to go, HungryFEED! Way to go WordPress.
A ways to go, Blogger.
Most plugins are easy to install or uninstall on WordPress and can be figured out quickly. HungryFEED was and is way better than most, though. It pulls RSS feeds from any source (you drop a shortcode into a page to render the feed or feeds you want to use) and lets you apply custom CSS and/or custom JavaScript to your streams very easily. It has easy ways to strip out img tags or table tags or other tags you might not want to render from the RSS sources. I was able to override any and all features easily using a few lines of custom JavaScript or CSS.
Way to go, HungryFEED! Way to go WordPress.
A ways to go, Blogger.
Tuesday, August 26, 2014
Last Responsible Moment
A military officer who was about to retire once reportedly said: "The most important thing I did in my career was to teach young leaders that whenever they saw a threat, their first job was to determine the timebox for their response. Their second job was to hold off making a decision until the end of the timebox, so that they could make it based on the best possible data."
This is an illustration of a principle that I think is (sadly) underutilized not only in R&D circles but in project planning generally, namely the principle of delaying decisions until the "last responsible moment" (championed by the Poppendiecks and others). The key intuition is that crucial decisions are best made when as much information as possible has been taken into account.
This is a good tactic when the following criteria are met:
1. Not all requirements for success are known in advance
2. The decision has huge downstream consequences
3. The decision is essentially irreversible
If one or more of the conditions is not met, the tactic of deferring commitment might not gain you anything (and could actually be costly, if it holds up development).
Conventional project planning, as practiced in enterpise today, tends to overemphasize (to an often ridiculous degree) the need for completeness in requirements-gathering. The completeness fetish leads to the Big Huge Requirements Document (or Big Huge RFP) Syndrome and nearly always introduces unnecessary dependencies and brittleness into implementations.
There's a certain hubris associated with the notion that you can have a complete specification for something. You almost certainly can't. You almost certainly don't know your true needs ahead of rollout. True, some decisions have to be made in the absence of complete data (you don't always have the luxury of waiting for all the information to arrive), and there's the fact that you need to start somewhere even if you know that you "don't know what you're doing" yet. But that's not my real point. My real point is that too often we make decisions ahead of time (that we didn't really have to make, and later realize we shouldn't have made) based on the usually-false assumption that it's possible to know all requirements in advance.
What I'm suggesting, then, is that you reconsider whether it's always a good idea to strive for a complete specification before starting work on something. Accept the fact that you can't know everything in advance. Allow for "emergentcy." (Good decisions are often "emergent" in nature.) Reject the arrogant notion that with proper advance planning, you'll have a project that goes smoothly and results in a usable solution. Most of the time, from what I've seen, it doesn't work out that way. Not at all.
This is an illustration of a principle that I think is (sadly) underutilized not only in R&D circles but in project planning generally, namely the principle of delaying decisions until the "last responsible moment" (championed by the Poppendiecks and others). The key intuition is that crucial decisions are best made when as much information as possible has been taken into account.
This is a good tactic when the following criteria are met:
1. Not all requirements for success are known in advance
2. The decision has huge downstream consequences
3. The decision is essentially irreversible
If one or more of the conditions is not met, the tactic of deferring commitment might not gain you anything (and could actually be costly, if it holds up development).
Conventional project planning, as practiced in enterpise today, tends to overemphasize (to an often ridiculous degree) the need for completeness in requirements-gathering. The completeness fetish leads to the Big Huge Requirements Document (or Big Huge RFP) Syndrome and nearly always introduces unnecessary dependencies and brittleness into implementations.
There's a certain hubris associated with the notion that you can have a complete specification for something. You almost certainly can't. You almost certainly don't know your true needs ahead of rollout. True, some decisions have to be made in the absence of complete data (you don't always have the luxury of waiting for all the information to arrive), and there's the fact that you need to start somewhere even if you know that you "don't know what you're doing" yet. But that's not my real point. My real point is that too often we make decisions ahead of time (that we didn't really have to make, and later realize we shouldn't have made) based on the usually-false assumption that it's possible to know all requirements in advance.
What I'm suggesting, then, is that you reconsider whether it's always a good idea to strive for a complete specification before starting work on something. Accept the fact that you can't know everything in advance. Allow for "emergentcy." (Good decisions are often "emergent" in nature.) Reject the arrogant notion that with proper advance planning, you'll have a project that goes smoothly and results in a usable solution. Most of the time, from what I've seen, it doesn't work out that way. Not at all.
Thursday, August 21, 2014
Amazon and Acquia
A fascinating news tidbit surfaced a few days ago at CMS Wire. It seems Amazon has invested in Acquia (the company that provides commercial support for Drupal, the popular open-source content management system), at a time when Acquia didn't exactly need any more cash.
According to CMS Watch's Virginia Backaitis:
Make of it what you will; it's hard not to get the impression that Amazon will soon want to give other content-management options a run for the money, perhaps unveiling a WordPress-like solution for book bloggers, or wooing content creators away from Google's Blogger platform, or some such. Obviously they have some kind of content play in mind. But what?
According to CMS Watch's Virginia Backaitis:
Though neither company is disclosing the size of the investment, it certainly makes their relationship more symbiotic than it already was. Consider that Acquia runs on more than 8,000 AWS instances and serves more than 27 billion hits a month (333 TB of bandwidth a month).The Amazon cash infusion comes only 90 days after a $50 million non-Amazon investment round for Acquia. In other words, they didn't need any more money. But Amazon insisted.
Make of it what you will; it's hard not to get the impression that Amazon will soon want to give other content-management options a run for the money, perhaps unveiling a WordPress-like solution for book bloggers, or wooing content creators away from Google's Blogger platform, or some such. Obviously they have some kind of content play in mind. But what?
Complexity Begets Charm
| Giamatti and Curch in Sideways. |
It took me ten years to finally get around to watching the quirky 2004 bromance Sideways, starring Paul Giamatti, Thomas Hayden Church, Virginia Madsen, and the ever-piquant Sandra Oh. While the film does many things well and is, on the whole, watchable, it's also the kind of highly forgettable flick that will spawn no sitcoms, inspire no remakes, prompt no sequels, but in all likelihood simply linger in cable purgatory for untold aeons, to perplex future millions.
One of the film's main characters is not a person but a thing: wine. (Stop. There's Lesson No. 1. Are you making at least one thing into a character?) Two buddies go on a road trip (and try to get laid) before one of them has to appear at his wedding; that's the logline. (Already forgettable, right?) But the road trip involves winery-hopping, and we get to watch and listen as characters constantly fuss over wines, swirling them, sipping them, describing their "sturdiness" or their spicy oakiness, or their past-their-peakness, etc., to the point where you want to reach for a paper bag and puke up something well past its primeness.
One of the failings of the movie, IMHO, is that for all the wine talk, it failed to draw parallels between characteristics of wine and themes of the story. The opportunities for synergistic symbolisms was (dare I say) ripe. They mostly went (dare I say) wasted.
But the script (by Alexander Payne and Jim Taylor) did do a lot of things right, and I suspect Rex Pickett, in writing the novel on which the film is based, did even more of those things right. I'm talking mostly about character development. The characters could easily have been cardboard cutouts, stereotypical bachelor-buddies, and in some ways they were, of course; but below the surface-level depictions lurked dark, thwarted dreams, conflicting desires, countervailing motivations, self-doubts, under-realized virtues, and unexpected flaws as well as unexpected behaviors. All of these sorts of things make the characters more believable (if not always more sympathetic), and that's what a reader or a viewer wants: real people with real faults, conflicting desires, complex agendas, the capacity for change (maybe only in some ways, not in all ways); and a capacity for optimism, despite an overlay of gloom. (In Sideways, the Giamatti character is a depressed school teacher whose novels keep getting rejected.)
A character with no faults is a caricature. No real human being is all good or all bad. Hitler had a dog, for crying out loud. (Of course, he famously euthanized it in the end.)
Just as a wine can have many small flaws and still exude charm, so can (and should) the characters in your story. Give all your characters real flaws, along with inner turmoil. Be sure your villain is not one-hundred-and-ten-percent villainous; give him or her some endearing qualities, and show him to have inner doubts as well.
And by the end of the story, force the characters to confront some demons. Force them to change, or at least consider what they lost by not changing.
People are complex, in the real world. Make it so in your story-world.
Get free tips in your inbox: sign up for the Author-Zone Newsletter.
Monday, August 18, 2014
When Is It Really Necessary to Hold a Meeting?
Jason Fried explains very nicely, in a 15-minute TED talk (watch it here), why the modern office is a singularly poor place in which to get work done. Bottom line: The modern office is specifically designed to facilitate interruptions. It's what one might call a high-interruptivity environment (by intent; by design).
For much the same reason that eight one-hour naps interspersed with short periods of wakefulness do not add up to a full night's sleep, a succession of 15- and 20-minute periods of work (in an office environment where you're interrupted by texts, phone calls, e-mails, IM, meetings, coworkers coming in to see you, bosses checking on you, trips to the coffee machine, and so forth) seldom adds up to a day's work. To get serious work done requires long periods of uninterrupted private time. This is why so many people say that their favorite place to get serious work done is the back porch, the basement, the attic, the shower, the library, the park, Starbucks, etc., or (if it's indeed the office) the office after everyone leaves to go home, or before everyone arrives in the morning. No one counts as their most productive environment the office during normal working hours.
Through technologies like Webex and Go-to-Meeting, we're now able to introduce productivity losses even to people working from home.
Toward the end of his TED talk, Jason Fried suggests, as an exercise (not as a policy), that any manager who has a meeting planned for Monday simply cancel (and not reschedule) the meeting and see what happens. Does the world come to an end? Do sales drop? Do people stop getting work done? Or, to the contrary, does the cancellation of a one-hour meeting involving ten people result in ten additional person-hours of productivity, reclaimed for free?
I wish Fried would have taken his own logic to the ultimate conclusion, which is that meetings (particularly regularly scheduled staff meetings) should simply be abolished, outlawed.
Over the years, I've worked for small, medium, and large companies, mostly in software development, both as an individual contributor and as a manager. As a manager at Novell, I attended an average of three meetings a week, or about 1000 meetings total. At Adobe, I attended a weekly status meeting (which was often cancelled, to no ill effect whatever) plus one or two division-level all-hands meetings per quarter, and one to two company-level all-hands meetings per quarter. I can say without reservation that all meetings I ever attended at Novell and Adobe, except for some one-on-one and impromptu 3- or 4-person meetings, were utterly without effect, aside from the undeniable effect of resetting everyone's productivity to zero at the time of the meeting.
You might ask yourself, if you're involved in setting up meetings, what it says about the fragility of your company or the ineffectuality of your organization (or your management style) if the success of the enterprise is somehow compromised by not holding that weekly status meeting, or that monthly planning meeting, or that quarterly all-hands meeting that you (vainly, stupidly) imagine is so necessary to inspiring team spirit and getting everyone "on the same page." In all my time at big companies (and smaller ones too) I can't remember a single meeting being indispensible (except, as I say, for a few one-on-one or two-on-one events). The meetings invariably distracted me from getting real work done. The bigger the meeting, the worse the productivity loss.
Whenever I missed a meeting, I found out later that I either missed nothing substantive whatsoever, or I could easily (and in a few minutes' time) catch up on whatever I'd missed simply by reading a transcript, a key memo, or someone's "takeaways" summary.
Meetings are a classic example of a central-command push technology that should be replaced by an opt-in/pull technology. Quarterly all-hands meetings, in particular, are surreal in the way they evoke 1980s business culture. Can we get beyond the 1980s? Just post what I need to know somewhere. Drop me a memo. I'll look at it when it's time for me to look at it. When I can spare some time to be nonproductive.
For much the same reason that eight one-hour naps interspersed with short periods of wakefulness do not add up to a full night's sleep, a succession of 15- and 20-minute periods of work (in an office environment where you're interrupted by texts, phone calls, e-mails, IM, meetings, coworkers coming in to see you, bosses checking on you, trips to the coffee machine, and so forth) seldom adds up to a day's work. To get serious work done requires long periods of uninterrupted private time. This is why so many people say that their favorite place to get serious work done is the back porch, the basement, the attic, the shower, the library, the park, Starbucks, etc., or (if it's indeed the office) the office after everyone leaves to go home, or before everyone arrives in the morning. No one counts as their most productive environment the office during normal working hours.
Through technologies like Webex and Go-to-Meeting, we're now able to introduce productivity losses even to people working from home.
Toward the end of his TED talk, Jason Fried suggests, as an exercise (not as a policy), that any manager who has a meeting planned for Monday simply cancel (and not reschedule) the meeting and see what happens. Does the world come to an end? Do sales drop? Do people stop getting work done? Or, to the contrary, does the cancellation of a one-hour meeting involving ten people result in ten additional person-hours of productivity, reclaimed for free?
I wish Fried would have taken his own logic to the ultimate conclusion, which is that meetings (particularly regularly scheduled staff meetings) should simply be abolished, outlawed.
Over the years, I've worked for small, medium, and large companies, mostly in software development, both as an individual contributor and as a manager. As a manager at Novell, I attended an average of three meetings a week, or about 1000 meetings total. At Adobe, I attended a weekly status meeting (which was often cancelled, to no ill effect whatever) plus one or two division-level all-hands meetings per quarter, and one to two company-level all-hands meetings per quarter. I can say without reservation that all meetings I ever attended at Novell and Adobe, except for some one-on-one and impromptu 3- or 4-person meetings, were utterly without effect, aside from the undeniable effect of resetting everyone's productivity to zero at the time of the meeting.
You might ask yourself, if you're involved in setting up meetings, what it says about the fragility of your company or the ineffectuality of your organization (or your management style) if the success of the enterprise is somehow compromised by not holding that weekly status meeting, or that monthly planning meeting, or that quarterly all-hands meeting that you (vainly, stupidly) imagine is so necessary to inspiring team spirit and getting everyone "on the same page." In all my time at big companies (and smaller ones too) I can't remember a single meeting being indispensible (except, as I say, for a few one-on-one or two-on-one events). The meetings invariably distracted me from getting real work done. The bigger the meeting, the worse the productivity loss.
Whenever I missed a meeting, I found out later that I either missed nothing substantive whatsoever, or I could easily (and in a few minutes' time) catch up on whatever I'd missed simply by reading a transcript, a key memo, or someone's "takeaways" summary.
Meetings are a classic example of a central-command push technology that should be replaced by an opt-in/pull technology. Quarterly all-hands meetings, in particular, are surreal in the way they evoke 1980s business culture. Can we get beyond the 1980s? Just post what I need to know somewhere. Drop me a memo. I'll look at it when it's time for me to look at it. When I can spare some time to be nonproductive.
Saturday, August 09, 2014
Hachette vs. Amazon: A Trader's Perspective
Hachette and Amazon are locked in a pricing dispute that's gone on for some time now. It may eventually be resolved, although frankly, it could well go unresolved, too; Hachette doesn't have to cave in to Amazon's demands. Hachette may well hold its hard-line position forever (and suffer the consequences in terms of poor placecment on Amazon's sites, shipping delays by Amazon on Hachette books, and so forth) . But many people believe the dispute will eventually be resolved. Is there a way for investors to come out ahead?
Bear in mind, none of what follows constitutes investing advice. I mention it as a hypothetical scenario.
Here's how some investors would play this situation. We know that if the dispute is suddenly resolved, there's a good chance Amazon shares will go up in value. But there's also a chance Hachette will pull the plug on Amazon and announce a deal with another (r)etailer, in which case Amazon shares would likely plummet. A resolution to the dispute could send AMZN shares sharply higher, or sharply lower.
This is a classic example of a situation in which an options trader would hope to make money on a straddle. A straddle is where you buy a call option and a put option (one is a bullish bet; the other a bearish bet), simultaneously, at the same strike price.
Let's say you think the dispute will be resolved in the next 30 days. You might decide to buy an October AMZN call option for $16.05 (full contract price: $1605, 100 shares), at the $315 strike. An October 2014 put is $13.95. Total cost: $3000. (These prices are based on the 8 Aug 2014 closing prices.)
If the Hachette dispute is resolved and the dispute resolution moves AMZN share price by $30 (which is not unreasonable; it's less than 10% of Amazon's current share price), one option will move into the money and the other will move out of the money. Currently, a $30 into-the-money move on the call makes it worth $37.30 while a $30 out move makes its worth $5.25. On the put, a $30 move makes it worth either $33.20 (if the stock goes down $30) or $4.55 (if the stock moves up). In one case you end up with a total of $4185 and in the other case you end up with $3845. Your initial investment was $3000.
If you think the dispute won't resolve in September (and there's certainly no indication that it will), you could choose to buy January options. The prices of the options will be higher but the straddle would still work, in theory. The problem with all options contracts, though, is that they suffer substantial price decay over time (for January contracts, figure roughly ten to twelve cents a share per day, per option). Bottom line, 40 days' worth of waiting could cost you $800+ in decay (on one call and one put). So there's a substantial penalty for having to wait. And it looks like this dispute could go on for some time. In fact, it could go on forever, since the parties are not obligated to reach an agreement.
Also, bear in mind there's no guarantee AMZN stock price will move $30/share when the Hachette dispute is resolved (if indeed it ever is resolved). It could move a lot less, or not at all.
So use caution. This is far from a risk-free strategy.
Disclaimer: Consult your investment advisor (I am not one) before doing any trades.
Bear in mind, none of what follows constitutes investing advice. I mention it as a hypothetical scenario.
Here's how some investors would play this situation. We know that if the dispute is suddenly resolved, there's a good chance Amazon shares will go up in value. But there's also a chance Hachette will pull the plug on Amazon and announce a deal with another (r)etailer, in which case Amazon shares would likely plummet. A resolution to the dispute could send AMZN shares sharply higher, or sharply lower.
This is a classic example of a situation in which an options trader would hope to make money on a straddle. A straddle is where you buy a call option and a put option (one is a bullish bet; the other a bearish bet), simultaneously, at the same strike price.
Let's say you think the dispute will be resolved in the next 30 days. You might decide to buy an October AMZN call option for $16.05 (full contract price: $1605, 100 shares), at the $315 strike. An October 2014 put is $13.95. Total cost: $3000. (These prices are based on the 8 Aug 2014 closing prices.)
If the Hachette dispute is resolved and the dispute resolution moves AMZN share price by $30 (which is not unreasonable; it's less than 10% of Amazon's current share price), one option will move into the money and the other will move out of the money. Currently, a $30 into-the-money move on the call makes it worth $37.30 while a $30 out move makes its worth $5.25. On the put, a $30 move makes it worth either $33.20 (if the stock goes down $30) or $4.55 (if the stock moves up). In one case you end up with a total of $4185 and in the other case you end up with $3845. Your initial investment was $3000.
If you think the dispute won't resolve in September (and there's certainly no indication that it will), you could choose to buy January options. The prices of the options will be higher but the straddle would still work, in theory. The problem with all options contracts, though, is that they suffer substantial price decay over time (for January contracts, figure roughly ten to twelve cents a share per day, per option). Bottom line, 40 days' worth of waiting could cost you $800+ in decay (on one call and one put). So there's a substantial penalty for having to wait. And it looks like this dispute could go on for some time. In fact, it could go on forever, since the parties are not obligated to reach an agreement.
Also, bear in mind there's no guarantee AMZN stock price will move $30/share when the Hachette dispute is resolved (if indeed it ever is resolved). It could move a lot less, or not at all.
So use caution. This is far from a risk-free strategy.
Disclaimer: Consult your investment advisor (I am not one) before doing any trades.
Wednesday, August 06, 2014
A Workflow Wish List
In my day job, I evaluate content management systems (enterprise-grade systems, not light-duty blogware), and I get to see and touch a lot of so-called workflow systems. This is the part of the system that (for example) routes documents to people who can approve them (or not) before they're pushed out to a web site.
What I find is that almost all enterprise-grade content management systems have a workflow subsystem of some kind, but it's typically not well implemented. I understand the reason for this. Workflow, like so many things in life, is easy to do, hard to do well. It's hard to make a good workflow system. That's the bottom line.
Still, there are certain things I like to see. (If you're in the market for an enterprise-grade CMS, here's your checklist.)
1. A good visual designer. I like to be able to plop new activities down on a canvas, in arbitrary locations (and give them arbitrary names), and move them around, then draw links between them.
2. There should be a small number of easy-to-understand activity types.
3. I should be able to see what the input and output documents (including flow metadata) are for any given activity in the flow. Ideally, every activity should be capable of taking one or more XML documents in and spitting one or more XML documents out.
4. I should be able to draw arrows backwards from any activity to an upstream activity. In other words, the system shouldn't just support acyclic graphs.
5. Each activity should support the notion of a timeout value.
6. Each activity should support the notion of a retry count.
7. Each activity should support the notion of a retry interval.
8. The visual designer should let me (through some kind of easy gesture, whether a mouse click, doubleclick, right-click, etc.) expose an editable property sheet for the activity, where I can inspect and set values like timeout and retry interval.
9. I should be able to specify a logging activity at each step of the flow. The more configurable the logging activity, the better.
10. I should be able to specify a fault handler for any given activity. Including a default fault handler.
11. There should be an easy facility in the GUI for attaching JavaScript logic to any step. (And please don't invent a new scripting language. Use something standard. That means JavaScript.) Ideally, each step in the flow will have event handlers to which I can attach my own scripts. Scripts should have access to any XML that travels with the flow.
12. Ideally (and I know this is a lot to ask), the design-time tool will have an animation capability (for testing workflows) so that I can do certain kinds of QA testing right in the design environment.
The real point of Item 12 is that it should be easy to test a workflow and debug it. Very seldom is this actually the case, even in systems costing $50,000.
In addition to the 12 items above, a system that really "goes the distance" will also have some way to delegate approval tasks.
If all workflow systems supported these features, my job would be easier, and (needless to say) so would the jobs of the people who buy and use these systems. And that's the real point.
What I find is that almost all enterprise-grade content management systems have a workflow subsystem of some kind, but it's typically not well implemented. I understand the reason for this. Workflow, like so many things in life, is easy to do, hard to do well. It's hard to make a good workflow system. That's the bottom line.
Still, there are certain things I like to see. (If you're in the market for an enterprise-grade CMS, here's your checklist.)
1. A good visual designer. I like to be able to plop new activities down on a canvas, in arbitrary locations (and give them arbitrary names), and move them around, then draw links between them.
2. There should be a small number of easy-to-understand activity types.
3. I should be able to see what the input and output documents (including flow metadata) are for any given activity in the flow. Ideally, every activity should be capable of taking one or more XML documents in and spitting one or more XML documents out.
4. I should be able to draw arrows backwards from any activity to an upstream activity. In other words, the system shouldn't just support acyclic graphs.
5. Each activity should support the notion of a timeout value.
6. Each activity should support the notion of a retry count.
7. Each activity should support the notion of a retry interval.
8. The visual designer should let me (through some kind of easy gesture, whether a mouse click, doubleclick, right-click, etc.) expose an editable property sheet for the activity, where I can inspect and set values like timeout and retry interval.
9. I should be able to specify a logging activity at each step of the flow. The more configurable the logging activity, the better.
10. I should be able to specify a fault handler for any given activity. Including a default fault handler.
11. There should be an easy facility in the GUI for attaching JavaScript logic to any step. (And please don't invent a new scripting language. Use something standard. That means JavaScript.) Ideally, each step in the flow will have event handlers to which I can attach my own scripts. Scripts should have access to any XML that travels with the flow.
12. Ideally (and I know this is a lot to ask), the design-time tool will have an animation capability (for testing workflows) so that I can do certain kinds of QA testing right in the design environment.
The real point of Item 12 is that it should be easy to test a workflow and debug it. Very seldom is this actually the case, even in systems costing $50,000.
In addition to the 12 items above, a system that really "goes the distance" will also have some way to delegate approval tasks.
If all workflow systems supported these features, my job would be easier, and (needless to say) so would the jobs of the people who buy and use these systems. And that's the real point.
Monday, July 07, 2014
Complementing Codons: A Riddle Solved?
For some time now, I've been puzzling over a fairly big riddle, and I think an answer is becoming clear.
The riddle is: Why, in so many organisms, do codons turn up at a rate approximately equal to the rate of usage of reverse-complement codons? Take a good look at the symmetry of the following graph (of codon usage rates in Frankia alni, a bacterium that causes nitrogen-fixing nodules to appear on the roots of alder plants).
This graph of codon freequencies in F. alni shows the strange correspondence (which I've commented on before) between codons and their reverse complements. If GGC occurs at a high frequency (which it does, in this organism's protein-coding genes), the reverse-complement codon GCC is also high in frequency. If a codon (say TAA) is low, its reverse complement (TTA) is also low.
I've seen this relationship in many organisms (hundreds, by now); too often to be by chance. The question is why codons so often occur in direct proportion to the rate of occurrence of corresponding reverse complements. It doesn't make sense. The notion of base pairing should not come into play when an organism (or natural selection) chooses codons, because all of a protein gene's codons are collinear, on one and the same strand of DNA; base-pairing rules do not play a role in choosing codons.
Or do they?
I think, in fact, base-pairing does a play a role. The answer is obvious, when you think about it. We know that (single-stranded) RNA, if properly constructed, will fold back on itself to form loops and stems: complementary regions will base-pair with each other. Certainly, if secondary structure in mRNA is widespread, it will have consequences for codon selection. Codons in "stem" regions will complement each other.
And so it's fairly obvious, it seems to me, that a reasonable explanation for the riddle of "reverse complement codon selection" is that secondary structure of mRNA (or possibly single-stranded DNA) is far more pervasive than any of us might have suspected. It's pervasive enough to affect codon usage in the way shown in the graph above.
Is there any evidence that secondary structure is widespread? I think there is. If you go looking for complementary sequences inside protein-coding genes in F. alni, for example, you find many. As a probe, I had a script check for intragenic complementing length-12 sequences ("12-mers") in all 6,711 protein-coding genes of F. alni. (I presented pseudocode for the script in an earlier post.) Based on the known base-composition stats of the organism, I expected to find 5,440 such 12-mer pairs by chance. What I found was 6,319 such pairs located in 2,689 genes. (When I looked for complementing 13-mers, I expected to find 1,467 occurring by chance, but instead found 3,592 such pairs in 2,086 genes.) In a previous post, I showed similar results for Sorangium cellulosum (a bacterium with an enormous genome). Previous to that, I showed similar results for Mycoplasma genitalium (which has one of the tiniest genomes of any free-living microbe).
But do these regions of internal complementarity affect codon choice? Indeed they do. When I looked at the top 40% of F. alni genes in terms of the number of internal complementing 12-mers, I found a Pearson correlation between codons and reverse-complement codons of 0.889. Looking at the bottom 60% of genes, I found the correlation to be lower: 0.766. These numbers, moreover, were virtually unchanged (0.888 and 0.763) when I re-calculated the Pearson coefficients using expectation-adjusted codon frequencies. That is to say, I used base composition stats to "predict" the frequencies of each codon, then I subtracted the predicted number from the actual number, for each codon. (Example: The frequency of occurrence of guanine, in F. alni protein genes, is 0.35794, and the frequency of cytosine is 0.37230, hence the expected frequency of GCC is 0.35794 * 0.37230 * 0.37230, or 0.04961. The actual frequency is 0.07802.) The correlation still existed, practically unchanged, after adjusting for expected rates of occurrence of codons.
The bottom line is that the correlation between the frequency of occurrence of a given codon and the frequency of its reverse-complement codon, which is otherwise very hard to explain, is quite readily explained by the presence, in protein-coding genes, of a significant amount of single-strand complementarity (of the type that could be expected to give rise to secondary structure in mRNA). On this basis, it's reasonable to suppose that conserved secondary structure is actually a major driver of codon usage bias.
Please show this post to your biogeek friends; thanks!
The riddle is: Why, in so many organisms, do codons turn up at a rate approximately equal to the rate of usage of reverse-complement codons? Take a good look at the symmetry of the following graph (of codon usage rates in Frankia alni, a bacterium that causes nitrogen-fixing nodules to appear on the roots of alder plants).
![]() |
| Codon usage in Frankia alni. Notice that a given codon's usage corresponds, roughly, to the rate of usage of the corresponding reverse-complement codon. |
This graph of codon freequencies in F. alni shows the strange correspondence (which I've commented on before) between codons and their reverse complements. If GGC occurs at a high frequency (which it does, in this organism's protein-coding genes), the reverse-complement codon GCC is also high in frequency. If a codon (say TAA) is low, its reverse complement (TTA) is also low.
I've seen this relationship in many organisms (hundreds, by now); too often to be by chance. The question is why codons so often occur in direct proportion to the rate of occurrence of corresponding reverse complements. It doesn't make sense. The notion of base pairing should not come into play when an organism (or natural selection) chooses codons, because all of a protein gene's codons are collinear, on one and the same strand of DNA; base-pairing rules do not play a role in choosing codons.
Or do they?
I think, in fact, base-pairing does a play a role. The answer is obvious, when you think about it. We know that (single-stranded) RNA, if properly constructed, will fold back on itself to form loops and stems: complementary regions will base-pair with each other. Certainly, if secondary structure in mRNA is widespread, it will have consequences for codon selection. Codons in "stem" regions will complement each other.
And so it's fairly obvious, it seems to me, that a reasonable explanation for the riddle of "reverse complement codon selection" is that secondary structure of mRNA (or possibly single-stranded DNA) is far more pervasive than any of us might have suspected. It's pervasive enough to affect codon usage in the way shown in the graph above.
Is there any evidence that secondary structure is widespread? I think there is. If you go looking for complementary sequences inside protein-coding genes in F. alni, for example, you find many. As a probe, I had a script check for intragenic complementing length-12 sequences ("12-mers") in all 6,711 protein-coding genes of F. alni. (I presented pseudocode for the script in an earlier post.) Based on the known base-composition stats of the organism, I expected to find 5,440 such 12-mer pairs by chance. What I found was 6,319 such pairs located in 2,689 genes. (When I looked for complementing 13-mers, I expected to find 1,467 occurring by chance, but instead found 3,592 such pairs in 2,086 genes.) In a previous post, I showed similar results for Sorangium cellulosum (a bacterium with an enormous genome). Previous to that, I showed similar results for Mycoplasma genitalium (which has one of the tiniest genomes of any free-living microbe).
But do these regions of internal complementarity affect codon choice? Indeed they do. When I looked at the top 40% of F. alni genes in terms of the number of internal complementing 12-mers, I found a Pearson correlation between codons and reverse-complement codons of 0.889. Looking at the bottom 60% of genes, I found the correlation to be lower: 0.766. These numbers, moreover, were virtually unchanged (0.888 and 0.763) when I re-calculated the Pearson coefficients using expectation-adjusted codon frequencies. That is to say, I used base composition stats to "predict" the frequencies of each codon, then I subtracted the predicted number from the actual number, for each codon. (Example: The frequency of occurrence of guanine, in F. alni protein genes, is 0.35794, and the frequency of cytosine is 0.37230, hence the expected frequency of GCC is 0.35794 * 0.37230 * 0.37230, or 0.04961. The actual frequency is 0.07802.) The correlation still existed, practically unchanged, after adjusting for expected rates of occurrence of codons.
The bottom line is that the correlation between the frequency of occurrence of a given codon and the frequency of its reverse-complement codon, which is otherwise very hard to explain, is quite readily explained by the presence, in protein-coding genes, of a significant amount of single-strand complementarity (of the type that could be expected to give rise to secondary structure in mRNA). On this basis, it's reasonable to suppose that conserved secondary structure is actually a major driver of codon usage bias.
Please show this post to your biogeek friends; thanks!
Wednesday, July 02, 2014
Pearson vs. Spearman: A Tale of Two Correlations
One of the most rudimentary yet most valuable types of statistics you can calculate for two data sets is their correlation value. Two widely used correlation methods are the Pearson method (which is what we normally think of when we think "correlation coefficient"), and the Spearman Rank Coefficient method. Which is which? When would you use one rather than the other?
The Pearson method is based on the idea that if Measurement 1 tracks Measurement 2 (whether directly or inversely), you can get some idea of how "linked" they are by calculating Pearson's r (the correlation coefficient), which is a quantity derived from the products of the differences between each M1 and its average and each M2 and its average, duly normalized. The exact formula is here. Rather than talk about the math, I want to talk about the intuitive interpretation. The crucial point is that Pearson's r will be a real value between minus-one and plus-one. Minus-one means the data are negatively correlated, like CEO performance and pay. Okay, that was a lame example. How about age and beauty? No. Wait. That's kind of lame too. How about the mass of a car and its gas mileage? One goes up, the other goes down. That's negative correlation.
The statistical significance of a correlation depends on the magnitude of the correlation and the number of data points used in its computation. To get an idea of how that works, play around with this calculator. Basically, a low correlation value can still be highly significant if there are enough data points. That's the main idea.
Spearman's rank coefficient is similar to Pearson in producing a value from -1 to +1, but you would use Spearman (instead of Pearson) when the rank order of the data are important in some way. Let's consider a couple of examples. A hundred people take a standardized test (like the SAT or GRE), producing 100 English scores and 100 Math scores. You want to know if one is correlated with the other. Pearson's method is the natural choice.
But say you hold a wine-tasting party and you have guests rate ten wines on a decimal scale from zero to ten. You want to know how the judges' scores correlate with the wines' prices. Is the best-tasting wine the most expensive wine? Is the second-best-tasting wine the second-most-expensive? Etc. This is a situation calling for Spearman rather than Pearson. It's perfectly okay to use Pearson here, but you might not be as satisfied with the result.
In the Spearman test, you would sort the judges' scores to obtain a rank ordering of wines by the "taste test." Then you would calculate scores using the Spearman formula, which values co-rankings rather than covariances per se. Here's the intuitive explanation: Say the most expensive wine costs 200 times more than the cheapest wine. Is it reasonable to expect that the most expensive wine will taste 200 times better than the cheapest wine? Will people score the best wine '10' and the worst wine '0.05'? Probably not. What you're interested in is whether the taste rankings track price in an orderly way. That's what Spearman is designed to find out.
If the taste scores are [10,9.8,8,7.8,7.7,7,6,5,4,2] and the wine prices are [200,44,32,24,22,17,15,12,8,4], the Spearman coefficient (calculator here) will be 1.0, because the taste scores (in rank order) exactly tracked the prices, whereas Pearson's r (calculator here) will be 0.613, because the taste scores didn't vary in magnitude the same way that the prices did. But say the most expensive wine comes in 4th place for taste. In other words, the second array is [44,32,24,200,22,17,15,12,8,4] but the first array is unchanged. Now Spearman gives 0.927 whereas Pearson gives 0.333. The Spearman score achieves statistical significance (p<.001) whereas Pearson does not.
There are plenty of caveats behind each method, which you can and should read up on at Wikipedia or elsewhere. But the main intuition is that if rank order is important for your data, consider Spearman. Otherwise Pearson will probably suffice.
The Pearson method is based on the idea that if Measurement 1 tracks Measurement 2 (whether directly or inversely), you can get some idea of how "linked" they are by calculating Pearson's r (the correlation coefficient), which is a quantity derived from the products of the differences between each M1 and its average and each M2 and its average, duly normalized. The exact formula is here. Rather than talk about the math, I want to talk about the intuitive interpretation. The crucial point is that Pearson's r will be a real value between minus-one and plus-one. Minus-one means the data are negatively correlated, like CEO performance and pay. Okay, that was a lame example. How about age and beauty? No. Wait. That's kind of lame too. How about the mass of a car and its gas mileage? One goes up, the other goes down. That's negative correlation.
The statistical significance of a correlation depends on the magnitude of the correlation and the number of data points used in its computation. To get an idea of how that works, play around with this calculator. Basically, a low correlation value can still be highly significant if there are enough data points. That's the main idea.
Spearman's rank coefficient is similar to Pearson in producing a value from -1 to +1, but you would use Spearman (instead of Pearson) when the rank order of the data are important in some way. Let's consider a couple of examples. A hundred people take a standardized test (like the SAT or GRE), producing 100 English scores and 100 Math scores. You want to know if one is correlated with the other. Pearson's method is the natural choice.
But say you hold a wine-tasting party and you have guests rate ten wines on a decimal scale from zero to ten. You want to know how the judges' scores correlate with the wines' prices. Is the best-tasting wine the most expensive wine? Is the second-best-tasting wine the second-most-expensive? Etc. This is a situation calling for Spearman rather than Pearson. It's perfectly okay to use Pearson here, but you might not be as satisfied with the result.
In the Spearman test, you would sort the judges' scores to obtain a rank ordering of wines by the "taste test." Then you would calculate scores using the Spearman formula, which values co-rankings rather than covariances per se. Here's the intuitive explanation: Say the most expensive wine costs 200 times more than the cheapest wine. Is it reasonable to expect that the most expensive wine will taste 200 times better than the cheapest wine? Will people score the best wine '10' and the worst wine '0.05'? Probably not. What you're interested in is whether the taste rankings track price in an orderly way. That's what Spearman is designed to find out.
If the taste scores are [10,9.8,8,7.8,7.7,7,6,5,4,2] and the wine prices are [200,44,32,24,22,17,15,12,8,4], the Spearman coefficient (calculator here) will be 1.0, because the taste scores (in rank order) exactly tracked the prices, whereas Pearson's r (calculator here) will be 0.613, because the taste scores didn't vary in magnitude the same way that the prices did. But say the most expensive wine comes in 4th place for taste. In other words, the second array is [44,32,24,200,22,17,15,12,8,4] but the first array is unchanged. Now Spearman gives 0.927 whereas Pearson gives 0.333. The Spearman score achieves statistical significance (p<.001) whereas Pearson does not.
There are plenty of caveats behind each method, which you can and should read up on at Wikipedia or elsewhere. But the main intuition is that if rank order is important for your data, consider Spearman. Otherwise Pearson will probably suffice.
Subscribe to:
Posts (Atom)



