Archive for the 'Rants' Category

I will not debate PHP vs. Ruby

Wednesday, January 20th, 2010

I am a PHP programmer. I have been a PHP programmer for most of a decade. My license plate says “PHP DEV”, and I have PHPUnit tattooed on my arm (in Kanji). It is with that overly-defensive attitude that I must admit the inevitable: my latest project is in Ruby.

Shock. Awe. I know. It was an easy decision based on the server stack we were running, our growth plans, and the fact that we needed to train intern developers with a very quick turnaround. We went with the sexy newcomer, but that’s not the interesting story. The interesting part is that it wasn’t a big deal at all. With good frameworks, it didn’t really matter what language we chose.

Part of the reason that I love frameworks so much is that dropping from CakePHP to Ruby on Rails is a syntactical change and not a process change. In a way, frameworks are just enforced design patterns (MVC, mostly, in my case). Plus, playing with a different language after all this time away has been great experience. This jaunt into the land o’ pure object-oriented madness and strict coding rules has made my PHP coding (especially CakePHP) better. I have new appreciation for fat models and thin controllers, and I throw in the ternary operator more often. On top of that, I’m getting to teach people (like my friend Neil) who have never really done web development on this level. Through teaching others about MVC architectures, I’ve gotten better.

So, I’m still a PHP developer. It’s the basis for 80% of my work projects and all of my freelancing.
I’m having fun, though, on the other side. Stretching my PHP skills, adding to my toolbox, and remembering that I was just a better programmer when I couldn’t rely on ten-year old knowledge.

The Vendor-Client Relationship

Tuesday, June 23rd, 2009

(via Phil Cooke)

Brain Naps

Thursday, February 12th, 2009

brain_nap.jpgI watch documentaries to learn. I watch great action movies for entertainment and escapism. I watch a handful of very special movies and TV shows for a higher purpose, though: the elusive “brain nap”. A brain nap is the closest thing you can experience to actually turning off your brain. I may dream of PHP code and bad data structures, but put me in front of an old She Spies episode and I will think about absolutely nothing.

My best brain naps normally involve the aforementioned She Spies, Freakazoid!, UHF, or basically any Sci-Fi original movie. The key is it has to be stupid enough not to require your brain, but not so dumb that you start thinking about how bad it is. You’re not trying to start an internal Mystery Science Theater 3000 monologue about the dumb actors because that is what we call counter-productive. That movie may just seem stupid, but it has to be wily enough to get around all of your brain’s guards and attempts to “think things through”. It has to appear innocent while it lays it’s trap.

Mansquito (on Sci-Fi at 3am): “Hey, Jeremy’s brain, I know you’ve been spinning on all cycles to optimize those database queries for some obscure use case, but why don’t you just take a break. Let me take over an hour. Maybe two.”

Jeremy’s Brain: “No. I suppose I can try to relax a little, but I can’t just trust you to take over completely. I’m pretty important around here. There’s a lot of things I need to— Stop rubbing my shoulders, Mansquito. I have a lot to do and— okay, that’s the spot. Maybe five minutes.”

Mansquito: “Five minutes? That’s fine. I mean, I just want you to release that stress, brain. How’s that? Would you like a drink? I happen to have some merlot over here.”

Jeremy’s Brain: “No. I mean, I guess one glass wouldn’t hurt. Um, Mansquito? This wine tastes kind of funny. In fact, my head’s starting to—”

And that’s it. With it’s hypnotic, rohypnol-esque badness a Sci-Fi original movie takes over my higher functions and knocks my brain out for two hours. As the credits roll at the end, my brain starts to come around. After an awkward silence, I get up and my brain realizes it feels more energized. It’s recharged. It just woke up from the best nap it’s ever had. I run back to the computer, optimize those queries like nobody’s business, and get started on the next big thing. Eventually, my brain will start to remember a few fuzzy scenes of genetically altered mosquitoes, but we never really talk about it. The “brain naps” may be my only secret to sanity, and we both know they are uncomfortably necessary.

Relevance gone bad

Thursday, September 11th, 2008

I have no words…

[via PhilCooke.com]

A brief history of time (management)

Saturday, July 19th, 2008

This started out as a review of the new OmniFocus app for the iPhone. I was going to talk about it being the first time I can have powerful task management on my main computer and not abandon it at my desk. I was going to explain that I have always either tied myself to a solution that was too simple, but portable, or an awesome desktop app that was only truly helpful when sitting at my desk. Being too analytical, I started out by thinking out the history of my to-do list, and I realized that explained why I like OmniFocus better than my actual article. So, I present to you my (mostly) chronological evolution of to-do lists.

Day Runner

My first love…

My mom got me my first Day Runner when I was 13 (possibly younger). Really. I begged for it in the office supply store as only a future nerd could. She eventually gave in to my geekiness, and I got my first taste of organization. It seemed infinitely extensible, yet structured in a powerful “business professional” way. You’re thinking there was no way I thought about that when I was 13, but you could not be more wrong. I loved a fully-stocked planner, and I still kind of do. My wife replaced her Palm Pilot with a big planner last year, and she couldn’t be happier (although her iMac is replacing it). My problem? I write down way too much with my whole “ubiquitous capture” obsession, and I can kill many a planner.

Paper

…and then I couldn’t afford the refills.

