Categories
Weblogging Writing

Community member or writer?

Recovered from the Wayback Machine.

Don Park published a post today titled “Eye of the Beholder”. It has a photo that had originally been at Marc Canter’s site, associated with a party that Marc was putting together for folks. However, some people took offense at the photo and Marc took it down.

Don wrote:

This is the picture Marc pulled off his blog because Danah, along with Joi and others, thought it was tasteless. I am putting it up here because I don’t like seeing people, particularly bloggers, pressured into political-correctness. As far as I am concerned, a blog is not a taste test.

Danah Boyd (who is figuring too much in my posts lately so this will be the last time in a good long while where I will shine the spotlight on her) wrote:

How exciting – Marc Canter is organizing a party at Etech. Of course, in announcing it, he sweetly through up a picture that offends me at my core. “It appears that Jenn is quite a partier herself.” refers to an image where a grinning man is holding on to a bent over woman with a face that’s either in ecstasy or agony. But she’s down on all fours, submissive to a man in a Santa suit. C’mon now. How welcoming is this party to the women???

In comments, Adina Levin wrote:

Marc is being a jerk here. No reason to let this tastelessness make this place be less like home for us.

Joi wrote:

I agree. That’s pretty tasteless Marc..

Cory Doctorow wrote:

What they said.

The reason I pulled these particular comments out is that I believe these are all people who attended the Digital Democracy Teach-In on Monday.

These are the people that talked about how weblogging was different than Big Media, because it puts publishing in the hands of the people. I have to presume they think this is a good thing because webloggers can write what they want, and aren’t censored. Unlike Big Media, we aren’t accountable to an editor, or big companies, or important politicians.

But I guess we’re accountable to each other, and that’s the most dangerous censorship of all – it’s the censorship of the commons.

I didn’t care one way or another about Marc’s photo. I thought it was two people at a party, mugging for the camera by imitating those fake porn shots that we all see pop up into our face with annoying regularity. Marc knew the woman, the photo was at the place where the party was planned, so I’m assuming that’s why he posted the pic.

Would it have stopped me from going to the party? Not a bit of it. My femininity is not that fragile. If anything, I probably would have brought a spiked dog collar as a host gift for Marc.

I’m not writing to defend Marc –he’s a big boy and can defend himself. I’m not even, necessarily writing to support Don, though I admire him for taking this stand. I’m writing because it’s so much in line with what’s been on my mind lately about writing and community. Writing, community, and making choices.

(Note that Don has since taken down the post. As a fellow community member, I should pull his quote. As a writer, I should leave it. Ouroboros still lives within weblogging, I’m glad to see.)

Let me digress for a few minutes. In January, a close friend who also happens to be a weblogger told me that I sought reassurance in my weblog and among my friends too much. Paraphrasing what he wrote, he asked me why do I say the things I do at times? Why do I seek reassurance so much? Is it that I need people saying, “No, no, Shelley! Stay! We love you!”

Ouch! Damn! Zing!

I cringed when I read the words. For the next couple of weeks I wavered about like a drunken sailor not used to the roll of the land beneath my feet. I was angry at the person, furious! I was hurt, crushed! I wasn’t going to write to him again. That will show him. I’ll stop writing to him, make him pay. Yeah, that will teach him to be…to be…what? Honest? Blunt? A good friend who doesn’t tell you what you want to hear, but what you need to hear?

If I am nothing else, I am, at least, honest with myself. (A trait I don’t necessarily recommend, either – its badly overrated, being honest with oneself. One can go an entire life happy as a grig, never being honest with oneself.)

My friend was right. I can go back now and read certains posts and emails and see woven throughout them a plea, no, a demand, for reassurance. Thought the words weren’t there specifically, the meaning was loud and clear: “Please tell me you love me!” “Please tell me you like (me, my writing, my photos, my tech)!” “I have a cute cat, see?” “Please, please, please!”

If you feel a personal attachment to me, it must have been exhausting. About as exhausting as me trying to please all of you.

We all need reassurance at times. Bad stuff happens and we just want people to say, “it’s okay. You’ll be okay.” And wanting attention isn’t bad. The same can be said for wanting to get compliments, or to spark conversations – it is a perfectly human behavior. We all want to feel part of a community.

