02
Jul
stored in: Uncategorized and tagged:

Is local multiplayer dead?
What happened to local multiplayer? I’m tired of dropping $60 (over 1/10th the cost of the console itself) on a game that I can’t enjoy with my friends. In the same house. Which you have been able to do since the home version of Pong in 1975.

Fight the guy you can’t see
I recently purchased the new UFC game for PS3, which is only single player locally, 2 player online. I have been having friends over and shit talking while kicking their ass in a fighting game since I was a kid, Karate Champ allowed 2 people to fight locally in 1984. We all grew up playing Street Fighter and Mortal Kombat in the late 80’s and early 90’s. How the hell is it that it can be 2009 and we are making leaps and bounds in the technology for these systems, but removing fundamental concepts that got people into video games in the first place.

Technology
We have wireless controllers, wireless internet, live updates of firmware, updates for gameplay. Game consoles with more processing power then some computers, projects have even been created to cluster them into super computers. Video games are output in higher quality then most television channels and even some movies. Cut-scenes have become almost cinema quality. Real time lighting and shading, and physics engines that make almost any action realistic.

Split-Screen
These days most people who can afford the expense of 7th Generation game consoles have large tv’s 50″-73″ some even bigger. We have been playing split-screen games when the biggest TV any of my friends and I had was 19″ and now that we finally have TV’s big enough that it does not matter if we split the screen we no longer have the ability to do so.

Massively Multiplayer
You can play 16 guys across the world multi-player but not the guy next to you, Some MMO’s are capable of supporting hundreds of thousands of simultaneous users. You have voice chat, and buddy-lists to accomodate you interacting with friends, but there is nothing for you and your friends if you want to hang out in the same house and have a few beers.

I am just finding it hard to believe that with all this technology, and the size of our TV’s that game producers are ignoring a fundamental feature of video games. This is why many of us started playing video games in the first place. Video games are no longer something I can do with my friends when they come over, unless everyone is up for a game of Little Big Planet. There are very few games you can enjoy with your friends.

Anti-Social or Money Hungry?
Has society become this anti-social that the only important part of games is to focus on single person interaction. We don’t want to encourage people to invite their friends over for a friendly ass kicking in the newest fighting game, or racing game? or is it just that the corporations that develop these games are so hungry for money that they put people in a position to buy more consoles and more games so they can set them up in multiple rooms in order to get somewhere close to the same interaction they had as kids?

Whatever the reason, I hope this is a short phase that will soon be over. I wont be playing many new video games until I am able to look my friend in the face while I tell him he is a shitty driver, or that i’m going to school him in the newest boxing game or whatever it may be.

/rant

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter

While working on some front end optimizations for a venture of mine I went on the lookout for a better bundling strategy then that provided with the default rails stack.

While rails does provide bundling of CSS and Javascript it does not support minification. Which in my opinion is a huge win for site performance, and a less needed feature for this particular project; but a nice to have is the concept of bundles. Specific sets of pages may need the same 3 Javascript files etc. So it would be nice to just keep track of these common bundles and include them as necessary in my layouts and views.

Enter asset_packager. asset_packager is a project created by Scott Becker. Which does exactly what I was looking for. You configure your bundles and the order in which files are placed in the bundle through an easy to configure yml file. And you just run a rake task when deploying to create the bundles. I won’t go into detail here about how to use it; but feel free to follow the link to the project page here http://synthesis.sbecker.net/pages/asset_packager

One thing that I did notice while looking into this project was that it uses JSMIN ported to ruby. I am personally a fan of YUI Compressor so I opted to go with a fork of asset_packager by Erik Andrejko found here http://github.com/eandrejko/asset_packager/tree/master which uses YUI Compressor for its minification process.

On to the good stuff.

