My dad asked me yesterday if there were any free alternatives to Microsoft Office. The one that came to mind right away was OpenOffice.org. Writer, Calc, Impress, Draw and Base are the OpenOffice.org answers to Word, Excel, PowerPoint, Visio and Access. The suite is free, open source, and available for Windows, Mac OS X, Linux, and Solaris.
If you’re ready to embrace cloud computing, even more options are available to you. Google Docs offers word processing, spreadsheets, and presentation capabilities. It does a nice job of handling Microsoft Word and Excel files. Another alternative to the Microsoft Office suite comes from zoho.com. It offers the same level of compatibility with Word, Excel, and PowerPoint of Google Docs or OpenOffice.org. Zoho.com offers a wider variety of applications than Google Docs. They use plug-ins to integrate with MS Office, Outlook, Internet Explorer, Firefox–even Facebook and smartphones (iPhone and Windows Mobile).
For family and friends of mine who don’t work with computers, I often act as free tech support. To bring something a little different to this blog in 2009, there will be posts from time-to-time that share a question I’ve answered about technology for someone.
If you find yourself in need of test data (and if you write software for a living, you’ve got that need pretty often), pay a visit to generatedata.com. You have your choice of five different result formats: HTML, Excel, CSV, XML, and SQL. If you’re using it for free, you’re limited to 200 rows of test data. Donate $20 or more and the limit increases to 5000 rows. If you don’t mind fiddling with PHP and MySQL, you can download the generator for free and set it up on your own server.
Caphyon, the vendor of Advanced Installer, has a feed for updates of the software. A brief look at the feed shows a pretty regular schedule of updates. Each entry in the feed contains the release notes, with new features, enhancements, and bug fixes.
Quick thanks to my friend Dave, who sent me a tweet about this product. Now we’ll see how it stacks up against InstallShield.
Some googling for Mac OS X Twitter clients revealed this clever one. I wasn’t aware of Fluid, Hahlo, or site-specific browsers (SSBs) before checking out the little video.
Being part of The Borg Facebook wasn’t enough–I joined Twitter a couple of weeks ago. At least so far, it has succeeded in connecting me with the few friends of mine I haven’t found on Facebook yet. I don’t use it from my iPhone that much yet, but fring seems to be a good enough client.
Comparing two XML strings is painful. So of course, my current project required me to come up with a way to do it in .NET. I could only use version 2.0 of the framework, and I didn’t want to add more dependencies to solution that already has plenty (which ruled out XML Diff and Patch). So far, I’ve come up with the following bit of code:
The validationXml contains a string representation of the XML being validated against. It also means I only have to create one instance of XmlDocument. After creating an XPathNavigator on the XmlDocument being compared, an XPathExpression for the subset of XmlDocument being validated, and an XPathIterator, it can be called.
The “params” keyword makes the last argument optional, so it can contain zero or more names of XML elements to ignore when deciding whether or not to call an Assert. I’m still figuring out how to optimize this, but I think it’s a good start.
According to this story in the New York Times, Google can detect regional flu outbreaks up to 10 days ahead of the Centers for Disease Control and Prevention. Check out Google Flu Trends to see data for the U.S., and for individual states.
I spent most of this morning looking for a replacement to Application.ExecutablePath. The reason for this was because certain unit tests that depended on this code failed when a used any test runner other than the NUnit GUI. When using test runners like ReSharper and TestDriven.NET, Application.ExecutablePath returned the executable of the test runner, instead of the DLL being tested.
Assembly.GetExecutingAssembly().CodeBase returned a file URI with the DLL I wanted, but subsequent code which used the value threw an exception because it didn’t accept file URIs. This made it necessary to convert the file URI into a regular path. I haven’t found a .NET Framework method that does this yet, but the following code seems to do the trick:
private static string ConvertUriToPath(string fileName)
{
fileName = fileName.Replace("file:///", "");
fileName = fileName.Replace("/", "\\");
return fileName;
}
The U.S. is certainly a different place today than it was yesterday. The commentary I’ve seen that sums up best just how different things are is this Tom Toles cartoon of Obama walking into the White House beneath these words:
We hold these truths to be self-evident, that all men are created equal.
Yesterday, America proved that we really believe this.