There is a line, though, where ‘community member’ and ‘writer’ intersect, and sometimes to be the one, you can’t regard the other. I’ve written about it before, but I’m still coming to terms with it.

Not long ago a conversation arose about weblog categorization. I deplore the concept, especially if you’re categorized without your consent. How dare anyone bit bucket us? But I think I was wrong about one aspect of this conversation: I think there is a very real difference between having a personal journal, and being a writer, and it has nothing to do with the style or the quality of the writing or the mechanics – it has to do with your own head.

Do you write to be part of a community? Or do you write to write, and the community part either happens, or doesn’t? Depending on where you’re at within this space can influence your writing. If community causes you to alter your writing–not to say something you think should be said, or to write a certain way to get attention–then you are betraying yourself as a writer. Worse. Lose yourself enough in the community and you’ll start to do what I did: embed a tiny demand for reassurance and approval in everything you write, until you exhaust both yourself and everyone who reads you.

Now, Marc’s photo isn’t really anything to rally around as a cry for each of us to exert our independence, but it is symptomatic of the community’s influence on its members. There is nothing inherently wrong with this, or with choosing to be community member first, writer second. It’s when the lines get blurred that we start losing a lot of honesty. Honesty, not truth, an important distinction, because here’s nothing false about not speaking out, but there’s nothing honest about it, either.

We talk about the power of this medium, and how its going to be an influence in politics and journalism. “Power to the People!” Yet it is also the most vulnerable to pressure from the ‘community’, and therefore the least reliable. Weblogging as a community tool is no different than any other social organization – there will always be subtle, or not so subtle, clues about how you should adjust your behavior to stay a part of the community. Adhere, and you’ll be rewarded; ignore them enough, and eventually you’ll find yourself cut adrift.

The best damn thing that can happen to many of us is being cut adrift by our communities. It’s wonderfully liberating. It also frees us to find new communities where we don’t have to choose between being a member, and being a writer. We may even discover that the community we end up a part of of isn’t much different than the one we left, because the only member cutting us loose, is ourselves.

Categories
Technology Writing

Leatherwood Tech: Open, share, blog?

Recovered from the Wayback Machine.

The primary focus of Leatherwood Online is on what’s in the pages, not on the technology behind the pages. Moving parts for the site are kept to a minimum and preferably hidden, as much as possible.

Some of the technology is directly accessible by the readers, such as movies, and the forum, but much is behind the scenes: providing ad review sites for the customers and file uploading for the photographers, that sort of thing. After all, trying to send an 18 MB file through the email nowadays isn’t going to make through one filter or another.

Allan is the man behind the user interface and all the page look and feel. My job was to provide help putting together the moving parts necessary for the release, and then help out as we go forward with more ambitious projects. Putting the bits together has been fun at times, considering that Allan is in Tasmania and 17 hours ahead of me in time, but we managed.

“What time is it where you are? Shouldn’t you be in bed?”

“I never sleep, Allan.”

Reminds me of the good old dot-com days.

We’re not into building from scratch. Rather than code any specific component of the overall system, what would happen is that Allan would ask for pecific functionality and I would then shop around at the open source and freeware/shareware sites for tools, utilities, and scripts, usually coded in PHP or Perl. Once I had some good candidates, I install them and test them, and then have Allan try the products. He would either ask for modifications or accept as is and we would load it on to the site.

If there was any user interface to the tool, such as the ad approval pages, that was Allan’s baby. I enjoy playing around with the look and feel of my own sites, but I am not a front-end person.

Now, as new and more sophisticated functionality is added, very gradually, to the site, we’ll continue with this approach – open source as much as possible, small components, specific functionality, and minimum moving parts.

You may have noticed that a weblogging tool is not used for any of the pages; surprising considering that both Allan and I are webloggers. Early on we did discuss using Movable Type, but it was about that time that some of the security and spammer problems started becoming a real issue, and Allan, rightfully so, did not want this kind of vulnerability at Leatherwood. In addition, we weren’t sure when Movable Type 3.0 was going to be out, and couldn’t hold the work waiting for it. The decision was made to move ahead with static pages, use the forum for reader interfaction, and then look at implementing main category pages such as the Travel page or the Tastes section after the opening, using a weblogging tool. These types of pages are very dynamic and change weekly and a CM tool would be very helpful.

