Tag Archives: mac

Assurance

Introducing Assurance

Over the last few months, I’ve been working on a project and, today, I’m releasing the result of that project as Open Source Software. Assurance by Digital Generalists is an application that enables comprehensive file and folder comparison with tools to merge data on multiple operating systems.

Where to Find It

The project is hosted on GitHub at https://github.com/shelterbelt/assurance.

Inspiration for the Application

Over many years, I’ve collected a substantial library of electronic files ranging from simple text documents, spreadsheets from the very early ’90s, games, MP3s, videos, email archives, source code, etc… Because I had so much stuff, I had backups…plural. And backups of backups. And some stuff was on thumb drives because I needed it to be portable at some point. And some stuff eventually moved to newer machines, but I never deleted the copy on the older machine.

*sigh*

In short, I came to a point where I wanted to be able to compare the many copies of my digital archive, eliminate the redundant stuff, know where the latest version of everything was, and move things into a ‘repository-of-record’.

I easily could have purchased a tool to accomplish that task. There are highly-rated options available. Or I probably could have written a shell script that would have done the job from the command line.

However, I felt the problem presented a good opportunity to try out several software development frameworks and techniques I’ve been interested in learning more about. So I wrote Assurance instead.

What Is Assurance

Assurance is a cross-platform, client-only application written in Java that leverages both Spring and Hibernate with a Swing-based UI.

At it’s core, it is a tool to comprehensively compare and optionally synchronize the contents of files and directories.

While on first glance, Assurance may appear to be a good fit as a backup tool, it wasn’t really designed for those needs.  A backup tool should provide features like scheduling of jobs, conflict resolution, automated monitoring of the file system, one-click system restore, etc…  Assurance wasn’t built to solve those problems.  Assurance is very good at comparing files and directories and provides tools to manage differences.  It does those jobs well, but doesn’t claim to do more than that.

License

Assurance is released under the Apache License 2.0.

Prerequisites

The following tools need to be installed to build Assurance:

The Maven configuration will download and install the appropriate versions of the following tools:

  • Spring Framework
  • Hibernate
  • JUnit
  • H2
  • Apache Commons
  • Apple Java Extensions
  • SLF4J
  • Log4J

The following dependencies are required to run binary distributions of Assurance on Windows machines:

Mac distributions of Assurance package the appropriate JRE with the application bundle, eliminating the need to separately install Java on a Mac to run the application.  Windows distributions require that the JRE be installed prior to starting the application.

Building and Packaging

Assurance uses Maven as its primary build and dependency management system.

To build the application:

Mac

cd project_root/assurance
mvn clean package -Pdevelopment

Windows

cd project_root\assurance
mvn clean package -Pdevelopment-windows

To run the unit tests:

Mac

cd project_root/assurance
mvn clean test -Pdevelopment

Windows

cd project_root\assurance
mvn clean test -Pdevelopment-windows

To package the application for internal release:

Mac

cd project_root/assurance
mvn clean package -Pintrelease

Windows

cd project_root\assurance
mvn clean package -Pintrelease-windows

To package the application for release:

Mac

cd project_root/assurance
mvn clean package -Prelease

Windows

cd project_root\assurance
mvn clean package -Prelease-windows

IDE

Assurance was developed using Spring Tool Suite 3.6.1. Project files for the IDE are included with the distribution.

Acknowledgments

Assurance includes a modified version of the

com.ibatis.common.jdbc.ScriptRunner

class from the iBATIS Apache project.

Why a Digital Generalists Product?

Digital Generalists serves as the primary way I deliver products to the world. For full products, I want Digital Generalists to hold the copyright and serve as the primary entity releasing the software to the world.

The fact that Digital Generalists, rather than me personally, is the entity releasing the product, doesn’t affect or impact how you can use the software.  As long as you abide the attached software license, you can use the product and source as you wish.

Migrating Outlook Messages from One Install to Another by Hand without an Archive

My computer recently crashed at work, which always makes for a very bad day.  Thankfully, I had backups of everything I needed.  Getting back on my feet should have been a matter of simply restoring everything once I had a new machine in-hand.

Everything went smoothly when restoring the backups to the new machine except restoring my local Outlook data.  I was running Office 2011 and hadn’t created an archive.  I assumed restoring the old data would just be a matter of setting the active identity of Outlook to the backup of the old computer’s Outlook identity using the Microsoft Database Utility.  However, the tool kept error-ing, saying the old identity was corrupt.

From what I could tell, my company’s IT department had installed a newer patch version of Office 2011 than the one I had on the old machine and the identity structure was no longer completely compatible.  It was also possible that my previous Office identity was indeed corrupt.  Either way, I thought I had completely lost all of my saved email.

However, I was able to pull the old email backup into the new Outlook identity by hand.  Here’s how I did it.

Disclaimer:  The following steps are not for the faint of heart. You could completely break your Office installation and/or lose data if you aren’t careful or don’t understand what you are doing. I take no responsibility if this doesn’t work well for you. Proceed with caution.

All I needed to do was:

  1. Create a new identity (happens automatically when you first start Outlook).
  2. Find the new identity’s directory under the Microsoft User Data directory in the Documents folder.
  3. Find the old identity’s directory under the Microsoft User Data directory in the backup directory.
  4. Make a new backup of the new identity’s directory just in case something goes sideways.
  5. Copy all of the email-related directories from the old identity’s directory to the new identity’s directory, replacing the existing versions of those directories.
  6. Open Outlook and verify that all of the old email messages are there.

I had to iterate on this process a few times, restoring from the new identity backup and excluding directories that appeared to cause Outlook to crash from those I copied to the new identity, until the email backup loaded in Outlook.  In my situation, the directories related to email attachments were causing Outlook to crash, so I had to settle with not copying those directories over and live with the fact that old attachments were lost.

This is not an ideal solution and a pretty brute-force approach for recovering data, but it got 90% of what I needed accomplished in less than 30 minutes.  That is certainly better than the alternative of losing all of my email simply because I didn’t export an archive.