This past Easter weekend I took a road trip with a friend, and stopped by Six Flags Great Adventure (New Jersey) on the rainy 11th of April, 2009. Throughout our visit to the park employees either wished us a six flags day, or asked us if we were having a six flags day. Since the term “six flags day” was never actually defined, I thought I would share what it means to me:

  • Messages left for the V.I.P. team will go unanswered.
  • Pay $5 to use your own printer to pre-pay for passes.
  • Said passes will print in a horribly mangled manner, but will actually work.
  • Receive contradictory information from different employees as to which rides are operating. Spend your limited time in the park killing time under the mistaken belief that all the rides are closed.
  • Receive incorrect directions to locations such as the seasons pass center and flash pass center.
  • Have a guest services employee assert that a refund will be issued, and ask you to return at least 30 minutes later for the paperwork to be processed. Return over an hour later (while the park is closing prematurely) to find it has not yet been processed.
  • Be promised a refund later that day, with an email confirmation to be sent shortly. This refund will in fact not take place, nor will any emails explaining the situation be received.
  • Discover that the redeeming quality of poor weather days (short lines) is in fact a curse since rides will not operate without a minimum compliment of riders. Staff will be unaware of the minimum ride numbers for other rides. They will also be unwilling to contact other rides (via phone, radio, etc.) to retrieve this information for guests seeking to make informed decisions before heading out across the park.
  • After a significant amount of waiting for more guests to arrive, finally riding a single major attraction being unable to pay ridiculously marked up prices for a photo of us on the ride, as at some point between entering the line up and actually riding the booth had closed.
  • Exit to find the washrooms locked with no indication of where other facilities may be located.
  • After a public announcement that the park would be closing shortly (15 minutes), hurrying over to a games booth that had previously seemed interesting, to find it abandoned.

So there you have it, that’s what a six flags day means to me. I'll take as few of them as I can get, thanks.

I’ve got a mostly written post in support of what I will term the rev=”canonical” movement, but it will have to wait for now.

For background see: Save the Internet with Rev Canonical, and A rev="canonical" HTTP Header

For the moment, the entire movement is moving way too fast. There are problems in the current suggested implementations, people are suggesting solutions (often different ones), that are then getting adopted almost overnight by some rather large sites.

This is foolish.

While I’m all for testing things out, and seeing how they work in the real world, I’m not sure that’s how I would describe what’s happening now. Presently we have standards being suggested on a variety of blogs, then being adopted in a variety of different ways on large sites trying to support the movement.

If this doesn’t slow down very quickly (and it presently looks more like a runaway freight train) at least one of the following will happen:

  • Different sites will implement it differently, and not want to change. There’s no formal standard anyways so why should they move over to the other model. Leaving us programmers to implement like three different solutions.
  • Security problems will become ingrained in the practiced version of the pseudo standard leaving sites unwilling to implement it because of the risks.
  • The final version will be such a hack, that adoption will be permanently crippled because people are unwilling to import such hacky code. Hacky ugly solutions are exactly what you end up with when you’re in a rapid cycle of problem discovery -> instant solution, as opposed to being willing to step back and consider everything at length.
  • A standards body like the W3C will step in, see that there is a problem with the current implementation and standardize on something else. Leaving us with a standard, and a pseudo standard.


I want this to succeed, I just feel that our present speed (as opposed to course) is leading towards disaster. Take a look at PHP and the whole namespace situation. The core team had a nearly completed solution, then threw it away to do better. This was a great decision, short term pain, great results in the end. The PHP team was able to do that because they're… a team. I'm not sure that can happen here, with the variety of people blogging what they think should work in disparate locations, it will be hard for anyone to move backwards, throw stuff away and improve.

Things that would help

  • A centralized location for the discussion, blogs and blog comments are no way to solve real problems
  • A clearly defined problem. Unless you can describe and scope the problem you're trying to solve you can't work or discuss it effectively. If the problem included language like "URLs greater than 40/25/15/10 characters can be problematic, the goal is to allow content to suggest a URL under this length" we would at least know what we were aiming for.
  • A grace period between suggestions and adoption. Developers hate re-writing code, if things were set in stone for even a few days before people raced out and did it, those few days would give researchers and tinkerers an opportunity to come up with solutions to not-yet-live problems, as opposed to live ones.

