Scott Kuhl

Warning: I may have no idea what I am talking about!
posts - 755, comments - 631, trackbacks - 350

My Links

News


Search My Blog

Search GWB



Help CMTA!

Twitter












Tag Cloud

Archives

Post Categories

Image Galleries

Monday, February 16, 2009

Review of Sony Vaio FW Series Laptop

This weekend I purchased a replacement laptop for my Gateway Tablet PC.  I reviewed a lot of different options but focused mostly on HP, Dell, Gateway, Sony, Samsung and even Apple.  First lets start with each of the lines of laptop I didn’t choose and why.

HP scored well on CNET reviews with the Pavilion dv3510nr, so I took a trip to Best Buy to check it out.  I wasn’t really impressed.  It was just another laptop.

Dell as always seems to have a build your own laptop for everyone.  The cost of adding a Blu-ray drive and the limited number of models that ship with them drove me away.

Gateway’s new MD series is nice but this is a dying brand.  I’m not sure they will still be here in a year.

Samsung’s new X360-34G is very nice, but the price is too high.

Apple’s designs are awesome but I’m not sure I will ever get use to the lack of the right click button.  I almost went with a MacBook Pro to give me the option of running OSX, but I properly would have stopped using it after a month.  Price was also too high.

The Sony Vaio line is my favorite PC laptop line as far as style goes.  But to be fair, they seem like MacBook clones.  The FW series was the closest to the specs I wanted.  This review is based specifically on the VGN-FW35iJ.

Sony Vaio VGN-FW351J

The Good

The Sony Vaio VGN-FW351IJ feels like a MacBook Pro clone.  It’s got good specs for the money.   $899 will get you 4GB of RAM, a Core 2 Duo processor, Blu-ray drive, a 16.4” widescreen and a 320GB hard drive.  It’s very light and portable for it’s size and well balanced.  Heat doesn’t dissipate into your legs when using it on your lap.  The HDMI output port makes this laptop a nice portable Blu-ray player.  Blu-Ray playback was smooth, the drive wasn’t noisy and the system didn’t spike with heat.   All bonuses when trying to watch a movie in bed.

The Bad

The area to the right of the touchpad warms up to a very noticeable level.  The VGA port is on the left, most people will not consider this a drawback, but I have gotten use to having my monitor on the right so I have more cables crossing my desk than before.

The Ugly

The USB ports are all on the right.  This makes it hard to use an external mouse for a right handed person while external components are attached.  The OS is also loaded with a lot of crapware like Microsoft Works, Quicken and a whole bunch of Vaio utilities that badly need reducing and combining.

Recommendation

Well, I’ve only been using it for a few days, but I’m happy with the purchase.  I would buy it again.  It’s a great laptop for the price.  I think I would need to purchase a MacBook Pro at 3 times the cost to get a better 17” laptop.

posted @ Monday, February 16, 2009 11:43 PM | Feedback (6) |

Monday, February 02, 2009

Juggle.com is Live

Our public beta has launched.  Want to know what it is?  Check it out at www.juggle.com.

Use the feedback form on the site to leave comments and request an invitation.  Be sure to let us know if you are a GWB member.

 

Technorati Tags:

posted @ Monday, February 02, 2009 10:16 PM | Feedback (0) |

Sunday, February 01, 2009

ASP.NET Web Developer Checklist

The following is a simple checklist you can use when building web applications.  Much of this still applies to other technologies and can easily be extended.  I try not to get too specific on technology or methodology, but it is definitely leaning toward ASP.NET.

If you can think of something I am missing or disagree, please leave a comment.  Detailed information follows the checklist.

How much of the checklist you follow will depend on the project.  If its just a hobby site, you may skip items like load testing, but as the site grows you will likely need to check off more and more items.  Some items, like separation of logic should just be done from the start.  In any case, you should make an actual decision to ignore the item.  This is much better than just forgetting to do it.

The Check List

Everywhere

  • Use source control.
  • Be consistent with naming conventions.
  • Create documentation.
  • Backup everything.
  • Use code analysis tools.

Database

  • Use non-clustered indexes on unique identifier columns.
  • Setup foreign key relationships.
  • Use a last updated timestamp column.
  • Add simple audit columns or a history table.
  • Analyze and tune your database.