Inevitably, at some point I wore out multiple planners and went through way too many refills. I realized that I could manage just as well with a good spiral notebook, and then I could stop crying quietly at night thinking about how much I was spending on that specially-formatted-just-because-we-can paper known as “refills”. Yes, I could have just printed my own refills, but that wasn’t nearly as easy/popular/economical in the olden days. I normally just ran out of the to-do list refills and ended up shoving a napkin with a project plan into the pocket.

Palm Pilot

Project management in my pocket.

I have had six different PDAs. I even had a Sharp Zaurus SL-5500, which gives me way too much geek cred. I used little project management apps like “progect” to organize my tasks. The thing I loved was that it was in my pocket all the time (seriously, all the time). I just ran my task list from my pocket, and never cared about syncing issues. This was good because I had Linux in the bad old “can’t-really-support-usb” days that involved modifying and compiling your own drivers (I did), and I tended to like Palm apps that could only talk to the ugliest desktop apps on the planet.

Paper 2.0

I guess I just need paper again.

At some point I realized that the un-sync-ability of my task apps made them about as “powerful” as pen and paper and less extensible. Obviously, my next step was to go back to paper with a vengeance. I mean, at least on paper I could organize things the way I wanted them, and I had started to work out my own GTD-like system with projects on one page, and today’s task list on another. I just had a great big list of tasks, and I narrowed that down to a smaller chunk every morning on a separate piece of paper. It was simple, but it didn’t always scale. Once my “big list” reached two pages, a lot of important projects got lost in the shuffle.

Palm Pilot w/iCal

Okay, I can kind of sync.

I had a brand new Powerbook, and it could sync! This didn’t really solve the scaling issue, but it was a start. I imported everything into iCal, and then I’d flag the top 5-10 tasks to work on each day. It was almost exactly like the paper system, but I could scan it faster and it could easily talk to my Palm Pilot. This worked great until my task list reached 265 (I’m now at 423). At that point, I lost perspective, got depressed, and started going on all-night organizational benders.

Kinkless GTD w/iCal

I can kind of sync, and I’m getting organized about it.

After taking a long weekend to “clear my mind” and “stop screaming at inanimate objects”, I found some great sites like 43folders.com that gave me enough tips to talk me off the ledge. I discovered Kinkless GTD, and then I read “Getting Things Done” by David Allen. I decided that GTD wasn’t “the way” or a cult, but it was a good place to start in actually, you know, getting things done. All of a sudden, life was a little bit easier. I had less stress. I could sync with— no, I could kind of sync with my Palm Pilot. I synced a couple times. One day, my iCal messed up it’s own records, synced with Kinkless, wiped out Kinkless, and then in “data seppuku” wiped itself out. I lost my 265 tasks into oblivion. This happened twice before I buckled down and bought Missing Sync.

iGTD w/iCal

I can kind of sync, and I have a GUI.

Unfortunately, I fiddled too much and got tired of pressing the sync button all the time. I completed something, so I pressed the sync button. I changed something, so I pressed the sync button. I forgot if I had forgotten to sync in a while, so I pressed the sync button. It was a natural result of Kinkless being a script, and you can’t blame Ethan for that. I wanted GUI goodness, though, and I tried iGTD. I used iGTD for quite a while, but I just couldn’t commit to it. I wasn’t managing my projects with the same top-down view I had grown to love. It was just built for people who think differently than me. At least I could still sync, though.

OmniFocus

I love my app, but I’m not mobile.

I joined the alpha testing for OmniFocus, and I loved it. It had more of the “big picture” views that I needed, and it even had some basic iCal syncing to tide me over. It wasn’t perfect, but it worked. It worked, at least, until I got my iPhone. I loved my Palm TX, but I just couldn’t resist the charms of the iPhone. I needed my task list, though, because I still have a few moments every day (maybe not today) that I’m not staring at my computer screen. I like to run errands, fix things around the house, and, yes, even help my wife cleaning the house. My big solution? To print an errands and housework list from OmniFocus or write it down in my notebook. Then, I’d check things off and “sync” it later by checking things off in OmniFocus. I always needed to add to my things to my inbox, and I got really good at emailing myself tasks. OmniFocus handled my emails with ease, but I still couldn’t actually edit tasks or plug my new tasks into just the right spot in the middle of a project. I was just sending myself reminders, basically, of things to organize later.

OmniFocus w/iPhone App

Bliss!

Here I am today, and I’m the happiest I’ve ever been with a total solution. This is sweet, sweet, synced bliss. I do my main organization, weekly reviews, new projects, etc. on my laptop in OmniFocus, and then it’s automatically in my pocket. I can even tweak, rearrange, defer, delegate, and create on my iPhone, and I’ll see it later on my laptop when I get back to work. I basically have a license to fidget with my system all the time, for better or worse. Okay, it’s not technically perfect. Sometimes the syncing is slow (like three-minutes-to-update-my-tasks slow) or I can’t sync at all, but that’s pretty much because of MobileMe’s widely-publicized growing pains. Even then, it’s still the best system I’ve had.

Addendum

Moleskine, you complete me.

Lest my pocket Moleskine and Pilot G-2 be offended, let me assure you that I’ve only abandoned paper for my to-do’s. My wife knows exactly how obsessive I am about my notebooks and pens. As an aside, if you haven’t read The Gel Dilemma on RandsInRepose.com, I highly recommend it. The only part where I differ with him is that he sees the retractable operation as a bad thing (which I know I used to), but I actually think it’s more convenient to getting my pen “ready to write” and never losing another cap.

Update: Thanks to an update in the OmniFocus iPhone app and a more stable iDisk connection, my syncs are nice and fast now. Thanks, Brian!