IE6 is still trolling developers

Icon mdeiters on February 23, 2012 21:37

I was looking through Coderwall to see how many developers had some crazy skills like this woman:

But sadly it turns out that many developers haven’t added their skills to their profile. Last week less, just under 50% of developers that joined Coderwall have declared a skill. We thought it would be fun to change things up and make the suggested defaults something you wouldn’t normally expect to see:

New Copy

We originally did this just to make the page more fun, we were surprised by how many developers entered their skills. It seems the thought of IE6 is enough for nearly everyone to add their skills.

Before After

What skills would you hate to have?

[EDIT]

We updated the UI to make it very clear these are only suggestions. If you decide not to select a skill, nothing will show up on your public profile.

The companies I'd want to work for

Icon mdeiters on February 05, 2012 20:55

The best way to learn quickly and excel is to surround yourself with people that are smarter and more experienced than you are. When you no longer feel challenged and others view you as the smartest person in the room, you know it’s time to move on. The problem then becomes: how do you pick a new team that will challenge you and help you grow? We built Coderwall’s team leaderboard as a tool to help you find those teams.

Warning signs in an interview

I remember one of my first interviews; the company’s product seemed technically challenging and the interviewers talked a great game. I had only been programming professionally for 2 years so I assumed that when they asked me a few situational questions about their architecture that stumped me, it was due to my inexperience. The questions made me think everyone there must be brilliant because I had no idea what they were talking about and I’d certainly learn a lot if I worked with them. Within a few days of accepting the job and starting there I realized the reason the questions stumped me was because they were flawed from the start. Everything about how the team handled building software was absurd. I stayed there about as long as it took me to find another job and from that point forward I put a lot more effort into understanding the team I’d be working with.

Evaluating the team

Employers that seek the best candidates place much more weight on open source, writing, and your other online professional activity more than a traditional resumé. This is getting easier to require, as the last few years have seen a surge of the best developers putting much of what they do online. Why not hold the team you may end up working with up to the same bar that they’re holding you to? Finding out who you’d be working with and what they share professionally online, either with open source, writing, or other means, can really help you determine if it’s a team that will challenge you.

How the leaderboard score works

The current Coderwall leaderboard is a work in progress and not perfect. Most certainly there are good companies that are missing from the list, so we can’t necessarily rule a team out, but we can identify some great ones. A quick glance at the teams and their members’ profiles clearly demonstrate that every team on the leaderboard consists of fantastic developers. If you think your team is underrepresented then it’s easy to join, create a team, and invite your coworkers to better represent.

A few things about how the current score works:

  • Each achievement badge in Coderwall has a weight that is factored into the score. We’ll still have to make some tweaks to the weights, but they tend to reward newer and less widely-understood languages and frameworks, and achievements that involve accumulating reputation amongst your fellow geeks.
  • We’re interested in overall team quality rather than sheer badge accumulation, so we score the central tendency of the team. A large team size will have a small positive effect only if nearly everyone on the team is strong.
  • The team members’ accumulated Coderwall endorsements also have a strong positive effect on score. Endorsements are received when another member views your profile and endorses one of your skills. Endorsements mean a lot because every member has only select number of endorsements to hand out and they only get more when they unlock more achievements.
  • There is no upper limit to score.

What is next

Many of the current badges are based on open source that you may have shared publicly on GitHub. But we are expanding and focusing on integrating with other sources. You’ll also be able to earn more individual achievements for things like speaking/attending conferences or publishing on a blog. We’ll also be creating a company profile pages to make it easier to learn more about the teams and what technologies they use.

Head on over to the team leaderboard, and let us know what you think.

The hacker's version of an embeddable social button

Icon mdeiters on January 16, 2012 11:02

We wanted to create the inverse of a “share this” button for developers that deserve recognition when they share awesome code. The typical pattern that Twitter and other websites use is to suggest that you embed an iframe or use Javascript to create a button on the client. This is problematic on many pages that don’t allow full embedding of HTML (like a GitHub repo README) and often the html itself is cumbersome. To handle this we decided to build a dynamic “endorse button” generated on demand for every user that is as simple as adding an image tag with an enclosing anchor tag.

endorse

(To use it, replace my username (mdeiters) with your Coderwall username.)

Adding the endorsement count to the image with Rmagick

We started by creating an image with similar dimensions to the Tweet This button but we left the count bubble empty:

empty button

