This post is part of my series on development tools. There are way to many companies out there that do not offer their developers any tools what-so-ever and it is a real shame. If you’re a lone ranger then you need to get some cash and get these tools.
If you want to write high performance applications there are many things to consider and I’m not going to get into all the design aspects now. What I want to stress is that as human beings we just don’t have the capacity to predict everything our software is going to do when it runs. Using a profiler allows you to see exactly how your code is running and for web applications you can get a great idea where to optimize and also where to add caching.
Unfortunately there are no good free .NET code profilers out there but hey, very seldom is truely useful software just free :) The JetBrains and Red-Gate profilers are your best bet. I found the Ants profiler from Red-Gate to be the easiest to use and understand the output. Although JB’s profiler looks better, I went with more functional. The guys at RG are also easy to negotiate with so go bargin yourself a good price!
Here is the link for the Ants profiler, go give it a whirl. Screen shot below:

-c
I recently launched a new site off some old ideas I had. I decided that I didn’t have the time to engineer yet other typical site with logins, account management, features, features, features etc. I wanted to keep the barriers to usage extremely low – since my site was going to be radically different, why lets users leave because your site wasn’t fast enough. I guess this is more about a simple site rather than simple code – which is a whole other story!
This is a short study on what took to build Mafooku and what appears simple sometimes isn’t. Take a look at the site for reference: Mafooku – Top 10
I started off the usual way, lets get the basics done for any site. So here was the initial list of things I thought my site needed. I’ve broken each section down into the initial “bad” list and then the final “good” list.
- We’re posting products so we’re going to need an login to edit products.
- If you need a login you need registration.
- Now I needed password/account recovering pages.
- Product edit/save page.
Woah … look at that list. To post a single product the user must first register, remember yet “another” username and password, understand their account layout and finally try post a product. Many users would have given up already so I narrowed down the list to just
- Let the user post a product.
A single page, short sweet with limited fields and just one image. Everything you need to get a seller interested in your products. So that may have seemed easy enough but we have a problem now. How does a user edit or re-post a product or more importantly delete it if it isn’t relevant anymore?
You need some creative thinking for this. A user can remove their product because when it is posted they get an email with an encrypted link to disable the product. Since only they have that email it acts like an account. The same idea applies to editing or in my case – just re-posting with updated details.
So from my initial list, item 3 wasn’t ever needed. Item 4 was really just item 1 simplified for the user so no extra coding here. Item 2 again wasn’t needed. There are now no barriers to usage, the site will be faster and much easier to understand.
I applied the same to the actual product listings. Categories etc just get too big for users to really navigate and search, when done right, can help a lot – is it really simple? I decided for this site, no. If you can’t see what we have within 1 click (no typing!) then it isn’t simple enough. Hence the front page items and a list of the last 100 and nothing else.
The actually programming behind the scenes was a bit more complex with some advanced caching, plenty of security and encryption but still remained a small size code base because I never stuffed the site with un-needed features.
-c
Mostly a rant …. one of those days ;-)
So we all know that networking in Vista is screwed up and I am amazed that 1 year after release it still doesn’t work. What happens to me? well after about 8 hours of use most applications loose their internet connection (wireless and lan) – Most? you ask … yes – things like outlook still get/send mail, IE/FF stop working, chat stops etc. maybe office just “wishes” the data over the air 
So I need to reboot to get back my connection – great, here is the problem. After getting the “logging off” and then “shutting down” for an un-determined amount of time my machine just blue screens … awesome.
That means for one I can never “shutdown” as the blue screen causes a restart. Now lets compound this – if I resume from Sleep or Hibernate I get an ACS (acs.exe??) crash and guess what – no internet. So I need to do the above BSOD sequence – (left eye twitching).
This is Vista certified hardware from Lenovo – “certified” I guess means Vista will run … what it does while running isn’t “certified” but at least I know my drivers are pretty good.
So once or twice a day I must force a BSOD to keep surfing, I can’t resume,sleep,shutdown or restart with a BSOD so installing updates is fun.
Boot-> Trash Network-> Reboot-> BSOD-> Recover-> Shutdown-> BSOD-> Recover-> Work-> Trash Network-> Reboot-> BSOD and so on …. how much asprine can you take in a day? ;-)
This is something that really bugs me, it’s like the entire community has lost focus. It is great to have the source to software because you can fix issues before the vendor can and you can make products better but people/developers need to be paid for their time.
You can argue all you want that knowledge should be free and that’s fine but time is not free and it should be used wisely. I hear the same idiotic arguments for say an Outlook replacement, everyone goes on about finding an open source replacement … no – find a better product, it doesn’t have to be free.
Keep your code open and share with people but make a living doing it otherwise you’ll burn out like so many well known open source developers have. You think firefox is free? … think again.