A major decision was whether to go dynamic or static pages. At this time we are looking at dynamic weblogging tools, with functionality provided through PHP/MySQL. Though dynamic pages can be prohibitive with sites that have heavy traffic, we’re not expecting Leatherwood Online to be Slashdotted every day. Well, at least, not right away. Rebuild times, particularly with a page that will allow reader interaction is a concern and makes dynamic paging an attractive alternative. (And as we’ll see later, data caching does allay some of the performance concerns.)

We also picked PHP over Perl, because most of the other functionality at the site is PHP-based. The reason for this is primarily because PHP, like Microsoft’s equivalent product, ASP, is a very readable technology. Though PHP provides enough functionality to meet the needs of most tasks, it’s still very approachable. It’s fairly simple to see what’s happening in the code, and to make alterations and adjustments, even if you don’t have much of a programmer’s background.

If you can use JavaScript, you should be able to program with PHP.

Perl, on the other hand, can be very cryptic and hard to follow even for very experienced programmers. In fact its claim to fame is that you can code an entire content management system in 20 lines of code or less. But it will be the most complex 20 lines of code you’ll ever read.

Based on these two critera–PHP and dynamic–two weblogging tools we’re looking at are WordPress and pMachine’s new ExpressionEngine. WordPress is open source, and free; Expressengine is closed source and commercial (and has a hefty price tag – 199.00 US for a year of updates, costs after that year can’t be determined from site at this time).

I installed WordPress on my site and created a simplified version of this site, and it only took me about an hour to install and port my posts and comments, as well as re-create some of the look and feel. In addition, I also had some time to look around the code, and it is what I expected – very easy to follow, and quite simple to hack if needed. Best of all, if we did have to hack, and the hack’s a good one, we could work on re-incorporating that hack back into the WordPress source itself, so that it’s accessible to everyone.

I also installed ExpressionEngine, but this time using one of the provided templates that I rather liked. ExpressionEngine has 12 different templates you can use to start your site, but, like WordPress, provides templates that you can alter to suit your needs.

As you can see, both products are nice looking, and were surprisingly easy to install. Both provide support for trackback and comments, categories, multiple authors, and all the goodies we’ve come to expect from a weblogging tool. Most importantly, both provide security to prevent spamming and other problems.

ExpressionEngine has support for a ‘nonce’, which is a generated time-specific value that can’t be easily spoofed and should help prevent automated posting. In addition, it checks specific data points for duplication and prevents it, provides a configurable time interval between comment postings by the same person, trackback throttle, and, most importantly, site registration.

WordPress also has throttling included, as well as member registration. In addition, it has site moderation, which can delay posting of a comment pending approval.

ExpressionEngine makes use of template tags, but WordPress uses direct PHP function calls. However, both products seem to be fairly simple to modify for unique design. I would give WordPress a slight edge in simplicity.

ExpressionEngine is a commercial product and has a lot of bells and whistles, including nested categories, and emoticon support. Just think – all the smiley faces you can possible want. The big thing it has, though, is the ability to create dynamic database fields and have these incorporated into the tool. However, before you start drooling over that one, you have to remember that if you go beyond the traditional weblog data fields, you’re locking yourself into the tool.

WordPress may be a simpler product, but it also provides all you need, and more, in a weblogging tool, including multiple categories. But no nested categories, at least, at this time.

There is one killer difference between the products: WordPress has software to import your weblog tool data, such as pMachine, Blogger, and Movable Type. ExpressionEngine only imports pMachine data at this time. I’m not sure if this restriction is because the creators are still working on imports, or if its because they’d rather not have to deal with Movable Type users porting over and bitching about differences. Hard to say.

Bottom line: if you’re a Movable Type user and you want to migrate your data, ExpressionEngine is not an option at this time. Still, this isn’t a problem for Leatherwood Online because any weblog use at the site would be brand new.

Returning to issues related to dynamic pages. There are a couple of concerns folks have raised about dynamic weblog products that I wanted to address with both tools. The first has to do with search engine friendly URLs for dynamic pages. In particular, since we are webloggers, how will Google treat your pages?

To prevent the Googlebot from overloading a dynamic system, Google does restrict the bot’s activities when it sees a URL such as http://www.somesite.com/index.php?id=2&page=1. Also, URLs of this nature provide more information than you want about your system, and are, to be honest, ugly URLs.

