Archive for May, 2009

Windows 7 UI Enhancements for Power Users

While there are benefits to being a highly technical “power user”, it can also come as a drawback in certain situations.  No, I’m not talking about being the de facto “Tech Support Provider” for friends and family…  It seems that many O/S’s are designed for the “lowest common denominator” user, and we techies are left with having to install hacks, reconfigure default settings, and to search for third-party utilities that fill in the gaps.  Products such as Mac OS X (with it’s one default mouse button and many missing keyboard conveniences) might work well for basic tasks, it leaves a lot to be desired.  I was disappointed that Windows Vista’s “new” desktop didn’t provide much in the way of productivity-enhancing features. 

Well, Windows 7 is about to hit the stage, and it looks like a winner from a usability standpoint.  A simple web search will return dozens of articles that look at many of the UI changes and improvements and blogs like Engineering Windows 7 go into some of the decision decisions in significant depth.  Rather than repeat the content of those articles, I’ll briefly highlight the features I’ve enjoyed most during my past few months with Windows 7:

  • The new taskbar: There are also some features that might not be readily evident.  For example:
    • You can see icons for all of your most-used programs, whether they’re running or not.  They’re always right where you expect them, which really saves time when you have a bunch of different programs open at the same time.
    • Applications can support jump lists, recent documents, and other special features that are available by hovering over an application icon or right-clicking on it.  Apps such as IE already support this quite well.
    • You can easily dock the Taskbar to the left, right, top, or bottom of the window.  In fact, this even works properly with multiple monitors.  So far, I have stuck with the standard bottom-of-screen layout, but I have tried docking it to the left, and it works well.
    • Windows7Taskbar

  • Improved multi-monitor support:  Windows 7 makes it much easier to work with multiple monitors but allowing you to quickly drag windows (even when they’re maximized) to other monitors.  In fact, my eVGA USB-to-DVI adapter is working great on Windows 7 (though I did need to download and and install the beta drivers manually).
  • Keyboard Shortcuts for Window Management: Using intuitive keyboard shortcuts is far more effective and efficient than using the mouse to arrange windows.  For example, think of all the work it typically takes to view two windows side-by-side (I never bothered to try it manually and relied on third-party utilities like DisplayFusion to help).  Using the Windows Key in conjunction with the arrow keys allow you to maximize, minimize, and move windows to any part of any monitor.  This alone saves a lot of time and really takes advantage of my three-monitor setup.  Finally, you can use Windows Key – # to open the appropriate program or folder on your computer based on its located on the taskbar. 
  • Overall Stability:  As I’ve mentioned in previous posts, I had been quite disappointed with Windows Vista’s performance and reliability (even after applying both service packs).  On the whole, Windows 7 responds much more quickly and the desktop, UI, and applications are completely reliable.  In fact, I typically reboot my computer (which runs a ton of development stuff) once a week or so.
  • New wallpapers and desktop themes: Sometimes, it’s the little(r) things that count the most.  Windows 7 ships with a great collection of default themes and backgrounds.  And, you can also download many more from the Windows 7 Personalize Your PC site.  The download process is seamless and I hope Microsoft will continue to add content frequently (as opposed to the rather missed opportunity with Windows Vista Ultimate Extras).  Furthermore, the UI improvements for switching between desktop settings has been streamlined, making it simple to make changes without third-party utilities.
  • Sidebar Gadgets: They can now be placed anywhere on the desktop and seem to use fewer system resources (just a subjective observation – I haven’t done any testing).  Unfortunately, there’s still a relative dearth of useful gadgets, but hopefully that will finally change.
  • Expanded right-click menu:  Hold SHIFT and right-click on a file or folder to see some useful new options, such as “Open Command Window Here”.  You could enable this feature in XP/Vista, but it required a Registry change and would always appear in an already long list of options.
  • ClearType and Color Tuner: Matching colors on multiple monitors has always been a pain.  While drivers from Nvidia and ATI allow you to change RGB values, these settings never seemed to “stick” for me.  Windows 7 includes built-in functionality for handling this, and it seems to work.  Better yet, it efficiently supports a multi-monitor setup.

