Archive | January, 2009

My Stream-of-Consciousness During the Google-ocalypes

31 Jan

This is my unfiltered and raw stream-of-consciousness during the event that I like to call the google-ocalypes.

what is the pricing model for AWS EBS? …
huh, that’s odd… some spammer must have taken over the results for ‘amazon web services pricing’ …
no, the URL is correct. maybe someone hacked Amazon!!
*search for ‘amazon.com’*
yeah, someone definitely hacked amazon. I better write a blog post about this! eh, someone probably already has …
my cat looks like Jabba the Hut…
*search for ‘hacked amazon’*….
hmm, all of these are marked as malware too. very odd…
I’m hungry… eggs sound good for breakfast, maybe with a hot toasted english muffin…
orange juice…
*search for ‘google’* woah that’s marked as malware too!
this definitely deserves a blog post…
I bet TechCrunch has already written a post about it…
*search for ‘techcrunch’* (note: I use google as my URL bar)…
Shit! even that’s marked as malware…
I’m definitely writing a blog post now…

Google Results Showing Everything as Harmful

31 Jan

*UPDATE* Looks like it’s a worldwide thing: Google Flags Whole Internet As Malware

Odd bug at the moment with Google search results. All results are showing up as “harmful to my computer.” Is this just me or are other people seeing this too?
googlebug

An Expirement in Live Web Development Through Chatrooms

30 Jan

Shaun and I recently partnered with Darren over at OneBadWheel.com, a popular nascar site for fantasy players and stats junkies.  Now, I will be the first to admit that I am a complete NASCAR Noob.  You could present to me 10 pictures of the most famous and successful NASCAR drivers and I probably couldn’t name a single one.  But, this opportunity is really exciting for me because we’re going to get to develop the interface and gameplay for 3 fantasy NASCAR games.  Darren’s getting me up to speed quickly on the rules and nuances of NASCAR stats, and from a pure web development standpoint, fantasy games are just about as fun as it gets.

One of the things we want to do is bring a lot of the “Web 2.0″ (I hate that term) leading-edge web tech to the world of NASCAR.  Shaun’s created a twitter account for OneBadWheel, we’re using a lot of ajax techniques and incorporating a lot of jQuery UI elements into the site and game design, and we’ve set up a Multi-User Wordpress system for a bunch of NASCAR bloggers.

Live Chat Experiment

meeboWe are also expirementing with something that’s new (to me atleast) — I’ve put a meebo chatroom on the sidebar of every page billing it as a “direct line” to the developers of the site.    We’ve already had a few support questions or bugs through our wufoo support form (see! another web2.0 widget), but we’re literally pushing loads of new features every night trying to get it all in before the start of the NASCAR season (Feb 15th).  We want something more live, more immediate.  Enter the meebo chatroom.  Now, anyone (you don’t have to be signed up for meebo to participate) can shoot us a message.

How will this experiment work out?  Who knows.  I think it’s a win-win to give it a try.  But what about user experience, you say.  Meebo’s infrastructure is robust, and we’re loading their chatroom last so I am not concerned with any kind of pageload issues.  There isn’t a discernable screen flash, or resizing of divs when meebo’s room loads, so I think usability is impacted very little.  Seems like the worst case here is if nobody uses the damn thing I wasted all this time writing a blog post!

I’m excited to see how this experiment goes and I’ll be sure to update with another blog post.  I’ve embeded the chatroom below for anyone interested in joining the conversation:

Love the new CakePHP API browser!

30 Jan

I’ll let the app itself do the talking, but just let me say that I love what the Cake team has done with the new API browser. The best part is the API generator is released as a plugin so we can all enjoy sexy APIs with our cake apps!

cakeapi

Great, Another Internet Explorer

27 Jan

Just saw an article on ZDNet in which they benchmark the javascript performance of IE8 RC1 with other browsers. Sadly, it looks like Microsoft’s javascript engine doesn’t perform very well at all. Having moved to primarily javascript development, my first reaction is to take my face and plant it firmly in my palm.

I’m sure Microsoft will try to make up for this lack of speed with extremely aggressive caching…

IE8 RC1 javascript performance courtesy of ZDNet

IE8 RC1 javascript performance courtesy of ZDNet

Three Cheers for CakePHP Backwards Compatibility

27 Jan

cake-logoI would make a horrible framework developer.  Why?  Because I don’t have the patience to put the effort into making my code backwards compatible (unless I really, really have to).  Thankfully, the developers of CakePHP are not like me.

I just had cause to take an old client site that was built on CakePHP 1.0.x and move it over to a new platform with some upgrades in functionality.  Since we are most likely going to be developing a bunch of new features on the site I felt it was important to go ahead and upgrade the cake core libraries to the recently-released 1.2 — a task I was dreading from the moment I thought it.