An additional concern for many Movable Type users such as myself, is that we have adapted our weblog pages to be ‘cruft free URLs’, as discussed by Mark Pilgrim. Our pages are organized into sub-directories based on date or category, file extensions removed, keyword or post titles used for titles and so on. If a new tool doesn’t provide the same support, redirection will have to used on the pages, and for some of us that have been through more than one tool migration, that’s probably one redirection too many.

To support search engine friend URLs, modifications need to be made to the .htaccess page to rewrite requests, internally at the web server, from a friendly URL, such as http://burningbird.net/wp/fires/2004/02/09/this-is-a-test-title/, to the actual page request, similar to the above.

ExpressEngine does provide a search engine friendly url, which you can see at the test site. With this, search bots won’t know that the pages are dynamic, and bypass your content. ExpressEngine will also add the modifications for you to the .htaccess file. However, ExpressEngine does not provide the dynamics necessary to match the MT specific URL.

WordPress provides a utility that you can define a URL format and it provides the content to add to the .htaccess file. Simple copy and past. You can modify it, and the rewrite rules for .htaccess to fit your current URL configuration, and you shouldn’t have to need redirects once you port. If you look at the test WordPress site, you’ll see that my individual entries are search engine friendly, and backwards compatible with existing MT entries. Right now, page extensions aren’t supported, but this could be added by a couple of tweaks.

Unfortunately, my own configuration can’t be supported, but that’s more my fault, than any products. I liked using the primary category to define my URLs, in addition to adding a graphic to each item on the main page. However, categories, by their very nature, usually don’t have a ‘primary’ or ’secondary’ status – they just are. In WordPress, there is no functionality to mark a category as primary, and therefore I would have to hack something to get this.

A second aspect of a dynamic page system such as these is caching – caching local versions of just accessed data to make the next request of it that much quicker because it doesn’t make another round trip to the database. This has been an important aspect of major application servers such as Web Logic and Web Sphere, but I saw caching implemented with both WordPress and ExpressEngine.

ExpressEngine caches to a local file and WordPress caches to memory, but both should scale to meet the needs of even high profile sites. With the caching, the typical behavior of a reader – access a main page, access a specific item, comments, then return to main page– should be that much quicker because the data has already been pulled from the database.

So, what’s next. Well, Allan will have to review the products and make his choice on which system to use for Leatherwood, but for my own purposes, I am going to be porting all of my weblogs over to WordPress.

When I wrote Stepping Stones to a Safer Blog what I was doing, in effect, was acting like a human CVS (source code control) system. I was taking code from four different sources and mapping out a step by step plan to merge the efforts without adverse effects.

This type of activity is just no longer acceptable to me. Either I’ll go with a commercial product, and be able to hold the company accountable for the product’s security and reliability; or I’ll go completely open source and be able to not only code what needs to be fixed, but reincorporate that code back into the main product for others to benefit.

Either/or is acceptable, but not this half-in, half-out world of Movable Type. I have a lot invested in Movable Type, and a lot I like about it, but it’s time to move on.

Enough of this tech stuff. Following is another amazing photo I stole from Leatherwood, from a most unusual photo collection of local chefs.

Categories
Photography Writing

In my other life

Woman does not live by writing, photography, and passionate crusades, alone. I also like to keep my hands in the tech that’s been my bread and butter for two decades. However, since I now write for a (small) living, I restrict my tech activites to working with interesting people doing interesting things – with a little art, food, and adventure thrown in.

For the past few months, I’ve been helping a friend, or should I say cobber, Allan Moult (aka G’day Cobbers), as he opens up a gateway to Tasmania with an online publication called Leatherwood Online. This is the online version of a magazine that Allan was publisher/editor for years back, but has now found new life among the bytes.

The site doesn’t go online officially until Tuesday, but Allan is letting me release a sneak peek at it. I’ll have more to talk about the publication tomorrow, including our approach to only using open source and shareware technologies. For now, though, let me just point out a couple of tidbits I have a feeling you’re going to like.

First, there’s the photography. That hits you right off, as soon as you open the site. Leatherwood Online has some of the most beautiful photography I’ve seen, from all over Tasmania. For instance, one of the featured artists included with the premier of the magazine is Alan Moyle, with works from his Comic Series – photographs of stand up comics who have visited Tasmania. Following is just one of the photos from this amazing series (comic act known as Tripod):

Tripod