ColorTuner

Overall, I think Microsoft has done a great  job of balancing usability for less-technical users with the features that those of the geekier persuasions can appreciate.  I have (against some practical warnings and advice) switched to using the Windows 7 Release Candidate as my primary O/S.  I’ve run into very few problems so far.  So… which useful features have I missed?

Austin Code Camp 2009 Presentations

Code Camps are free events that are held by and for developers.  They focus on real, practical technical information that is presented through demonstrations.  Many user groups hold these sessions on weekends to help support the best attendance and availability.  The topics focus on a wide variety of subjects that are of interest to developers.  Examples include development methodologies, specific technical features, and development techniques.  You can find more information in the Code Camp Manifesto.

Austin Code Camp 2009 is scheduled for Saturday, May 30, 2009 and will be held at the St. Edwards Professional Education Center.  Past events have had hundreds of attendees with dozens of sessions.  If you’re in the area, I highly recommend attending at least part of the event.  Oh, and did I mention that it’s free? :) 

This year, I’ll be presenting on three topics (listed below, with abstracts).  Each session is scheduled to last two hours and will focus on practical demonstrations.  Specific presentation times have not yet been posted, but keep checking the web site for more details.  In the meantime, be sure to register to attend and vote on proposed topics.  If you can’t make it, I plan to post the presentation slides and sample code on my web site just prior to the event.

Presentation Topics & Abstracts

SQL Server Reporting Services: Report Creation and Deployment:

Using SQL Server Reporting Services, developers can author and distribute complex reports that come from a variety of data sources. The session will begin with an architectural overview of Reporting Services and how developers can install and configure the required services. Then, we will walk through the process of creating new reports by building connections and data sets using Report Builder 2.0 and Visual Studio 2008. Reporting design features including dynamic drill-downs, matrix reports, charts, and sorting will be provided. Also included will be methods by which multiple levels of report parameters can be used to filter data and increase performance. Next, we’ll look at deployment details, including scheduling reports, configuring caching, creating snapshots, and managing security. Time permitting, the presentation will include a demonstration of using Report Viewer controls within ASP.NET and Windows Forms applications.

SQL Server Basics for Non-DBAs

Although relational databases are a critical component of most applications, many developers often have only a basic understanding of how they work. This session will describe the architecture of Microsoft SQL Server 2008 and its many features can be used to improve the end-user experience. The presentation will begin with an overview of the SQL Server platform, including installation and configuration of the server. Then, we’ll look at ways in which you can manage logical databases and their constituent files. Recommendations for regular database maintenance and data protection will be covered next. Other important tasks include managing security, including techniques such as role-based security, permissions hierarchies, and data- and object-level encryption. Finally, we’ll conclude with some best practices for managing database schemas and objects. Attendees are encouraged to bring their server and database management questions.

SQL Server Performance Monitoring & Optimization

Developers can dramatically improve performance by understanding how their queries are executing in the "real world". This session will cover ways in which attendees can monitor performance at various levels, and how they can use this information to optimize queries and improve overall application performance. We’ll start with a discussion of developing a performance optimization strategy and how various tools can help. Then, we’ll walk through the process of using SQL Profiler to collect data in a real-world case: Generating a "hit list" of worst-performing queries based on execution times and frequency. Next we’ll look at using the Database Engine Tuning Advisor to make suggestions related to physical database structures such as indexes and partitions. Also included will be ways in which built-in reports and dynamic management views can be used to monitor performance of production systems. Time permitting, the presentation will include methods for reducing deadlocks and managing long-running transactions. Finally, the presentation will include an overview of analyzing query plans. The overall emphasis will be on solving practical, real-world database performance problems.

The [Solid] State of Hard Disks

A Brief History of [Wasted] Time

Over the last couple of decades, practical PC bottlenecks have moved.  I remember a time when upgrading CPUs could provide a near-linear speed increase with respect to clock speed (does anyone remember the thrill of going from a 33MHz 486 processor to a a 486/66?).  Later, keeping the processor fed became more important.  Improved memory bus speeds, lower cache latency, larger cache sizes, and more RAM often provided the best performance increase.  And of course, we had network issues – starting with dial-up performance.  Thankfully, most of those resources are no longer the slowest components in modern PCs.  In fact, CPUs have increased in performance to the point that clock speed increases give little practical benefits for most users (on the client side, at least).

