Rails Rumble '08

1 Comment

Rails Rumble was an amazing experience.  I think I slept about 6 hours over a 56 hour period and while I became grouchy I don’t think I ever stopped having fun.  The fun stopped after the first day of voting.  Starting during the second day of voting I <3 Games plummeted in the rankings.  I am not really sure what happened to cause this fall.  I am not the most objective person but in testing some of these other apps I’ve run into some real problems that I don’t understand how something that doesn’t quite work could be ranked higher than our app which I think is about 90% done.

Problems with voting

  • With any voting system there are always ways to game the system.  The OpenID requirement for Rails Rumble voting would make gaming rather easy I would think.  Without a captcha or email validation it would be fairly easy for a machine to sign up for voting as many times as it wanted.
  • Voting with most people for Rails Rumble is only based off of a glance, there is very little actual signing up to use the app going on.
  • No way to explain what your feelings about the app were.

I think if some of these issues were addressed I would feel a little better about the voting system.  I think the 8 random apps a day idea was a good one that helps prevent the event from becoming an popularity contest.

Gaming the system is always going to be a problem.  Bots can be created that get around almost every system to stop them, but when the systems are few and far between to stop them they can have a field day and can dramatically skewer results.  I do know a few people who aren’t bots that just said “Oh, well I’ll just give every other app 1 star across the board” and it shows.  Rather than 3 stars being the “average” value for an app it is the high value.  I know there won’t ever be a 5.0 over all app, but we’re talking about 2.9 being the high value and 1.6 being the low value.  That is a lot of 1 and 2 stars over the 4 or 5 stars.  On a scale of 1-5 then 3 should be the average, that should be “this app is unremarkable, there is nothing wrong, but nothing right either” instead if we keep going along the way we are currently going then 2.9 is going to be the winning score, which using the normal averages would mean that it is slightly below average, and while I’ll be the first to admit none of these apps are above average against an application where you have an unlimited time frame and tons of QA testers.  If you keep in mind that every single one of the apps was designed in 48 hours by 1-4 people I would have to say a great many of them are above average.

One of the problems I have with the voting system is that the results tend to be skewed towards pretty on the front page apps.  Powered By Geek didn’t exactly cater to this, we hid a lot of functionality after sign up, but we did put a little video up explaining about the app.  The real problem I have is the number of people who aren’t even signing up who are voting on the app.  I know for a fact that our login/signup process works because we had a guy dedicated to testing that procedure during the actual competition and I’ve created about 10 accounts as well with my numerous Open IDs and as regular users.  Looking at our numbers we’ve had 79 users sign up, and when you take into account all my test accounts that is about 70 users total who have signed up and yet we have 240 votes on our site.  That is a 1:4 ratio of people who actually looked at our site vs people who just voted either after looking at our home page or without looking at the site at all.

I’m wary to point my finger at people and point out flaws as to why they shouldn’t be at their position, however some of the apps I tested had main functionality broken and yet they are sitting in the top 30 spots.  Testing is almost nonexistent, a friend was testing other sites and uploaded a picture that he figured would disappear after a while but instead it was on there for over 24 hours.  The site only had slots to show 5 pictures that means that it took over a day to upload 5 pictures on the site.

My final real problem is that there is no way to tell why people voted one way or another.  I think a short description on why they are voting one way or another would help everyone involved to understand what people liked and what people disliked about the app, not to mention it would make it easier to tell when someone was gaming the system.

Overall I think the Rails Rumble brings an awesome service to the community.  48 hours with the right motivation (competition) is really useful as it can really get an interesting idea or product built.  Not to mention it helps bring you together with friends towards a common goal.  I really just wish everyone could come away from it feeling like the voting wasn’t just a game.

SVN & GIT

2 Comments

With the recent change over to my Mac, I’ve started to really take a look at the differences between SVN and GIT.  I’m still in the process of learning how to use both bundles for TextMate so when I’m actually in “work mode” I’ll usually forego playing around and just use the command line and I’ve noticed some definite differences.

SVN

SVN is actually what I’ve been using the longest, and am much more familiar with.  However using it from the command line is something I’m not very familiar with because up until my switch to my Mac I have always used TortoiseSVN which is probably the best implementation of an SVN client out there because of it’s integration right into the Explorer shell.

