Baseball Mogul Online is shutting down — but CSFBL isn’t, so why not check it out?

I just stumbled upon this announcement from the Baseball Mogul Online forums:

This page is to notify all Baseball Mogul Online users that we will be discontinuing the service as of December 1, 2008.

Why?
There are three main reasons:
#1 -The system is not profitable to operate for us. Even when it was at its peak of usership, it did not bring in enough money to support further growth and improvements.
#2 – We no longer have the staff needed to operate the system.
#3 – The machines and bandwidth that the system runs on were designed for a much larger load than we currently use. To economize, we will be switching services and bandwidth, and the new equipment will not support Mogul Online.

Sincerely,
Dee and Clay Dreslough
Sports Mogul Inc.

Well how about that. I’m as sorry as anyone to see a solid game go away, but there’s good news to all Baseball Mogul Online fans — there’s an alternative that is not going away, and it’s 100% free: CSFBL!

CSFBL, the Computer Simulated Fantasy Baseball League, the grand-daddy of all multiplayer baseball management simulations, is still going strong. In fact, we’re probably stronger today than we’ve ever been.

Even better, there is no reason to fear that CSFBL will go the path of Baseball Mogul Online. Why?

  1. Profitability doesn’t matter. The game is funded out of my pocket and with the help of generous donations from our members. We don’t have to make a profit to keep running. (In fact, we’ve almost never made a profit, but the game has kept running — for over eight years — despite that fact.)
  2. Our staff is volunteer, so they’re easy to replace. Everyone who helps out with CSFBL does it of their own free will, because they love the game and the adventure in helping watch it grow. Much like open source software projects succeed despite any paid staff, CSFBL has succeeded and will continue to succeed under the same model.
  3. We’ve got horsepower to run the game. About six months ago we upgraded to a new server. With all the kinks worked out, we’re now running faster and more reliably than we have in years. Even better, we’re about to migrate our forums to vBulletin as we move to improve our community features. On top of all that, if we generate revenue above our expenses, my intent is to continue to expand our infrastructure to keep up with growth and demand.

Don’t get me wrong, CSFBL has had its share of growing pains — but what you get, for the price you pay, is simply incredible. Aside from a feature-rich game (running on a baseball simulation engine that has been battle-tested for over eight years) and a rich community, there’s also one thing that is rare in any online service, much less a free one: The guy who runs it is honest, up-front, and always involved.

Why not check us out? http://www.csfbl.com

Looking for a good ASP.Net front-end developer in New York City

A client I’ve been working with is looking for a front-end ASP.Net developer to work on-site for them in their New York City (midtown) office.

The right candidate should be able to:

  • develop a complex ASP.Net solution using WebForms;
  • create web markup (HTML/CSS) from Photoshop mockups;
  • use ASP.Net Ajax, jQuery, or other client-side solutions, and know when to use what;
  • write efficient front-end code that is tested and works well across a wide range of browsers;
  • come up with user interface solutions (i.e. help define the client side of the business requirements);
  • be able to write code-behind and be able to read, understand, and enhance existing business logic code.

If you or someone you know has the right stuff, send me an email with your resume and I’ll pass it along.

Want a better Menu adapter? Send me your menus!

As part of the rewrite of the ASP.Net Control Adapters (see the Google project at http://code.google.com/p/aspnetcontroladapters), I started working on a new Menu adapter. It’s got a long way to go — and you can help me get there!

The best way to engineer proper adapted menu markup is to visualize how the non-adapted Menu generates markup (and, in a sense, reverse-engineer it). With that, here’s what you can do to help.

Send me a copy of the markup and generated code for your non-adapted Menu controls!

In other words, here’s what I can use.

  • The exact markup of your Menu tag from your ASPX page.
  • Any codebehind that manipulates the properties of your Menu tag (i.e. changes to what you declared in your ASPX page).
  • Your sitemap file (if used), or any details that you can give about the site map used to generate your menu.
  • The HTML generated in the web page by all of the above — using default (non-CSS-adapted) markup.

The goal is to look at lots of different uses of menus to understand how the different pieces manipulate markup so I can make an adapter which does everything it needs to do without breaking anything in the process.

If you have stuff to contribute, post it as a ticket to the ASP.Net Control Adapters project (at http://code.google.com/p/aspnetcontroladapters/issues/entry?template=Review%20request).

Please do NOT send anything that contains confidential information. At the very least, I’d need your Menu tag markup and the generated HTML. The other stuff is icing on the cake.

Thanks in advance to anyone who helps out! Remember, the more information you can provide, the better the results will be.

Cleaning up the GridView’s EmptyDataTemplate (damn those tables!)

A project I’ve been working on makes frequent use of the ASP.Net GridView. However, as many people know, the GridView has one glaring issue: It wraps your <EmptyDataTemplate> in an HTML table — something that I don’t want, for two reasons:

  1. My empty data template does not consist of tabular data.
  2. My stylesheet has a default style for tables — a style that I don’t want applied to my empty data template.

One solution is to use the CSS Friendly Adapters for ASP.Net, which potentially solves both prolems, but that will bring in potential breaking changes to my GridView controls. I don’t have time for that (yet).

The solution I came up with is to do two things:

  1. Create a new CSS class that removes table formatting (borders, backgrounds, padding, margins, etc.). This class will be applied to the GridView only when it has no data.
  2. Add a line of code in the OnPreRender() method for each web page or control that has a GridView, conditionally setting the CSS class of the GridView to the aforementioned class.

My CSS class looks like the following.

.empty, .empty td { border:0;background:none;margin:0;padding:0; }

The line of code in your OnPreRender() event follows.

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);

    if (myGridView.Rows.Count == 0)
        myGridView.CssClass = "empty";
}

Why the OnPreRender stage? By placing your code here, you ensure that all data loaded into your GridView is already bound, whether it be from code (myGridView.DataBind()), from data sources in markup (such as the ObjectDataSource), or from viewstate.

It isn’t pretty, and it doesn’t give you semantic markup, but it’s easy enough to implement and can solve the visual problem.

Hope and Change: A Story

Hope was a pragmatic young lady who knew the importance of planning ahead. On her 18th birthday, she decided to start saving for retirement. Being a college student, she didn’t have much money to save, but she wanted to start with something.

A local bank had a plan that was perfect for Hope. She would get a fairly moderate 5.1% interest rate on her savings, provided she follow one rule: she must save some money every day, even if it was as little as one cent.

Hope started off saving five cents per day. She followed this plan until her 21st birthday, when she increased her savings to ten cents per day.

By her 25th birthday, she was enjoying a few years of full-time work, and raised her daily savings to 25 cents per day.

Turning 29, with her career taking shape, she increased her daily savings to 50 cents per day, and continued to save that amount each day until her 67th birthday.

On her 67th birthday, Hope went to the bank to see how she had done. Over the years, she had saved just over $7,500 — yet never took more than 50 cents out of her pocket. In her retirement account was much more than that: over $25,000 — more than three times what she had saved.

Sure, no one can retire on $25,000, but everyone can save as little as 50 cents per day. What if Hope was more aggressive in her savings? What if she had saved $1 every day for her entire adult life in the same retirement account (with its 5.1% interest)? Continue reading

Can you outperform expectations if outperforming is expected?

Today, a friend of mine relayed this quote from his company leader.

EVERYONE better outperform their expectations.

I wonder… How can you outperform expectations if your boss is expecting you to outperform your expectations? Doesn’t that create a never-ending cycle of failure?

Kind of reminds me the quote from the leader of a business I once worked at.

Come to work every day expecting to be fired.

Neither of these two folks can be considered effective motivational speakers.

Outlining textbox input fields (and getting it to work in IE)

While using Google GMail today, I noticed that they put a blue highlighting around the text input boxes when they have input focus. It’s a nice touch that makes it just a bit easier for users to identify which field their typing in. (Safari users, of course, get this on all web sites out of the box.)

Getting this to work on your web site is a simple matter of applying some CSS styles. The trick is to give your normal inputs fields a 1px border and a 1px margin; then, when they have focus, give them a 2px border (with a different color if you so choose) and no margin. This will ensure the dimensions of the element don’t change when the border width changes.

The following CSS provides an example of styling text boxes (both text and password inputs, and multi-line text boxes) and select lists (single and multi-line) with an alternate outline when holding the input focus.

input[type=text], input[type=password], textarea, select {
border-top: solid 1px #8e8e8e;
border-right: solid 1px #d1d1d1;
border-left: solid 1px #d1d1d1;
border-bottom: solid 1px #e4e4e4;
margin: 1px;
padding: 2px;
}
input[type=text]:focus, input[type=password]:focus, textarea:focus, select:focus {
border-color: #4488cc;
border-style: solid;
border-width: 2px;
margin: 0;
}

Like many good web tricks, this’ll look great in Firefox but won’t do anything in Internet Explorer. That’s because IE (through version 7) doesn’t support attribute selectors (as in [type=text]) or the :focus selector. To get things to work in IE, we need to rely on a little more CSS and some JavaScript.

Continue reading