Freebording is no joke
A few days ago I finally got the chance to ride a Freebord1 (something I linked to years ago when I was using del.icio.us) and for what may be the first time in my life, I wasn’t able to immediately master it. While that may sound a bit pretentious, I think that if you know me you know things like that (skateboarding, wakeboarding, snowboarding, skiing, blading, whatever) have always come very easy to me.
But this machine, this fusion of snowboarding and skateboarding, felt very foreign. You see, the Freebord is kind of like a regular skateboard, except that there are half-bindings for your feet, the trucks are stretched out well beyond the width of the board, and there are six wheels. That’s right, six. The extra two are spring-loaded caster wheels that sit in the center of the inside of each truck. The basic idea is that you turn (or, more accurately, carve) by giving the fifth and six wheels pressure, which is done by centering your weight on the board until the ‘extra’ wheels ‘take over,’ at which point you lean to either side and the ‘regular’ wheels that are on the same side as the side you are leaning, begin to slide across the pavement and act kind of like an edge on a snowboard.
I felt so sketchy on this thing and had I not seen videos of what it was capable of (some of which are linked to directly from the main page — watch them!), I probably would have deemed it broken after only a few tries. That said, I was starting to get the hang of it near the end our session, but not before my body started telling my brain I wasn’t 16 anymore2 and my brain started telling my body I could die.3
-
I was out with my brother and his roommate, both of whom bought Freebords minutes after I called my brother a couple of months ago and implored him to watch the videos of it in action. ↑
-
I hurt. Still. ↑
-
My brother’s roommate cracked his skull open not a week after they got their boards; the incident left him in pretty bad shape. Did I mention that this kid was there when I was trying to learn how to do it? Yah, that kind of messed with my head a bit. ↑
Note to self
Next time you’re thinking about taking a two-layover redeye from California to Florida the day before Christmas, don’t; just shoot yourself in the face. Also, remember that the airlines are nothing if not fastidious — they never fail to notice the pulsating “PLEASE LOSE THIS!” sign that you couple to all of your luggage.
I’m not dead
I’ve obviously been a little delinquent in updating this site for the last month or so, but I can assure you that my dereliction wasn’t for want of desire or something to say. To put it quite simply, I’m busy, and still adjusting to ‘real-world’ life as a first-year associate at a prominent IP firm.
There are a billion and one things I want to write about these days, hell, there a billion and one things I want to write about regarding the things I want to write about (e.g., Apple’s upcoming “iPhone,” which I portended, to much resistance, more than two years ago; the Pearl1 I just purchased; how I love my new office speakers so much that I’m probably going to buy another pair for my apartment; etc.), but time hates me and I can’t seem to get her back on my side.
Everything about my life is rushed lately. Everything. This post included. To be honest, it’s kind of always been that way, but never to this extent; never to the point where I’ve had to find so many backburners to keep all these neglected interests, people, and thoughts alive. Don’t get me wrong, I relish the chaos and thoroughly enjoy sifting the signals from the noise — it’s what I do best — but the number of things I’m currently attempting to juggle is ridiculous and I fear that at some point I’m just going to have to cry “uncle.”
The only constant anymore is the fact that the job comes first. Period. Unfortunately, that means a lot of my other interests are receiving much less of my time than they have been given in the past. I’ll eventually find a balance, but until then, the myriad pots I’ve my hands in will likely continue to suffer from inattention.
On a completely unrelated and unimportant note, Ari, from HBO’s Entourage, is my new favorite TV character.
For the USPS, a tip
Perhaps, before claiming that you offer a “tracking” service, you should look up the meaning of the word. My understanding is that I’m to input a tracking number, supplied by you, into your website. It is also my understanding that you are to monitor the package represented by that tracking number as it progresses from sender to recipient, and that I’m to be told where it is, where it’s going next, and how long until it’s in my hands.
Curious then that I wasn’t notified of any pit stops my package may have made along its 1800-mile journey over the last three days. In fact, the only thing I received from you concerning my package’s movement was a notification that it had been delivered. While it was great to receive confirmation that the package I was holding in my hand was the one I was expecting and not the one I wasn’t expecting, it would have been nice to know when it was to arrive and how it was getting along in the interim.
Maybe you’re just trying to set yourself apart from the myriad other parcel services that actually update you as to the whereabouts of your package. I’m obviously being facetious, or am I? Given that this is the third time I’ve experienced this non-communication, I’m actually starting to believe my own sarcasm. Keep up the good work.
UF vs. OSU
The Gators absolutely deserve their BCS Championship Game nod and all you haters out there know it! Can we get both the basketball title and the football title in the same year? You better believe it.
Photobloggling ‘etiquette’
If you currently maintain a photoblog or are planning to create one, please keep the following suggestions in mind:
- You should have a thumbnailed archives page. Do you really think we want to look at a list of your photos’ titles? When you’re on someone else’s site, do you find yourself reading through text lists and saying, “Hrm, what an interesting title for a photograph, I think I’ll click on that one”? Didn’t think so.
- The current picture should always link to the previous picture. I absolutely can’t stand it when this isn’t implemented [correctly]. You are left to search around for cutesy little arrows (or whatever) that are next-to-impossible to click on and change position depending on the dimensions of the current picture. Why?
- Your RSS feed (yes, you have to provide a feed) should contain a thumbnail of the latest image. Artsy-fartsy titles won’t cut it.
- Your pictures should be at least 500 pixels wide. Why make them smaller? Seriously, why? Are you hurting for storage space in 2006? I doubt it.
WriteRoom for Windows?
Update: Dark Room is the Windows equivalent of WriteRoom. Thanks to those who wrote in to tell me as much.
A few months ago I put the following in a bit:
WriteRoom is “for Mac users who enjoy the simplicity of a typewriter, but live in the digital world. [It’s] is a full screen, distraction free, writing environment.” I love this application and can see myself using it a lot. It’s kind of like megazoomer, except that WR is itself an editor.
Indeed, earlier today I began drafting a patent application and found it to be indispensable. Is anyone aware of a similar application for Windows? I think I may want something like this at the office.
Another day, another iPod
So, I purchased my 8th iPod a few days ago. What’s wrong with me? Oh, that’s right, I’ve a voracious gadget appetite that will likely never be satiated.
This time I’ve gone with the brand-new 8GB (PRODUCT)RED nano. Speaking of the (RED) campaign, can anyone tell me why American Express has yet to offer (RED) cards to us Americans (for whatever reason, they’ve only been available in the UK since launch)?
In any event, I’m loving the new gizmo and absolutely do not plan on buying another iPod until the [real] video models debut, likely at the beginning of the year.
The real impetus behind buying this latest model was that I felt it was the first iPod I could use naked (i.e., without any sort of protection). It’s no secret that Apple’s music players have always been a bit fragile and that some of us have gone to great lengths to ensure their scratch-free survival. Now that Apple’s finally moved away from the plastic tops and toward this all-aluminum enclosure, I’m hoping that the device will be a little more resilient to basic, everyday use. I wonder if the rest of the line will eventually get the same treatment.
My quest for decent ‘portable’ speakers
Update: Thanks so much for the avalanche of feedback. I’ve decided to go with the Audioengine 5’s, which I discuss below.
A couple of weeks ago I decided that I wanted to get a speaker set for my office because I was tired of listening to music on my headphones.1 After researching this a bit, I decided on the Klipsch iGroove HG — it was relatively cheap ($250), could interface with non-iPod players (through a regular 1.8” jack), came with a remote, looked decent, and, by most accounts, sounded great. But, not everything was as it seemed.
The “remote”
While the system sounded pretty good (for what it was — a cheap, portable speaker set), it had a few significant problems. First of all, the remote was useless. In my book, if the remote does not allow you to choose between different albums, it’s useless. Period. I almost didn’t believe this was the case when I first took it out of the package; I thought there must be some key combination that could act like the iPod’s “menu” button and take me back through my selection trail. Certainly a system advertised as “iPod-compatible” would allow me to do such a thoughtless task through the remote. Nope. That would make too much sense.
Let me try to put this into perspective: if you are sitting more than an arm’s length away from the speakers and you want to listen to a different album — the most basic of wants — you have to get up and fiddle with the iPod, even though you are holding the freakin’ REMOTE in your hand!
Perhaps the worst part about all of this is that the majority of reviews floating around make nary a mention of this ‘oversight.’ Everyone just acts like it’s totally normal and praises the remote. Am I missing something here? Did us humans suddenly recover some long-lost desire to make things difficult? My head is going to explode.
The sound
Lucky for me, I didn’t really plan on using the remote so that wasn’t necessarily an insurmountable issue, though the mere fact that I couldn’t even if I wanted to didn’t sit well with me. Unfortunately though, the problems didn’t end there. Like I said, the system actually sounded pretty good, at least until I started playing Thom York’s “Atoms for Peace” (from his first solo album, The Eraser, easily one of my favorites this year). At some point in that song the tweeters began to make this awful sound in line with the pitch changes of his voice, not unlike what you would expect from blown speakers. I was able to reproduce the noise with other songs as well, like Wilco’s “Hell is Chrome”2 (off of Ghost is Born).
After playing with it for a while, I determined that it actually wasn’t the speakers (something I wasn’t terribly surprised about given that I had never come close to pushing them), but was the unit itself. For whatever reason, certain vocal ranges caused the center console unit, the part that docks the iPod, to vibrate in such a way as to attempt to harmonize (unsuccessfully, obviously) with the singer. Though I was willing to get over the whole remote thing, I’m not willing to compromise on sound quality.
I took the system back, and fearing a design defect, decided that I wouldn’t swap it for another of the same model.
Bose
Short on options, I decided to try out the Bose SoundDock. As most know, I’m no fan-boy of Bose and wouldn’t have given them a shot had there been other viable options, but, surprisingly, there just isn’t too much out there to choose from.3
If you can believe it, the Bose remote was apparently conceived by the same team that came up with the Klipsch remote, as it too thought it normal to deprive you of the very simple, and oft-requested, album change. Give me a break.
As with Klipsch, that wasn’t even the worst of it. At least with the iGroove, the iPod had some sort of back-support so that you could press the iPod’s buttons (albeit carefully) without having to cradle the device. Not so with the Bose system. If you want to manipulate the iPod in any way (e.g., choose a different album), you have to thoughtfully slide your hand behind the iPod, bend your fingers so as to push your knuckles against the speaker grill, and then make your selection. It is completely and utterly ridiculous. Moreover, the “center console” is very shaky and when I pick the system up, this console hangs below the rest of the unit, so much so that you can see some of the electronics inside.
I’ll be returning this system in the next couple of days.
Alternatives
Like I said, this space is pretty bare. I’ve half a mind to just buy some nice powered monitors that can handle a 1.8” jack. In fact, I’m considering the Audioengine 5’s, which can dock an AirPort Express in the back, take an iPod (or any other player) in the top, and, as far as I can tell, blow other similarly-situated speakers out of the water. And they look great to boot. To be honest, the only downside I can see to this setup is the price; I’d probably end up getting an iPod Universal Dock and an Apple Remote, which would put the total cost somewhere around $450, a bit more than I wanted to spend on office speakers.
Another option may be the Tivoli iYiYi (yes, that’s its real name). I’m not a big fan of its looks, but at this point I think I’d be happy with anything that functions well. I’ve a friend who’ll be receiving one in the next couple of weeks and I look forward to giving it a good once-over.
Recommendations?
-
Let’s be honest, I’m a total music snob and just want everyone walking by to ask me what I’m listening to so that I can expound on my musical knowledge. I’m just kidding, well, partly, I mean, I am a music snob. :) ↑
-
Not for nothing, but this song has one of the most harrowing 20 seconds of guitar you’ll ever hear (from about 3:00 to 3:20). ↑
-
Many will no doubt point to Apple’s own speaker system, the iPod Hi-Fi, but not much has changed for me since I first wrote about this system right after it was announced. If anything, I’m even more turned off by it now because of what I’ve read about it since (i.e., weighs over 15 lbs., has no non-iPod connectivity, is meant to be listened to from 10+ ft. away, etc.). ↑
Apple in the garage
Yesterday I went to the ninth annual Vintage Computer Festival at the Computer History Museum in Mountain View. I have to say I had a blast and met quite few really, uhh, ‘neat’ people. The high point of the day was the very distinguished panel discussing the early days of Apple, and truth be told, it was this Apple 30-year anniversary event that brought me to the festival in the first place (I hate to say it, but I’m a bit young to be running with the “vintage” crowd; indeed, I was one of the youngest people there).
The panel consisted of Steve Wozniak (whom I’ve met before), Daniel Kottke, Randy Wigginton, and Chris Espinosa. The discussion was more or less open, but centered mainly around Apple’s somewhat inauspicious beginnings; the members of the panel spoke up where appropriate and took turns relaying to us anecdotal nuggets (as one would expect, Woz’s stories were the best). Sadly, a lot of what I heard I already knew, both from Woz’s new autobiography, iWoz, and Andy Hertzfeld’s Revolution in the Valley, which I’ve mentioned before. Speaking of Andy, he was actually there and was sitting next to Woz in the front row before the panel discussion began. I was very eager to meet him, but he put on his ninja costume and snuck out of the room as soon as the main event ended.
I should mention that John “Captain Crunch” Draper was in attendance and told some stories to the audience once the floor was opened up for comments and questions.
Before I end this somewhat pointless post, I’d like to note that Woz — the man utterly revered for his hardware prowess — uses the Dolce and Gabana Motorola Razr. Never mind the fact that it’s gold (why anyone would want a gold phone is beyond me), but as we all know (certainly he more than anyone), the Razr sucks. Moreover, it’s just not the type of phone you’d expect from someone who wears neon display tubes on his wrist to tell the time.
Your error != a bug in my software
As anyone who has ever e-mailed me asking for help knows, I always respond and try to help as much as I can. So please, if after I’ve e-mailed you back asking a few questions about your implementation of something I’ve written, do not, before answering my questions, publicly pronounce that my software has a bug. Not only is this foolish, it’s just plain wrong.1
Be courteous and use common sense.
-
I’m obviously not implying that I always write bug-free code (no one does), but in this instance the problem was definitely not a bug (unless, of course, there was a bug in this particular user’s eye that affected his ability to read the documentation). ↑
Similar Posts
Ever since I started keeping my bits within the weblog CMS (and not del.icio.us), I’ve run the following in the side menu of individual archives where I usually display “possibly related” posts:
This is currently disabled and will probably remain so until I have time to hack up the Related Entries plugin to make it aware of categories; I want to exclude the bits from its results.
A couple of weeks ago, Robert Marsh e-mailed me to let me know that he had done this very thing with his Similar Posts WordPress plugin, which is a modified version of Related Entries. I just wanted to note that it works wonderfully out of the box — the “possibly related” section of my side menu is again alive and kicking. I should also point out that the plugin no longer needs to be run after an iteration of the “WP loop,” something for which I explained a workaround in my initial Related Entries post; apparently the apostrophe error was fixed somewhere along the line too.
Tetris documentary
It’s well known within my “circle” that Tetris is my favorite game of all time (I still have my original GameBoy cartridge) and I’ve never been shy about making known my ability to play it.
It is with this in mind that I present to you, Tetris - From Russia With Love, a wonderful, hour-long BBC documentary about the game, its creator, and its tumultuous ride out of communist Russia. It really is a fascinating story, though admittedly, you may not think so highly of it if you don’t share my love for the game.
Flak Photo
I’m currently the “photo of the day” at Flak Photo (archived here if you are looking after the 24th). Thanks Andy! I hardly ever mention these sorts of things here, but maybe I should start. Indeed, I guess I just did. :)
On an unrelated note, later this week I’ll try to explain away my near-absence from this space over the last few weeks (if I can find the time!).
Death to liquid layouts
Why, why, why do people still insist on using liquid layouts? Let me rephrase that: why do people still insist on using the sort of layout where the main content column is not a specified width between 400 and 600 pixels (or thereabouts)? When was the last time you opened a newspaper or magazine and had to scan the entire width of the page to read the content? Never. The answer is never. So why is it that some people assume that just because they’re using pixels and not ink I want to scan my entire monitor (or, more accurately, the entire width of my browser)? I assure you, I don’t enjoy resizing my browser as much as you must think I do. Stop torturing me.
Upgrading the Mac Pro’s memory
Update: I’ve received nothing but positive feedback regarding OWC.
Since buying my Mac Pro a little over a month ago, I’ve been patiently waiting for memory prices to drop before putting another gigabyte (512×2) in the system. While most RAM these days is fairly cheap, the fully-buffered DIMMs required by the Mac Pro (specifically, PC5300 DDR2 ECC 667MHz) are still sold at a premium.
Crucial has what I want for $300 (curiously, Apple’s price is the same, which I’ve never seen before — they’re always more expensive), but a company called Other World Computing has the system crack for $249. Any of you guys have experience with OWC’s memory? I normally wouldn’t think twice about getting this from Crucial, but the price difference between the two (after having to pay taxes on Crucial’s memory) is ~$75, and from what I can gather, these OWC guys are legit.
Google is my favorite browser
I’ve just finished watching a very interesting, hour-long discussion between a panel of young adults about how they use various technologies (e.g., mobile phones, RSS, digital music players, etc.). It’s so easy for me to forget that I’m not the typical young adult and that 99% of the demographic thinks that MySpace/FaceBook accounts are indispensable and that conducting five concurrent IM conversations about Jenny’s hair or America’s Next Top Model is multitasking.
I encourage everyone to watch this, especially those of you who consider yourself tech-savvy, as it will bring into strong relief the fact that most [young] people are clueless. Case in point, Q: “What browser do you use?” A: “Google.”
MOO MiniCards
I received my free1 MOO MiniCards yesterday morning and could not have been more pleasantly surprised at how good they looked (see the MOO MiniCard pool for examples). I must admit, I wasn’t expecting too much because (1) I knew they were going to be tiny and (2) they were free, but I figured I’d give them a shot because, well, they were free.
For brevity’s sake I’m going to bite Cory Doctorow’s Boing Boing post and say that it’s “hard to convey just how cool-ass these cards are. They feel like a fetish object, the thick card and soft laminate finish create a great hand-feel, and they’re visually stunning — playful and intensely personal.”
I can totally see myself using these when I eventually start selling prints of my stuff.
-
A few weeks ago MOO launched a promo for these MiniCards where they gave away 10 cards to 10,000 Flickr Pro users. These were completely free (including shipping) and so even though I don’t really use Flickr anymore, I couldn’t resist the offer. :P ↑
Aperture, MediaPro, and XMP
Anyone out there running both MediaPro and Aperture want to do me a quick favor? It shouldn’t take but a second and I’d be most grateful.
All I’d like you to do is go into MediaPro, highlight a picture that you’ve assigned to multiple keywords, and choose “Action | Extract Metadata…” from the menu at the top. Make sure “Editable Annotations” is checked and then save the resulting XMP file in the directory where the image resides.
Finally, try to import the XMP and/or image file into Aperture, either by dragging/dropping or through any import mechanisms it may have. I’d like to know whether Aperture retains the keyword (and other) metadata. Thanks in advance.
Crazyegg == crazy expensive
Update: The nice folks at Crazyegg contacted me a few hours after I posted this, and though many different things were discussed and an informative dialogue was begun, I’m writing this update only to point out that they offer a free 5000-clicks/month plan, something I should have noted in the original piece.
Unless I’m missing something, the Crazyegg stats-tracking service seems to be way overpriced, especially in light of the free (or pay-once) offerings out there.
I mention this only because the blogosphere can’t seem to contain its enthusiam about it (indeed, I borrowed this title from 37signals’ recent post, Crazyegg = crazy good), but no one ever mentions the price, and, well, the prices are ridiculous.
As far as I can tell, the service offers three basic things, which are all just different presentations of the same click data: Overlay, List, and Heatmap. The “heatmap” feature is what has really set the blogosphere on fire, but is this one simple view worth $20-$100 a month? Does it really add anything to the “overlay” view, which is already available for free through Google Analytics? Does it look cool? Of course, and I’d love to use it myself, but I’ll be damned if I’m going to pay $50/mo (more than twice my actual webhosting costs) to get a pretty picture, whose ultimate significance can be derived for free from other services. Let me reiterate: save the pretty picture, this service offers nothing new. Moreover, with a little work, you can actually create a very similar picture for free, and I don’t think it’s going to be too long before someone creates a Pepper for Mint to accomplish the same.
If I’m wrong about this and/or have missed something, please correct me. I understand they are offering something somewhat innovative and their no-setup, everything-is-done-on-our-end approach will appeal to some people, but a high monthly cost for something that does so very little just doesn’t sit too well with me and I’m curious to know why no one else has taken issue with this aspect of the service.
It’s time to do that whole “adult” thing
Last week marked my first as an associate at Kenyon & Kenyon, the IP firm I worked for last summer and through part of my final year of law school. The two previous months — those spent doing basically whatever I wanted — have been great and have really allowed me to relax (to the extent I’m capable of doing such a thing), and though the thought of the bar was never completely erased from my mind, I was able to keep it at bay in the extreme recesses of my consciousness most of the time.
I’ve a feeling things at the firm are going to pick up rather quickly for me and so the bandwidth I usually allot to this site and other semi-related projects may be throttled somewhat. I’ll find a way to balance it all, I always do, but there’s no question that some non-work things are going to get pushed back. I have to find a way to convince myself that some things can wait, that the world isn’t going to end if I don’t do this or that immediately. Wish me luck.
In other news, I’m actually working on an “about” page for this site. I know, I know, I’ve existed here at this address in some form or another for seven years and should have made a who-the-hell-are-you page a long time ago (especially given my fastidiousness with regard to every other aspect of the site), but, for myriad reasons, I was never too keen on trying to sum up me or my life in two or three paragraphs. In any event, I feel the time has finally come that I put together such a page, one that hopefully complements the tour and works to shed some much needed light on yours truly.
OCD, the key to defeating terrorism?
One of my best friends is finally considering consolidating, organizing, labeling, and otherwise obsessing over his photography collection, which now spans 22GB, and this was at the bottom of a rather long e-mail he sent me yesterday regarding the same:
I figure if anybody knows the best way to approach this, it’s you. You seem to understand how to create these personal data management systems better than anybody I’ve ever seen. This might be a fun write up for your website too: a friend with serious data management issues applies your personal systems to his own life, becomes safe and happy, and the terrorists lose.
Just doing my part.
Footnotes, Textpander, and shell scripts
A while back I wrote a rather well-received piece on how to create footnotes with unique anchors using Textpander. Not long after writing that post, the author of Textpander sold the application and dropped its donationware pricing model — it’s now known as TextExpander and costs $30. That said, the older versions continued to work just fine as long as you didn’t “upgrade,” and I wasn’t required to upgrade until I moved to my new Mac Pro last week.
Though it’s likely I’ll eventually pony up and pay the rather high admission price — it’s great software — I’ve just quickly whipped up the following shell script to hold me over in the interim (at least as far as footnotes are concerned). Realize that it’s been broken up a bit so as to not cause IE to render it improperly (grr!).
#!/bin/sh
dateid=$(date +%m%d%y)
echo
echo Footnote reference:
echo
echo <sup id=\r1-$dateid\><a href=\#f1-$dateid\>1</a></sup>
echo
echo
echo Footnote:
echo
echo <div class=\footnotes\>
echo <hr />
echo <ol>
echo <li id=\f1-$dateid\>
echo <p>FOOTNOTE <a href=\#r1-$dateid\>↑</a></p>
echo </li>
echo </ol>
echo </div>
Is this as elegant? Of course not. Does it do the trick? Absolutely. Well, kinda. I may try to come up with some funky Quicksilver voodoo to have this script launched from a QS trigger and the output copied to the clipboard, but probably not before I actually end up buying TextExpander.
An Inconvenient Truth