But, surprise surprise, the whole ordeal wasn’t an ordeal at all.  In fact was incredibly easy because the Cake devs made it a point to include backwards compatibility. As a result a lot of my legacy code could remain in place to be upgraded gradually.

Take for instance the following gem.  I was a rough and tumble Cake developer back when I first wrote this and this format was actually never really acceptable in the first place, but it worked in 1.0.x:

$this->Order_frame->findAll();
// correct way to access the order_frames table: $this->OrderFrame->findAll();

// in view
echo $orderFrames['Order_frame']['type'];
// correct way to access the data: $orderFrames['OrderFrame']['type'];

Now, having used Cake for a couple of years I know the error of my ways. But, to my surprise, when I ran this legacy code locally on a fresh 1.2 core it worked. Huh? There was no way they would still support this ancient syntax! Heck, I dont think they ever supported it, really.

Anyways, this is a long way of showing my appreciation to the CakePHP devs for building the framework with all the legacy code out there in mind.

Stackoverflow and Reputation Points

23 Jan

stackoverflow-logo-250I submitted my first question to stackoverflow the other day, and I must say the entire experience was extremely pleasant.  What is stackoverflow?  Well, many bill it as a newer and better experts-exchange.com but to even mention the two properties together is an insult to the people that built stackoverflow, their mothers, and their mother’s children, including them (so that’s a double insult!).

It is a site where coders can share knowledge through question and answer with a heaping spoonfull of awesome added for good measure.  Here’s a list of ingredients in that awesome:

  • Open ID support
  • Reputation points
  • tagging
  • Badges!
  • A clean, simple, attractive design

Is there a need to break down reputation by subject matter?

The reputation points is perhaps what interests me the most.  Let’s face it, we’re a hierarchical society.  There are always going to be people at the top of a given field, and if you consider yourself a professional in that field you should know who those people are, even if you are one of them.

Stackoverflow provides a good, quantitative measurement of the general expertise in the software development field.  No, it doesn’t replace resumes and body-of-work, and no it is not a perfect system by any means.  But, when you’re quickly looking for an answer to a software development question, you want and trust an answer from a person with a higher reputation score.

But, is reputation too generic?  I would like to see the points split between the tags that a person is involved with.  There would still be an overall reputation, but when viewing someone’s profile I would like to see from which tags those reputation points came from.

Stackoverflow's profile tag list

Stackoverflow's profile tag list

Stackoverflow already does this to a limitted degree, but from what I can tell, the number next to a person’s set of tags is simply the amount of times they’ve been associated with it.

Take the image to the left for example.  I can tell this person has been associated with CouchDB five times, but without clicking through to each of the articles can I tell how much of his reputation is based on his knowledge of CouchDB?  I can infer this from the relative number of CouchDB tags to the rest of his tags, but I’m stupid and lazy and I don’t want to have to infer anything.

As an asside, this person is Paul Davis – one of the most active members of the CouchDB community.

Don’t missunderstand me here, I think stackoverflow is absolutely great.  So is their reputation system.  But, I think splitting up their reputation between the tags that a user is involved with would go a long way towards making this the defacto community and hub for  expert sex changes software development.

What do you think?

Step 1: How to Concisely Convey Anything – Lists

22 Jan

  • Pretty much everything belongs in lists
  • See the bullet after roman numeral IX

    See the bullet after roman numeral IX that is nested in Step 6.

  • Lists make any piece of information more digestible, readable, and hip
  • There are many types of lists, here is a list of types of lists:
    1. How To’s (like this one)
    2. How Not-To’s (not like this one)
    3. Laundry Lists
    4. A list of things that you need at the store that sells food and stuff (this needs a better name)
    5. Other
  • Sometimes it’s good to define the steps in your list, especially when it’s a how-to
  • Step 1 – see previous bullet
  • Step 2 – nesting lists is good
  • Step 3 – having a single item in a nested list is bad
    1. See step 2
    2. See Step 3
  • I. Many people think Romans are most famous for inventing the arch, but in actuallity their greatest contribution is the Roman Numeral
  • II. Roman numerals are easy – just remember it goes: one, eleven, one hundred eleven, etc. etc.
  • Step 6 – Making references to previous items in your list is helpful to people that are confused easily.
    • Assume that everyone is confused easily (see step 6)
    • IX.That is why you are making them a list (see all other steps, including this one)
  • Cut up your lists every once in a while with images – most people will only look at the pictures anyways
  • In Conclusion, lists are great because you don’t have to write closing paragraphs that summarize what you just said. If you feel you must bring closure to your list, you can always make a short conclusion list that summarized the other bullets in your main list. This is a controversial technique. Alternatively, the last item in your list can be simply “The End” – a technique borrowed from the film industry.
  • The End