Wringing some[Bottle]necks…

Over the last several years, the primary bottleneck on most of my machines (notebooks, development desktops, and music production machines) has been hard disk performance.  If I was waiting for something, it was more than likely that hard drive.  The high number and frequency of random I/Os often resulted in significant delays.  Even with large amounts of RAM, launching programs, loading web pages, and performing builds in Visual Studio could take a lot of time.  High-speed, low-latency hard disks helped a little.  And, if you can stomach the risk of data loss, RAID-0 configurations could alleviate some of the pain.  But, disk access remained the slow step in many processes.

One of my clients, Arrow Value Recovery (formerly,  TechTurn, Inc.), was kind enough to lend me a Samsung 128GB Solid State Disk (SSD) to test.  At first, I imaged my notebook Windows 7 Release Candidate installation and placed it on the SSD.  I was expecting an incremental increase in performance (at least for random, small reads).  The overall results, however, were amazing!  Applications launched in a just a few seconds, and some basic benchmarks provided all the evidence I needed to place the new disk in my primary development machine (a Dell Dimension XPS 420 with two 500GB, 7200RPM drives).  Now, after just a couple of weeks, I can’t imagine going back to “old school” physical drives.

SSD’s are new to the marketplace and they’re not without significant potential drawbacks.  In the coming weeks, I’ll provide some more details on the experience.  For now, here are a couple of basic benchmarks created using HDTune.  The basic comparison is between a Samsung 500GB, 7200 RPM hard disk (16MB cache) and the 128GB Samsung SSD.  I did absolutely nothing to optimize the performance of the SSD, so consider this just a baseline.

Benchmarks

HDTune – Disk Benchmarks

image

Figure 1a: HDD Performance (Dell XPS 420)

image

Figure 1b:  SSD Performance (Dell XPS 420)

HDTune – Random Access Performance

image

Figure 2a: HDD Performance (Dell XPS 420)

image

Figure 2b: SSD Performance (Dell XPS 420)

I realize that this data is completely anecdotal and unscientific, but it’s a promising start.  So far, the general performance improvement from using an SSD has been the single most noticeable upgrade in several years.

More to come…

Again, I hope to post some more detailed data (with a focus on benefits for development workstations) in the coming weeks.  Now if only my own sequential writing speed could match that of the SSD drive… 🙂

Update: The Engineering Windows 7 blog has a post that covers Support and Q & A for Solid-State Drives.  It helps provide some technical background related to the different between random vs. sequential I/O’s and issues related to random writing.

Network Design in an Uncertain Economy

It’s no secret that IT budgets worldwide have been slashed and that spending on new projects has been drastically reduced for most companies.  However, contrary to popular opinion, there’s a lot of opportunity to make cost-saving investments now.  On that topic, I will be presenting some best practices in a webcast titled Building a Recession-Proof Network (sponsored by Nortel).  From the webcast web site:

In today’s economy, ensuring you have a network that is reliable and secure 24×7 can help you to recession-proof your business even with a limited IT budget. Learn step-by-step about how your company can build a cost-effective, energy-efficient and secure network in ’09!

Join us now and learn:

  • Easy steps to build a cost-effective, energy-efficient and secure network in ‘09
  • Best practices to recession-proof your network on a limited IT budget
  • How to reduce your TCO while increasing ROI across your company
  • Low-cost ways to maximize and extend your network capabilities

The free webcast is scheduled for 10:00am Pacific Time on Thursday May 7, 2009.  My portion will focus on suggestions for justifying network improvements such as investing in Unified Communications (UC) and ways to sell that idea to the rest of the organization. 

My Favorite Mozilla Firefox Add-Ons

Note: The post below was written several years ago, and links might be out-of-date.  Additionally, as of Firefox 57, the browser platform is using the new Web Extensions format, and older add-ons are no longer compatible (here’s a blog post from Digital.com that provides some more information).