Business Logic

  • Clearly separate business and data logic.
  • Use some standard patterns and stick with them.
  • Do not duplicate rules.  Data is okay.
  • Create unit tests.

Web Interface

  • Make the site accessible.
  • Use resource files.
  • Minimize use of server controls.
  • Separate your HTML, JavaScript and CSS.
  • Minimize ViewState.
  • Pay attention to search engine optimization.
  • Clearly separate presentation and business logic.
  • Don’t forget a site map, favicon and search provider.
  • Create user interface unit tests.
  • Check your site with YSlow.
  • Load test the site.
  • Security test the site.
  • Use a hosting provider.
  • Minify and combine resources.
  • Turn on IIS compression.

Process

  • Stay agile.
  • Vision before you design.
  • Design before you develop.
  • Test after you develop.

The Details

Use source control.

Even for small, one person projects, rollback can save your life.  There are plenty of good ones to choose from including VisualSVN, Team Foundation Server, SourceGear Vault or SourceAnywhere.  If your going open source, look into CodePlex.  A lot of people really hate SourceSafe, but it’s better than nothing.

Be consistent with naming conventions.

There are lots of opinions on naming conventions.  Microsoft publishes guidelines for class libraries.  Whatever you use, be consistent.  Having many developers on the same team with a different set of standards can make the code a mess.  Comprise is likely needed.  Don’t forget to apply this rule to database also.

Create documentation.

Document the code well with code comments and create high level documentation to explain major sections of the code.  You’ll need it in 6 months.  You should also document all your requirements and have a solid project management plan.  TargetProcess is a great tool to help with this.

Backup everything.

These easiest way to do this is to make sure everything, including database schema is in source control.  Then back that up.  Mozy is a good choice of this.  It will get your data offsite without any manual process.  Be sure to backup your documentation, data and anything you choose not to put in source control.  Just imagine your building burning down.  What would you need to recover and how.  It’s also good to test the backups and see if you can recover everything.

Use code analysis tools.

It’s like having an extra code reviewer on staff.  And one that actually does review everything.  FxCop, StyleCop and Resharper are great for this.

Use non-clustered indexes on unique identifier columns.

Lately I tend to use unique identifiers as primary keys because they are easy to move between environments and don’t require an extra column be added for replication.  One gotcha here is the SQL Server Management Studio will default your primary key index to clustered.  This is going to make inserts very slow as your database grows.

Setup foreign key relationships.

A lot of developers seem to miss this for some reason.  Open up the diagram tool in SQL Server Management Studio and connect those tables.

Use a last updated timestamp column.

Adding a timestamp column is an easy way to determine if your data is stale and someone or something else has changed it while you had it.

Add simple audit columns or a history table.

Putting in a last edited by and on columns can help a lot.  An audit trail in a separate table / tables is even more helpful but these tables can get very large.

Analyze and tune your database.

Indexes are your friend, but too many friends can also be a bad thing.  Tune that database.  Everything will work well when the database is small, so toss some serious amount test data in there.  Red Gate’s SQL Data Compare is great for this.  While your checking it out look at some of their other tools.  They make data almost fun.

Clearly separate business and data logic.

They don’t necessarily need to be in separate class files, but there needs to be a clear separation in logic.  Tools like Linq to SQL can start to blur this line, but you at least want some verification and authentication logic on data updates.

Use some standard patterns and stick with them.

Mixing in ADO.Entities, frameworks like CSLA, creating your own lightweight custom collections and DataSets can drive you crazy over time.  Especially when logic starts to cross from one set of code to another.  Pick something and stick to it.

Do not duplicate rules.  Data is okay.

Any piece of business logic should be in one and only one spot.  It’s okay to have multiple classes accessing the same data.  This is a necessity when dealing with a full object and some simple lists.  But don’t duplicate the logic.  There should be one block of code that verifies a rule.

Create unit tests.

How many?  That’s a long discussion.  In general I create enough that I know the system works.  If you follow test driven development you probably have a good handle on this.  If you find a bug, check you test cases and see if it was something you could have caught.  But definitely write these tests.

Make the site accessible.

