Something went wrong. Try again later

rick

i make it go

507 33 12 80
Forum Posts Wiki Points Following Followers

Random thought

One of my good friends is a professional dancer. When I tell him about my work and that we're about to launch something we've been working hard on for weeks he gets excited for me on launch day. For him, he spends weeks in choreography, rehearsals staging etc. and at the end there's a big performance, celebration and accolades. He expects the same for me. He doesn't understand that here, its just stress, fear and loathing until its out then the question "What's next?" and maybe a clean up of my desktop...

4 Comments

Oh God, this...

I've totally neglected my blog. I've had all intentions of keeping this up. Especially after coming off my previous job where I worked on stuff I couldn't discuss in public for various stupid reasons. What happened? Well my job got very real and hasn't let up. By the time I get home my brain is mush and GTA V is about the level it operates at by the end of the day. That's still the case but I'll see what I can do about keeping this going. I left off with Node JS. The chat server is Node JS so maybe I'll talk about that. Let me think a bit...

No Caption Provided

3 Comments

Waiting for the bugs to come

Its Saturday and I'm in the office still pushing towards beta. We're doing migration at the moment from an eleven year old site, Gamespot. The stuff from the early days is a bit messy and that's what I'm dealing with at the moment. I run a long job, watch it go and wait for something that breaks the rules then adjust my understanding of the rules and start all over again.

No Caption Provided

Eleven years is too long to go on a codebase where no one from the original days is still around to maintain it, keeping it clean and enforcing standards and methodologies. With new people coming in, knowledge of the system is fragmented and different understandings of it lead to inconstancies when developers make changes or add features. Its easy to see from the outside as well; just take a look at Gamespot right now and note the vast inconstancies in user experience. I don't need to point them out.

I spend most of my time on Giant Bomb so when I go to the live Gamespot site for something I often cringe. I don't know what the code looks like and I don't wanna know. The new Gamespot will be based on the Giant Bomb codebase. The Giant Bomb code is clean and easy to understand. I starting working with it and understanding it almost immediately.

The current dev team is a mix of new people, including myself. Many newish people who started around the time when Giant Bomb was rewritten and there's a few who've been here for a while. Its a really solid team and I'm really happy to be working with these people. I really think we've got a solid code and engineering base to bring Gamespot as well as Giant Bomb and Comic Vine to whole new levels. Once we get Gamespot out on the new platform and ditch the old site that is.

No Caption Provided

Oh, I'll definitely continue the nodeJS bit when I can focus better. As I write this I'm watching three consoles looking for alerts or other bad things...

1 Comments

Which day is this?

No Caption Provided

Late night coding for a beta push and a wedding have sucked up every non sleeping second of my life recently. The wedding is over but the coding continues. More to come. I promise...

Start the Conversation

Why nodeJS is awesome and why you shouldn't even think about using it. Part 1

No Caption Provided

I'm going to preface this blog entry with a message to seasoned developers who would quickly be wondering why I'm glossing over a ton of stuff. I'm writing this post for a audience that knows enough to be dangerous but lets guys and girls like you do the heavy lifting. You can move on to the next blog in your daily reading list. You should know all this stuff.

Most of the backend code for Giant Bomb, Comic Vine and Gamespot is written in PHP with Symfony 2. Most, but not all; The chat app is written in nodeJS, the new kid on the block. nodeJS is JavaScript for the backend. Its extremely fast and powerful and its deceptively easy. Its JavaScript so it must be easy. Right? Well, yes, its easy to get started. It makes lots of hard things easy but don't let that lull you into a false sense of security and consider throwing PHP, Python, Ruby, Java or even (gasp) ASP.NET out the window and making your front end guys full-stack developers just because they know JavaScript.