The good news is that there are updated versions of many of these add-ons here’s one list of potential Firefox Replacements), and there are many new ones that are worth trying.  I hope to write a new, updated post sometime in the future.

Several months ago, I took the plunge and switched from my primary browser (Avant Browser – which basically automates IE with a bunch of new features) to Firefox.  I was on the fence for a while.  I generally liked Firefox’s user interface and performance, but missed some of the navigation features that were available in IE.  What finally pushed me to switch to Firefox were some really useful (but not always well-known) add-ons.  I now find them to be almost indispensible to my web browsing habits.  So, without further delay, here’s a list of my favorites (with minimal comments as the Firefox Add-Ons site provides the best explanations with screenshots):

  • AutoPager: The page-based nature of the Web can make it really difficult to navigate through large documents.  Often, you’ll have to click through pages one-by-one.  What if the Google Search result you want didn’t make the first page?  You generally would have to manually navigate to the next page of results (or change the default view to include more results).  And don’t get me started on sites that force you to click through a dozen pages to read an entire article.  AutoPager can automatically load content from additional pages without losing context.  It supports hundreds of sites out of the box and provides an easy way to add support for new sites.  I highly recommend it, at least until the Web (and advertising) start supporting better ways to view large amounts of information.
  • FoxTab: A great multi-tab browser that allows you to choose from a wide FoxTabvariety of different “gallery” views that show thumbnails of open tabs.  It seems to scale and perform well, even with dozens of open tabs.

 

  • SpeedDial:  Most of us frequent the same sites many times per day.  The default user behavior – typing URLs or choosing them from the Bookmarks list – can be quite cumbersome.  As its name suggests, SpeedDial provides users with thumbnails of their most common web sites whenever they open a new tab.  ~80% of the time, I use the keyboard shortcuts (Alt-# or CTRL-#) to open the sites I use the most.
  • Read It Later:  It might seem a little strange, but I’ve all but abandoned the use of bookmarks in my browsers.  I am usually very organized, but I found that it takes too much effort to store and organize separate links (many of which tend to quickly become outdated).  Read It Later provides a great way to keep track of specific articles and content that you plan to read later without requiring you to create bookmarks.  When you’re bored, you can just click on its icon, and you’ll be presented with on of the pages from its list.  You can easily mark something as “read” without having to deal with deleting bookmarks.
  • IE Tab: Despite a strong push to work on standards-based sites and browsers, the need to launch IE is sometimes inevitable.  An example that comes to mind is the SQL Server Reporting Services web site which doesn’t seem to render properly in Firefox.  IE Tab allows you to simply click an icon on the status bar to switch to using the IE rendering engine for that tab.  You get to stay in the comfort of Firefox while using IE behind the scenes.

Those are the highlights of my favorite extensions.   You can easily download and install all of these extensions using the Firefox Add-Ons page.  Installation couldn’t be much simpler, and it’s really easy to try out new extensions.

But, wait – there’s more:  So far, my favorite theme is Chromifox Basic.  As its name implies, it’s hardly the flashiest of themes.  But, I really like its simple look and customizations.

There’s certainly no lack of web pages and blog entries that highlight “must-have Firefox.  (There are so many, in fact, that I’m not going to bother to link to any of them.)  Now, I can add myself to that list. 🙂

Google Timeline

Will the developers at Google never stop publishing new applications (even if the are in perpetual “beta” status)?  You can find dozens of online-based projects on the Google Labs page.  One of the newer and more interesting additions is Google News Timeline

For me, one of the most frustrating aspects of searching the Web is the difficulty of searching for relative information by date.  For example, if I’m searching for information on Windows 7 or something relatively new, I generally don’t want to see information that’s over a year old.  Often, the results can get confusing.  Sometimes, you’ll want to search for a .NET command or T-SQL syntax, and you’ll find outdated results.  Sure, you can perform an Advanced Search to filter by date ranges, but it’s a cumbersome way to find the information you need.

The Timeline still appears to be in a fairly early state, and the search results aren’t quite up to par.  However, the idea is a good one, and I hope it’s significantly improved in the near future.