As happy as I was with what I had found, it seemed to still have some inherent problems.

  1. When bundling CSS if you are using relative paths, when they get bundled into a file in your base directory your paths will no longer work, so you need to manually modify your CSS files to have absolute paths to your images. Which can often be part of plugin or library that you are making use of like jQuery UI.
  2. If you have implemented far forward expiration dates like you should on your media (my next post will talk about this), your CSS files do not have a cache buster to ensure that when your media is updated the cache is expired
  3. Rails has the concept of an asset_host, it creates a key based on your asset name which will always map to the same domain, and spread the media across asset_hosts by supplying a configuration option in your environment file to help overcome the limit of connections per domain. Well if you design sites the way I do, I have very minimal links to media inside my markup, its all contained in the CSS, so I make very little use of the image_tag helper and therefore little use of the rotating asset_hosts

I have created a fork of Erik Andrejko’s repository for asset_packager and implemented solutions for all of the problems I found above.

During the bundling process it will now determine absolute paths of your assets and use those in the bundled file only. Leaving your originals untouched.

Paths to images are now appended with a cache buster using the same approach as rails, determining the last modified date and appending a timestamp to the url. Now when running your rake task for bundling you can rest assured that new versions of your media will be seen if you have set far forward expiration dates.

If the environment you are running the rake task against has an asset_host set for rails to use asset_packager will pick up on it the same way rails does replacing %d with 0-3, the same asset will always get the same hostname to ensure caching works properly.

While my fork with these changes is of Erik Andrejko’s repository none of the changes are specific to this fork. They can easily be added to Scott Becker’s original implementation. The only changes were the addition of a single method, and calls to it from within the bundle method, as well as a change to the rakefile to include the environment so that the method would have access to the rails configuration.

my github repo can be found here: http://github.com/erikstmartin/asset_packager/tree

I’m open to any comments or questions you may have. Let me know if you find any problems or if you just want to tell me how useful you have found the changes.

update: Erik Andrejko is quick! It appears my changes have already been merged into his branch

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter
13
Apr
stored in: Programming, RSpec, Rails, Rake, Ruby and tagged:

I noticed a couple of days ago there are some unexplained errors when running rake spec with the rspec rails gem. That appear to have been there for a while. 3/07/2009

when running script/generate rspec new rake tasks are placed in lib/tasks/rspec.rake

if you open this file you will see that line 101 is the offending line

edfa::STATS_DIRECTORIES < < %w(Routing\ specs spec/lib) if File.exist?('spec/routing')

should be

::STATS_DIRECTORIES < < %w(Routing\ specs spec/routing) if File.exist?('spec/routing')

I sent a message to David Chelimsky so this issue should be resolved in the next release.

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter
15
Mar
stored in: Uncategorized and tagged:

There are so many motorcycle accidents today. Many people are seriously injured or killed and families are left with expenses that they cannot afford to pay; medical bills, burial costs, legal fees. Times are hard enough dealing with the loss of a loved one due to a motorcycle accident, without the added stress of paying for these things.

Today I am formally announcing a new charity that I am founding. Donations will be used to help family and friends of motorcycle accident victims with these costs. Through this foundation we also hope to raise motorcycle safety awareness.

People from all walks of life ride, and I think if we come together we can truly help struggling families due to these tragedies; by donating our time and/or money.

I have started a donation campaign on Pledgie.com for the initial round of donations, to be used to file for incorporation, 501(c)(3) status, setup banks accounts, accountant fees, purchase initial marketing material, copy for the web page, and legal fees for the review of these things.

In the future look forward to raffles for helmets, gear, and custom motorcycles. Income from the raffle tickets will be used for the charity. There will also be a site for memorial pages to be created for the bikers, for people to share memories and experiences, organize reunions of family and friends, organize memorial rides, as well as allow for donations directly to the family.

You can donate by clicking here:
Click here to lend your support to: Fallen Riders and make a donation at www.pledgie.com !

If you would like to donate your time, or experience with legal or accounting tasks please contact us at info@fallenriders.com

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter
11
Dec
stored in: Java, Uncategorized and tagged:

>мебели софияonline casinoou are having problems with running Tomcat on Cygwin and receive errors about bootstrap.jar your problem is that cygwin executes the windows java.exe which does not understand cygwin paths, you must update your classpath to point to the windows locations of the tomcat bin, and lib directories

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter

I previously posted a rant and a bit of a story telling article about some of my horrible experiences with recruiters. Well about a month ago I had yet another experience. I give to you the proof.

I was sitting at home  and I received this email. (shortened to just useful excerpts)

Hello Erik,
Trust you are doing well. I just left you a Voice Mail.

Please let me know if you are interested in the position bellow by sending me your resume. I will call you to further discuss..

Web Developer III
Location: Orlando, FL
Job Type: Contract
Duration: 9 months
Rate: Open

.. long position summary ..
.. requirements ..
Significant experience with Content Management Systems
3-4 years of hands-on web development, including XML, DHTML, CSS, JavaScript
3 years experience with ASP/JSP/PHP or other server-side scripting language
Experience with Flash and ActionScript a strong plus
Experience with two and three tier web architecture.

Reading this I’m thinking wow, this sounds an awful lot like a position where I work, Web Developer III my work ranks our development positions I, II, III most places use Jr., Sr. etc. Ok, location Orlando, even closer. 9 month contract. Ok now this is getting eerie. Any contract position I have ever been offered is 6 or 12 months, occasionally i’ll get offered a 3 month, but 9 months is a Disney thing.

So on to the requirements, significant experience with CMS we heavily use cms’s ASP/JSP/PHP or other server-side scripting language at this point it has to be Disney, how many companies don’t care what language you have experience in? Disney has its own internally developed language so we hire from all backgrounds, but I’d guess the overwhelming majority of companies hire straight from the large pool of people that use the technology they implement.

But surely he couldn’t have emailed me an offer for a job at my current employer, after all he found me through my resume that is on monster.com (which I’d also like to mention hasn’t been updated in at least 6-9 months). I mean its the first entry in my previous experience section. Ok the suspense is killing me, lets just ask.

Dear Recruiter,

Is this position with Disney Internet Group / Disney Interactive Media Group / Walt Disney Parks and Resorts Online ? Based off the contract term, the position title, skill set they are seeking, and overall job description it sounds just like it?

it did not take long to receive a reply, maybe 15 minutes.

Erik,

Thanks for your response. Yes the position is with one of the Disney groups. Would you be interested? feel free to send in your resume and I can call you back to further discuss the position with you. Feel free to contact me if you have any questions. My details are listed below.

Thanks

Recruiter

This is the point where I yell some profanity, along the lines of you have to be f*in kidding me! I shouldn’t be surprised, but I am. Why on earth would you not read someones resume before contacting them about a position. I’m fired up now. and as usual for me I’m pretty blunt I feel something needs to be said. So this is my reply.

I can’t tell you how much this response disappointments me. The sad truth is that this isn’t the first situation like this that has happened to me either, and is almost a daily occurrence at the office. I believe that I speak for quite a number of professionals when I ask that you please read our resume’s before contacting us regarding positions.

You are contacting me about a position that I already work in, I have been working for Disney since January of 2007, and have been a full time employee of theirs since April of 2008  and still presently working there, had anyone looked at the first entry in the employment experience section of my resume they would have noticed that.

Again, please read our resumes before contacting us about positions that we already hold, or that have nothing to do with our knowledge and previous work experience, because our resume happens to contain some sort of keyword out of the job description.

Sincerely,
Erik St. Martin

I know this probably won’t help he is probably on to his next victim, but it made me feel a little better.

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter

I was wondering around today and happened to run into this super-lightweight cms called le.cms. Intrigued I continued to read about the benefits of the application and I read this:

The content is stored in text files, one per page, which means that no matter how many pages there are, page load time remains virtually the same, unlike a CMS with content stored in a database that takes longer and longer to query as more content is added.

I was shocked, they cannot be serious right? It seems as if in their opinion databases have been a waste of researchers time. I don’t know where to begin at dismissing this, I pose these questions?

  • If flat files are so much better and faster why does the majority of software use databases, and why were databases invented?
  • What do databases use to store their information? You guessed it files! except a huge amount of effort has been placed in making sure that I/O is optimized, as well as caching in memory things that are commonly accessed.

On to my question about your architecture, that no matter how many files its virtually the same load time! How much do you know about file I/O? If you have say 1,000 articles that have been placed on the disk through the course of 5 or 6 years I dare say these are going to be spread out across the disk, now your site that has 1,000 articles should have multiple users at the same time on, maybe in the hundreds? What do you suppose happens? There is going to be overhead while the disk seeks to all these different positions, maybe you’ll be in luck and the memory wont be reused by another process and the file will still be there for the second request.

On to scaling, when all this I/O and even just load becomes to much for one server, what is to be done? clustering should be fun, you will need to move these files to some sort of NAS device, and manage them from there.

/rant

It’s not that I don’t see this small lightweight cms as being useful, there are plenty of people out there that this is extremely useful for, but don’t play up your software by playing down proven technology. When using statements like this as benefits to your software you may want to do some research to see how accurate you are.

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter
07
Oct
stored in: Programming, Ruby and tagged:

For those that have not used metric_fu (http://metric-fu.rubyforge.org/) its a great project by Jake Scruggs (http://jakescruggs.blogspot.com/) that merges many different ruby projects for measuring code performance, into one bundle of rake tasks and generates html reports. Up until now its churn feature (which shows you which of your files have been modified the most in source control) has only supported subversion. Myself I am a huge fan of Git and I use it for everything, even when I work on projects in other revision control systems I use things like git-svn and git-p4 to push to those systems as my remote. Many other rubyists share my love for it.

The other night while i was using metric_fu against one of my projects it kept complaining about my codebase not being a valid working directory, so I went ahead and implemented git support, yesterday Jake released the newest version 0.8.0 which contains my patch. So git lovers go update! (http://github.com/jscruggs/metric_fu/tree/master)

Next on my list removing the Rails dependency for dates.

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter
20
Aug

I have been doing freelance development and consulting since 1999. I figured it was about time that I launched a site for this service. I decided on a cheesy but memorable name. http://dialadev.com

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter

There are probably as many theories on proper commenting of your code as there are developers writing the code. What is worth noting? what is not? I think to much focus is wrapped up in rules that make writing good comments confusing to new and seasoned developers alike. I will go over a few simple rules I like to stand by.

1) Use XDoc comments wherever applicable. There are a number of tools out there that will make your life a lot easier when generating base documentation and HTML versions of your API documentation. They are quite useful.

2) Don’t comment just to comment. Quantity is not better than quality in most situations and this one is no exception. To many comments can be distracting and take you away from what is important; The code.

3) Answer the write question. To many times I read comments that always answer the question “What?” . If you can not easily read your code and determine what its doing you may want to consider addressing the problem a different way. There are a few exceptions to this rule with complex algorithms and methods, but you should use comments that answer this question minimally. The real question that should be answered is “Why?”. 6 months or 2 years down the road when you open up the code its probably going to be fairly obvious what the code is doing, what will not be so obvious is why you did something that particular way, some business based rule that was determined in a meeting that made sense at the time, is now just a big question mark. You will thank yourself when you don’t have to rewrite something just to figure out there was a reason you had done it that way.

4) Use examples. Even the best documentation and comments can leave confusion to people not as familiar with the code as you are. Be sure to include small snippets of code demonstrating how to use a class or method that you have created if there may be room for confusion.

5) Don’t be afraid of humor. Hunting down defects or just implementing a new feature can be long and tedious at times. At 3am when you or a fellow developer are knee deep in code you’ll appreciate the laugh it will remind you how much fun coding is.

  • Digg
  • del.icio.us
  • Facebook
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Twitter