Although it is JavaScript, using it for backend code is quite different than using it on the client. nodeJS is fast because it knows how slow I/O is and while something is doing I/O it lets other code run. No other backend environment does that out of the box. Java and ASP.NET can with threads, Ruby can with Evented Ruby, PHP not so much and Python thinks it can but good luck with that. That 'can' I speak of basically means there's some work to do to and in the case of Ruby it wasn't really designed to do that. nodeJS just does it. There's no extra work involved, no library to add and no overhead code to write. The key thing here is that it does mean that programmers need to think differently about how they write code.

There are no threads in nodeJS but it is basically multithreaded. Yes I said that. Its not multithreaded in the way Java or ASP.NET is. Those environments use a preemptive threading model. Programmers don't have to think about threading in that model though they very well do need to know that they are in a multithreaded environment. The hard part of that model is making sure that two threads aren't using the same resource at the same time. That is much harder than it seems and its one of the hardest things for any programmer to get right.

nodeJS uses a cooperative threading model (OK CS major, stop shaking your head and read the preface). There is only one thread running in any nodeJS process but there are many threads of code active at any one time. These "threads" do their work and when they come to a point where they are going to start some operation that will take some time, like reading from I/O, they hand control over to the nodeJS subsystem that determines which other "thread" is ready to continue. This is done though closures. If you're familiar with jQuery or any Google JavaScript API you know what closures are.

Here's a simple closure example

No Caption Provided

You'll notice that function is provided as a parameter to the fileSystem.readFile function. This function will be executed when the data from the file has been read. A lot of time had passed between the time that the function fileSystem.readFile was called and when the closure was called. In that time, nodeJS let other tasks run. In any other environment the server stalled while it waited for the file to be read. No other requests could be processed. The above example is fairly straightforward but let me show you another example where data is read from a file, written to a database and the the file was cleared out.

No Caption Provided

You see here where it starts getting a little hard to follow. Its inception! Or an episode of Pimp My Back End. (Yo dawg, I heard you like functions so I put a function inside of your function inside of another function). Even this example is fairly simple compared to some of the nodeJS code I've come across. Does that look like any frontend code you've ever come across. Probably not. And this is where nodeJS will take you and your previously frontend only developers over the cliff. This kind of thing is what nodeJS code is all about. Are you scared yet?

Tomorrow I'll dive further into why nodeJS so cool and also do my best to scare the hell out of you so you'll go running when someone suggests you use it.

3 Comments

Unprofessional and possibly grounds for sexual harassment Fridays...

No Caption Provided

How unprofessional am I allowed to get? My God, today's Unprofessional Friday came so close to including porn. There were at least five times when I typed something into chat that I deleted after thinking better about it. Next time, I'm going to have to chat with a secret account that doesn't have the green background. I had some good ones too...

1 Comments

Day 3: Shit gets real.

No Caption Provided

So I'm going to add a random photo taken from within the inner sanctum in every post. Most will have some meaning, none will be explained. Some will hint at some cool stuff coming. Enjoy...

So now that I've got everything building and running I dived into the shark pool. Screw the simple bug fixes. I've taken on a new feature. Its related to videos and no it's probably not anything to do with that bug you've encountered umteen times with videos. Trust me, I am aware of those bugs and they're on my list of stuff to do. If you haven't heard yet, there's going to be an all new Gamespot.com and I'm going to do the video related stuff for it. Not the player, just the hosting and CMS pages. Much of my stuff will touch Giant Bomb and Comic Vine too actually.

Today it hit me that I'm in the middle of a gamers paradise. Anything and everything to do with gaming that's available now or about to be available in the future surrounds me. The gaming machines we have run the highest powered graphics cards, more RAM then anyone could ever fill, monitors that surpass IMAX in quality, any and all kids of input devices, you name it, we have it and you wish for it, we probably have that too. Today I got to play with Oculous; it was amazing. I remember back in the 90's Wired was all about VR and how it would change our lives in the future. Well, here we are and it will. I could totally see it as a replacement for monitors. Imagine a 360 degree cubed monitor! A virtual spherical desktop! I shudder and drool thinking about it.