Some of the pros of SVN:

  • Output is much more descriptive
  • Without branching it is completely straightforward
  • A lot of documentation out there to help you get started
  • Easier to move between old revisions

And, of course, some of the cons:

  • Slow and clunky feeling
  • Hard to setup initially
  • Pain to fix merge errors
  • Branching is a chore
  • Require an “always on” server/connection

Pros In Depth

Descriptive output

By default, committing, updating, checking out in SVN yeilds very clear and easy to read output.

Macintosh:upillar_motors danahern$ svn up
U    app/models/notifier.rb
U    app/views/notifier/invite_users_private_en.rhtml
U    app/views/notifier/question_for_seller_en.rhtml
U    app/views/notifier/reply_to_buyer_en.rhtml
Updated to revision 5776.

You get a clear understanding of what it is doing every step of the way.  With GIT the updating is a little harder to understand

Macintosh:truth danahern$ git pull
remote: Counting objects: 17, done.
remote: Compressing objects: 100% (10/10), done.
Unpacking objects: 100% (14/14), done.
remote: Total 14 (delta 4), reused 14 (delta 4)
From git@github.com:lwallenstein/truth
ecd1c5c..73c70a0  master     -> origin/master
Updating ecd1c5c..73c70a0
Fast forward
README.txt |   62 +++++++++++++++++++++++++++——————————–
1 files changed, 28 insertions(+), 34 deletions(-)

Straight forward workflow

As long as you aren’t branching SVN’s workflow is a lot more straight forward than GIT.  You have your server repository which is the definitive copy, then you have your local copy that you work on and then check files into the server repository.

Tons of documentation

Both have been around for a long time, however GIT has only recently really hit the limelight as the new choice for code repositories.  SVN has oodles of documentation out there, and while this won’t be a factor for much longer, GIT is still catching up with regards to documentation explaining the how’s and the why’s.

Moving between revisions

This might be a short coming on my part, but SVN feels a lot easier to move between revisions.  You do a little research to see what revision you want to grab and then just do an update with a “-r <revision number>”.  I haven’t yet gotten the hang of reverting to previous revisions with GIT. Thanks to Pieter, I’ve found out that reverting in GIT is just as easy as SVN (In fact far easier when using Github). git checkout

Cons In Depth

Slow and Clunky

SVN really doesn’t excel at giving me the feeling that it’s actually doing something.  It feels slow, committing a large file or groups of large files leave you sitting at “Transmitting Data.” forever.  No status indication, which means you don’t know if you should sit there and watch, or maybe go grab a bite to eat, enjoy some TV then come back and hope it is done.

Hard to setup initially

I haven’t really ever had to do this by my self, but from the experiences I’ve had with others as the developer waiting patiently to start a project or drop an already alpha product into subversion this seems to be a time consuming and difficult process.  I can’t go into the details on what went wrong each time, but I do know that by the end of the process everyone involved was frustrated and praying that there would be a better solution one day.  It should be noted though that once it’s up, as long as you don’t change anything, it stays up pretty solid.

Pain to fix merge errors

Merge errors are a way of life when working with others on a code repository.  The merge errors in SVN are a pain to fix.  Not only does SVN leave the file name with extra characters with the files diff’d into the file name, but it generates 3 different versions of the file and sticks those in there as well.  In reality, one of those solutions or the other would make more sense as a standalone.

Branching in SVN

Branching in SVN is actually so much of a pain, that rather than creating a branch we’ll either create a new repository or just say “screw it” and make a backup copy of the repo and just start committing.  Once you use git’s branching there is no way you could actually stand to go back to SVN.

Require an always on connection

This hasn’t been a real problem for a while, however, on the occasions where our SVN server goes down or for some reason or another I can’t connect to it all development stops.

GIT

Git is the relatively new to me versioning software.  I haven’t checked out any of the GUI based interfaces for it yet (and at a glance it would appear there aren’t many), but the command line version has been treating me right for a while now.

Some of the pros of GIT:

  • Everything is faster than SVN
  • Branching is a breeze
  • Github
  • Merge is amazing

Some of the cons:

  • Hard to understand what is going on
  • Github’s pricing system
  • No really good UI
  • Few web based tools

Pros In Depth

Everything is faster