But Leatherwood isn’t just photos – it’s also writing about Tasmania, the people, and the places. Another article titled Taking on the Giant features Shipstern, a rugged, beautiful surfing spot that isn’t for the amateur. Included with the personal recountings of the author Dustin Hollick is photos of Shipstern, and a video taken by Stuart Gibson, who is currently making a documentary of this very impressive surfing spot.

You really have to see this video. And unlike every other site in the world – you don’t have to fill out a subscription form, first.

Shipstern

I’ve found out while working with Allan on this project that Tasmanians like food. They really like food, and it shows not only in their cooking but also in their pride of presentation of the food. Included in the magazine is a tasty article on the mushrooms grown and devoured in Tasmania, again with photos, which I can’t look at because they make me hungry.

Did I happen to mention that one of my most favorite foods in the world is sauteed mushrooms?

mushrooms

There’s a whole lot more, but I have to, out of vanity, point out a few items courtesy of yours truly. Oh, not photographs – I haven’t been to Tasmania, yet. Darn it. However, I do have an official title of Technology Architect, and an unofficial title of “the strange woman who comes by now and again”.

I’ve also been given title of Honorary Tasmanian, which made me eligible to contribute a section of this three author, three section story about the Giant Squid, a subject that’s been of interest to me for years.

And the words looks so grand with the photo of the star of the series:

Lovely, eh?

Allan’s done a terrific job of pulling together the best of Tasmania, and promises lots to come. More than that, though, he’s put together an online magazine the looks and acts the way online magazines should look and act.

There’s nary a popup ad in sight.

More tomorrow. And the rest of my own scanned in archived photos. No, not the following. I wish.

Photo by Geoff Murray

Categories
Just Shelley Technology Weblogging

Goodbye Trackback

A long time ago I started work on a concept called threadneedle, a way to track threads of communication through weblogging. However, when Movable Type introduced the concept of Trackback, I dropped work on Threadneedle because Trackback provided much of the functionality I was hoping for from the original concept.

I loved Trackback. Now when you go to a site, not only can you read comments associated with a writing, you can see who linked to the writing from their own efforts. A little bit of extra functionality and you could follow a ladder of links, hopping from node to node following the conversation through many, many generations. Trackback was my friend.

Trackback is now my enemy.

I received several hundred pings with one of my posts today, courtesy of our favorite crapflooder. The link he used as the source weblog for the entry was from a weblogger who had managed to close this person down at his server. The person was pissed. However, the weblogger who had pissed off our crapflooder had protections in place to stop our friend from slamming him, so he went elsewhere.

Here.

Since the crapflooder, who goes by Dv, couldn’t punish the other weblogger, Geoffrey, he punished me instead.

(You can see a conversation between these two in my comments, starting here. Should delete them, I suppose. It’s become kind of a fascinating study though.)

(Before you even think about putting anything in my comments about IP address, be aware that we’ve gone beyond one static IP a long time ago. No, this person used a proxy to get IP addresses, and the pings originated from many different addresses. )

There are some people who have been working this problem. I’ll link one that I know has Trackback filtering, Jacques Distler (I’m not sure if the other people have Trackback throttling yet so I won’t link them for that reason, not to exclude them). There are no easy solutions to this problem, except for having to break into the Movable Type perl modules in order to add or alter code.

Well, I am comfortable with Perl. However, I am hesitant to make the number of changes to the number of modules and templates in order to get this working. More importantly, though, is that this solution puts the non-techs at a real disadvantage. If they copy modules right and left, one from mt-blacklist here, another for trackback throttling there, when MT 3.0 comes out, they are basically going to have one miserable time upgrading. It is becoming a mess.

Now, I can still make changes and tell the non-techs to ‘wing it’ for now.

“This here is where we separate the Men from the Boys, pardner.”

*ptoi*

“Yessiree Bob. Now we gonna know who got Code, and who don’t. And everyman for hisself.”

*ptoi*

“And, hee, hee, hee, hee, if you little ladies ask real nice, why, I might come over and give you a hand. Hee, hee, hee. If you know what I mean.”

*ptoi*

Well, of course that’s not how it is, other than I’ve been dying to write a scene like that for just forever. No, the technical folks around here are more than willing to share code, and provide help – but they can only do so much. They can’t help every non-tech weblogger who is using Trackback. Not and have any kind of a life.