Search for showtimes near you.
Well, what are you waiting for?
LOST
Lost has to be one of my favorite TV shows of all time. Yes, it can be annoying. Yes, it can be evilly slow. Yes, its twists and turns can make me want to throw up, but there’s no question that it keeps me engaged. We just finished the final DVD of season two last night,1 and the thought of season three, which starts in early October, has me positively salivating.
I think it’s safe to say that no program has ever caused me to question so much. Every ten seconds I blurt out, “What the hell was that?,” or, “Maybe…” — it’s all quite fun. Frustrating, but fun. Though I’ve done pretty well with my guesses, I’ve definitely had my fair share of misses, and I think that, more than anything, is what keeps me interested. I really can’t wait to see how it all ties together, but given that the show sometimes moves at a snail’s pace, it may take the producers half a decade to sort everything out.
When I can find a free second I’m going to dive into some of the crazy fan sites to see what others have figured out and where they think the show is headed.
-
I originally started recording the first season on my TiVo, but after it hiccuped a few times and failed to record the show, I just kind of gave up (there’s no question that those first few episodes were slow slow slow). Then, my girlfriend decided she wanted to start watching it and so when she Netflix’d it I tagged along. ↑
Remove those trailing slashes from your URIs
Though I made the move a few years ago to future-proof everything on this site (and have already discussed that process in way too much detail here), I’ve never really talked about how I remove trailing slashes from my URIs (e.g., using /projects instead of /projects/). There really is no legitimate technical reason for this, I just think it looks better, and I recently received an e-mail asking how I do it, and so, as usual, I thought I’d explain it here.
I should point out that if you use WordPress, this method will not prevent you from having files (minus the extension) and directories of the same name (i.e., /projects.php and /projects/whatever can still work together).1
I don’t currently use the “default” WP .htaccess rules (remember, I work outside of its theme system), but instead have a single RewriteRule that handles all of my archives (yearly, monthly, and individual). That said, my best guess is that the following rules, if placed above the WP-created rules in your .htaccess file, will work just fine with a default install. Let me know if you have any trouble.
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]
These rules accomplish a couple of things, and I’m going to use my gadget page to illustrate them. First of all, this page exists on my server as /gadgets.php, however, when I point to it with /gadgets, the above .htaccess rules tack on the .php extension (behind the scenes) and give it back to the browser as if it were originally called as /gadgets.php, all while leaving the URI intact (i.e., it doesn’t add the extension to the actual address).
Second of all, if I were to link to the gadget page with /gadgets/ (as myself and others have done in years past) and there wasn’t a true directory named “gadgets,” the rules would remove the slash (both in the address and behind the scenes), tack on the .php extension (behind the scenes), and process it as gadgets.php. To see this, simply go to the gadget page, which you’ll notice is linked to here with the trailing slash; you’ll see that the slash is removed, no file extension is added, and the page is ultimately processed as it should be.
-
Not sure if this would work quite right with Movable Type’s dynamic publishing option. ↑
Mac Pro? Yes please!
I finally gave into fate and picked up a Mac Pro, which is pretty much the fastest desktop money can buy right now. What can I say? I mean really. It’s so freakin’ awesome I can’t see straight — it’s a safe bet that I’m going to be on a “nerd high” (the girlfriend’s term for my, uhh, excitement) for quite some time.
When four processors isn’t enough
While this little brushed aluminum Ferrari has more horsepower than I’ll likely ever be able to use (I don’t yet do much with DV), if ever the time comes that I need to simulate the effects of global warming or predict where the next hurricane is headed, the upgrade possibilities of this machine should have me covered. As AnandTech recently announced, they’ve been able to get Intel’s as-yet-unreleased, quad-core “Clovertown” chip to play nice with the Mac Pro right out of the box: “We grabbed a pair of 2.4GHz Clovertown samples [that’s 8 cores] and tossed them in the system, and to our pleasure, they worked just fine.” Umm, yah. :)
The migration was seamless
The transference of data from my old PowerBook G4 to the new machine could not have been easier:
- Boot the new machine.
- Use Firewire to connect the new machine to the old machine.
- Boot the old machine into “target” disk mode.
- Transfer everything.
- Reboot the new machine and voilà, it’s like I never left the old one (except for that whole speed thing).
- Change the name of the disk on the new machine to match that of the old machine.
- Start SuperDuper! and let it sync with the external drive I use to mirror my Mac each night.
Poll: Quicksilver, the greatest Mac app ever?
Update: This poll has been closed. Thanks for participating.
I can barely imagine how I ever got along without Blacktree’s brilliant application at my fingertips and so it’s probably pretty easy to guess which way my vote would go here. I’m pretty sure I know which answer is going to win out, but I figured I’d ask anyway.
Is Quicksilver the greatest Mac app of all time?
- Yes! (37%)
- No! (12%)
- I’d probably say yes if I understood it better. (20%)
- I thought Quicksilver was a clothing company? (31%)
Pondering a move back to Movable Type (3)
Please read part one and part two before reading the rest of this post.
Let me first point out that a lot of people have written to me about the two previous posts in this ‘series’ and it seems many of them are in the same boat as me and are thinking about maybe coming back to MT. While the reasons for wanting to switch again vary wildly, I’m definitely not alone.
At the tail end of the previous post I said the following:
Basically, I just don’t think that DreamHost, my current webhost, will give me the CPU time I need to rebuild the entire site (at least not without using MT’s dynamic PHP publishing system on my archives, which goes against the idea of keeping everything static, something I may or may not want to do again), and this could be a very big problem should I ultimately decide to move back to MT.
I’ve yet to bring it up publicly, but this little series of posts has kind of put my back up against a wall and instead of explaining in-depth the issues I’ve had with DreamHost as of late, I encourage you to check out Mike Davidson’s post on the matter (aptly titled “Thoughts on the DreamHost meltdown”). As he points out, he makes around $30,000(!) a year in referrer fees from DreamHost, and while I don’t make nearly that much, I have pulled in a pretty respectable amount from them and so it is with much hesitation that I dare say anything less than flattering about their service.
I agree with just about everything Mike says, including the update on the DH situation, where he remarks, “After an unusual and unfortunate two-month span of questionable performance, Dreamhost appears to be back to its previous levels of reliability for me.” That said, the fact that the default, static version of MT is essentially unusable on their machines doesn’t sit too well with me. I understand that MT can be a resource hog when doing a full rebuild of a large website, but this is something that must be done from time to time and so the server should allow it unless your aggregate CPU time for the day starts to inch over the threshold set for your particular account.1
I’ve a hunch DH is monitoring any process that uses the mt.cgi file (MT’s “engine”) and is killing it after a certain amount of CPU time, a certain small amount, is spent on it. I say this because almost every time I try to rebuild, no matter the number of entries, it gives me generic “internal server” errors.
For those unfamiliar with how MT works, the long and short of it is that it uses templates (individual archives, indexes, etc.) to create static (X)HTML pages that are saved as such on the server. While MT now gives you the option of building pages dynamically (a combination of this and static files will probably be what I ultimately use if I end up switching back to MT), this doesn’t really concern me at this juncture. I’m interested in the fact that I can’t rebuild my website. I mentioned in the previous post that importing all of my entries at once (nearly 1000 of them) was a no go as MT told me the file was too large. To get around that I broke the file up into smaller pieces. I tried to do the same with the rebuild. I selected 125 posts. It broke. I selected 75 posts. It broke. 50. It broke. 25. It worked about every third time. Sometimes just rebuilding a single template or post would cause the server to return a 404 error (not found) on the mt.cgi file. Huh?
Obviously, then, there is just no way to run MT on DH without the dynamic publishing turned on (at least for the archives). If you’re using MT to run a 1000+ post weblog on DH and are not using dynamic publishing, I’d love to hear from you; I’ve many questions to ask. I’d also like to hear from you if you’ve got a hosting recommendation. I realize nothing out there is going to compete with DH on disk space and bandwidth, and it will be hard to give up the nightly syncing of all my photos (discussed in the last section of this post), not to mention the referrer money mentioned above, but I would like to at least have a solid backup plan should I eventually decide to leave DH (it’s unlikely, but…).
Should I really attempt the move?
Probably not. Will I? Yah, probably. I’m in too deep now to stop myself. Like I said before, I’m just kind of bored and want to peek under the hood of MT to see what’s changed since I left. I can’t help it.
What’s left to do?
Hrm. Where to begin? As I said in the initial post:
I think part of me just wants to see if this can be done [relatively quickly]. My WP setup is a very customized one, far removed from the theme system most people use and rife with hacks, workarounds, and one-off plugins (most of which I’ve never released). It will be interesting to see if I can achieve the same with MT.
The following is what’s currently floating around in my head regarding things that need to be done.
- Clean up all of the HTML entity stuff that got a little mangled from the initial export/import and then install SmartyPants (though it would seem a bit superfluous given that I run SmaryPants + Markdown locally through TextMate as I type up my posts).
- Fix my categories (see next section).
- Create a completely separate weblog for the bits.
- Come up with a way to interlace the index page with both regular posts and bits (the same as I currently do now with WP). It seems to me that the MultiBlog plugin is exactly what I need; the documentation is a bit wanting, but I’m sure I can figure it out by looking at the code.
- Get all of my crazy .htaccess rules to play nice with the rules required by MT for its dynamic publishing (if I ultimately go that route, and I may be forced to).
- Get all of my templates how I want them. This is going to take a while and will involve creating a ton of MT modules that will probably be structured very similarly to the PHP “modules” I currently use in my WP templates.
- Come up with an archives system similar to that produced by my Smart Archives plugin for WP. Ironically, this plugin was actually modeled after something I initially did for Movable Type, though the MT thing was much simpler.
- Implement some code I wrote for MT way back when to do relative dates (I also wrote a WP plugin to accomplish the same). I’ve noticed that MT now has relative dates built into the system, but it looks like they only go back a week. I’ll have to change that.
- I haven’t looked into MT’s public search routine at all, but I might have to change some things regarding that as well, especially if it’s as limited as WP’s, but I highly doubt that.
- [Hopefully] find a plugin that uses full-text indexing to locate posts that are ‘related’ to other posts.
- Get all of my permalink URIs to match up with those created by WP. Oh wait, MT no longer requires you to specify an extension and now lets you use hyphens instead of underscores to separate words. :) In years past this could only be accomplished with a few plugins and some ingenuity (see Future-proof your URIs). Also, since I’m keeping the hyphens, there’s no need to create .htaccess rules for every single post, something I had to do when initially moving to WP (see Maintaining URIs between Movable Type and WordPress).
OK, so this list is getting out of control. I can think of 20 more things to add, but I’m going to stop myself as this post is already 10x longer than it should be.
Another note about importing
I went into detail in the last post about the trouble with importing, but failed to mention the issue of categories. The WP plugin I linked to in that post (and, subsequently, my modified version) doesn’t handle categories too well. In fact, it barely handles them at all. The problem is two-fold.
First of all, the MT import format accepts both a “primary” category and multiple sub-categories. The export plugin only accounts for sub-categories and doesn’t create a primary category element at all, but it seems that MT falls back to that anyway if no primary is specified; in other words, when no primary is given it uses the first sub-category it sees for that post as the primary category.
Second of all, I use categories fairly sparingly and don’t currently use sub-categories at all. I use one category to separate the bits from the regular posts (so that I can style them differently on the index and individual archive pages), one for the posts linked to on the bottom of the projects page, and one to specify what should be displayed on the tour. As it stands now, the export plugin only creates a single sub-category entry in the export file and fills it with the first category it finds in the database for that particular post.
The problem then, is that posts in multiple categories (e.g., a single post that is on both the tour page and the project page) lose all but one of their categories in the move, which puts me in the position of having to add those categories back in the MT system.
Two solutions
One option would be to rewrite the category routine of the WP export plugin to account for multiple categories and to place them in the format MT likes. While certainly doable, it may be a bit more trouble for me than it’s worth in light of my sparing use of categories.
It might actually be easier for me to simply re-categorize the posts. In WP my bits and regular posts are part of the same weblog (I just style them differently), but in MT I think I’ll probably want them to be separate weblogs entirely (and I’ll just splice them together on the main page). Given that the posts in my bits category are in that category alone (i.e., not General and bits), I can simply pull up those posts in the General category and delete them. Then, I can export from MT and save that file as my bits (already in an importable format).
After that’s done, I’ll re-import the original export file and then filter for the bits this time. After deleting those posts I’m left with my regular entries, which I can then further categorize/tag for the tour and project pages (this can be done simply by eyeballing those pages as they are now and checking off the respective posts).
Is there anything left to say?
There’s always more to say. :) However, if there is a part four to this series it will likely be a comparison of the two systems (something I’ve been requested to write by more than a few people looking to break into this whole weblogging thing) and not so much a line-by-line transcription of what I’ve done or am planning to do regarding the possible migration.
-
My experience with their processor restrictions is somewhat limited. The only time I’ve ever had trouble with CPU time was when I used to have a public referrers page, which was getting spammed to all hell. After locating the problem, removing the public referrers, and setting up some .htaccess rules to keep the spammers from causing every hit to be routed through WP’s system, the problem was resolved and DH stopped sending me automated e-mails telling me that I was over my processor quota. ↑
Pondering a move back to Movable Type (2)
Please read part one before reading the rest of this post.
Well, my half-hearted attempt at fooling around with Movable Type again didn’t go too smoothly. The install was of course not an issue, but moving my entries over from WordPress most definitely was. I did actually get them moved over, but not without a lot of hassle.
Before I go further, I have to make note of the fact that importing/exporting between these systems (or any CMS-like system) is not yet standardized. Hell, it’s almost like both pretend the other doesn’t exist. I’m not ignorant of the pressures upon one system to not create an importer for other systems (competition, etc.), but at some point these companies just have suck it up and make it easy to share data between them. It’s ridiculous. Wasn’t XML supposed to swoop in and fix all this mess? Yes, but the magic potion can’t work without an element called cooperation.
Getting the data into the right format
Movable Type makes it fairly easy to import entries from other systems by specifying a format for your posts that MT can understand and ultimately import. However, neither MT nor WP has an application to create the importable file from a WP installation. I’m still on the fence about whom the onus is on to create the “exporter,” the importee or the importer, but, like I said above, someone just needs to step up and be the bigger man about all of this. It’s not like any of it is rocket science.
I eventually stumbled upon a WP plugin that could put my WP data into an importable format. However, it broke and I’m not quite sure why. After hacking up the MT.php file within this package, I eventually got it to create a usable file that took into account both the fact that I don’t use comments at all on my site and that I do use the “excerpt” field for my “bits” posts. There was also some code that stripped <br /> tags from posts and comments; I removed this.
If you’ve run into similar trouble, e-mail me and I’ll send you my hacked file.
Importing the data into MT
After getting all of my posts exported to a usable file, I thought I was money. Eh, not so much. The MT import/export panel offers you two ways to import your file, but both of them failed for me. The first lets you upload the file from your local machine and the second allows you to put the file on the webserver and have MT pick it up from there. Both of these methods reported back to me that the file was too large. To be sure, I have a lot of posts (600+ regular posts and 200+ bits), about 1.5MB total, but I don’t use comments at all and I know plenty of people who’ve many more entries than I.
OK, so, whatever, the file is too large. No problem. I just broke it up into fourths and from there the import went off without a hitch. However, there was just one more problem. I noticed that my basenames (i.e., the text, based off the title of each post, used to create the tail end of each post’s permalink) were being clipped at 40 characters. After finding this new “feature” and increasing the number to 250 so that the basenames wouldn’t be clipped at all, I realized that the change isn’t immediately made to all the posts, and only applies to those entries created after the variable is increased. You have to re-import all of your entries for that change to take effect. So, I had to drop all the MySQL tables (to keep the ids as close to the number of posts as possible) and then go through the import process again. Ugh.
Now what?
I’m kind of stuck to be honest. I’ll delve into this a little more deeply in part three, to come soon. Basically, I just don’t think that DreamHost, my current webhost, will give me the CPU time I need to rebuild the entire site (at least not without using MT’s dynamic PHP publishing system on my archives, which goes against the idea of keeping everything static, something I may or may not want to do again), and this could be a very big problem should I ultimately decide to move back to MT.
Nike + iPod
I’m not going to spend a lot of time on this, but I will say, as matter-of-factly as I can, that the whole Nike + iPod system is awesome. I got my kit (along with a new pair of Nike+ shoes) about a week ago and have been very impressed.
There’s really no setup — just put the transmitter in the left shoe (or hack it to your shoe if you didn’t get a pair of Nike+ shoes) and plug the receiver into the iPod. Done.
One of my favorite things about the system is the voice feedback, which is activated whenever you press the iPod’s center button; it dims your music and tells you how long you’ve been running, how far you’ve gone, and your average pace (click the “voice feedback” link on this page to hear what I’m talking about).
Another thing that kind of blew me away was the Nike+ website that aggregates all of your data and spits it back to you through beautiful, meaningful graphs and charts. You can see a demo of the whole system by going to the site, clicking on “My Runs,” and then clicking on “Preview Nike+ runs now.”
I can highly recommend this product if you’ve already got a nano and like to run.
Pondering a move back to Movable Type
I don’t know if it’s boredom or what, but for whatever reason I’ve been thinking a lot lately about moving back to Movable Type. Don’t get it twisted — I love WordPress and have contributed quite a bit to the community, it’s just that, well, I feel something is missing. I can’t quite put my finger on it, but WP has always felt a bit ‘shaky’ to me and I kind of want to see what MT has cobbled together in my absence.
When I first mentioned that I was abandoning MT for WordPress, Anil Dash, now the VP of Professional Products at Six Apart, the company behind MT, e-mailed me to thank me for the contributions I’d made to the MT community and to ask why I was leaving and what they could change to make the product better. Looking back at my responses, it’s funny to see how much they mirror my feelings today, even though I’m contemplating a move in the opposite direction. An excerpt from one of my replies: “There wasn’t, per se, anything wrong with it. The time had simply come for me to try something else — I’d become bored I guess.”
The challenge
I think part of me just wants to see if this can be done. My WP setup is a very customized one, far removed from the theme system most people use and rife with hacks, workarounds, and one-off plugins (most of which I’ve never released). It will be interesting to see if I can achieve the same with MT. If it turns out to be more trouble than it’s worth, I’ll likely just give up altogether.
I’ll probably install the latest version of MT later today and play around with it some. Hell, I might even try to move all of my entries over just to see how it goes.
Old school
A good friend of mine from college flew out here a few days ago to visit myself and another undergrad buddy of ours who now lives here in Silicon Valley (we both move from Florida to California and end up 10 minutes apart; amazing how that happens). The three of us spent the weekend in San Francisco and had a great time doing what old college buddies do — drinking and making fun of each other (my specialty).
Anyway, I just wanted to explain why, especially to those who’ve been waiting on an e-mail reply from me since I returned from the cruise, I’ve been mostly MIA for the last few days; I promise I’m rifling through the queue as fast as possible. :)
Some simple changes I’ve made to Pixelpost
The two things I cover below are only a very small part of the changes I’ve made to Pixelpost, the application I use to power my photoblog, but I figured I’d go ahead and write them out as I’ve received a few e-mails asking for help regarding them.
Prettifying the URI structure
Pixelpost’s URIs are ugly. Take this address for example, which links to a photo of mine:
http://justinblanton.com/photos/index.php?showimage=44
While not entirely unintelligible, it certainly isn’t pretty. I wanted something simpler. Something like this:
http://justinblanton.com/photos/44
It’s actually pretty easy to get this sort of structure using htaccess rules, a process I’ve discussed quite extensively on this site over the years.
The first thing you are going to want to do is edit your .htaccess file, which you’ll need to create if it doesn’t already exist. Place it in the same directory as Pixelpost’s index.php file. Add the following to it:
RewriteEngine on
RewriteRule ^gallery index.php?x=browse
RewriteRule ^([0-9]+)$ index.php?showimage=$1
As you’ll notice, I only concern myself here with the individual picture pages and the thumbnailed archives page (which I just happen to call “gallery”). I don’t account for comments, categories, ratings, or any other such thing here, because I don’t use them on my site (I currently use a pop-up for comments so the URI structure is somewhat moot regarding them; see below). However, it should be fairly simple to recreate those rules by looking at the relevant URI and the rules I’ve shown above. Actually, some things might not be so straighforward, like when the URI uses two or more variables. If I ever start to use any of these I’ll definitely work out the htaccess rules to simplify them and will write about how I did it here. If you’ve a specific question, please feel free to e-mail me.
After making those changes, you need to make another small change to the index.php file. Around line 85, you’re going to want to change this line:
$showprefix = "./index.php?showimage=";
To this:
$showprefix = "./";
Further changes
If you want these modifications to be site-wide, you’re going to have to make some other small changes to the index.php file. For example, to get your RSS feed to link to your posts using the new URI structure, you’ll need to modify the link element of the feed.
Similarly, if you use a pop-up for comments, you’ll want to change the <COMMENT_POPUP> tag to correspond to the new structure (somewhere around line 920). If you don’t do this, then when someone hits the comment button, comments, and then closes the comment window, the address in the address bar, which they likely didn’t take notice of to begin with, will be overwritten with the old URI structure. So, if they choose to link someone to the image, they’ll link using the ugly structure. The end of the world? Of course not, but I like to be consistent.
Putting HTML back into the RSS feed
I’m not quite sure why, but Pixelpost removes all traces of HTML from the RSS feed. This was unacceptable as I link a lot and hated the fact that if someone wanted to follow the link they’d have to go to the image’s page and click on the “info+comments” link where they could then click on the link they wanted. Nevermind the fact that they likely wouldn’t know it was a link in the first place.
In any event, the fix is about as simple as they come. All you need to do is comment out a single line, somewhere around line 800:
$body = strip_tags( $body );
That’s it. The feed should still validate just fine.
Some general stats
I really like seeing this sort of thing on other people’s sites and given that I’ve been asked about some of this stuff before I thought I’d post a few statistics here. The images below are from my Mint installation, which I’ve written about before.