I picked up Eats, Shoots & Leaves while on a recent road trip, and am just starting to get into it. I am not a great speller (as my mother can attest), nor is my grammar where I would like it to be. I picked up the book in hopes of improving the latter. One of the comments made in the opening pages is improper usage of words that imply singular or plural. For example “He witnessed the phenomena in the sky.” In fact he witnessed a phenomenon, should he see the same thing several times the plural phenomena would be appropriate. I’m not sure I knew that.

So. For the next month, I will look up every word I use in a tweet or dent in a dictionary. Not some web dictionary mind you, a real dead trees one. It’s bit old now, but I’m sure it will suffice. I’m hoping that a better understanding of the words I’m using, combined with the grammar I’m picking up will allow me to communicate more effectively.

Would anyone else care to join in?
The full title should read: People I want to learn from in the PHP Community Day 7 - You

The PHP community is full of people with different backgrounds and experiences, that’s one of the reasons I love it. Maybe you’re a cold fusion refugee, or a non-developer with some other background who ended up doing PHP purely by accident, a Java convert (secretly missing the strict typing that Java gave you), or someone with some formal background in computer science. No matter the case you know things, things that I don’t know yet.

Every day PHP picks up new developers for a million different reasons. With the diverse set of backgrounds people bring to the language comes different ways of looking at problems, different approaches, and unique perspectives. That in mind there’s thousands of solutions out there better than the ones I’m coming up with, some of them are yours. Share them. Write a blog, help document PHP.net with great examples, send articles to a magazine, answer questions in help channels, anything! Just Share. Let me (and everyone else) learn from you, the unique perspective and background you've brought to the language.

I’d like to learn more from You


The full title should read: People I want to learn from in the PHP Community Day 6 - Terry Chay

They say if you repeat his name out loud six times before a mirror in a darkened room all your commit messages are replaced with profanity. I’ve never tried, but my last day is coming up...

All joking aside, he can pull in a crowd, set twitter a tweeting, and inspires the #TCFC tag. While I obviously don’t have the breadth of experience he does, there are aspects of his speaking style that I would like to learn from. His audience pays attention rather than chatting on IRC, and there’s always a level of expectation before he starts. His slides manage to avoid putting people to sleep. There’s a lot for me to learn here, even if I try to duck the explicit tag. I’ve taken the first step, reading through titles like Presentation Zen, and Slide:ology(recommended by Helgi Þormar Þorbjörnsson, I’d recommend the first over the second myself), and I feel my slides have improved considerably. Terry’s presentations just seem to flow a bit better, and his delivery is always spot on, and entertaining.