We need one set of code, one set of fixes, packaged so that all the non-techs have to do is copy the files into their folders.

Of course, while waiting for this event, I am a target and it makes sense for me to make the change regardless of other folks. The problem though is our friend, Dv. You see, the weblogger who’s tangled with Dv told me that if he can’t go for you, he’ll go for someone else connected to you. How does someone connect to you? Well, through Trackback, of course.

So I make a change to throttle the Trackback, and you innocently enough Trackback to one of my posts; you’ve just put yourself right into that big red bullseye.

Of course, Dv probably will get tired eventually and move on, but I’m not going to take that chance. The only alternative I have is to turn Trackbacks off for all my posts. Until there’s a formal fix packaged for distribution that can be applied by techs and non-techs alike, to all intents and purposes, Trackback is broke.

But then, all it’s doing is following the path set by it’s cousin. I’ve been out and about this week, and let’s face it – comments are a mess. I’ve seen sites that use a visual indicator you have to type in exactly or the post won’t go through. This stops the auto-spamming. Unfortunately, it also stops people with visual impairment.

Others are using mt-blacklist, or some version of 2.661, but now these are becoming hacked together, and the code is beginning to resemble what’s left of two cars driven into each other at very fast speeds. But at least it’s easy to tell if you’re running 2.661 – you get this redirect page when you click on the URL. That’s so the comment spammers don’t get Google juice.

But that was yesterday’s problem. What new problem do you have for me today?

I think we’re all getting tired. I was tired earlier this week, but I felt like I’d let people down not keeping up the good fight. But now, I think I have a lot of company. I’m sorry, but there’s no graceful and politically correct way to say this: This is fucking ridiculous.

When I was 19, I roomed with another woman in an apartment in Kirkland, Washington. I ended up going out with one of the guys next door who had just broken up with his girlfriend.

One day, a group of us, a small group, were sitting around drinking beers and making plans for a boat race the following weekend. There was a knock at the door, and when we opened it, two cops entered the apartment. They’d had a call that a wild party was going on in the apartment, and we were all using dope.

Of course, the cops could see that no wild party was going on, and there was no evidence of drug use. In fact, one even said that they wondered if they had the right apartment because it was so quiet when they came to the door. They did a quick look around, apologized, and left.

Years later, I found out that the cops had been called by my boyfriend’s ex-girlfriend, anonymously. I found out because she’d bragged to one of her friends about it.

What does this have to do with the problem? Not a damn thing, other than when Dv hit today for some reason I was reminded of my boyfriend’s ex and the call to the cops.

Categories
Just Shelley

Sweet and Sour

f all of the posts haven’t given you a clue, I had little sleep last night. My posting rate is inversely proportional to my lack of sleep.

Today is a good day in that my film scanner is on the way and I should get it on Friday. Additionally, the overall design and table of contents for the new book is exciting. Well, I’m excited. My editor is excited.

I also received a nice long email from an old friend this morning, and have enjoyed it immensely. I am reminded that I need to send a letter – a letter, not email – to another old friend in Boston. It’s also a beautiful day today, sunny and warm and a perfect day for a hike. Therein lies today’s hitch.

Due to my not following doctor’s orders, my foot is now in pretty bad shape, very swollen with some massive bruising. Not only can I not hike, I can’t walk down the stairs, which is frustrating. I can access the computer in bed, but it’s hard to type laying against bunched up pillows. All of you people who work on your computers in bed: how do you do it?

Thankfully, I can play movies on my computer and I have a nice stash of books from the library. Since I can’t go exploring outside, I’ve watched several new movies instead, including Pirates of the Caribbean and Whale Rider.

I had mixed feelings about Whale Rider. I thought it was a beautifully directed and acted movie, and I appreciated the narration from the perspective of the young girl, her matter of fact recital. I also really enjoyed the introduction to the Maori, and the humor that kept the film from being too painfully dramatic. If I didn’t like anything, I think it was the pat ending – I think the film would have been better if it had been ended about 5 to 10 minutes earlier. At which point exactly I can’t say without giving away the movie details.

As for Pirates, I was amazed that a canned Disney movie based on a theme park attraction could be so entertaining but it was. However, I have a serious crush on Johnny Depp, so maybe this isn’t so surprising. That man is criminally sexy.

(Used crutch words. Damn.)