This might be just a perception, but everything on git seems faster than SVN.  From checkout, to merge, to commit, everything seems to speed along on git.  It could be just that it’s more verbose, you can see it actually working instead of sitting there pondering

Branching

My heart actually expands three sizes at the thought of how easy the branching is to handle on git.  So many projects I’ve worked on would benefit greatly from being able to branch off and work on a big revision.  The problem that’s held me back so far is that SVN is such a pain to branch, I look forward to getting to branch a lot more.

Github

Github is a great tool.  I would almost wholeheartedly recommend it, and if you only have a few things you’re working on I do in fact recommend it from the bottom of my heart.  It is amazingly simple to setup, and if you see a public project you’d like to patch it’s actually impossible to mess up checking out, and commit a patch. There are some problems with it, which I’ll expound upon in the con section.

Merging

Git is infinitely better at handling merging when compared against SVN.  I’ve actually never had a bad merge issue with git.  It’s also far faster than the SVN merge.  It’s a win all around.

Cons In Depth

Hard to understand

Git’s pro is also a con.  It’s very verbose, it tells you exactly what is going on.  It’s hard to understand what it is doing at every step.  Especially when compared to the simple output of SVN.  (To see an example scroll back up to the SVN Pro)

Github’s pricing schema

No one knows better than I do the value of making a buck off your hard work, and I would be more than happy to pay for such a wonderful service as Github. The problem I have with Github’s pricing schema is the limit on space or projects.  However, the way it is setup is based on public/private repos as well as space, this means that because of the limit on private repositories you can’t post all your private client work.  Powered By Geek contracts out to a LOT of companies, and if we want to host all our repos with them then it would cost us a small fortune.

No good UI tool

As of right now there isn’t a good graphical user interface for interacting with git repositories.  SVN has been main stream for a while longer and has had more time for tools to develop, and between Versions on the Mac and Tortiose on Windows. Right now the Git GUI tools are very basic, and not really useable.

Few web based tools

There aren’t that many web based tools out there for viewing repositories.  The SVN tools are pretty mature and refined, however, the git tools aren’t there yet. From the little I’ve read, the git API tools are still developing.  So I don’t think this is going to be a con for very long.

Final Thoughts

I think for our new projects GIT makes a lot more sense than SVN. Since I’ve been working with git with the command line and have gotten used to it I can’t really imagine moving back to SVN. Git really seems like the better tool, but it needs to mature a little more, I think shortly there will be no real con to using git as opposed to SVN.

Phone Conversions

2 Comments

I’ve become a fanboy.  I keep telling myself no, but slowly I’m coming to terms.  Last week I picked up an iPhone (bought off ebay so I wouldn’t have to extend my ATT contract).  So I’m going to list some thoughts, and I’m going to compare it to my steallar little Nokia E70 that I had before.  This should hopefully be both similar and contrasting to something that a good friend Michael wrote here on his phone changing experiences.

Let’s start with the Pro’s of the iPhone:

  • Beautiful large display screen
  • Novel multitouch navigation
  • Accurate GPS
  • Almost Fully Functioning Web Browser
  • Nice Looking Applications

The Screen

The screen is on par, if not better, than the screen on iPod 5th Gen that I have, and at over double the size it’s amazing.  I’ve been watching Dr. Horrible on it and just amazed at the clarity (this also really gets me interested in buying movies and shows off iTunes, except for their crappy interface for letting me download my content onto multiple computers). Applications look great and you can see details almost on par with my 1920×1200 Mac Book Pro.

The Multitouch

The multitouch is a neat thing to play with for a while.  Similar to DS stylus, this can add a lot of functionality for some stuff and can make for frustrating user experience for other stuff.  Moving around Vay (http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284940607&mt=8) a remake of a Sega CD RPG is horrible, while moving around Google Maps is great.

GPS Functionality

The GPS functionality almost makes me want to drop the money for an iPhone SDK and learn Objective C, because it’s accurate enough that you could make a lot of neat apps for it (and looking at the app store people are already starting).  This is my first time having built in GPS in my phone (my car has an awesome GPS system in it) and just imagining the possibilities of things you could do with it has me excited to see what other developers can come up with.

Safari in your pocket