I’m so close
I think I’m about two heartbeats away from buying a Mac Pro. Anyone out there want to try and convince me I shouldn’t?
The photoblog is up and running
Well, I’ve finally launched the photoblog and couldn’t feel more relieved. Now I can get to posting pictures again instead of worrying about how I’m going to post them.
If you build it, they will come
As I briefly mentioned here, one of the main reasons I wanted to integrate the photoblog into my CMS was so that all of my weblog readers would be “forced” to see my photos too (something I’ve kind of been doing here for a while). However, because I’ve decided to use a completely separate system (and won’t splice the feeds together), I have to ask you guys to follow me over there. So, if you’re at all interested (and you better be!), please add the photoblog to your aggregator (see below).
Feed address
http://justinblanton.com/photos/syndicate
Rather receive updates through e-mail? I’ve got you covered.
Navigating the photoblog
Surprise, it’s not complicated. As you can see, the site design is very similar to my current weblog design. It’s very uncluttered and simple — the photo is the focus. So, like most photoblogs, you’ll notice that clicking on a photo takes you to the previous photo and that hovering over the current image gives you the title of the photo and a cue to click to get to the previous photo.
The “gallery” is simply a thumbnail archive of all the pictures.
If you’d like to see what I’ve said, if anything, about a particular photo (e.g., where it was shot, how it was processed, etc.), you’ll want to click the “comments” link. This will give you a pop-up that includes both my thoughts on the picture and those of others who have viewed it. You read that right, I’m allowing comments on the photos (for the time being). So, by all means, share with me your thoughts.
Some things are still in flux
As mentioned above, I’m not sure how long the comments are going to last; as soon as they become more trouble than they’re worth (e.g., spam, immature rants, volume, etc.), I’ll likely disable them (as I’ve done on this weblog).
I’m thinking very seriously about changing the hover text so that instead of telling you just the photo’s name, it would also show you whatever I’ve said about the image (as it stands now, you can see that information only when you click on the “comments” link for each each picture).
There’s a good chance I’ll eventually implement some JavaScript to kind of divide each photo in half so that the left side takes you to the previous photo and the right side takes you to the next photo.
There are a few other things that need to be fleshed out more fully, but they could very well become non-issues depending on the amount of traffic I eventually get. We’ll see how it goes.
Have a look around and please let me know what you think. As usual, I’ll likely write something up discussing the hacks I made to Pixelpost and why I made them, but I wouldn’t expect this any time soon.
Yet another post about the photoblog
As I’ve discussed here a lot lately, I’ve been on the cusp of debuting a photoblog for a while now and am glad to say that the wait is almost over. After determining what would be needed to integrate (but still keep separate) such a thing within my current CMS and coming up with a process to get thumbnails how I wanted them, I still wasn’t convinced that that was the way to go and have really been struggling with which route to take.
I’ve since decided that a separate “container” for the photos is really the only appropriate way to do this thing right and so I’m going use Pixelpost for the job. I’ve made this decision many times in the last few days only to second-guess myself at the last second, but this time it’s final — I’m launching the site tomorrow. It’s funny, after all the consternation and time spent thinking about this, it seems so obvious to me as I write this post that using a separate system is the only way to go.
I know some of you couldn’t care less about this debate I’ve been having with myself, but it’s hard for me to move forward on something like this unless I know there is an escape route for the future. While I’m still a bit iffy about using Pixelpost, and will probably lose sleep thinking about how five years from now I might be struggling with a way to export the then no-longer-updated Pixelpost data into something else, I’ve decided to throw caution to the wind and run with it. I figure Pixelpost is the most popular photoblog software in the world and so someone1 will probably work out a way to export it into other things if and when such time comes that it’s no longer maintained (even if that someone is me :).
It’s all in my head
I apologize to those who wrote in (quite a few of you actually) asking me to do a full write-up on the integrated-into-WordPress solution I worked out. Though I’ve decided not to go in that direction, I have the whole thing mapped out in my head and am perfectly willing to help you out if you think you might want to give it a try. Hell, I may even write the whole thing out here anyway. We’ll see. In any event, don’t hesitate to send over questions if you have them.
-
Indeed, as I mentioned about a month ago, the upcoming pixyBlog software will allow you to import from Pixelpost. ↑
Peppering Mint and filtering referrers
Lately I’ve had quite a few people ask me what Peppers I currently use with Mint and so I thought I’d rattle those off fairly quickly here.
- Fresh View
- Trends Internal
- Trends External
- Session Tracker (link is to archive file; site has been taken down)
- Outclicks
- Download Counter
- FeedBurner Stats
- XXX Strong Mint
Filtering images.google.* referrers
In my initial post about Mint I wrote the following:
There is no way to filter the RSS feed. In other words, there is no way to remove from it things that come up often, but in slightly different contexts (e.g., I get a ton of referrals from Google Images which I couldn’t care less about). Yes, I know of the Referrer Filter Pepper, but it only filters the page view pane, not the RSS feed.
It turns out that this can be resolved rather easily by specifying, in the referrers section of the preferences page, those addresses you want Mint to ignore. The language above the text box is a little confusing and might make you think that the addresses added won’t be filtered out of the RSS feed (”Don’t show referrals from the following domains in the Newest Unique Referrers tab…”), but I can assure you they are.
Unfortunately, this filtering system doesn’t support wildcards (e.g., images.google.*) and so you have to add each and every address you want to filter (e.g., images.google.cg, images.google.com.hk, etc.). Lucky for you, I’ve been generating a list of all the Google Images domains for quite a while now and am making this list available for download so that you don’t have to do the same.
Simply copy/paste my list into the text box in the referrers section of the preferences page and click “Done.” That’s it. If you come across some domains that aren’t in the list, please e-mail them to me.
Something tells me that Shaun will create an “on/off” option in future builds to control the referrers from Google Images (it’s the only thing I filter for and I know a lot of other people are in the same boat; perhaps even Shaun), but until then, this method works like a charm.
Back in black
I’m back from the cruise and probably as tan as I’ve been since high school (when I was on a lake every day wakeboarding and whatnot). Still debating whether I want to do a full-length write-up on the experience or just get to all the tech stuff I want to talk about.
Just in case I don’t get around to doing a longer post about the trip, I’m going to try to quickly and nonsensically rifle through some of the ‘highlights’ without too much thought.
- Itinerary: left out of Ft. Lauderdale, then headed to Princess Cays in the Bahamas, Ocho Rios in Jamaica, Grand Cayman in the Cayman Islands, and Cozumel in Mexico.
- While I had a great time and would probably do it again, it all felt a bit rushed when hopping from country to country.
- I ate like a king and couldn’t stop myself. It was kind of ridiculous. As ever, I didn’t gain a pound.
- Some of the ship activities were a bit too froufrou and snooty for my liking.
- I feel somewhat heretical saying this, but I didn’t miss the Internet as much as I thought I would, though once I stepped off the boat I was painfully thirsty for my data drip.
- Airline officials can ask an entire plane full of people, with a straight face, for two volunteers to take a different flight because their collective body weight puts us over FAA regulations, and then expect us to feel comfortable at 35,000 feet knowing that rain water might be enough to bump us over the limit. I should note that this took over two hours to figure out. Yep, we sat on the tarmac for two hours while they debated whether the plane could keep us in the air. I’m telling you, the Flying Spaghetti Monster hates me.
- Cruise lines don’t employ funny comedians. I could have run circles around any of them. It was literally painful to watch.
- Cruise lines do employ great jugglers.
- Alcoholic drinks weren’t as expensive as I had expected, and, ironically, I drank much less than I thought I would.
- Due to the latest terrorist scare, if you buy a bottled beverage in an airport you now “surrender the cap at the time of purchase,” lest you could pour out your orange juice and fill the bottle with the liquid you’re currently somehow carrying without a bottle and which you already got past security. What a joke. Who’s up for flying naked and buying new clothes on the other end? I’m afraid that’s where all of this is headed.
- I refuted my girlfriend’s oft-made assertion that I’m a pessimist by stating that I’m a realist. She still didn’t buy it, so I told her I’d meet her in the middle and dubbed myself a pessimistic realist.
- There were 3700 passengers on our ship and the crew numbered over 1200. The massiveness of everything related to the ship cannot be overemphasized and I think I may write up a separate post wherein I discuss all the ship statistics I gathered over the week.
- Every other person in Jamaica thought I was a drug addict and offered me everything under the sun. If they didn’t think I was a drug addict they thought I needed a taxi. It was absolutely insane and all of the badgering and harassment actually made most of our time on the island pretty stressful.
- I planned to get though the audiobooks of Charlie Wilson’s War and Freakonomics, but it never happened; there was just too much to do on the ship and at the ports.
- I didn’t take as many pictures as I would have liked, but I think I got some pretty good stuff and can’t wait to get it up here.
- Everything everywhere was a bit too Americanized.
- The stateroom stewards are magicians.
- A homeless guy in Jamaica asked me to take his picture. I did, and gave him $5. He then spent the next five minutes digging through a plastic bag and eventually asked me to write his address down on a piece of paper so that I could send him guitar strings or something. The address as he gave it to me: Johnny Cool, Post Office, Ocho Rios, Jamaica.
- It didn’t matter how many times I went up and down the stairs of the “fiesta boat” I was on, as soon as I got near the top of the stairs the man selling t-shirts (who I passed at least 20 times) would simply say, “What size and how many?” He almost had me on his 33rd effort, but I just couldn’t convince myself that I needed an “official” t-shirt to remind me of the boat.
- I was probably in a bathing suit more than any other person on the ship.
- Internet access on the ship worked great, but at $22/hr it was out of
myanyone in their right mind’s budget. It’s almost laughable that they can get away with charging so much. I don’t get it. - After going through the 9000+ posts that had built up in my aggregator over the last week+, I realized that I really didn’t miss anything.
- I learned that a lot serious art is sold on cruises (more than 300,000 pieces last year!). Went to a few art auctions and really enjoyed them, even though I had no intention of actually buying anything. OK, so the free champagne roped me into the first one, but I went to the others because I enjoyed them.
- Despite the fact that I was on a cruise and having a good time, I still found it hard to relax. It’s my lot in life I suppose.
- It makes little difference where in the Caribbean you go — the water is going to be beautiful and clear regardless.
- Some people responded to the totally non-personal auto-response I setup for my e-mail as if I was writing them personally (even though the message clearly stated I was on a ship in the Caribbean).
Well, that ended up being longer than I would have liked. Anyway, if the longer post never comes, I’ll try to give a few more details of the trip as they coincide with some of the shots I’ll eventually post here.
Incommunicado
As mentioned briefly before, tomorrow the girlfriend and I are headed out on a cruise to the Western Caribbean and so you can expect this space to be dead for at least the next week. Not sure what my net access is going to be like on the ship, but something tells me I’m not going to be able to convince myself to fork over the $22/hr they charge for it (yes, that’s the actual rate; utterly ridiculous), no matter how many Margaritas I have in me. It’s a coin toss as to how my brain will react to the deprivation.
The end-goal is to simply relax (easy to say, but…), which will involve me stuffing my face, thinking about the bar as little as possible, and taking some [hopefully] unbelievable pictures.
I’ve much to post when I get back, so hold your breath and I’ll see you in a week.
Introducing Prolific for WordPress
Well, I’ve just put the finishing touches on yet another WordPress plugin (my fourth). This one basically gives you a word count of all the posts in your WordPress weblog and updates itself automagically each time you publish a new post. To download the source, please see the project page.
The impetus behind the plugin was speed, or rather, the lack of it. I whipped up some simple PHP a couple of years ago to extract a word count from WordPress, a statistic I keep on the archives index, but because of my Smart Archives plugin, that page takes a few seconds to load (I don’t think it can be made any faster) and any extra time spent calculating the word count was only adding to the delay. Though WP-Cache has pretty much made the speed hang-up a non-issue, I still didn’t like the fact that I was calculating the word count each time the page expired from the cache.
I didn’t want to call it a “plugin”
I’m fully aware that this is a niche plugin if there ever was one, but if you are a stats junkie like me you’ll likely appreciate it.
The tour page is up
The tour is finally complete. After deciding how I was going to lay out the page (something I finalized months ago; it’s nothing groundbreaking), I was left to sift through my posts and find those I wanted to use on it. This actually took me a very long time and the page’s posts will probably remain in flux indefinitely.
After struggling to find a usable solution for presenting post excerpts that (1) was non-destructive and (2) didn’t require me to mark within a post where I wanted the excerpt to end, I just decided to run the full posts, which, after really thinking about it, is the only thing that makes sense anyway.
Let me know what you think.
Google Hacks, 3rd Edition
Paul Bausch, author of the third edition of Google Hacks, for which I was the technical editor, has just put up a few words about the newly released book. Have a look at what he has to say and then purchase the book. :)
Teaching Image Magick who’s boss
A few days ago I asked if anyone knew how to get “either Image Magick or NetPBM to create square thumbnails built from the largest square that can fit inside the center of the original image?”
While I received a few e-mails from others wanting the same, no one had a solution for me and so I had to fight off empathy and figure it out on my own (even though I was told it couldn’t be done). I would have typed this up sooner, but a good friend of mine is currently working with a new social-networking startup and thought that I might be able to use this (+ some other Image Magick/PHP voodoo) to make a quick buck, and so I had to wait for that situation to resolve itself.
Without getting into the details and at the same time gracefully skirting around how much time I spent on this, I’ll just show you the command and tell you what you need to change if you want to do it for a larger/smaller thumbnail.
convert filename.jpg -thumbnail x170 -resize '170x<' -resize 50% -gravity center -crop 85x85+0+0 +repage newfile.jpg
The above is for an 85×85 pixel thumbnail. Notice that the first two numbers (the 170s) are twice the width/height of the final thumbnail I wanted to create; given those relations you should be able to deduce what you’d need for a different sized thumbnail. Note that this command sequence also seems to work quite well for portrait images (i.e., where the height is greater than the width).
Prettify your shell prompt
I’ve used the same shell prompt for ~10 years now. 10 years. The colors I use come from an old IRC friend’s bash configuration utility (I probably have the script source buried deep in some archives somewhere).
You’ll notice that the prompt tells you the current user’s username, the hostname of the machine, and the current folder.
If you’d like something similar, simply place the following line in the .bashrc file of your home directory.
PS1="[\033[1;30m][[\033[1;36m]
\u[\033[0;36m]@[\033[1;36m]
\h[\033[1;30m]][\033[0;36m]:[\033[1;36m]:[\033[0;37m]
\W[\03[1;36m>[\033[0m] “
Realize that it should all be a single line (I broke it here so that it would fit nicely and be a bit easier to read).
Mirrored
You know, I don’t know what it was about studying for the bar, but it really seemed to force me into some serious self-reflective moments and not a day went by that I didn’t semi-consciously drift into a daydream about my past. I really thought a lot about where I’m at in my life, all the wonderful experiences I’ve been fortunate enough to have, and all of the incredibly crappy things I’ve somehow managed to overcome (externally at least). It really is a small wonder that I’m here, in California, on the cusp of beginning my career at a prominent IP firm.
It’s been an awfully wild and tumultuous ride, this life thing, and it’s just incredible to sit back and think about all that’s happened and how all of those things have, for better or for worse, shaped me into the person I am today. It’s overwhelming.
I can only imagine what it must feel like to think similarly of your progeny. I’m going to act like such a girl when I have kids, I just know it.
Building a photoblog off of a weblog
Update (2): While the previous update intimated that I wouldn’t have to modify anything in the WordPress source should I choose to go the route outlined in this post, I’ve come to think that isn’t possible. It looks like I’m going to have to modify both functions so that they return only the actual URI and nothing else. The changes themselves are very simple, but it’s just one more thing to keep track of when upgrading next time around.
Update (1): The possible issue I mentioned at the bottom of this post is not an issue it all. Turns out that WordPress has arguments built into the next_post_link() and previous_post_link() functions that “indicate whether the next/previous post links must be in the same category/categories as [the current post].” Yay, one less plugin to write if I end up taking this approach.
All this talk about getting the photoblog up and running has really sent my mind into overdrive trying to come up with a simple solution that would allow me to use the same backend (and subsequently the same posts) to power two completely separate sites (i.e., the weblog and the photoblog), instead of using an “external” photoblog application. More to the point, I want to continue posting pictures to the weblog as I’ve been doing for a while, but I also want to use those same posts as entries into a separate photoblog, which will use the various elements of the posts differently than the weblog.
The benefits of such a sysem are two-fold. First of all, it would ultimately be less work for me once it’s all up and running (i.e., I would just post once as normal and the rest would be handled automatically). Second of all, if there comes a time in the future when I don’t want to have a separate photoblog anymore, I can just discontinue it without losing everything that went into it (i.e., it will all be saved as just a regular part of the weblog).
I think I may have come up with a solution and am going to throw it out there to see what kind of response it gets. To me, this seems like the most elegant way to go about it and it minimizes the probability of future problems (e.g., if you change to a different CMS) as it’s as bare bones as possible and all you’ll really ever need to change is the code that specifies the file size (because presumably any CMS you move to will easily map to the post elements I discuss below).
The very simple solution
To start with, let’s list the various pages that will need to access and manipulate the photography posts:
- Weblog index page
- Weblog yearly/monthly/individual archive pages
- Weblog RSS feed
- Photoblog single-photo page
- Photoblog thumbnail page
- Photoblog RSS feed
Each of the above pages will need at least one of the photo sizes listed below:
- Small — 85 pixels wide (for the page of thumbnails)
- Medium — 500 pixels wide (for the weblog)
- Large — 800 pixels wide (for the single-photo pages of the photoblog)
These images will be created and uploaded to the site as filename-s.jpg, filename-m.jpg, and filename-l.jpg, which correspond to the three different sizes.
Looking at WordPress, we see that it gives us just three [post] variables to work with, namely title, content, and excerpt. We’ll use these variables in the following way:
- Title — as you would expect
- Content — description of/thoughts on the photo
- Excerpt — the filename of the photo without the suffix
So, the excerpt will contain the filename of the photo, but will not specify any particular size. However, we can use PHP (or whatever) to append the correct size (i.e., -s, -m, or -l) to the filename, and we will know the correct size because this can be hard-coded depending on which template we’re using (e.g., weblog index).
Walk-through
When the system is fully functional and all the code is in place, it should work something like this when publishing a new picture:
- Work some Photoshop magic on the next picture we want to put up.
- Save the image to a temp directory.
- Run a shell script that will create three images from the original: one 500 pixels wide (constrain proportions), one 800 pixels wide (constrain proportions), and one 85 pixels wide as per my earlier request for help.
- The above script will name the files based on the original filename (e.g., if the file was originally saved as filename.jpg, it will create filename-s.jpg, etc.)
- Upload these files to our webserver.
- Create a new post in WordPress. Remember, in the excerpt field we’re going to want to put the filename without the extension or size identifier.
- Be sure to put the post into a “photos” (or similar) category so that we can separate these posts from non-photo posts.
- That’s it! The various templates will add the needed file paths and will use the correct filename depending on the page being generated.
If you can shoot any holes in this approach please e-mail me and let me know. The only thing I haven’t given too much thought to is how I’m going to create the next/previous links needed for the photoblog. This could be a bit tricky because the links will have to be confined only to those posts categorized as “photos” (or whatever). I haven’t looked yet, but perhaps this functionality is built into WordPress. If not, I could probably write a plugin, but I’d rather stay away from non-standard band-aids if at all possible.
My Bloglines feed has been a bit spastic lately
If you’re using Bloglines to access this site, I apologize for the somewhat sporadic RSS feed as of late. If you haven’t noticed, sometimes some of the posts announce themselves as new or modified when they are neither and where I’ve done nothing on my end to cause their statuses to change. It’s been bugging the hell out of me for a while, and earlier today I finally had some time to take a look at it.
By subscribing to my feeds in various readers I’ve come to think that the problem is only occurring in Bloglines and so there must be some disconnect between that service and FeedBurner. I was hoping to have the issue reproduce itself through NetNewsWire so that I could use its “Highlight differences” feature to nail down the culprit, but NNW doesn’t register any changes (i.e., it’s behaving correctly).
I did some digging around in the source this afternoon and have come to the conclusion that the function that WordPress uses to populate the lastBuildUpdate element of the feed is a bit wonky. It looks at the last modified date of every post (and picks the most recent), when I’m pretty sure it should limit itself to the number of items in the feed. In other words, the date should change only when one of those items currently in the feed changes; after that item is pushed off the bottom of the feed it should have no effect on it from that point forward.
So, after seeing what Movable Type’s default RSS 2.0 template did (which doesn’t seem quite right either), I’ve set the lastBuildElement equal to the pubDate element of the latest post, which requires me to run through “the loop” twice, though for the first iteration I just set query_posts() to 1 (in the second iteration I set this value to 50 so as to make sure the more frequent “bits” don’t completely obliterate my regular feed when the regular weblog has been stagnant for a considerable amount of time).
All of this is just a long-winded way of saying “maybe it’s fixed, maybe it’s not.” Not sure there’s much else I can do about it at this point. No, it’s not a pressing problem or anything, but I find it really, really annoying.
If you’ve any idea what may be causing this, I’d love to hear from you.
A quick Image Magick/NetPBM question
Anyone know of a way to get either Image Magick or NetPBM to create square thumbnails built from the largest square that can fit inside the center of the original image? In other words, I basically want to crop the image from a square emanating from the center and then resize that square into an 85 pixel thumbnail. As per the earlier post, I’ve started to look at Movable Type as a possible photoblog solution, but I can’t stand how it creates thumbnails for uploaded images (i.e., it distorts them if you don’t constrain the proportions, which is something I don’t want to do). I started poking around the scale subroutines in the Image module, but I can’t seem to find the right options (and the right order) to get what I want and I’m tired of working on it (or, rather, I’m just too lazy to deal with it right now).
This is kind of a threshold issue, because if I can’t get this working then MT is definitely not an option for me and I’ll just stick with the Pixelpost setup that I’ve already put so much time and energy into. That said, I’m 99% sure this is doable, and easily.
Poll: What address should I use for the photoblog?
Update (2): This poll has been closed. Thanks for participating.
Update (1): Someone thought it would be funny to add “oogieboogie” as one of the choices. I was afraid something like that might happen and I’ve since removed the option altogether.
So, as I mentioned in the previous post, I’ll soon be debuting a photoblog here and am struggling to decide which URI convention I should use; thus, I’ve opted to let you, the reader, pick for me (as long as you pick the one I want). For what it’s worth, I’m leaning toward the sub-directory.
What address should I use for the photoblog?
- photos.justinblanton.com (37%)
- justinblanton.com/photos (42%)
- You honestly think I care what address you use? (21%)
The photoblog is imminent
I can’t wait to get back into photography over the next couple of weeks. I had to put a lot of the joys of my life on hold while studying for the bar and I’ve probably missed shooting more than just about anything.
As I’ve discussed here before, a few months back I actually setup, over the course of a few days, a complete photoblog using Pixelpost. It’s a great little package and certainly the best PHP/MySQL solution I could find, but man, I had to hack the hell out of it (as usual, I documented all of my changes so that I could help others with this in the future). The photoblog is currently fully functional and completely up to date; it took me forever to resize/upload all the old pictures I wanted to use, and in the order that they were originally included on this site (pulled in from Flickr).
Issues I’m still concerned about
The future
I’ve definitely got some misgivings about the whole thing, namely the future-proofness of it all, but the way I see it, I simply had to separate the photoblog from my regular site (for many reasons, not the least of which being that I wanted to display larger photos) and PP’s package is currently the best thing going. Moreover, a few months back I spoke with one of the guys behind the upcoming pixyBlog and he told me that not only were they thinking very seriously about offering an open-source solution (in contrast to their initial offering of having your photos hosted with them), but that you would be able import all of your Pixelpost stuff into pixyBlog.
I’ve also been looking very seriously at Movable Type to handle the photoblog. Most of you know that I’ve a very intimate knowledge of that publishing system and used it for a few years before moving over to WordPress way back when. The only real problem I foresee with that system running a photoblog is that there are no site-wide photo options (e.g., I wouldn’t be able to change the size of all the thumbnails from within the CMS1).
Thumbnail size
Pixelpost limits thumbnails to 100 pixels wide, and while this is fine for an archived page of thumbnails, I’d rather have them be a bit larger for the RSS feed (but smaller than the 800 pixel size I’m using on the site). I don’ t think this is possible without some serious overhauling of the underlying framework.
Posting outside of the photoblog itself
This is something I’ve been struggling with for a while, and besides that little bar thing I just finished up, this was one of the main reasons I’ve held off so long on moving to a full photoblog. I’d like to keep pictures here because I think it offers a nice balance to the regular techno-babble that pervades the site (and I know some others feel the same). Furthermore, quite a few people are subscribed to this site and the more people that see the pictures the better. However, the process might be more trouble than it’s worth.
So, what to do? I’m still not sure. I could always keep posting the pictures to Flickr along with my photoblog (and then pull in the 500 pixel versions from Flickr for the regular site, which is what I currently do), but this would essentially require me to post in triplicate (photoblog, regular site, and Flickr) and I think we’re all aware that less than full autonomy usually doesn’t sit too well with me.
Another hangup I have with this method is that I think I want to get away from Flickr entirely. Don’t get me wrong, there is nothing wrong with the service (it’s still untouchable as far as I’m concerned), but if I’m to do this whole photoblog thing I’d like it to be fairly centralized (hit counts, comments, etc.) and not spread out across disparate systems.
If you’ve any ideas, I’d love to hear them, but I’m pretty sure what I want isn’t really feasible and at the end of the day I think I’m probably going to stop posting pictures to this site altogether (I’ll just keep encouraging people subscribed here to subscribe to the photoblog as well).
Timeframe
I actually plan on having everything public by the middle of next week, unless I decide to take the Movable Type approach, in which case it will probably take an extra week as I’ll essentially have to start from scratch; getting the templates setup shouldn’t be too hard, but moving all the photos over will definitely take some time.
-
This could probably be accomplished with a little shell scripting and some site-wide find/replace magic. ↑
The near future
Now that that’s over, you can expect a ton of posts and links from me over the next few days as I catch up on all I’ve missed in the last week (my aggregator is telling me there are ~6500 news items to sift through). Apart from helping my girlfriend move, I don’t plan on doing much over the next couple of days outside of geeky computer things and watching all the stuff that’s built up on my DVR.
Vacation
I’m headed back to Florida in a few days for about a week and a half and plan to spend as much time as possible wakeboarding, kiteboarding (if my brother and I can work it out) and doing whatever other throw-caution-to-the-wind activity I can think of. I’ll also be hanging out with my dad in Cocoa Beach as he’ll be on a mini-vacation of sorts.
After that, I’m shipping out on a cruise to the Western Caribbean with the girlfriend. I really wish I was in a better mood, but I think it’s only going to get worse as I sit around and think about how I did on the bar. She’s so pumped for this trip that I feel guilty not being pumped myself as I know it drags her down. We’ll see how it goes.
Umm, well, that sucked
So, I’ve just trudged my way through the worst three days of my entire life — I took the California Bar Exam on Tuesday, Wednesday, and Thursday.
It was the hardest, most stressful, most insufferable thing I’ve ever had to do, and, as much as I hate to say it, I’ve got a sneaking suspicion I’m going to have to do it all over again.
Unfortunately, I have to hold my breath for four months, which means I get to spend four months dreading sleep for fear of having to worry about the future as I lay there. It’s not entirely uncommon for people to have to take this exam 4-5 times. I can’t imagine. I think I’d rather die. I’ve always had rather serious physical manifestations of stress and this exhausting, three-day marathon of self-doubt and worry really took its toll. I’m beat.
If you haven’t gone through this “rite of passage,” you have absolutely no idea how difficult it really is. You just can’t know. It’s no secret that the exam is the toughest in the country, and, well, by the end of the second day I was convinced of that; I was a complete zombie, hadn’t really slept or ate for a few days, and my brain was mush.
One simple fact remains and I have to keep repeating it to myself again and again: I could not have studied any more than I did. I’ve been told my entire life that I’m too hard on myself regarding just about everything I’ve ever endeavored to do (sports, academia, etc.), and I can’t disagree. I’m too competitive and expect too much from myself. I recognize this. However, I can’t change it. It’s part of who I am and how I operate, and to be completely honest, it’s what separates me from most people, even if it ultimately lowers my quality-of-life quotient.
I would have loved to have cheered and clapped as the proctor said “time!’ at the end of the last three-hour session like everyone else (1000+ people) seemed to do yesterday (seriously, it was like they won the lottery or something), but it just wasn’t in me and never has been. While failure has usually been a fairly remote possibility for me (if I actually try), the possibility of failure never ceases to cause me much internal strife and consternation until I win or pass or whatever. In this case, the possibility of failure is very real and I’m made to wait much longer to find out.
Anyway, I’m not going to belabor the point (some might say I already have); I could probably spend 500 more words on why the exam was difficult and why I don’t think I did so well, but it’s all pretty pointless and talking about it is just making me more depressed. On the bright side, I’m not in Iraq. :(
Keep busy. Must keep busy. Fortunately, I can do that really well.