Microsoft has a very good article that discusses this topic: Building ASP.NET 2.0 Web Sites Using Web Standards.  Visual Studio has a few accessibility tools built in, use them, don’t ignore them.

Use resource files.

What percentage of the world speaks your language?  Even if you never add a second language, the use of global and local resource files will keep this option open.

Minimize use of server controls.

If you don’t care about the state of a control, consider using standard HTML controls.  ASP.NET server controls create extra overhead with long IDs and ViewState.

Separate your HTML, JavaScript and CSS.

I like starting with just HTML and making sure the site is usable without any JavaScript or CSS. This may keep you from putting everything in DIV tags and use lists and headers the way they should be.  Also try to use CSS to style the site and leave JavaScript to handle behavior.

Minimize ViewState.

Turn this off at every level you can: page, user control, and server control.  It’s unnecessary overhead.

Pay attention to search engine optimization.

If your site is public, don’t ignore SEO until the end.  Google provides some good tips in their Search Engine Optimization Starter Guide.  And this Professional Search Engine Optimization with ASP.NET is a great book.

Clearly separate presentation and business logic.

Your application could easily start taking on more interfaces like backend processes, web services, mobile apps.  Keep the business logic and presentation logic separated to get as much code re-use as possible.  But be careful not to start pushing presentation logic back into the business layer, or your going to have just as many problems.

Don’t forget a site map, favicon and search provider.

These are common files to forget.  Double check to make sure you have them.  Although you might not need the search provider.

Create user interface unit tests.

If the interface doesn’t work, it doesn’t matter how solid the middle layers and database are.  I like using WatiN, although it has some issues running a lot of tests in a row.  I tend to build my user interface tests based on the test cases created for the user stories.

Check your site with YSlow.

YSlow is a great plug-in for Firefox that will help you identify problems in the client side design of your application.  It gives you some very useful performance statistics and suggestions for fixing issues.

Load test the site.

Figure out how many users you need to support and make sure you can.  We use Web Performance for this.  It’s much more reasonably priced than some of its competitors and still very feature rich. JMeter is a popular free alternative.  Don’t assume because your test pass that everything is perfect, but you are much closer to knowing the truth.

Security test the site.

You are really going to want to find these bugs first.  Even if you store no serious personal information other than a password, that password is probably being used on many sites by your users.  Even some simple injections can make your site look very unprofessional.  Wikto is free and easy to use to test the servers for vulnerabilities, but your going to need something like Acunetix to do some deeper application security testing.  I good hosting provider may also be able to help.

Use a hosting provider.

Your basement server is not going to cut it when you get dugg.  A hosting provider will take a lot of worry off your hands.  Even if its a simple ASP.NET shared hosting plan from GoDaddy or a more scalable solution from Amazon.

Minify and combine resources.

Bandwidth and multiple HTTP requests are going to slow your site down a lot.  You can do some of this manually or use a product like Runtime Page Optimizer (RPO).

Turn on IIS compression.

Make sure dynamic and static compression is turned on in IIS unless you have a very good reason not to.  RPO will do a better job at this than IIS.

Stay agile.

Keep moving forward.  Don’t stagnate in one phase.  Scrum is a great practice to start with.  TargetProcess will also help with this.

Vision before you design.

Stop and think before you build.  What is it you are building and why?

Design before you develop.

Don’t just start writing code.  Get a set of core user stories together to help you flush out the idea before making any critical architectural decisions.  Try not to get bogged down in this for a long period of time.  This is also a good time to start writing test cases.

Test after you develop.

You should be testing as you develop, but do a round of testing before each release.

Money

Many of the tools listed above are free, but some cost money.  You can get most of what you need without spending a dime.  At some point you should evaluate spending the extra money against what it actually saves you.  Of course you have to have money to spend it.  Always be on the lookout for open source alternatives, but don’t pick something just because its free unless you have no choice.

The Free Zone

  • Visual Studio Express
  • SQL Server Express or MySQL
  • VisualSVN Server and TortoiseSVN
  • CodePlex
  • TargetProcess
  • FxCop
  • StyleCop
  • CSLA
  • NUnit
  • WatiN
  • YSlow
  • JMeter
  • Wikto