Git-SVN is to SVN as TCP is to UDP

19 Jan

logoAll of my code nowadays lives in one of two places – my company’s private SVN repo, or on Github (awesome site and service, btw, but that’s for another post).  It wasn’t always this way; recently a friend of mine convinced me to make the jump onto git.  I was reluctant at first, just because I thought I was ‘in the groove,’ so to speak, with SVN.  But, after about 3 weeks of primarily using git, I have to agree with my friend when he says he can never go back to SVN.

But what about all that existing code in my SVN repo?  Git has me covered with SVN bindings – git-svn – sweet! Unlike other apps that attempt to support legacy systems through half-assed functionality, my personal opinion is that git-svn is a better SVN client that svn.

Git-SVN is a better SVN client

Huh?  Well here’s how I think of it – git+svn is to SVN as TCP is to UDP.  TCP makes it simple to ensure that communication packets between a client and a server are complete and in the order that they were sent – an important foundation for something like the internet, where there is massive concurrence, congestion, and instability.  Take this quote from the wikipedia page on TCP and see if it sounds similar to working with your SVN repo:

Due to network congestion, traffic load balancing, or other unpredictable network behavior, IP packets can be lost or delivered out of order. TCP detects these problems, requests retransmission of lost packets, rearranges out-of-order packets, and even helps minimize network congestion to reduce the occurrence of the other problems.

Replace packets with commits and TCP with git in that statement , and you have a pretty good feel for git+svn as a client.  Sure, conflict resolution is possible in SVN, but it sucks.  Git-svn makes conflict resolution dead simple with git-svn dcommit (commit your git repo revisions to svn, while simultaneously updating your working copy), and git-svn rebase (fetch changes to the SVN repo, rewind your repo to apply changes, and then apply your edits on top).  For a full list, check out the git-svn manual.

header

Actually, git-svn = TCP+UDP

The analogy isn’t perfect (in git’s favor) – as generally TCP is slower tha UDP, and TCP is only meant for 2-end communication.  But from my experience git+svn is much faster than svn, and since your working copy is really just a git repo – you can take advantage of the distributed qualities of git.  So really, the analogy should be: git-svn is like TCP and UDP combined!

Anyways, don’t take my word for it – go try out git yourself!  The fact that you have an entire ecosystem built around your SVN repo is no excuse anymore.

From Keyboard with Love Part 1: Gmail

17 Jan

russiawithlove1It’s a general rule in life that if you think you’re skilled or knowledgeable about something there is probably someone out there more so.  For instance, I consider myself really good at grammar – but I’m willing to bet someone, somewhere is gooder than me.  It’s just a fact, and I’m willing to accept that.

That’s why it comes at no surprise to me that when I thought I was “in the know” about keyboard shortcuts and keyboard usage in general, I stumbled upon a whole new world of keyboard shortcut enthusiasts.  This is part 1 of my exploration of this brave new (sources tell me keyboard shortcuts have been around a long time) world.

In this first installment I start out with an easy way to increase your productivity by using keyboard shortcuts in gmail.

Using Keyboard shortcuts in Gmail to impress women

Many people I know leave Gmail open all the time and are constantly checking, reading, and archiving/replying to emails.  Are you one of them  (not people I know, but people that leave Gmail open all the time)? If so, fortunately Google provides keyboard shortcuts to make all these tasks even easier and faster.

picture-1

Figure 1 - Visual guide to the complicated process of enabling keyboard shortcuts in Gmail

Enable keyboard shortcuts by going to Settings (top right) -> General -> Keyboard shortcuts.  Bam you’re done.  Now when you check your email you have some features that other, uncool people (whom I refer to as the gmail prolitarians), don’t have!

gmailarrowNotice the little arrow next to the first conversation in your inbox.  This indicates the current conversation on which your newly activated keyboard shortcuts will act.  Pressing j and k will move that arrow up and down the conversations, and pressing o will open them.  That’s about 60% of the functionality right there isn’t it?

So, you’ve read the email and now you want to reply to it.  Easy.  Just press the r key (left of t and right of e)  and Gmail pops open it’s reply dialog ready for your input.

Oh, while you’re inside a conversation, you can also press n and p to move up and down the messages in this current conversation.  Is the message you’re on closed?  Simply press o to open it.  And finally, to get out of the conversation and back to your inbox, press u.

What is that, 90% of the functionality you normally use while checking mail?  You want to write a new email?  Press c.  There.  That’s got to cover at least 98% of the normal user’s functionality, right?

For the other 2% check out this handy guide by google, cryptically titled Keyboard Shortcuts.

That’s it for this installment!  Next up in reverse lexicological order, Google Reader for news, Wordpress for writing, Quicksilver for everything, Ubiquity for everything in the browser, VIM for coding, and many more.  Stay tuned!