New GMail Mobile Version

by Donn Felker 6. November 2008 02:52

For those of you who use GMail mobile (as I do) there is a new version out. Go to http://m.google.com/mail to get it.

New Features

I'm not looking at the exact features, but these are the ones I noticed right away.

Pros

  • Account Switching - This is huge. I have multiple Gmail Accounts. The two I use most are my personal one and the one for my newsgroups. Normally on the phone I'd check one, log out, then log into the other one and read. It was kind of a pain, but it worked. Now you can just add multiple accounts and switch between them with a few clicks. AWESOME. 
  • Offline reading. I can open my email that I opened yesterday without being connected via the phone (if I have no signal I can still read some email)
  • Better interface - The scrolling is smooth. The error handling is a 'bit' better and the loading of the app initially is still great.

 

Cons

  • On my Windows Mobile 6 Device (T-Mobile Shadow) the app is STILL in JAVA. Come on now Google. ... you gave me a Google Maps app that runs as a Windows Mobile App. However you give me Gmail (which is used 10 times as much) and its in JAVA? In order to get to this I have to go to Apps, To Java, Start Java, Then Start Gmail, Then log in. Google Maps? Click the icon and go.  Simple.
  • Error Handling Sucks. Above I said it was better, but still.. it sucks. On a scale of 1-10, last version it was a -2, right now its a 1. Examples: Sometimes I'll send an email and it will just crash the app. Click send == SUPER FAIL. If I click on a link in an email Windows Mobile will raise a warning informing you that it may cost money if you don't have an unlimited data plan (I have unlimited so it didnt matter) ... but... I decided I didnt want to load the link anyway so I clicked no and got a Java Exception that hung the app. I reloaded it again and tried the same exact operation, yup, same error. FAIL.
  • The Address book is COMPLETELY BROKEN on two letter keyboards (shown below). If I add a recipient via the address book and type 4 for "D or F" (which is what I would expect as this is how the keyboard is laid out) I get "G, H or I". What the hell?  Apparently the app is hard coded to treat all keyboards as if they were a normal phone. A normal phone's #4's letter combo is "GHI". So that's very frustrating. Its unusable.

tmobile_shadow_keyboard

Even though there are some very frustrating items with Gmail Mobile, its support for threaded conversations is the real reason I use it. If Microsoft every developed a Threaded conversation that mimicked Gmails, hmmm... I might have to kiss Gmail good bye.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Misc | Productivity

Loading PowerShell Profiles from Other Script Files

by Donn Felker 29. October 2008 09:47

PowerShell profiles are used for loading common scripts, add-in's, functions, etc into the PowerShell session at startup. There are four different locations where profiles are loaded from:

powershell

