Saturday, August 26, 2006

Peer pressure for the win.

I finally gave into peer pressure and applied for an oDesk membership. Assuming I'm in, I'll probably work part-time at first and test the waters too--wait, what's that?

"Peer pressure," you say, "what kind of peer pressure could that be?"

The pressure from indecisive clients, my friend. Most of the clients I work with on RentACoder are great: they respond quickly to questions, clarify any vague statements in their specifications, and are in general quite pleasant to communicate with. But -- according to my plucked-from-the-air statistics -- about 1 in 5 that I've worked with mean well, but that's it. In a fixed-bid system like RAC, I've taken to just calculating the hours required for a job and then submitting a bid for either workHours * 20, or for a really difficult job, workHours * 25. I make a tidy profit, deliver work to spec, and we both go home happy, right?

Most of the time.

Occasionally I stumble across a client who just eats into my profit margin like you would not believe. If expensive/profit pie-charts were made out of sweet apple pie these motherfuckers would just be eating me out of house and home. LET ME TELL YOU, SIR: IT IS NOT A DELICIOUS APPLE PIE THAT YOU NIBBLE ON. IT IS MY NEW XBOX360 YOU ARE EATING, SIR. IT IS A NINTENDO WII YOU, SIR, ARE DEPRIVING ME OF.

*coughs into fist* Anyway.

First, they decide that they want to up and alter a big chunk of the spec with what they consider "small changes" but end with me spending extra hours behind the scenes accommodating the new functionality and burying the old functionality. And then -- I shit you not -- changes their mind again and decide that they want some of the old functionality remaining. Thank someone for Subversion.

Then they decide that they've got to have a feature now-now-now in a rush and it has to be #1 priority to the detriment of the other projects (which languish for awhile and finish 2 weeks beyond schedule).

Eventually my hourly rate tanks and hovers around $15/hr -- at which point I put my foot down. They either have to cough up the money for the extras or they can deal with it as is. Of course, it always works out in the end -- with a little pressure they realize that they've overstepped their bounds and agree to pay for enhancements, or pay extra out of pocket if they need something in a serious rush (and by serious, I mean me working over the weekend). I usually charge double my rate if I have to work on the weekend due to lack of foresight by the client.

It's times like these that I think, "I really wouldn't have a problem with this if I was using a real hourly-rate system." They could fuck up the specifications all they wanted, and I could just plod along happily. After all, it is coming out of their pocket. What do I care that they've got a short attention span and like to change directions at the drop of a hat? I'd still get paid, right?

Recently, that kind of thinking has made oDesk a lot more interesting to me. I understand that it will be a drop in maximum profits, in theory, since the .NET providers working at the site are charging dirt-cheap rates. Some as low as $10/hr; most averaging $14/hr dollars, but I went with $17/hr for my application. There's a small number of providers on the site -- 3kish, last I read -- and most of them seem pretty qualified to be there. However, if RAC's competition numbers are anything to believe, I'm no chopped liver either.

Sorry, I just like the competition. Did I mention the exquisite glee I get when I crawl past someone on RAC'S top-coder competition?

Anyway, the way I see it, if I get into oDesk and land some solid jobs, it means on RAC I can side-step any clients that might be *really* annoying. This way I can afford to be more selective with what jobs I take and who I communicate with on RAC and not have to worry too much about the ramifications.

One really weird thing about an oDesk application: they recommend you download their sample coversheet and fill it in with all your information.

It's a Microsoft Word document file. So... dubbya tee f? I notice that they support Linux development with their oDesk Team Software, so why are they distributing the sample resume in .doc? I don't know about anyone else, but Abiword can't even open the document, and can display most of it, but all the page-spaces are just wrong and it comes out looking like crap. I pretty much mutilated my CVS (based off the sample download) and gave up after about 10 minutes of trying to make OO.Org export it Microsoft Word without completely destroying the format.

The most ironic part of the experience, of course, was that I had to download anything. Have you seen the oDesk website? I have. It's a slick piece of work.

So why do I even have to download their CVS template? Why do I have to upload my own resume' at all? Instead of all this fuss and extra work they should have, in my opinion, created a web-form based on the template, and let people fill that out instead. Hell, using a system like that they could even swap out templates using something fancy like XLS to transform the data. It would make for a lot more uniform profiles and let clients get to the most relevant information quickly.

Yeah, that's the coder in me talking.

Crap, ranted too long. Totally forgot what else I was going to write about.



tags: , ,

Friday, August 25, 2006

Windows Communication Foundation + PeerChannel

One of my jobs recently required using WCF's "PeerChannel" p2p functionality for some kind of distributed system -- I didn't ask and he didn't tell, but judging by the prototype he had me mock up, it appears he's working on some kind of distributed chat-room, maybe for an existing application. This component was developed using the July CTP of .NET 3.0.

The samples included were out of date, which was really annoying -- I was basically guessing the name of the XML configuration elements, trying to get everything up and running. Eventually, though, I suceeded, after a lot of trial and error, to get everything compiling. Getting it working was another matter entirely. I can't get Microsoft's PNRP -- Peer Name Resolution Protocol -- to work properly, so I had to build my own custom peer resolver in order to get the p2p clients communicating with one another. Microsoft's PNRP is supposed to be a publically accessible way of boot-strapping p2p meshes built with WCF, but it seems to be down or just plain old broken at the moment.

Another big annoyance was the fact that p2p meshes in the July CTP can't have complex mesh names. Eg, you can have "net.p2p://CompanyName/Product/Service" as your target endpoint, but peers try to register for a mesh called "CompanyName" instead of the fully qualified path -- that can lead to a lot of collisions and headaches if you chose a generic enough word and try to use Microsoft's PNRP (or any other custom resolver, in fact). To work around this what I did was a cheap hack: "net.p2p://CompanyName.Product.Service" -- but it works. Hopefully this is an artifical limit or simply a bug in the July CTP...

By the way, Kevin Ransom's blog is a great place to find random information about WCF that you won't find the in documentation... like how to password-enable PeerChannel meshes. Did you know that since they use SSL you need to supply a freaking X509 cert just to apply a password to a PeerChannel mesh? I ended up creating a plain-jane cert using makecert.exe and just using that.

tags: , , , , ,

Monday, August 21, 2006

Can you feel his pain?

This dude got completely hosed by Northwest Vanline.

Man. I'm glad I live light -- if I ever have to move I can probably stuff everything (important) that I own into my car.

Rent a Coder's "all coder competition"

Man, something about RAC's "all coder competition" rankings (rules here, actual results here) makes me feel really competitive.

Once I finish up a few jobs in progress I'll be sub-1000; I guess that's not too bad on a site that claims to have over 150k registered coders. For some reason, every time I see myself climb over a  few other developers in the rankings it always makes me cackle sinisterly.

Must be something in my diet.

Anyway, I've recently subscribed to mobcode's RSS feed. I keep "bumping" into this blog everywhere I've go, and the articles this dude or dudette writes are pretty interesting and insightful. The subtitle - "how to code for money on the web" - is an eye-catcher anyway. >:)


Wednesday, August 02, 2006

What did you do, Flock?

I just realized that when I blog with Flock, Technorati doesn't parse those posts.

What did you do, Flock?!

Tuesday, August 01, 2006

oDesk vs RentACoder: code mercenaries have to get hired somewhere, right?

oDesk :.: The On Demand Global Workforce
Rent A Coder:How Software Gets Done

When I first decided that I wanted to work remotely instead of shuffle around from site-to-site jobs in Savannah, GA, I did a little investigatory research into my options. By the end of the week, I decided I was left with two safe options: RentACoder and oDesk.

I say safe because, unlike some of the other more notorious contract coding sites on the 'net (*cough* ScriptLance *cough*), there's really no way to be cheated out of getting paid. RentACoder uses an escrow service, which is pretty much a requirement for a fixed-bid system. They've got an arbitration system that works quite well from what I've seen. oDesk is based on an hourly rate system, so its not really that much of an issue and they make the guarantee on their site that you always get paid for hours worked, so that's cool too.


RentACoder works on a fixed-bidding auction-style system. Potential buyers put up projects, maybe set a price range they feel the most comfortable with, and sellers -- that is, coders -- put up bids. Bids are basically how much the coder would charge to complete the auction's specifications before the deadline.

RentACoder has a very low barrier of entry: anyone can sign up for an account and start bidding on jobs. That's definitely a bonus in my book; it's one of the main reasons I chose to try doing RentACoder full-time, but more on that later.

Although I've had my RentACoder account for almost a year, I never used it until about two months ago. That was the first time I investigated RentACoder, and I was not pleased with what I saw. Back then you could view the bids of other coders, both the messages left and the bid amounts, and it was... let me just say that it was a mess back then, in my opinion.

That was a year ago, though, and things have significantly improved in that year's time. Now the site seems a lot cleaner and tighter than it was a year ago.

One downside is that there's very little interaction between RentACoder and the rest of the community -- no forums, the blogs are rarely updated, etc. That's kind of disappointing, since to the timid RentACoder has a kind of a "thrown to the sharks" kind of atmosphere.