On the blog side of things, Terry is also a regular poster (something I'm working on). One thing I like in particular is that all of his posts seem to have a high production value compared to the average post crossing an RSS reader. They're decently researched, accompanied by images that help explain the story, graphics that make you laugh, or pictures showing the subject. If more bloggers wrote like Terry, I'd probably install an RSS reader.

Terry: I’d like to learn more from you.



The full title should read: People I want to learn from in the PHP Community Day 5 - Sebastian Bergmann

What’s the test coverage of your last project? Do you even practice test driven development? My answers are “Zero”, and “No” respectively, not answers I’m proud of.

I feel like TDD is something like flossing. Most developers I talk to admit to writing fewer tests than they’d like. Yet, little changes.

Sebastian is the creator of the PHPUnit unit testing framework. A very popular framework with integration hooks for phpUnderControl, and is supported by my development tool of choice: Komodo.

So while I’ve been out there soaking up the suck, Sebastian has been out there writing better code than me, and giving back to the community through open source contributions in PHPUnit and elsewhere (plus occasionally taking the time to lend me a hand, or shoulder).


Sebastian: I'd like to learn more from you.
The full title should read: People I want to learn from in the PHP Community Day 4 - Elizabeth Marie Smith

The PHP community is full of people prejudiced against different things. Prejudiced against Ruby on Rails, MySpace, and quite frequently: Microsoft Windows. This is unfortunate for several reasons: if you’re already running a few Windows servers it probably makes a lot more sense to add one more than learn a whole new operating system, there are people without any other options, it’s not actually that bad. Luckily we’ve got Elizabeth out there, fixing weird, bugs, rolling her own releases for a while, gently answering questions, and blogging away. All in all making PHP a much less scary place for the average Windows user looking to take the plunge and become a programmer.

Despite what we may want to think, there’s a lot to learn from Windows, as a desktop, but also as a serving environment. On the desktop, apart from sheer market share, there’s a few things I’ve missed about Windows on both Linux and Mac (some sort options, per user configuration and access levels, corporate logon and lockdown scripts, etc). On the server side if you haven’t looked at IIS 7 lately you probably should, the per-directory configuration it ships with blows .htaccess out of the water (including zero performance hit for using it). That’s just a single instance of innovation, the IIS team has done a lot of great work.

I’m glad we’ve got Elizabeth and other people like her (like Pierre who now works for Microsoft). They help ease the path for Windows users looking at PHP, and for us PHPers looking back at Windows.


Elizabeth: I’d like to learn more from you.
The full title should read: People I want to learn from in the PHP Community Day 3 - Derick Rethans

I’ll never forget my first PHP conference, php|works in Toronto: the first time I met Derick. There had just been a talk on internationalization, templating, and performance (at least, I think that’s what it was), and I made some crazy suggestion. During the next talk slot I got to sit beside Derick (OMG a PHP core developer is talking to me!) while he hacked up an extension to make my suggestion work. It was never committed to core or anything, he just worked it up, compiled PHP (a simple feat that impressed me greatly back then), and demonstrated the new extension. It was just an interesting puzzle that he spent a few minutes working on and sharing with me.

Derick knows a lot, about pretty much everything PHP related (or time, I don’t even wear a watch and Derick could probably tell me when daylight savings time started on the west side of Utah this year). But he is also ready and willing to sit down and just hack things out with anybody. Despite being a "celebrity" in the PHP world, and a core developer to boot, I’ve always found him incredibly approachable.

Derick: I'd like to learn more from you.
The full title should read: People I want to learn from in the PHP Community Day 2 - Chris Shiflett

I’ve known Chris for a long time, we actually worked together for eDonkey a long long time ago. I learned something about him back then that still impresses me now. Go sit in one one of his talks, or talk to him over a beer or something, then ask a stupid, but honest question. Chris will not mock or ridicule you, that’s good. But watch what does happen. Either through his own questions to you, or some research he suggests you do, he will gently lead you back in the right direction without ever making you feel silly or stupid. They’re not harsh corrections, I’m not even sure what to call them, they’re gentle, kind, and thoroughly educational. The Socratic method of correction?

As someone who loves speaking, both at Conferences, and in more mundane training situations I think there’s a lot I can learn from the way Chris fields questions, even the way out there ones.

Chris: I’d like to learn more from you.
The full title should read: People I want to learn from in the PHP Community Day 1 - Cal Evans.

I think I really decided I wanted to learn more from Cal last year at ZendCon. His opening comments before keynotes were spot on, and had me sitting there a bit envious: how could I lead into a conference so well? I think his magic trick was, he always made his opening comments about you, the audience; as opposed to him, the important guy up their on stage. While this pattern makes perfect sense, it’s not something I’ve mastered.

Since those great moments at ZendCon, I’ve noticed something else about Cal. He’s almost universally positive. Follow him on twitter, note his "good morning" messages, his complimentary links to other people’s blog posts and comments, and other random promotions. He’s just an all around positive guy, always seeking to boost up those around him. Saying that may, at first glance, make some of his comments seem insincere, (the problem with setting goals like "To compliment my co-workers more often") but having met Cal, it’s not. That’s just who Cal is.


Cal: I’d like to learn more from you.
So, just a little heads up, April will be my last month with php|architect (MTA). I've been training here for the past three years, starting right after University, and I feel I've grown a lot. Lately I've been finding myself missing coding more and more, and it's something I've really wanted to get back into.

(more in extended body)


I've accepted a position here in Montreal with a company that builds custom content management systems. I'm really excited about the opportunity, working on the software that powers sites that do millions of hits per day, handling CC transactions, and solving scalability problems by using data centers on three continents. Pretty exciting stuff, and great stuff to have on my resume for later in life, and under my belt for the conference talks I love.

I'm not leaving php|arch without hesitation. I've grown a lot here as a developer, employee and community member. I've learned a lot from my co-workers (past and present), and have had absolutely tremendous opportunities with the podcast, the conferences, training, and just the opportunity to meet and interact with many of the people reading this. It's a lot to leave behind.

Tragically, though Marco was kind enough to offer a ticket, I am not sure if I will be making it to php|tek this year. The company I'm going to work for generally has a formal probation period with no vacation, taking a week off just a few after starting wasn't going to happen. I have however negotiated for the Dutch PHP conference (especially since I have a formal speaking slot there), and will be attending with bells on, and possibly some new business cards.
A couple months ago I started a weekly tradition called Games Night (oh, the creativity, how did it bloom). Every Tuesday night I invite friends over to eat tasty baked goods, play fun games, and basically catch up and hang out. It's been a tremendous amount of fun, plus a great way for me to bake things without needing to eat three dozen cookies at the end of it! We've been having a great time, and I'm really enjoying spending more time with friends in an environment that encourages chatting and talking and such. It's also dirt cheap, while the games themseves run the gambit from cheap to expensive, the number of hours you get out of each makes the cost/hour/person wonderful.

Here's a few of the games we're playing:

Killer Bunnies

This game is a little... weird, and a lot of fun. Each player tries to keep their bunnies alive, while slaughtering the bunnies of the opposing players with great weapons like lasers, baseball bats, jello with evil pineapple chunks, etc. The basic rules of the game are pretty simple, but each card has its own little rule associated with it (think like the chance or community chest cards in Monopoly, they're all completely different. Now consider that you've always got five random crazy cards in your hand). The Game ships with a fair number of cards, but there's also expansion packs to make it just a little bit crazier. It tends to take new players a game or two to get into it, but once they do, they're generally in love.


Ticket To Ride - Europe (aka "The train game")

This game was purchased at the recommendation of the knowledgeable store guy, and it's fighting for favorite status with our group at the moment. The rules in this game are considerably more sane than killer bunnies. Each turn you draw a few cards, then spend a few to purchase train tracks connecting two cities (if you can). You also receive ticket cards which grant bonus points if you manage to connect specific cities which may be close neighbors or half a continent away. We're currently playing the European version of the game on games night, and the small Swiss expansion with a friend or two on other days. This is definitely the most strategic game we're playing right now, but even with a pretty casual group it's picked up some real fans.


Cranium

This is an old favourite. The game is great because there's a card for everyone. Wether you're a creative person, a better than average speller, singer/whistler/actor, there's something in there for you to excel at (failing that, just guess really well :-)). I love that this game tends to get people out of their chairs, and moving around them room. I'm thinking about picking up either an expansion pack or the new cranium wow edition to get some new cards into the mix.


Charades
Zero purchases required. Depending on how we're playing we might just have one person start, then tell the successful guesser what to do next (no teams, just for fun). Or have players come up with a list of possibilities before we start, put them all in a tin, then work off those in a team based game. If we're playing team based the writer of a clue must recuse them-self from guessing their own additions.

Pictionary
Another zero purchase game. We play it just like Charades, writing clues down in advance, then drawing. If someone writes down "cam shaft" as their item we've reserved the right to stab him repeatedly.

Pictureka

Now the box may say ages 6+, but we're having a lot of fun. Imagine competitive "Where's Waldo". Flip cards over, try to find either the item pictured, or items matching the description (fruit, flies, bones, things from the sea, etc.). We've modified the rules slightly to flip or scramble the board more often, and to add a penalty when players fail to complete their card in the time alloted. Good ice breaking game, minimal explanations needed! I love that a new player can just walk in late, and with honestly 7 seconds of explanation be having fun.




P.S. I've already taken ten "keeper" images for my "no purchases without pictures" challenge. They're visible up on my flickr photo stream
Meet our fair protagonist, young Paul Reinheimer. He lives in a rather nice neighborhood in Montréal Quebec. Like many of you, he eats, sleeps, occasionally drinks, and orders a fair number of products using something called the “Internet.” Now a while back Paul placed two orders for interesting products using that Internet thing, one for himself, and another for a colleague (how selfless). One facet of Paul’s personality is his desire to make his opinions known when he receives either poor, or fantastic customer service.

Now both orders encounter problems, they are both delayed (but no one tells poor Paul, who continues to check his mail box in hopes of goodies, or watching twitter looking for delivery confirmation for the other gift.). Beyond simple delays, they both run into another little problem, the first order (the gift) has its gift message chopped off, removing a rather critical part of the message (who it was from). His personal order has his two favourite products removed, indeed the very two products that encouraged him to place the order in the first place.

Paul, being who he is, writes off two letters to the respective companies, expressing his disappointment.

The first company writes back, rather tersely indicating that they have fixed the problem, and should Paul order again all will be well.

The second company writes back, apologies for, and takes owner ship of, the problems. Also offers to mail Paul the products he is missing, for free.


Now one of these two firms delivered poor customer service, then brushed Paul off when he indicated he was dissatisfied. The other apologized, and offered to make it right. I think it’s clear where Paul will choose to make future purchases.

For reference, Slanket was the company that brushed Paul off (if you’re interested in the blanket with sleeves thing, maybe try out their competitor snuggie). CheapAss Games was the company that made things right (and indeed, the problems Paul had were with their order fulfillment company Paizo). If you’re looking for some great games to play with friends and family, give them a try (though Paul might recommend buying them from a local games store, time consuming, but community building. Those guys and gals who work at game stores know lots of stuff. The kind people at Le Valet D’Coeur here in Montréal stock CheapAss Games. ).
So, April has begun, and I feel it's time for a resolution. I will purchase no more camera gear, toys, books, etc. Until I have taken 100 pictures that I would consider to be "Keepers". Toys are all well and good, but I've got more than enough gear to be a great photographer already, I just need the skill.

No more gear without great pics!

I've started a new tag (keeper) to keep track: http://www.flickr.com/photos/preinheimer/tags/keeper/ I've pre-populated it with one photo.
(What I'd like from a Twitter client)


Here are my must haves for a new twitter client:
1. MacOsX
2. Growl integration
3. The ability to configure which messages are "pushed" to me through growl (e.g. just messages with @preinheimer, messages with that or #awesome, everything). I'd like messages directed at me to be pushed to me. I'd like to pull in tweets from friends on demand (but not have them iterrupt my work flow otherwise).
4. Spell check
5. The ability to write messages longer than 140 characters, then edit it down before sending. A hard limit just annoys me, I generally go past, then edit.
6. Display @preinheimer messages inline with my regular feed, even if I'm not following the poster.
7. Mark messages as read when they're displayed, rather than click.


Because I'm a demanding jerk, this is what I'm willing to offer:
1. I will look up what version I'm using before I uninstall the software so my bug reports can be filled out competently.
2. I'll tweet using it, occasionally in a grumpy fashion over some miniscule annoyance that I can't be bothered to tweak in an options menu.


Does what I'm looking for exist?

Hi, I’m Paul Reinheimer, a developer working on the web.

I co-founded WonderProxy which provides access to over 200 proxies around the world to enable testing of geoip sensitive applications. We've since expanded to offer more granular tooling through Where's it Up

My hobbies are cycling, photography, travel, and engaging Allison Moore in intelligent discourse. I frequently write about PHP and other related technologies.

Search