Outlook plays an important role in my day-to-day work. It’s the one omnipresent desktop application – the first thing I open when I start Windows and sticking around as long as Windows is running. Over the years, I’ve adopted, tailored, and shared several techniques for inbox, to-do list, and archive file management. Even with these techniques, I’m always looking for ways that Outlook can meet me half way and make the task of managing the daily email avalanche a little bit easier.
I was hoping that the upcoming release of Outlook 2010 would provide some features that would really wow me. I’ve been working with the beta version of Outlook 2010 on several of my machines and, although there are some nice features such as threaded email conversations and some basic social networking integration, I have yet to say “Wow”. Since Outlook 2010 wasn’t fulfilling all of my needs, I decided to look into Outlook plug-ins to see if third party software vendors were able to fill the gap.
I was surprised to find that there is a relatively small offering of Microsoft Outlook plug-ins. I found three that I decided to assess. I’ve provided a brief summary of these tools below as well as my initial impressions.
MissingLink– MissingLink was the first plug-in I looked at. It unifies emails, calendar entries, contracts, files, and tasks into a project view, which was one of the features I was initially looking for. I spent a day or two using the plug-in, only to realize that it was a quirky plug-in supported by a single developer. MissingLink simply wasn’t going to work for me and quickly fell to the wayside.
ClearContext – ClearContext was the second plug-in I looked at. It had all the project-based features of MissingLink developed in much more professional format that integrated very well with both Outlook 2007 and Outlook 2010. MissingLink offers an abundance of features. As I evaluated these features, I found that ClearContext simply wasn’t for me. I don’t want to change my system for managing emails and ClearContext has a set way of doing things. Still, I’d recommend ClearContext to anyone looking for a new system to help manage their emails. The product looks to have a passionate user base who have benefited from using the product.
Xobni – Xobni (yeah, that’s ‘inbox’ spelled backwards) was the final plug-in I looked at. It offers none of the project management features I thought I originally wanted. Two weeks later, I’m hooked on Xobni and my colleagues at work are asking “what’s that cool thing in your Outlook sidebar?”
Xobni is available as a free plug-in from xobni.com. Once you get hooked on the free plug-in, you can opt for Xobni Plus, which will set you back about $30. The plug-in offers a bunch of very cool features. I’ve provided some color commentary and screenshots of the things that have impressed me over the last several weeks. Try Xobni out. I think you’ll find yourself saying “Wow” too.
Search. Xobni indexes all of your emails and provides screaming fast full text search. Once you use Xobni’s search, you will never go back to Outlook’s built-in search.
Automatic Address Book. Even if you limit your Outlook contact list to a sane number of contacts, Xobni will go make an “automatic address book” that includes everyone you’ve ever communicated with. It automatically extracts phone numbers from the emails and adds them to the address book for you and, if you’re using Xobni Plus, Xobni will use your Automatic Address Book for email address autosuggest so you’ll never have to look up an email again.
Social Network Interaction. Xobni crushes Outlook 2010 and Google’s Buzz, feeble attempts at integrating social media into email. Xobni seamlessly integrates with Facebook, Twitter, LinkedIn, and Salesforce, providing you pictures of the people in your address book along with Facebook and Twitter status updates. I have shocked to find how many pictures of people automatically made their way into my Xobni address book.
Threaded Conversations with Zoom. You just have to see this one to believe it. Xobni creates threaded conversations for all of your interactions with a particular person. If you hover over the thread, you can see the entire conversation, along with the pictures of the people in the conversation (as available).
Time Scheduling Feature. I just love this one and wonder why Microsoft didn’t think of this 10 years ago. Xobni generates an email with your availability for the next week and sends it to the person in question. Very convenient way to schedule meetings, especially across organizations that don’t share Exchange servers.
Email Analytics. This is less on the really useful side and more on the “cool and interesting” side. Xobni’s analytics range from person-by-person rankings of your most important contacts to detailed statistics and graphs that are generated outside of the plug-in in a separate analytics module. Xobni also offers up “fun facts” about who responds to you the fastest, who you respond to the fastest, etc. so that you can follow up to these contacts with emails (with links to the Xobni product, of course).
When ScottGu puts the time into creating a mini-tutorial for a new technology, it’s usually something worth investigating. After seeing his tutorial / overview of the new IIS Search Engine Optimization Toolkit, I decided I ought to give it a look. With the new blog running Wordpress on IIS, this seemed especially timely and relevant.
As Scott mentions in his blog, a prerequisite to getting the IIS SEO Toolkit up and running is the installation of the Microsoft Web Platform Installer. I was surprised how easy this installation went. When the installation is complete, you’ll have a new icon on your desktop and a new “Management” section within the IIS admin tool. The Installer looks like a great tool although I’m sure that some (myself included) will be leery about Microsoft installing server-related software on their machines.
I followed ScottGu’s recommendations for installing and running the tool. After running it both against Scott’s site and then performing some follow-up analysis, there were several things that I felt warranted a bit further explanation:
The scan of my blog took a lot longer to run. This was on the order of 8 minutes for my blog versus the 13 seconds Scott quotes. My suspicion is that, especially as your site’s link depth increases and you point towards more external media, the scan takes longer to run and pseudo-index it all. In short, the IIS SEO Toolkit is doing a full spidering of your web site and the time to do so will vary according to the size and complexity of your site.
Scott mentioned but didn’t go into a lot of detail on the robots exclusion and sitemap / site indexing tools. I was hoping that there would have been a bit more automation that would occur after the initial site analysis was run but was disappointed to find out that this was not the case. These tools look to be little more than editors slapped on top of these files.
On the positive side, there’s a lot more that this tool can do than was covered in ScottGu’s brief post. In short, the analysis provides four information groupings: violations, content, performance, and links. Of these, ScottGu only covers one, Violations. I offer some more information on the other capabilities and features below.
Site Analysis Trending Capabilities
The IIS SEO Toolkit stores historical analysis metadata and details. This effectively affords you the capability to perform analysis and trending of your site’s SEO and other critical metrics over time. You can see below how my site changed between two different analysis runs.
Content Summary
The content summary offers an abundance of information on content types, hosts, link, files, titles, and keywords. This information is useful for SEO and other site maintenance activities. The image below illustrates one example of the content summary – the pages with broken links summary.
Performance Summary
The performance summary section provides information on slow pages, pages with a large amount of resources, and page performance metrics by content and directory type. These statistics require a bit of interpretation. The image below is of performance by content type. This report allows further investigation as to why some content types categorically take longer to render than others do.
Query Capabilities
All of the canned reports in the IIS SEO Toolkit are backed by a query engine. The ability to directly query the data is also provided using a simple query builder. As of this release, it looks as if queries are restricted to a single analysis run. It would be nice in the future if the queries could be expanded to span multiple analysis runs and provide a longitudinal picture of a site’s evolution.
I had long planned the move from the .NET-based DasBlog blogging engine to Wordpress but just couldn’t seem to make the time to complete the move. I finally pulled the trigger and cutover to Wordpress a couple of weeks ago. The process was not nearly as painful as I imagined and I’m now beginning to reap the rewards of working on a blogging platform that’s more broadly integrated into the Web ecosystem. This blog entry is a collection of the key technical takeaways from my migration. Hopefully they will be helpful for other people looking to migrate to Wordpress, especially on the Microsoft IIS platform.
Getting Wordpress Up and Running on IIS is Very Easy – I was surprised how easy it was to get Wordpress running on IIS 7. The entire process took me no longer than 30 minutes to complete once I had the correct guidance in place. The items that were of the utmost help to me here were as follows:
Screencast – Installing Wordpress on IIS 7 – The third and final screencast should bring you home with the installation. If you install the newest version of PHP / WP, several of the IIS settings covered at the end of this screen cast will have already been made for you. Just ignore them.
There’s Help Porting Content Into Wordpress From Other Blog Engines – This was very welcome news as porting everything by hand would have been intolerably tedious. Porting blog content is a two step process:
Das Blog to BlogML Converter – Converts DasBlog source XML into standard BlogML file that can be imported into WordPress.
WordPress Import Module – The import module covered at the bottom of this post allows you to import BlogML into WordPress.
Don’t Forget About Mapping the URLs of Your Entries so That All Your Links Don’t Break – Maintaining external consistency is critical to followers of your blog. They care little that you migrated onto new software. Google cares even less. Don’t make people think about this. Do the work for them and map your legacy URLs to the new URLs in WordPress so that the change is transparent to everyone but you. Most of the guidance I could find on the web around mapping WordPress URLs dealt with Apache mod_rewrite. Fortunately IIS 7 provides an extension called “URL Rewrite” that can rewrite incoming URL requests. This article and the links within provide you everything that you need to understand URL Rewrite and get the job done.
Take The Opportunity To Leverage the Cloud – Although the text ports fairly well using BlogML as a bridge, the other binary content (images, document, etc.) need to be moved over manually. You can just copy the DasBlog contents folder over to maintain URL continuity or you can get a bit more ambitious. I chose to leverage Amazon’s S3 file storage service to store all of my binary content so that I don’t have to worry about backing it up or moving it ever again. I took the opportunity to set up S3 virtual hosting so that, with a bit of DNS trickery, my blog binary contents are all served from http://s3.beckshome.com.
Identify and Engage the Necessary Wordpress Widgets – One of the key features of the Wordpress blogging engine is its extensibility and the vast array of freely available themes and plugins that you can use to add valuable functionality to your blog. A top 10 or 20 list of plugins would warrant another post entirely and there are a multitude of these lists already out there. Instead, I’ll recommend a series of plugins that I found to be absolutely necessary to replace content or functions I had available under DasBlog and which I considered “table stakes” for the move over to Wordpress.
Flickr Badge Widget – I replaced separate DasBlog pages for my photos and videos with a single Flickr Flash Badge that links to my Flickr account.
SyntaxHighlighter Evolved – I have a bunch of source code snippets embedded in my blog entries, mostly C# and Ruby. This plugin made them look better than they ever did on my older blog with zero fuss.
WP Google Analytics – Despite the avialbility of Wordpress stats, I’m sticking with Google analytics. This plugin made the transition seamless.
I’ve been busy since returning from vacation on getting my new iMac up and running. Aside from the machine being a physical work of art, it’s also been performing very well and runs so silent that I’m hearing all kinds of new noises in my house that I wasn’t aware of before. This doesn’t mean that I’ve completely forsaken Windows. In fact, the move to the Mac has allowed me to finally move to Vista on my home machine and install Visual Studio 2008, which is killing my work laptop. For those of you remotely familiar with the Mac, running Windows side-by-side with OS X has been possible since the release of the Intel-based Macs. This started with Boot Camp and gained serious traction with the release of Parallels. Most recently, VMware jumped into this space with their Fusion product for the Mac. I went with Fusion due to reviews on both Apple’s site and Amazon.com that seemed to indicate that Fusion was more stable and that there were far more converts from Parallels to Fusion than in the opposite direction.
I’m running 3 operating systems now on this machine, 2 of them under Fusion 1.1. Mac OS X Leopard came pre-installed with the machine and Vista and Ubuntu Linux are running under Fusion. Despite the 64-bit Intel architecture on the new Macs, both the Vista and Ubuntu installs are 32-bit. I didn’t hear enough good news about the 64 bit releases to convince me that they were worth pursuing. All of this is running on 4GB of memory. Only 1 GB was stock and you’d be crazy to pay Apple’s prices for memory. Other World Computing (OWC) will get you to the 4GB maximum for less than $100. The memory install took all of about 10 minutes and OWC’s service and delivery were nothing short of outstanding.
As far as the individual operating systems, they are all running fine. That said, everyone puts different kinds of stresses on their machines. Mine is software development and I require each of my operating systems to run at least oneIDE. That’s actually the reason for the existence of these VMs in the first place. Although my initial research prepared me for the worst, I’ve had no issues with running IDEs concurrently on all 3 operating systems. I’ve encountered some small quirks, which I’ve documented below for anyone who might find this sort of thing useful:
Mac OS X Leopard – I’m running NetBeans 6.0 with the Ruby-only configuration. Much to the chagrin of many Mac developers, Leopard did not ship with Java 6 even though it was included in some of thepre-releases. This proved to be a non-issue for the installation of the latest version of NetBeans. Obviously, running NetBeans in Ruby-only mode means that I’m not exercising the JDK and thus avoiding what could potentially be a lot of issues.
Windows Vista – Although I’ve had issues getting used to the Vista operating system from the Windows 2003 Server / Windows XP I’ve become so familiar with, I’ve had few issues actually running Vista. I’m running Vista with the 1 GB RAM that Fusion recommended and have had no issues thus far. The only issue I encountered was trying to install Vista in Fusion Easy Install mode with multipleCDs , as opposed to a DVD. This is a documented issue with Fusion that I didn’t become aware of until I ran into it head-on. Simply switching to a normal install solved all of my issues. On top of Vista, I’m running Visual Studio 2008. This runs pretty quick – even on 1 GB and builds of moderately sized solutions are pretty fast. TheIDE is really responsive and you really only notice that your running in a virtualized environment if you try to resize the entire Vista window to get more real estate for the IDE.
Ubuntu 7.10 – Despite the size of the operating system, this installation took longer than Vista. I chose not to use one of VMware’s canned virtual appliances and go with a fresh install. I would probably re-examine this decision if I had the chance to do it all over again. Ubuntu is running NetBeans 6.0 with the full Java EE stack. The install of NetBeans downloaded directly from netbeans.com went really well once the proper Sun JDKs were installed. Both the Java 5 and Java 6 JDKs were available directly from Ubuntu’s installation utility. I installed Java 5 first and, after realizing that it was a vanilla 1.5.0 release that didn’t meet the requirements for NetBeans 6.0, I installed Java 6. Things have been just dandy since then.
I’ve posted about how impressed I was with NetBeans as a Java IDE and the incredible progress this product has made in the last couple of years. I knew for a while that Ruby on Rails and JRuby support was coming for the next major Netbeans release (v 6.0), but I hesitated moving from RadRails to NetBeans until the feature set had stabilized. Last week, the Netbeans 6.0 beta was released and, with RadRails stagnating somewhat under the Aptana brand, I caved in and made the switch.
George Cook does an excellent Job of running through the new features with lots of nice pretty screenshots. If you’re looking at moving to Netbeans as a Rails IDE, it’s the first place I suggest that you go. Some of my favorite features of Netbeans (with screens shamelessly stolen from George’s site) include code completion
…and debugging
There are several features from RadRails that I miss and that I hope the NetBeans team will consider integrating over time. These include the ability to import a project directly from Subversion and the test window that allows you to visually check the status of your tests and select particular tests to run. Those features aside, I don’t plan on going back to RadRails. NetBeans has made so much progress so quickly, I can only imagine that it’s going to put significant distance between itself and RadRails in the near future.
You can get Netbeans 6.0 here, available as a skinnied-down Ruby only version if you want. Finally, since Netbeans uses JRuby as the default interpreter and expects the Derby Java database, this article on wiring NetBeans for InstantRails should get you up and moving with the standard Ruby interpreter and MySQL database configuration, regardless of whether you’re using InstantRails or not.
Final note if you’re brand new to Ruby on Rails and reading this post. Skip right to Rails 2.0, which is now in preview mode, to avoid dealing with Rails 1.2.x deprecations and to benefit from some of the new defaults. Enjoy!
Eliminating or reducing enterprise system batch processing is the bane of many architects looking to convert large-scale legacy systems to current platforms. Some believe, rightly or wrongly so, that mainframe-style batch has no place in modern system architectures and attempt to eradicate its existence entirely. Others are a bit more accepting and attempt to understand the role that batch processing fills in enterprise application architectural space. Even for these people, finding people with the skills to engineer batch processing systems with these newer technologies is not an easy proposition since little or nothing has been written about batch on the Java or .NET platforms.
I’ve seen various attempts at non-mainframe batch processing over the years from the simple CRON / Quartz type attempts to more sophisticated approaches that handled concepts such as scheduling, job control, retry and rollback, and parallel processing. There are commercial applications that purport to take care of much of this for you. Many of these are, for better or worse, nothing more than mainframe tools ported to the Java and .NET platforms with little regard for the differences between mainframe and non-mainframe architectures.
I’ve seen several attempts at batch processing frameworks in .NET. The earlier versions (pre .NET 2.0) of Rocky Lhotka’s Component Scalable Logical Architecture (CSLA) included admittedly simple batch functionality. Avanade’s Avanade Connected Architecture (ACA.NET), which formed the backbone of Microsoft’s Enterprise Library, had a batch element, entitled fittingly ACA Batch. Until recently, the Java open source community had only produced several half-hearted batch processing architectures which, given their lineage as the first “true” legacy replacement technology, is actually more than a bit disappointing.
A couple of month’s back, word got out that Rod Johnson, the brains behind the widely respected Spring framework, was going to be presenting the Spring Batch Framework at this year’s JavaOne conference. Yesterday, the formal announcement was made of the addition of Spring Batch to the Spring portfolio. A combination of Interface21 (the folks behind Spring) and Accenture (the folks behind Avanade) resources have collaborated in the creation of this batch framework.
I haven’t checked out the source code yet but Spring Batch purports to be non-dependant on other Spring facilities. The architectural diagram for Spring, which is shown below, won’t tell you much.
Perhaps more telling are the use cases upon which their framework is based:
Simple Batch Repeat
Automatic Retry After Failure
Commit Batch Process Periodically
Asynchronous Chunk Processing
Copy File to File in a Batch
Massively Parallel Batch Processing
Manual Restart After Failure
Sequential Processing of Dependant Steps
Partial Processing
Whole-Batch Transaction
Scheduled Processing.
If any or all of these things are present needs of your existing system and will need to be replaced over time, I encourage you to look at Spring Batch. Even if you’re developing in a language other than Java, take a look at Spring Batch. If historic success provides even the slightest indicator of future success, than Spring Batch will be another exciting and innovative addition to the Spring Suite.
The Microsoft Live Search Maps update to include Firefox support that I blogged about a couple of weeks ago was released sooner than I expected. The updated maps API supporting Firefox has not yet been released but word has it that this is imminent as well. I’ve put together a brief screencast of Live Search Maps running in Firefox. Omitted from the screencast are the features that have been available in Firefox for a while, like bird’s eye view. Focus is given explicitly to navigating with the 3D control.
When running the 3D control, you can turn detailed building rendering on or off from the options link in the upper right corner of the screen. Detailed rendering chews up more space but looks a whole lot better. It looks like Microsoft is definitely taking the geospatial market seriously and is out-innovating Google in this area. Cross browser 3D support (albeit limited to Windows), bird’s eye views, and other features are real eye catchers. In the 3D realm, I like Microsoft’s approach to creating the 3D space on their own. Google might have overextended the community participation concept with Google Earth’s philosophy of user-created 3d models. Do we really need 60 different virtual models of the Empire State Building? That seems just a bit too confusing. Still, if you look at the number of mashups built using the respective mapping APIs, Microsoft still has a lot of catching up to do. Either that or folks just aren’t willing to admit that Microsoft might actually have something here.
For those Rails developers using RadRails as your IDE, you might have noticed that, in the last several days, the RadRails site has slipped off of the face of the earth. Due to a very unfortunate run-in with their registrar and DNS provider, the nice folks at RadRails are apparently stuck in DNS purgatory. This little mishap coincided with the announcement of the Aptana IDE / RadRails merger. Due to the site outage, many folks missed out on the announcement all together… so I’ll repeat Aptana and RadRails are merging. The location of the RadRails download on SourceForge has not changed.
Aptana has posted a brief roadmap for the new combined product. This should be exciting new for folks using RadRails. It was apparent that RadRails grew far beyond the initial expectations of its creators and, as Ruby on Rails skyrocketed in popularity, support was going to be an issue. The creators of RadRails did a great job of maintaining and expanding the IDE for a long time. They then made the greatest of sacrifices and, instead of letting their product die on the vine, they merged it with a likeminded product for the greater good of their RadRails users. It would be great if all open source project owners functioned in this fashion. 1 or 2 great products is much better than 9 or 10 mediocre products.
If you haven’t tried out Aptana, I encourage you to give it a look. It’s a great Eclipse-based JavaScript IDE. With planned support for RHTML integration and hopefully more extensive code assist capabilities to come, there is much promise in this merger. Not that it is required, by any means, but a high quality IDE will only serve to further Ruby on Rails case and attract more and more developers from the Java and .NET camps to at least give RoR a look.
If you completely missed the milestone, NetBeans version 5.5 was released last week. The IDE contains all of the functionality that’s been around in the beta and pre-release versions for months now, including:
Support for Java Enterprise Edition 5 (i.e. the Java Persistence, EJB3, and JAX-WS 2.0 specifications
Support for Subversion up to version 1.4
Developer collaboration features
SOA support (XML, BPEL, or Java web services) through the free Enterprise Pack
Performance and memory usage monitoring (including remote JVMs) though the free NetBeans profiler
In addition to all of the aforementioned features, which are part of the official 5.5 release, the Visual Web Pack Technology Preview was also released. This long-awaited feature brings to NetBeans a rich JSF-based UI. For those of you that have used Sun’s Studio Creator product, this addition to NetBeans will be both welcome and natural.
For those of you that have not experienced Studio Creator, the rich UI component IDE will be quite an experience. Standard JSF components are supported as well a number of AJAX-enabled JSF components from Sun’s BluePrint AJAX component modules. The NetBeans team has already created a number of Visual Web Pack specific tutorials. In addition, although I cannot verify it, I am fairly certain that the existing Studio Creator tutorials will work with little or no modification. Finally, if you’ve latched onto Ruby / RoR, check out the CRUD screencast in which NetBeans is used to generate a set of entity beans from a database and then to produce a set of RoR-like scaffolds, all without writing a single line of code.