The Paid Zone

  • Visual Studio Standard or Pro
  • SQL Server Standard
  • VisualSVN client
  • SourceGear Vault
  • Dynamsoft SourceAnywhere
  • TargetProcess for larger teams.
  • Mozy
  • Resharper
  • RedGate
  • Web Performance
  • Acunetix
  • Hosting providers
  • Runtime Page Optimizer

The Oh My God I Got Money To Burn Zone

  • Visual Studio Team Suite
  • Team Foundation Server
  • SQL Server Enterprise
  • Managed hosting providers
  • Strangeloop AS1000
Technorati Tags:

posted @ Sunday, February 01, 2009 1:18 PM | Feedback (6) |

Thursday, December 11, 2008

Good Luck Ex-Yahooers, And Anyone Else Out Of Work

Well, the layoffs hit Yahoo.  Good luck to all of you and anyone else losing their job in this unbelievable economic downturn.

We’re all in this together and hopefully things will get better sooner than expected.

Juggle is looking to add another .NET developer with good windows development and database skills if you are looking.  Just use the contact form on this blog and I’ll get the right people in touch with you.  The position does require that you live in the St. Louis area.

Technorati Tags:

posted @ Thursday, December 11, 2008 7:46 PM | Feedback (0) |

Tuesday, December 02, 2008

XBOX 360 Failure #4

image Good grief.  Yet another XBOX has failed, this time it’s the new one from last year.  The DVD drive stopped spinning up right after the NXE update.

Microsoft is footing the bill again and thankfully we have 2 so nobody will have to stop using their Lancers.  I made it in just under the 1 year maintenance agreement.

But this is by far the least reliable product I have ever owned.

It was this same time last year we had failure #3.

Technorati Tags: ,

posted @ Tuesday, December 02, 2008 3:01 PM | Feedback (0) |

Wednesday, November 26, 2008

Why Microsoft’s Free Anti-Virus Will Matter

image This is in response to a post by John Viega entitled “Why Microsoft’s free AV won’t matter”.

Yes, Microsoft failed with OneCare.  But I don’t agree with John on why.  (Keep in mind John works for a company that produces AV software, so he is biased, even if he is knowledgeable.) 

Let’s look at the three major different kinds of anti-virus users.

Type A – Anti-What-Now?

A large number of consumers don’t care about anti-virus.  They might know what it is “sort of”, and they may want to know that their new computer from Best Buy has it, but beyond that, they know nothing.  These are the home users that never purchase an anti-virus beyond the 90 day trial or they bought the upgrade simply because a pop up or sales guy told them to.

Type B – Tech Savvy Consumer

You know know what your looking for and you can find it for free.  AVG does a great job in this market.  These users do not need to be told this stuff is important and they certainly don’t need to pay for help.

Type C – Corporations

From large to small, you know you need it.  What you need is very different depending on the size of your organization, but you are likely to buy something because of restrictions on the free licenses.  Some small shops will simply use the free stuff anyway.  Other very small shops with no tech support will likely fall into the Type A above.

Microsoft failed with Type A because it’s not, and they can’t without legal action, bundle OneCare onto new PCs like Norton can.  Microsoft failed with Type B because OneCare cost money and wasn’t as good as many free options.  Microsoft failed with Type C because the enterprise was not the target of OneCare and was missing a lot of features.

Microsoft CAN succeed with the free model. 

Type A are still lost unless Microsoft more aggressively pushes the availability of the product in Windows Live.  Not only do they need to get more people to start downloading Windows Live, but they need to show people that AV is in there and they can happily uninstall the software they are paying for and save money.  A campaign with Best Buy and Walmart would go a long way.

Type B is an easy sell if the product works well.  This group know about the product so its a matter of trust.

Type C small companies will be the easiest sell.  Microsoft will have a free alternative to a paid service and be more visible.  My company falls into this group, and while AVG is great, I’ll switch if its going to save us thousands of dollars per year. 

Type C large companies are going to be tough unless Microsoft builds in central monitoring.  They certainly have the tools and experience to build this into easy network deployment and control.  But it will take a few years of a proven track record to start winning them over.  Large companies move slow.  This adoption along with Type A is going to hurt the AV companies the most.