Another issue -- slightly bigger to me than their lack of communication with the community -- is the website itself. I'm not saying its ugly, but it seriously needs an uplift, for aesthetics and usability in general. The site is obviously showing its age; the coder financial page, for instance, gets really cumbersome once you've got several completed jobs under your belt.

Despite all that, my experience, after a few weeks of dealing with RentACoder, was really excellent. I don't regret picking them at all. But more on that later.


oDesk is kind of the new kid on the block, and has a radically different model. I guess, in a way, they embrace the Web 2.0 model of doing business. They're a very responsive group; they blog very often, and they're not scared of dogfooding the oDesk model of business in order to develop the software powering oDesk. They embrace community interaction and they're a very responsive group with good feedback, a helpful forum of users, and etc.

oDesk embraces the concept of a "remote workplace" to the extreme. Using oDesk requires using their proprietary software system. It tracks how many keystrokes you've made an hour, occasionally takes a snapshot of your workstation screen so that Buyers -- the people who hire you -- can monitor you during "working hours." Creepy, right?

On the flipside, oDesk also offers a lot of awesome tools for Providers -- coders -- to use. Providers all working with the same buyer (or is it the same job?) all have access to Bugzilla, Subversion, etc -- the typical software development tools people working on a product together deploy, except that everything is set up automatically by oDesk.

Providers can pick their ideal hourly wage, send resumes' to prospective Buyers who have job openings, etc, etc -- oDesk has basically brought the traditional workplace to The Web, which is a great accomplishment.

Most of this information, though, is based on the oDesk forums and the information available on their website... which brings me to the downside of oDesk.

Joining oDesk looks like a real pain -- such a pain, in fact, that after working with RentACoder for almost 2 weeks it didn't seem worth the effort (still doesn't) trying to get through the signup process. It also seems targetted at old people--errrr, people who have been "in the business" for a significant amount of time.

Here are some of their requirements -- stuff you have to go through during the interview process.

1. Minimum 3 years work experience (Preferred but exempted in case of exceptional candidates)
2. Good resume (relevant work experience, experience with remote working, solid educational background)
3. Available to work on oDesk at least 20 hours every week
4. Tech-savvy, comfortable working over the internet
5. Able to deal with customer directly
6. Good knowledge of English language and good overall communication skills
7. Flexible working hours
8. Ready Internet Access (Broadband recommended)
9. Enterprising and ready to take initiative

Providers | Community

Yadda yadda, most of its typical. #9 is raw marketing, #4-8 are a duh, #2's kind of strange unless you consider the context of a "remote workplace" instead of RentACoder's auction system, etc.

The two biggest hurdles for me even experimenting with oDesk were #1, and the interview process itself.

For one, I never did really like interviews -- people tend to ask pretty stupid questions, like, "where do you want to be in 5 years" and random shit like, "weeeeelll, use a bubble sort on this array" where saying "qsort(array)" will not get you the job.

My complaints with the interview process aside, I'm just not really comfortable going through that kind of gauntlet over The Web. I'm not really an agile thinker, so realtime interviews -- all of them -- end up as "mushroom cloud"-shaped diasters for me. I also like my skills to speak for themself; I'm pretty secretive and tend not to give out information about myself or what I do other than what's absolutely necessary.

#1 was the real non-starter for me, though. I... don't have 3 years work experience. That's really it. I don't, and I'm not an exceptional candidate -- I'm just Really Good at what I do. I'm not even sure what I'd say during the oDesk interview: "I don't have 3 years work experience, but I'm really good at softare development?"

Although on RentACoder, mentioning Boo in a bid request is what sealed the deal and got me one of my first jobs.

I am, by the way, a rocking software developer -- that's what all of my satisfied buyers have to say, anyway. >:)

My choice.

As 90% of you astutely gathered, I ended up going with RentACoder. The pay's been slow -- I might have made more in the initial 2 months with oDesk than RentACoder -- but I've been working my way up (in terms of bidding and winning) and my reputation's been spreading, so now the issue of landing a good job really isn't really a problem anymore.

At the time of this writing, I spent some time checking out oDesk again. They've improved a lot -- they have a working feedback system now, for one -- but there's still nothing really compelling enough that would make me endure the interview process. It's a lot of time to spend for a site I might not even get into. Kinda like a high rate club, I guess. The draw just isn't there for me, though.

Anyway, that's all for now.

I blog, therefore I am,


technorati tags:, , ,

Blogged with Flock