ImageMagick and RMagick make it incredibly easy to add to text to an existing image. We just needed to set the right font styles and then use the text method to write the number of endorsements to the bubble. After tweaking the x and y locations we were set. For this first pass we don’t even write the image to the file system: we just use Rails’ send_data method to stream the newly created image to the client.

If you’d like to run the above code yourself, make sure to install ImageMagick and to include RMagick in your Gemfile, as above.

Performance

Being a start up, we are firm believers in JIT development which applies to scaling too. We wanted to do the quickest thing to get this out to coderwall members while having a clear path to scale the infrastructure in the future if we need to. For example, using the different api.coderwall.com domain, we have the ability to independently scale the endorse button processes from the rest of the coderwall website.

Rendering a dynamic image can be expensive but our current performance metrics are acceptable because we aggressively use HTTP caching. Heroku’s robust HTTP caching will serve the same member’s endorse button for at least 1 minute because we set a Cache-Control header to public with a future 1 minute expiration date. After that expires, we still have etags and last modified HTTP headers to ensure a new button is generated only if the member receives a new endorsement. Rails’ stale? and expires_in makes this incredibly easy.

Represent: Get geek cred on your blog

Icon bguthrie on January 10, 2012 12:04

Besides just generally causing a lot of mayhem, one of my first real tasks at Coderwall has been to get everyone set up with an official way to integrate Coderwall with their blog. You can see an example of this on my blog here. In this I’m hugely thankful for the efforts of existing similar open-source implementations of Coderwall blog badges; in particular, both Mihail Szabolcs’ Proudify (see it in action) and Mikael Brevik’s Metabrag are extremely cool, and absolutely gorgeous to boot.

To integrate it, you need to include the requisite JS and CSS on your blog or web page. (This first pass of the badge requires jQuery; if you’d like support for other frameworks, let us know.)

The data-coderwall-username attribute is required in order for the script to figure out whose badges to retrieve. data-coderwall-orientation is optional (default is vertical) but it helps it make some styling choices depending on where you’d like to place the widget.

In my case, I tacked on a bit of CSS to my existing stylesheets to get the badges placed in the right spot on the page:

That’s all! If you have any other questions, don’t hesitate to get in touch. Happy hacking!

Starting off the new year with a bang

Icon mdeiters on January 09, 2012 14:25

We’re starting off the new year at Coderwall with some big news. Let’s get right to it.

Coderwall is Growing

First off, I’d like to welcome Brian Guthrie to the team. Brian will be joining us to help build out the site and take responsibility for some of the technical direction. He’ll also be cracking some bad jokes and generally lowering the tone around here. We’re looking forward to him ruining the site in the coming months.

New badge dropping: Erlang!

We’ve also gone ahead and integrated a new badge to the site. We’re proud to announce the addition of Erlang to the list of languages that we track and award achievements for. We’re using the fierce desert locust in homage to Erlang’s lightweight, massively scalable process model, and also because Erlang programmers are gregarious and migratory. Here’s what the badge looks like:

Fear the swarm For the horde

If you’ve already released some open-source Erlang code, great! You should see it show up on your profile in the next couple of days. And if you haven’t had a chance to try Erlang before and would like to get cracking with that achievement, we recommend that you go out and learn you some Erlang for great good.

You may have have noticed that this badge looks a little bit different than most others. We’re trying out some new badge designs on the site, and if you have any feedback on this first one we’d love to hear it.

Badge Mondays

Starting from today we’re going to be dropping new badges your way every Monday. We’re excited to be getting into a rhythm for badge releases, and we hope it gives you some motivation to get cracking on learning some new code this week.

Gaming the Game

Icon mdeiters on July 22, 2011 00:09

We are putting together a page listing all the hacks & utilities that others have created for Coderwall or with the Coderwall API. Much to our surprise, a quick search on github for ‘coderwall’ came across this:

Cheater!

We had a good laugh at the description but seriously no gaming the system. In reality, this cheat would never work because we do some basic analysis on repos to see if they are “worthy” and this one is clearly not. It is a rather simplistic check today but we are constantly making the system more sophisticated for future achievements. More importantly we will be rolling out a new feature soon where you’ll be able to explore which repos earned someone a specific achievement. We think this is a great way to showcase interesting open source projects and provide more context to your profile.

Be forewarned then that if you decide to create some cheat repos, they will be prominently showcased on your profile along with a way for users to flag them. :)

happy coding!