This would be the one thing I think that makes it worth while to get an iPhone.  Although the Nokia’s browser is pretty good, some of the stuff it does can really ruin a web experience (not rendering CSS right, sometimes barely rendering anything at all).  As someone who does web development for a living, and whose secondary job is just keeping up with all the new developments and sites coming out on the internet (Lynn keeps me well informed), this is almost a necessity.  I don’t think I could ever go back to an experience less than the standard the iPhone has set, the large screen, speedy connection and near full featured experience has really made me question how I could live with out it.

Look at the pretty little app

The application designs for most things, looks great.  I’ll talk about the cons of the UI a bit later.  The applications with reflective surfaces and easy to understand buttons.  Every app has a very iPhone feel to it, and you are fairly comfortable moving between apps without the bone jarring feel of a completely different layout, and completely different icons.

Now on to the cons:

  • Text entry sucks
  • The UI layout is pretty bad
  • Working with iTunes and multiple computers is impossible
  • Just using touch controls is irritating

Text Entry or how the helk van u tuoe on thus thomg

Coming from the Nokia E70 with it’s flip out real QWERTY keyboard to the iPhone’s virtual keyboard was and still is a real challenge.  Typing on the Nokia had the feel of a real key being depressed and the keys were big enough to type with my thumbs, typing on the iPhone has no tactile feedback and the touch screen makes for some pretty inaccurate key presses when trying to use it to type in the vertical position.  I’ve read enough about it to know to just type the words you’re trying to get and the iPhone will hopefully figure out the word you’re typing and replace it when you hit space.  That works somewhat, however, as someone who prides himself on not using all the acronyms that have sprung up, and who tries to spell everything right, this is annoying when you type in a full word, only to realize that the iPhone has no idea what you’re typing.  Even when everything is working perfectly and it’s correcting my typing mistakes I still type slower than on the real Nokia keyboard.

The UI

The UI on the iPhone really annoys me, menu’s are the worst offender, where you have to hit the upper left corner to go back to the previous level.  The problem with that layout is normally I’m using my right hand to hold and navigate my phone, so I have to move my thumb up to the top of the phone to press the button or I’ll have to bring a second hand into the action, with the phone laying down this isn’t a bad thing, but I hardly ever use the iPhone on a flat surface.  Other things about the UI bother me, how it takes more than one key press to bring up certain things like voice mail.  The whole SMS process, while neat that it displays it in a chat like format, is extremely hard to use and figure out.

iTunes and multiple computers

While I generally like iTunes for managing content on my iPod the iPhone is a different story.  Unbeknownst to me, who figured it would work just like an iPod, I setup my iPhone on my MBP laptop, intending to also set it up on my home desktop since I tend to keep only one copy of my downloads and then just connect the device to the computer that has what I want.  Once I got home with the iPhone and attempted to set it up to my desktop I found out that I couldn’t actually access my items on my desktop without first syncing it to my desktop and losing everything, which would mean that I would no longer be able to sync it to my laptop.  This is annoying because this system has worked for almost a year with my iPod with no problems.  Now I have to make sure that my PC and Mac sync up and share their iTunes libraries so that I can access all my content, not a major problem, but a giant inconvenience.

Only Touching

This is probably a giant limitation to the iPhone.  I understand they were going for the sleek and elegant look and didn’t want a bunch of buttons and knobs and whatnot on their phone, however this limits the iPhone to just the touch based approach, and honestly somethings would be a lot better with a different mode of input.  What I’m imagining is actually similar to the DS, where you would have a little directional pad and maybe a button or two.  This would allow you to navigate certain programs (like the RPG mentioned above) that aren’t conducive to the touch only mentality.

Overall

The iPhone is a neat gadget and some things like the web browser really make an experience for me.  However I think that I might be happier with my Nokia as a phone and an iPod Touch as a web browser (if I could get one that would connect to the internet via my Nokia’s bluetooth connection and use the GPS functionality of the bluetooth GPS receiver).  It’s a nice phone and well designed, but I feel like there are some fundamental flaws in the way it does things and the things that it does really well have nothing to do with actual phone functionality.  I’m going to stick with the phone for a while to see how it fares after more than a week’s use, I’m hoping I’ll grow to understand the reasoning behind some of the things I think of as flaws, and if not, then at least there are some Android phones down the pipeline, not to mention some really cool stuff coming out of Nokia.