The whole idea about gaming at work still hasn't quite sunk in yet. I still feel like I'm doing something wrong when I'm watching stuff like Daily Dota etc.. It reminds me of when I switched from working on system software to websites. Back then, anytime I had a browser open I felt like I was goofing off even though I was working and the browser was part of my job. Now gaming is. God, I love my job...

Start the Conversation

Day 2: Still a n00b but leveling

Today I got the three core sites building and running on my dev machine; Giant Bomb, Comic Vine and a "special" version of Gamespot. For the most part it was easy. There was one pain in the ass component, memcached.

This would be the third time I've attempted to get memcached installed and working. Every damned time has been a chore. I swear, I hate memcached. This time it was because some genius(es) over there decided to rename a struct in the code. I'll bet someone said "Hey this structure's name isn't descriptive enough, lets rename it!". The definition was the same, just the name changed and then broke any project that depended on the source broke. WTF? I mean seriously!? Do those guys know what the hell they're doing? I'd go with no. I've dealt with these kinds of people before and I've fired a few. Two jobs ago I fired an engineer with those kinds of tendencies on my first day about a half hour after knowing him. That kind of shit sets me off.

Anyway... after going back a version of memcached I got everything working. I'm going to need to lead a campaign to replace it with either mongo or redis. memcached needs to die. If you're using it in your code, please drop it. Do it for edgework. I need to make a t-shirt about that and get it on the Giant Bomb store.

While I wasn't fighting with the satan spawn of dipshit programmers I took part in my first "Quick Look". Well actually, two. The first was some castle building game that promptly crashed (way to go!) and then an awesome looking helicopter game. Don't ask me the name of either, I've no clue. I'm horrible with names. For me its always "that thing... with the stuff, that does that whatchamacallit" The helicopter game was awesome though. I was really impressed with the graphics. For anyone that's done graphics programming, you'd be impressed too with such seemingly simple stuff as snow and nighttime shading. I'll bet you were there with me and know what I'm talking about.

Tomorrow I'll probably try to fix a bug or two and create four more. Beware...

Start the Conversation

I'm new here. Noob? n00b? ...anyway one of those

Today was my first day working as a developer at CBS Interactive in the Games group. As part of my indoctrination I was told (warned?) that I'd get followers just because of my staff status. Well if you're going to follow me I probably should give you something to follow.

There's plenty of talented writers here so I'll leave anything to do with gaming up to them. I'll be getting into the behind the scenes magic that delivers their awesome content to your screen. I'll get into such magic as the code, the servers, the platforms and the wizards who conjure it all up and tame it when it breathes fire in the wrong direction. Wether you're a pro developer, a hobbiest or a wannabe I hope you'll at the very least be entertained.

Of course because this is my blog I'll also talk about myself. I'm old school. Much of my childhood gaming experience was in a dark and smoky arcade with rows of standup cabinets for Pac-Mac, Donkey Kong, Space Invaders, Galaxian, Gorf, Dig Dug, Moon Lander, Asteroids, Defender, Robotron, Joust and many other titles of the day. Atari VCS was the home machine and that made 8 bit look awesome. Space Invaders was the first game I ever played and it changed my life, a year later Galaxian caused me to lose my shit and another year later Galaga came really close to getting me kicked out of school. I could not pass by the 7-11 with the Galaga machine in the corner without stopping in and playing it. That store was between my house and my school. I was late a lot.

edgework (pay attention to the capitalization, I don't respond to Edgework or Edge Work) is my gamer name. Its a reference to a Hunter S. Thompson quote:

"The Edge... there is no honest way to explain it because the only people who really know where it is are the ones who have gone over."

Well, its actually more than just a quote, it's his life. I take inspiration from Hunter in that I'm a pusher of boundaries. I'm always looking for the edge and sometimes I do go over and I have the scars, literally and figuratively to prove it. I'm going to be pushing Giant Bomb and Gamespot to edge, technically and you get to go along for the ride.

Strap yourself in...

2 Comments