You can have four different profiles in Windows PowerShell. The profiles are listed in load order. The most specific profiles have precedence over less specific profiles where they apply.

    • %windir%\system32\WindowsPowerShell\v1.0\profile.ps1

      This profile applies to all users and all shells.

    • %windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1

      This profile applies to all users, but only to the Microsoft.PowerShell shell.

    • %UserProfile%\My Documents\WindowsPowerShell\profile.ps1

      This profile applies only to the current user, but affects all shells.

    The Problem

    This works out just fine if you want to write your own profile.ps1 file and load it from one of those areas. For example, you could perform a Set-Alias for MSBuild if you wanted to have "msbuild" run the msbuild file of your choice (2.0, 3.5, etc). But what happens when you want to load an external function that is located in another script?  For example, lets say I have a script called "Convert-Xml.ps1" on my disk - as shown below (script source):

    function Convert-WithXslt($originalXmlFilePath, $xslFilePath, $outputFilePath)
    {
       ## Simplistic error handling
       $xslFilePath = resolve-path $xslFilePath
       if( -not (test-path $xslFilePath) ) { throw "Can't find the XSL file" }
       $originalXmlFilePath = resolve-path $originalXmlFilePath
       if( -not (test-path $originalXmlFilePath) ) { throw "Can't find the XML file" }
       $outputFilePath = resolve-path $outputFilePath
       if( -not (test-path (split-path $originalXmlFilePath)) ) { throw "Can't find the output folder" }

       ## Get an XSL Transform object (try for the new .Net 3.5 version first)
       $EAP = $ErrorActionPreference
       $ErrorActionPreference = "SilentlyContinue"
       $script:xslt = new-object system.xml.xsl.xslcompiledtransfrm
       trap [System.Management.Automation.PSArgumentException]
       {  # no 3.5, use the slower 2.0 one
          $ErrorActionPreference = $EAP
          $script:xslt = new-object system.xml.xsl.xsltransform
       }
       $ErrorActionPreference = $EAP
       ## load xslt file
       $xslt.load( $xslFilePath )
       ## transform
       $xslt.Transform( $originalXmlFilePath, $outputFilePath )
    }

    The end result is that when I start PowerShell I want to load this function inside of my profile when PowerShell starts up. If that happened I would be able to start PowerShell and type Convert-WithXslt and get the function to work no problem. How do we load an external script into the current session via the profile.ps1 script? Hmm... not so simple at first.

     

    How To Load an External Script Into Your Profile 

    In your profile.ps1 file, you can script it like this (assuming that your profile.ps1 is in one of the locations above):

    # Loads the script into the profile.

    $fileContents = [string]::join([environment]::newline, (get-content -path C:\PowerShellScripts\Convert-Xml.ps1))
    invoke-expression $fileContents

    This will load the script (C:\PowerShellScripts\Convert-Xml.ps1) contents into your profile. Now the function Convert-WithXslt will be available from the shell.

     

    Script Explained

    1. (get-content -path C:\PowerShellScripts\Convert-Xml.ps1) - This opens the script, reads the contents and then returns the entire file. The ( ) are necessary because get-content returns an array of lines of text. ( ) force full evaluation  of the expression. Therefore the full array is returned. Each item in the array is a line of text.
    2. [string]::join([environment]::newline, (get-content -path C:\PowerShellScripts\Convert-Xml.ps1)) - In this script we take the array as shown above, and join it on the new line character. Therefore we have a full string of the file contents.
    3. $fileContents =  ... - Now we just set it to a local variable.
    4. invoke-expression $fileContents - This runs the Invoke-expression cmdlet. In a nutshell this command takes the value of whats in $fileContents and runs it in the local session. Therefore, if we have a function declaration inside of that variable, we can then invoke the shell to evaluate that function declaration which in turn will then add that function to the shell's session. Now your profile can execute whatever is in this script. Functions, aliases, etc.

     

    Taking it a Step Further

    What if you want to have a common set of scripts that everyone on your team should be using? You wont want to have those scattered over 25 PCs. What if you have to update one of them? You'll have to update 25 machines. No good.

    So here's a simple script that will go out to a network share, load all the files it finds in the share, and load them into the PowerShell session. Therefore we have now out-sourced our profile declaration to a centralized location. I'm sure there are 10 other ways to do this, but this is the way I stumbled upon it.

    I would put this file in the "%windir%\system32\WindowsPowerShell\v1.0\profile.ps1" location so that each person who logs onto the machine now has access to the profile.

    # Loads the profile for all users.
    $locationOfScriptsToLoad = "\\YourCorporateShare\PowerShell\"

    $files = (ls -path $locationOfScriptsToLoad -recurse | where { $_.attributes -ne "directory" })

    foreach($file in $files)

        # Load the contents of the file into the profile
        $fileContents = [string]::join([environment]::newline, (get-content -path $file.fullname))
        invoke-expression $fileContents
    }

    Basically, this script will go up to \\YourCorporateShare\PowerShell\  and find all files inside of it - excluding directories (as directories are objects in PowerShell too, I want to exclude them and this is done with the { $_.attributes -ne "directory }. Once we have the file we will loop through each file and load it into the current PowerShell session. This allows you to store all of your shared PowerShell profile needs in one location. As long as this profile.ps1 script is loaded, the person executing PowerShell will have access to all the profile info.

    I hope this helps anyone who is using PowerShell and wants shared profiles.

     

    Downloads

    profile.ps1

    Be the first to rate this post

    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    PowerShell | Productivity

    GMail Tip - Finding Un-Read Email

    by Donn Felker 17. October 2008 02:11

    Sometimes some of my blog comments get sent to spam and I don't see them until two weeks later when I normally do a check up on my spam folder. I'll then move those back to the inbox. Unfortunately at that point all of the mail is mixed throughout pages and pages and pages of gmail and its a pain to get to the "unread" mail.

    You can access "unread" mail a couple ways.

     

    • From the inbox, go to the Search Options, then click on "Search" drop down and select "unread" (screen shot below)

    image

    You will now see all of your unread email.

     

    Or ... now this one is my favorite because its quick.

     

    • From the inbox type the following into your search box (without the quotes): "label:unread"
    • Click search
    • You'll see all of your unread email (screen shot below)

    label:unread is a hidden label that applies to your "unread" email.

    image

     

    Nothing huge, but it saves a few clicks. Clicks == time!

    Currently rated 4.0 by 1 people

    • Currently 4/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    Productivity

    Why Windows Task Manager Sucks

    by Donn Felker 17. September 2008 03:12

    It never fails... I'll boot up, start a program, walk away, log back into my PC and all of a sudden the disk light on my laptop or desktop is lit up like a Christmas tree for the next 10 minutes. The computer is rendered useless until its done "working". I can't do anything at this point but wait. A WASTE OF MY FLIPPING TIME.

    The Problem With Task Manager

    The problem is: I can't do anything while the disk is tripping on a couple of tabs of electric ecstasy ... opening task manager shows me... WELL... nothing. Task Manager says not a single process is utilizing CPU, and not a single process is over utilizing memory. Then I look at Disk I/O (which is presented in Read/Write/Other fashion) and It provides no valuable information at quick glance.

    565234 Reads

    88723412 Writes

    WTF!?!

    What I Want

    When I look at task manager I want to see what tasks are my computer doing and what affects do each of these issues present. Right now I can only determine if something is a memory hog, or a CPU hog. I may see that SVCHOST.exe is running at 79% CPU utilization, but what the hell is running under the svchost context?!?!! Since svchost is a general host process name for services that from DLL's, I can't determine WHO is causing my pain.

    So please tell me... Mr. Task Manager. WHO THE @#%! is spinning my disk. THAT IS WHAT I WANT TO KNOW.

    You would think that after hmm.... 13 or so years of Windows OS's, Microsoft would have implemented this functionality. Its fairly rudimentary and actually VERY helpful in troubleshooting.

     

    What I Did About  It

    Fortunately this exact problem is something that other companies have recognized and have since developed an application I use regularly. Since I recently set up my PC I forgot to load this tool and I decided to write about it.

    <Disclaimer>No, I'm not getting paid to write this about this product.</Disclaimer>

    When I want to see what is going on in my PC I use Anvir's Task Manager Free Portable App (download link on the bottom). I bring it with me on my portable drive and flash sticks. Being a consultant who works on many machines, servers, or VPC's its nice to see what's going on.

    Anvir has many features, but the one feature that I use it for the most is the "Disk Load". It shows exactly what is utilizing your disk and at what rate. You can sort on this column, therefore when your disk is playing Twinkle Twinkle Little Staryou can see what is causing it.

    Here's a screen shot of what I'm talking about: (Click for larger)

    image

    I can now look at what is causing my disk to spin (as long as I can get AnVir open)! Anvir also allows me to see the processes under the svchost as well as look at startup items, processes, services, etc. It has a much more interactive and feature rich set of tools that you can use to help diagnose your troubles.

    I've written about portable apps before - and I'll say it again - the nice part about this being a portable application is that I can use it on anyone's machine without having to install a thing. That's a thing of beauty. I can log into my mothers machine via SharedView and utilize it on her machine to see what her issues may be. Or even have her run it and tell me what she sees. Instead of seeing "svchost" I can now navigate to the service that svchost is working with. FINALLY.

    I realize this may not be the BEST tool for this type of use, and if you have one that you feel is better, please leave a comment.

    Be the first to rate this post

    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    Misc | Productivity | Tools

    GMail = Dog Slow

    by Donn Felker 13. June 2008 10:00

    I've been using GMail since it first came out. I remember getting it and having TWO invites to send to friends. This is back when Gmail invites were going for $100.00 a pop.

    Through the years its been a great service and I've love every single second of it. Its truly the best at keeping track of conversations, and this works wonders for insanely active groups like ALT.NET.

    Over the last couple of months its seemed that Gmail has gotten progressively slower and slower. Through using Fiddler I was able to determine that larger chunks of JavaScript was coming down the wire. The amount of AJAX and DHTML going on behind the scenes brings Gmail to a crawl.

    How to overcome it?

    On the top right hand side of your page, click "Older Version".

    image

    This will load the UI without all the bells and whistles and its about 5 times as fast in regards to response times.

    Unfortunately there is not an option in the preferences to make this stick. As soon as I log in, I immediately click "Older Version". Alternatively you can also switch to "Standard HTML View" at the bottom. But with this, you don't get any smooth AJAX. Its regular HTML page post backs.

    Be the first to rate this post

    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    Misc | Productivity

    PhotoShop Express vs. Paint.NET

    by Donn Felker 31. March 2008 07:58

    Almost daily, I use some sort of digital editing program. Over the years my top 5 tools for digital editing have been Paint.NET and Photoshop. I use both programs daily for editing screen shots, creating educational material/training manuals, and blog posts. I love Paint.NET simply for the fact that its VERY quick to load and performs easy tasks quite quickly. On my machine Paint.NET is up and running in under 5 seconds. Paint.NET helped get the easy tasks done, but when I wanted to perform true graphics manipulation and do some hardcore stuff, I'd fire up Photoshop. The one thing that always crossed my mind was why Adobe did not offer a "Photoshop Lite" type of program. Paint.NET has always been my "Photoshop Lite" since it was released. But, I still wondered why Adobe was missing out on this market.

    Well, the other day Adobe released Photoshop Express. With my previous pondering finally answered, I HAD TO check out this product from Adobe. Could this be the "Photoshop Lite" I was hoping for?

    My First False Assumption

    My first initial impression upon reading the product SKU name "Photoshop Express" was that it was going to be a slimmed down version of Photoshop similar to Paint.NET that was installable. Having worked with Visual Studio for a very long time, I've become adjusted to recommending the "Express" SKU's to developers interested in .NET development. I'd recommend the Visual Studio Express SKU because it allowed them to get the feel for a good IDE (slimmed down on features of course) but they still got to use a lot of built in functionality, and it was FREE. That was the nice thing (note: if you're a student you can utilize the Dreamspark campaign to get a free version of Visual Studio Pro, and other products).

    Was this the slimmed down version? No... not at all. Not only was this version not slimmed down, it wasn't even installable - its a pure browser based solution. I was thinking that maybe it was a "Click Once" app, nope. Not even close. This is purely a browser based solution. Ok, that's not too bad, then I started to use it...

    My Second False Assumption

    I believe a company of Adobe's caliber would be able to create a compelling graphics app that would be very responsive and effective - regardless of the platform (install or web). Anyone who has worked with any graphics program knows that they are memory hogs. Literally, they eat memory for breakfast, brunch, lunch and dinner (and some snacks between). They need to utilize a vast memory base to keep the program responsive - I like to say - if its a' swappin' it's a' doggin'. I had assumed that this program would be snappy like its big brother Photoshop. Nope. Not at all.

    Since Photoshop Express is a web based hosted solution the images have to be uploaded to the server. The problem lies in the last four words of that sentence. Uploaded to the server. I don't know about you, but there is nothing snappy about loading up a 2MB file to a web site. Applying the filters are rudimentary, adjusting contrast, color balance and other tasks leave your image looking like you took a trip back to hippyville with too many pink elephants.

    Conclusion

    I had assumed I might be able to replace Paint.NET with Photoshop Express upon its initial release. Unfortunately Photoshop Express is insanely slow and the graphic manipulation tools that I need to accomplish my tasks are not what I need them to be. The lack of options are kind of a bummer and the responsiveness of the app is less than lackluster. But I'll say this... its a good attempt. Maybe version 2.x will be better.

    How could Adobe get me to use the app? They could make it a Click-Once app. Make it a local installation. Follow the Visual Studio Express SKU model. Look at Paint.NET, It's worked great for them, why wouldn't it work for Adobe? I know they have a ginormous Apple following so they'd have to use a installation procedure that would work with MAC's as well as Windows. Possibly supporting two different models of the software is just too much for them at this point to foot the bill for a Free product and support. But, if they did go down the route of an installable Express type of app, I'd be all over it.

    For the meantime I'll be sticking with Paint.NET. It's installable. Its a subset of Photoshop Features, and the real key is... ITS FAST. Any tool that I use MUST BE FAST. If its not, its gone.

     

    Click thumbs for larger image

    Screenshot of Paint.NET Screenshot of Photoshop Express
    image image

    Be the first to rate this post

    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    Design | Productivity

    I Can't Read Your Screen, Mr. Presenter

    by Donn Felker 30. March 2008 18:18

    We've all been there, at the code camp/user group meeting/conference/etc where we CANNOT read the screen. Even though your code is projected onto a gigantic screen I cannot see you 10pt Courier Font, Mr Presenter, from 50 feet away in the back row. The audience faces contort and become scrunched up to the point of looking like the human version of a pug.

    This is one of my biggest pet peeves during a presentation - the presenter may know the content like no other, but they don't have the skills to present their content properly. What's even more amazing is that that 9/10 presenters (in my personal experience) do not attempt to adjust the font on their screen to increase content readability. Aren't you trying to teach me something Mr. Presenter? I can't learn what I can't read. :\ As said before by many others, if you, as the presenter say "You know, you probably can't see this..." - you're right, and you're wasting my time. You've got a gazillion pixels on the screen, make them work for you. :P

    What if the presenter bumps up the font to 18pt? That's all well and fine, and I can see the content, but I still have NO IDEA what the heck that 8pt menu font says, nor what menu you clicked on to get to that magical wizard that writes N-Layer architecture systems with a click of a button (sorry, got side tracked).

    Gimme Da' Big Font's and ZoomIt Buddy!

    Here's what I do when I'm giving a presentation...

    1. Use ZoomIt. I'm utterly baffled by how many presenters do not know about this tool. It's been around for quite awhile too! This tool allows you to zoom into a certain part of your screen with variable magnification. Once zoomed in, you can draw on your screen with multiple colors, write text on the screen and even change the color. You can also draw shapes as well (ellipse, rect, straight line). To view the options, double click the image ZoomIt  icon (shown here to the left).
      • How does it work? Simple, fire up the app. It will run in the background. When you hit the CTRL + 1 key combo, the screen is now magnified. Use your mouse to browse the the area where you want to display additional info.
      • I've created a simple screen cast, which is below. Click to watch. (there is no sound in this, it's just here to demonstrate what can be done).
      • ZoomItDemoThumbnail
    2. Create an Account that has Big Fonts. I prefer to set up an additional account on my machine that has all of my tools set up. I mean, everything has big fonts. From the command line to Visual Studio, to Notepad++. These are nice, big ol' fatty fonts. Trust me, its not pretty to look at, but for presentations it does well. You can adjust the font size of your machine by setting the font size in the control panel as seen below:
      • Note: This will REQUIRE a restart.
      • image
      • image
      • image

     

     

    Next time you're presenting, don't forget the reason you're there - to present FOR AN AUDIENCE. Be kind to their eyes! Let them see what you're doing. Trust me, you'll get higher scores on your review sheets.

    Be the first to rate this post

    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    Misc | Productivity

    Implicitly Typed Locals - R# V4

    by Donn Felker 28. March 2008 06:28

    Recently Ilya Ryzhenkov posted a thread on the ReSharper blog. The article was about how R# 4.0 gives you a suggestion to use implicitly typed locals.

    I've been running R# 4.0 nightly builds for a few weeks now and I've noticed these little buggers popping up all over the place.

    Here's what it looks like:

    image

     

    Usually, I nearly agree with most of everything the R# team posts and even though sometimes I may disagree with something, I'll find the edge case where it does apply, so we're at a 99% agreement rate with them! Hell, you can't lie about it, R# seriously improves your productivity and it only keeps getting better.

    Unfortunately, this is the one time I'm going to fully disagree with this post and actually the suggestion in R# - which is why I have disabled it. You can disable it  by going to the R# options:

    image 

     

    Why I Disagree

    The post stated that "It induces better naming for local variables". I don't know about that. I can still call an apple an orange and call a orange a banana I want. Nothing forces me to do anything. The only thing I know at that point is that it's still an anonymous type. A name is that, just a name. Nothing forces developer x to write a good variable name. I still see Junior developers using wrong variable names. The only thing that's going to help here is a good code review process.

    The post then goes into to say that it "It induces a better API". Again, I don't agree. How can this induce a better API? I feel that letting the compiler choose which types it is returning has its validity in certain cases, but not inside of your entire system. It brings back the horror days of VB's "Variant" (and yes, I'm aware that var is not Variant and I know the differences - but have you seen an old system where EVERYTHING was a variant? Oh my jeebus, save me now). Just because I'm letting the compiler do the work doesn't mean that I should have "good variable names" to help me distinguish what I'm working with.

    This the one that sent me over the top... "It removes code noise". *insert sound of game show buzzer* Yeah... um... I'd have to say that's complete non-sense (in my opinion). Over use of the var keyword is going to add code noise and is definitely a smell to me. If I open up a class and see everything as "var" type, I'm going to cringe. The readability of this code has diminished to a point where its now costing me more money to maintain and read the code than it is if I were to use a strongly typed variables when I could. Even the MSDN states:

    Overuse of var can make source code less readable for others. It is recommended to use var only when it is necessary, that is, when the variable will be used to store an anonymous type or a collection of anonymous types. [Source]

    The last one is almost not worth putting into the post... "it doesn't require a using directive". Wait a minute... I bought ReSharper so I could be more productive... hitting ALT + ENTER to add the directive isn't a bad thing. Who cares if another directive is up there, that's what its used for, to tell the compiler what blocks of code look into during compilation.

    Conclusion

    This is not a bash on the ReSharper guys, not at all, but an explanation of why I disagree completely with this post. Heck, I agree with most everything on that blog (most of the time) and I'll never speak up about it. I'm a huge ReSharper fan and I will continue to use it and proclaim its greatness, but while reading this post I noticed a smell immediately. While using var has its uses, I think it can be abused.

    The saying goes... "When all you have is a hammer, everything looks like a nail."  Lets not use var as our hammer. Its a special tool for special cases. We don't use ice axes for steak knives do we (even though that would be very manly and barbaric - and hell, kind of fun), so we shouldn't use var for unintended uses.

    Be the first to rate this post

    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    .NET | Productivity

    Usability - Don't Make Me Think/Remember...

    by Donn Felker 14. January 2008 02:58

    When we were first introduced to the computer it was to help us solve problems not create them. Your mother bought a computer so she could get things done quicker. She bought it because it had all these cool features that could "Remember things for you". We build software to help solve problems, to remove some of the more mundane things in life to make life simpler. Computers are supposed to make things easier, they are not supposed to take my time to answer stupid questions.

    Each day goes by that I still find major issues with User Interface development of major web sites. There is SO MUCH information available for free on the Internet that major companies still make no attempt to help the user.

    What am I complaining about?

    When I visit a web site I want it to do things for me. Provide a service. The following sites provide services, but all fail miserably in regards to basic usability and irritating steps of action.

     


    FAILING

    www.ups.com, www.dhl.com, www.fedex.com, www.honeywell.com - All of these sites suffer from the same problem. They make me think. Why in the hell cant you figure out what country I'm in? There are ways to do this all over the net. Yet these companies cannot figure it out? I mean, come on... companies like Honeywell who have TONS of engineers on staff cannot figure this simple crap out?

    My Beef: Don't ask me where I'm from, when you already know. That's like asking me my name when I'm wearing a name tag.

     

    www.myuhc.com (doctor locator) - This thing... oh man, it makes me want to scream. The problem is ... if you log into your account, you can "locate a doctor", yet when you get prompted to enter search criteria you get asked what your plan is. HMO, PPO, PPO PLUS, BLAH BLAH BLAH, like 15 choices. They all look the same to me. That means I have to pull out my wallet each time, find my card, search the small print just so I can answer this question. BUT WAIT.... I LOGGED IN, DID'NT I??!?! That means, the web site should already know what plan I'm part of.

    My Beef: Don't ask me what my plan is if you already know. Again, its like asking me my name when I'm wearing a name tag.

     


    SUCCEDING

    Outlook Web Mail, Gmail - These apps have it down. When I type in an email address and send an email to a contact, these applications save it for next time. The next time I attempt to send an email and start typing a few letters the app helps me find the person I'm looking for. Either by first name, last name or email address.

     

    Google.com/Live.com/ask.com - All of these provide great suggestion techniques (such as explained below). Google does really well in this area. Tim Ferriss said that while in Germany (or somewhere Europe) he typed Google.com and got Google.de (Germany's Google). At the top of the site it had a small icon that said something to the nature of "Looking for the US Site? Click here." So it helped the 95% case of actual German users, but maybe the other 5% actually wanted the US Google (note: the %'s are just made up, but you get what I'm saying).

     

    Pandora - The music discovery channel. If you like "Wu Tang Clan" and you would like to find artists that are similar to them Pandoras Music Genome Project will help. It helps by finding music similar to your tastes through over 400 attributes. But the real nice thing about the interface is how easy to use it is. If I typed in "Wyclef Jon" the system will return a question to the user "Did you mean 'Wyclef Jean'". Well of course I did, but maybe my friend always said "Wyclef Jon" so I thought it was "Jon". But hey, the user interface helped me find what I wanted to find. It didn't make me think. If helped me find what I wanted to find through assisting me with my spelling.

     


    TIPS TO IMPROVE YOUR SITES USABILITY

    - Don't make the user re-enter information you already have. (name, address, etc, - basic info)

    - Use the Auto-Complete type of control as much as possible. - This helps users when typing in free text. If you're asking them to type in an address into a geographical website, try to assist them with possible solutions. Not everyone can spell Minneapolis correctly the first time. :)

    - If you are an international site, FIGURE OUT WHAT COUNTRY THE USER IS FROM and give them that country.

    - Catch all the errors. I MEAN ALL OF THEM. I should never see a MySQL Error, a YSOD or anything like that. Give me something telling me that something went wrong and I should check back later.

     

    In the end, its all about user experience. Make it easy.

     

    The only problem is ... is very hard to make something simple. :)

    Be the first to rate this post

    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    Misc | Productivity

    Weird Error after VS2005 Crash &amp; The K.I.S.S. Principle

    by Donn Felker 30. November 2007 15:52

    Argh! Nearly an hour wasted,

    I was building a source tree today for a new TFS installation and in the middle of my workday VS2005 decided to puke on the screen. It straight up died, froze, hung, whatever you want to call it, it was gone and it wasn't coming back. I was forced to kill the process after taking a 10 minute break and seeing it still hung.

    Prior to the crash, the solution built fine. The solution had 32 projects in it and everything was running smoothly. After the crash I restarted VS2005 and then re-built the solution. VS2005 BARFs on a file.

    The error I get is something like this:

    "metadata file could not be opened (... file path ..) -- file is corrupt"

     

    Huh? So I try moving references, adding them, deleting them, changing namespaces, changing dll names, everything.

    I then try to open up the DLL in Reflector and I get the gem:

    "File is not a portable executable. DOS header does not contain 'MZ' signature"

     

    What? This solution just build 5 minutes ago, I didn't change anything except a crash.

    Well, apparently when the crash happened, that particular project GOT HOSED, BAD. Who knows how, who knows why, but it did. I took a back up copy, replaced it on top of that project and rebuilt the solution and like magic it starts working again.

    So, if this happens to you, just drop the project get another copy, then re-add it and hopefully it works. I hate giving these types of answers, but unless I go digging into the root cause of the crash (would could take forever in a project like VS2005) I wont know what exactly caused it. CRAPPY MAN, CRAPPY.

    Moral of the story: This takes it back to the "K.I.S.S." principle. I spent nearly an hour trying to fix this problem by tracking it down and moving things around, troubleshooting, etc. I should have just tried the "replace" first and I would have saved an hour.

    So, Next time...

    Keep it simple, stupid.

    Be the first to rate this post

    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    .NET | Productivity

    Powered by BlogEngine.NET 1.4.5.0
    Theme by Mads Kristensen

    About the author

    Donn Felker

    Senior Consultant
    MCTS
    ScrumMaster
    Agile Practitioner

    About Me | Books I Recommend

    Gotta Pay The Bills


    Tag cloud

      Popular Posts

      RecentComments

      Comment RSS

      Calendar

      <<  December 2008  >>
      MoTuWeThFrSaSu
      24252627282930
      1234567
      891011121314
      15161718192021
      22232425262728
      2930311234

      View posts in large calendar