So yes, Microsoft will make a difference.  The rules are changing when a product nobody wants to buy is now free, easy to get and comes from the biggest software company in world.  The only thing stopping Microsoft from succeeding, is Microsoft.  Push it and adoption will follow.  Toss it out there and hope people will use it, and it will fail.

But in the end, free AV should be bundled into the OS like Defender.  Screw anti-competitive practices.  The companies they are competing with are making a living based on vulnerabilities in the system.  Microsoft should have the right to bundle software that secures the OS.  And the other guys can sell software to improve or manage it, for those who really WANT it, not everyone who really NEEDS it.

Technorati Tags: ,,

posted @ Wednesday, November 26, 2008 1:01 PM | Feedback (0) |

Friday, October 17, 2008

Looking for Load Testing Software

We are currently using WCAT because we have the Pro version of Visual Studio, not Team System.  It's not exactly the easiest or best tool, but it is free.

I'm looking at Web Performance Suite and NeoLoad as a possible replacements but I'm not very familiar with either.

This is what we need:

  • Ability to load test many users (of course).
  • Fairly easy to use.
  • Trace listener would be nice.
  • Test the output for values using simple matching and regular expressions.
  • Functional testing in the same package would also be nice.

I could probably solve my problem if I could just run our existing unit tests that also include WatiN tests, but I haven't found a way to do that without spinning up a hole bunch of IE instances.  And I would have to create my own reports.

I use to use WAST but that is dying on the vine and I can't get it to run probably on Vista x64, so I need to run it in a virtual machine.

We have tried JMeter, which is quite versatile but the reports and graphs suck.

Suggestions?

Technorati Tags:

posted @ Friday, October 17, 2008 8:51 PM | Feedback (1) |

Wednesday, October 08, 2008

Ah, the Tech Market in the 90s!

Great quote from Martin Sheen in the new Paris for President video:

It was the go-go 90s.  People invested in a web site that sold dog food because a puppet told them to do it.

posted @ Wednesday, October 08, 2008 12:53 PM | Feedback (0) |

Thursday, September 04, 2008

ASP.NET Cache and HtmlAnchor HRef Bug

I just ran into a strange problem where all the links on a list are getting dropped.  The anchor tag was still there but the href was gone.  I tracked it down to a bug in the cache.

Here is the scenario.

I am building a fairly complex bullet list in code that will change very infrequently so I cache the user control for 24 hours.  The problem is anything being built with an HtmlAnchor control is losing the Href value, but not anything else.

This breaks:

var anchor = new HtmlAnchor { HRef = "http://www.juggle.com/", InnerText = "Juggle" };

This works:

var anchor = new HtmlGenericControl("a") { InnerText = "Juggle" };
anchor.Attributes.Add("href", "
http://www.juggle.com/");

Now if I try to re-create the bug with a simple test, no luck.  It is some other deadly combination.  Maybe caching the entire UserControl?

Anyone else seen this bug?

This was the only thing I could find about it.

Problem with HTMLAnchor and ASP.Net Cache

Technorati Tags: ,

posted @ Thursday, September 04, 2008 2:28 PM | Feedback (0) |

Monday, July 28, 2008

Are Too Many Good Reviews A Bad Thing?

Last week I was trying to decide whether to finally go ahead and order Learn and Master Guitar.  I'm not sure how I originally found out, but it seems to be a very popular system.

The reviews for it are great.  Almost too great.  Every review seemed to be so good that I started to question the authenticity of them.

First, take a look at these Google search results for learn and master guitar.

So why not believe them?

  1. The reviews seemed a little too close to the same.
  2. Every link title "is this a scam" lead to an "absolutely not" review.
  3. Why were there so many links with scam in the subject in the first place?
  4. Why were there so many paid advertisement links to reviews?
  5. (This one is the worst.)  The site always has a limited time offer sale of $100 off which is about to end.  Check back after the expiration date, and the 3 day clock resets.
  6. The award it won seems a little shady.

Everything started to feel like an infomercial or a get rich quick scheme.

So why believe them?

  1. Forums, forums, forums.  I really could not find any bad reviews.  The worst I found were comments that the system was good but don't expect a magic bullet, or good for beginners (me) but not intermediate players.
  2. Same results on Q & A sites.
  3. Same results on blogs.

Is it really possible that this company is trolling all these sites to put up fake positive reviews?

I know there are some guitar players that read GWB.  Anyone know more about this?  I plan on supplementing this with real lessons from Melodic Rhythms and The Principals of Correct Practice for Guitar.

Now let's see if I can find time to learn to play, launch juggle.com and start posting more again.  My track record of late on GWB has been abysmal.

posted @ Monday, July 28, 2008 11:51 PM | Feedback (3) |

Tuesday, May 20, 2008

Steve Ballmer Egged in Hungary (VIDEO)

He seems to take it better than Bill did the pie.

posted @ Tuesday, May 20, 2008 9:11 PM | Feedback (0) |

Tuesday, May 06, 2008

Heroes Happen Somewhere Else

Just got back from the Microsoft Heroes Happen Here event in St. Louis.  It was awful.  This is the first event from Microsoft I have walked out on.

The first track was titled Next Gen Web Apps and the presenter spent 15 minutes talking about CSS as if it was new and no one in the audience had ever seen it before.

Next he moved on to LINQ and then lost me as he typed out the samples.

Then we left.  Maybe it was going to get better, but I couldn't make it any longer.  It was definitely catered to the lowest common denominator and I think most of the people there just wanted to be anywhere but the office.  (and free software)

Oh, well.  Maybe I'm just having a bad day.  Back to the real fun - work.

Technorati Tags: ,

posted @ Tuesday, May 06, 2008 3:30 PM | Feedback (4) |

Wednesday, April 30, 2008

Justice?

I use to own a Creative Zen.  Looks like they got sued and I am entitled to a settlement.  But the lawyers are the only winners here.

  • The two people who filed the suit get $5,000 each.
  • Everyone else gets a discount on a new product made by the company that screwed them in the first place.
  • The lawyers get $900,000!!!!

I think the lawyers should get paid in coupons too.

In addition, if you submit a valid claim, you will receive either a 50% discount off the price of a new 1 GB MP3 player, or a discount certificate good for 20% off the price of any single item purchased at www.us.creative.com. To receive the discount player or discount certificate you must submit a claim form available at www.creativehddmp3settlement.com by August 7, 2008. You may submit a claim for each Creative HDD MP3 Player you purchased.

If the settlement is approved, plaintiffs’ counsel will apply for an award of attorneys’ fees and expenses not to exceed $900,000, plus incentive awards for the two representative plaintiffs in the amount of $5,000 each, to be paid separately from and in addition to the relief available to plaintiff class members.

posted @ Wednesday, April 30, 2008 7:47 PM | Feedback (2) |

When Are TV Episodes Posted To The Web???

I'm looking for a site, or software, that will tell me when a television episode has been posted to the web.

Much like the way Tivo records.  So if I want to watch episodes of Monk, the service should let me know that a new episode has been posted.

Anyone know of anything that provides this?  And I don't mean illegal bittorrent versions, I don't have a problem watching the web streaming version.

I might be able to do something myself with Yahoo! Pipes and maybe some screen scraping, but if it already exists that would be better.

Technorati Tags:

posted @ Wednesday, April 30, 2008 3:20 PM | Feedback (2) |

Tuesday, April 29, 2008

1,000th Post!!!!!

I can't believe I did it.  I am the first to reach the 1,000 post mark on GWB.  I know Chris and D'Arcy had the lead but I never gave up and I have finally reached the unthinkable goal.

I know what you are thinking.  The front page only shows that I have 741 posts.  But that number is incorrect.  You see that number does not include posts I made on my previous blog that I intended to port over, my posts about my weight loss that I never posted but obviously should have, and my draft posts which I never finished.

But what really pushed me over the top were the "super-posts" which can only be seen by special delegates of the blogging community.  They all now agree that I am a much better candidate to award the 1,000 post trophy based solely on the quality of my recent posts and the firm belief that only I can carry us through the next 4 years!

But don't worry Chris or D'Arcy, whoever crosses next, you are welcome to be my vice-poster.

posted @ Tuesday, April 29, 2008 12:26 AM | Feedback (0) |

Powered by: