Archive for the ‘Software’ category

What I Learned at #EpCon

January 19th, 2010

I spent the past weekend at EpCon, a tech conference for college and university students throughout South-Western Ontario that focused on technology, the Internet, entrepreneurship, and networking. Held at the Waterloo Inn, this inaugural year featured keynote speeches from Mike Lee of Rogers Ventures and Steven Woods of Google Waterloo, among others. I saw a lot of cool things, heard a lot of great ideas, and came away with a better understanding of what the tech industry in Ontario has to offer the rest of the world.

Below are a few of the lessons that I picked up during my stay:

Cloud Computing is about…

  • Hype: The core content of 90% of all marketing literature about the cloud is fluff. As a concept, cloud computing is poorly defined; what we have managed to decide on is that the cloud is about only paying for what you use, purchasing services over products, and being able to quickly and intelligently provision new ‘hardware’ via virtualization
  • Low Prices: This is possible because of the ever dropping cost of commodity hardware. Servers are so powerful that they spend most of their time idling. We might as well use those extra cycles to virtualize more machines that can be used by more people
  • Data: Business models based on the cloud have an incentive to make it easy for you to put your data into their service, but hard/unattractive for you to pick up and leave
  • Parallelism: for Great for anything that can be split into chunks and distributed, but not so good for serial  tasks
  • Security Risks: There is a lot of talk, but the reality is a question of whether you want your private records stored on somebody else’s servers. Remember – they have no incentive to keep your privacy, just incentive to make sure that news of a breach doesn’t leak
  • Perception: The Blackberry is one of the most secure devices available, but Obama’s was considered a security risk. Perception is key.

The Internet has Changed the World:

  • The internet is only 20 years old, but consumes a full 5% of the world’s energy. That’s intense.
  • IP technology has had a fundamental impact on how things work, because it’s a global standard. The cost to do business internationally is the same as the cost to do it locally.
  • Between 1995 and 2008, companies that had virtual monopolies on providing information became obsolete. Everybody went online and traditional news media saw massive declines
  • Consumers now control consumption, and piracy can be seen as a push for increased convenience and choice. The irony of the copyright battles is that consumption of media is increasing! The public simply lacks a channel for content that matches their expectations
  • The Internet has come through three distinct phases:
    • Web 1.0 was the push model, wherein content producers pushed content out to consumers
    • Web 2.0 was the share model, when the lines between consumers and producers were blurred, and people chose what they wanted to see, when they wanted to see it
    • Web 3.0 will be the live model, when people have an expectation to have anything that they want at any time, no matter where they are or what device they are using
  • These days, readers, not editors, determine the content. This has been the revolution of the past four years. The democratization of content.
  • The newspaper provides good content, but only one view of the news. It lacks reader interaction, is expensive to produce and distribute, and is at least one day behind current events
  • Online news sites solve the cost, distribution, and latency issues inherent in the traditional model, but still provide a single view of the news and a one-sided conversation about it
  • Blogs and social media changed everything. They are becoming more respected and have been demonstrated to have real impact. At the same time, twitter has been shown to to influence product buzz and box office performances
  • Social media allows people to participate in the discussion, express their opinions, and to provide context to the news
  • Think of just how amazing the Wikipedia project really is. Instead of a small group of experts writing an encyclopaedia, a huge number of people from a diverse array of fields have come together and pooled their combined knowledge into a free resource that rivals the traditional encyclopaedia for accuracy and usefulness.

Creating a Great Product:

  • User-Centric design is essential. You need to know as much as you can about your users, and always strive to provide interaction, insight, and innovation
  • Your development process should be powered by listening: “You have two ears and one mouth. That ratio is not a coincidence”
  • Demo Driven Development: Use daily demos to create a feedback loop that allows you to constantly refine your ideas
  • Customer’s expectations are moving from dynamic to adaptive experiences: Make it modular, open, and multi-platform so that users can have a personalized experience that they can participate in
  • Porn has created at $50M/year industry by moving from the monthly subscription model to a micro-transaction model that is very lucrative. The glut of free apps available for mobile platforms has created a downward price crush that makes it hard to sell an app for a one-time fee. People don’t feel as bad about lots of small transactions, so it’s easier to hook people on something that starts out free.
  • Create value by solving one problem very well. More features can always be implemented later
  • The idea is not your baby! You will get plenty of criticism, and need to be able to adapt. A flawless execution is better than a killer idea. Apple did not invent the mp3 player, but revolutionized it, and changed the industry forever.
  • Questions to ask yourself about a new idea:
    • What is it?
    • Why does it matter?
    • Why doesn’t it already exist?
    • Why can we do it?
    • How can we do it?
    • Can we make money off of it?
    • How do we get out?
  • Having the insight to figure out what’s coming next on the Internet is a huge advantage that can put you well ahead of your competitors
  • So what is the next big thing? It isn’t about apps or hardware or new technologies or even content; it’s about the experience. Everything else is a tool that is used to deliver that experience

On Entrepreneurial Spirit:

  • It has never been easier to implement an idea, and then to quickly find a market for it. The majority of the risk is market related – development is cheap. The Internet solves the traditional problems of marketing and distribution
  • Always strive to be a part of lose/lose partnerships. When you’re having a bad day, your partner should be too. This creates incentive for them to support and work with you.
  • The best base for a start up is a solution to a problem that you’ve encountered in your daily activities. If you’ve encountered that problem, chances are that somebody else has too, and will pay for a solution.
  • Viral marketing can make you lots of money really fast (if you can pull it off without looking fake), but establishing a loyal fan base will make you more money in the long run
  • It is important to get some traction with your product before looking for investment capital. Build a user base first – the money will follow the buzz. Early money is the enemy of an early exit from a successful company.
  • You have to live and breathe your business like a religion
  • You need the best possible people on your team at all times throughout your career
  • The reality of being an entrepreneur involves an immense amount of work and responsibility. You are accountable to your shareholders, customers, partners, employees, and yourself.
  • Experience is key. You don’t know everything, but can learn some of it as you go. Make mistakes on other peoples money, and bring a true professional in when you’re out of your league. They will recoup your investment 100 times over. Seeing the world and learning from others before jumping in with both feet can be an invaluable experience.
  • Remember who you’re doing it for. You can’t work all the time, because you risk losing your family, even if you were doing it for them in the first place. Be sure to create a solid support structure – some days will suck, and you will need people around you to prop you up.
  • Being an entrepreneur is a never ending passion. At the end of the day, it isn’t about the money or the freedom, it’s about the love
  • Quitters never win, winners never quit, but those who never win and never quit are idiots.

Thoughts about Management:

  • Learn to delegate so that the world doesn’t fall apart if you’re not there. You need partners and staff that can step in to fill gaps where necessary
  • Give people accountability and incentive, and let them make their own mistakes. They will work harder for you if they believe in your goal and see personal gain in doing so. At the same time, letting them know exactly how the company is doing gives them feedback to help them cope with hard times, and links performance with hard work
  • Never forget the value of human interaction
  • The promise of the flying car is fact that somebody out there was dreaming. Inspiration comes from those dreams
  • To become a better company, you must know your competition

7 Things that Google does well:

  • Builds teams like startups do – product teams are always made up of less than 10 people
  • Enables internal founders to create
  • 20% of time spent on R&D spans new ideas. Evolving and prototyping are keys to finding the next big thing
  • Encourages teams to attack hard problems and tackle big ideas
  • Compensation is delivery oriented. Bonuses, grants, and awards encourage risks and pay off with good ideas
  • Flat management structure empowers everyone
  • “Innovation is not an option”

Videos and More:

The conference got coverage on our local CTV news, in the KW Record, and some great interviews with the keynote speakers are available over at TechVibes:

Finally, the slide decks from many of the keynotes and presentations are available online at the EpCon website, and you can catch all the latest on EpCon at their website and on twitter.

Filling a Zune from Linux

January 1st, 2010

Thinking that I was up for a challenge, I decided to spend the day figuring out how to put the music in my Banshee library onto a Microsoft Zune. Since my library contains a good number of FLAC files that I’ve ripped in from my CD collection, my solution called for a caching system that converts the FLAC files to mp3s and stores them so that the playlist can be changed without having to re-convert the FLAC files into something that the Zune can play on every sync. My weapons of choice for the project were a Windows XP instance running inside of Sun Virtual Box, and 126 lines of perl script.

The Steps:

  1. Create a WinXP VM that has the Zune software installed and can see two shared folders on my Linux machine:
    1. My normal Music folder, which contain my entire collection
    2. The cache folders, which contain all of the FLAC files in my collection, but converted to mp3 so that the Zune can play them
  2. Open the Banshee database, located at ~/.config/banshee-1/banshee.db
  3. Select all of the FLAC files in the playlist that we’d like to put on the Zune
  4. For each, check if it has been converted and cached
    1. If so, simply add the path to the cached copy of the track to an m3u file in the cache folder
    2. If not, convert the track, and then add the path to the cached copy of the track to an m3u file in the cache folder
  5. Select all of the mp3 files in the playlist that we’d like to put on the Zune
  6. Put those in a separate m3u file that is located in the Music folder.
  7. Boot up the Zune software on the VM. It should autoscan it’s monitored folders, find the m3u playlists, and put them in its library
  8. Sync the playlists with the Zune by dragging and dropping them to the device icon in the lower left corner of the screen

As previously mentioned, steps 2 through 6 were accomplished by way of a perl script that I can run as often as I like:

#/usr/local/bin/perl

#Requirements: libdbd-sqlite3-perl, flac, lame

#We need database support
use DBI;

#Database path – change this to reflect your user environment
my $dbpath = “dbi:SQLite:dbname=/home/jon/.config/banshee-1/banshee.db”;

#Playlist name – change this to reflect the playlist that you want to export
my $plistname = “Favorites”;

#Cache Path – the path to the directory where you’ve been caching converted FLAC files
my $cachepath = “/home/jon/Storage/mp3Cache/”;

#Music Path – the path to the folder where your music collection is actually stored
my $musicpath = “/home/jon/Music/”;

#Connect to the database – no username/password
my $dbh = DBI->connect($dbpath,”",”",{RaiseError => 1, AutoCommit => 0});

if(!$dbh) {
print “Could not connect to database $dbpath”,”\n”,”Exiting”;
exit;
}

#Pull the list of FLAC files for conversion and caching
my $flac = $dbh->selectall_arrayref(“SELECT sme.TrackID, ct.Title, car.Name AS ‘Artist’, ca.Title AS ‘Album’, ct.Uri, ct.Duration AS ‘Length’ FROM corealbums AS ca, coreartists AS car, coresmartplaylistentries AS sme INNER JOIN coretracks AS ct ON sme.TrackID = ct.TrackID WHERE sme.SmartPlaylistID = (SELECT `SmartPlaylistID` FROM `coresmartplaylists` WHERE `Name` = ‘$plistname’) AND ca.AlbumID = ct.AlbumID AND car.ArtistID = ct.ArtistID AND ct.MimeType LIKE ‘%flac’”);

#open the m3u file to write the cached items to
open my $m3u, ‘>’, $cachepath.$plistname.’_cached.m3u’ or die “Error trying to open cache m3u playlist for overwrite. Do you have write permissions in $cachepath ?”;
print $m3u “#EXTM3U\r\n\r\n”;    #note windows \r\n here

#add /music to $cachepath so that files are in a subdirectory, away from the m3u file
$cachepath = $cachepath.”music/”;
if( ! -e $cachepath ) {
`mkdir “$cachepath”`;
}

#loop through the files and check if they need to be cached
foreach my $i (@$flac) {
my ($trackid, $title, $artist, $album, $uri, $length) = @$i;

#correct the uri by removing the file:// prefix and reverting the uri escaping
$uri = substr $uri, 7;
$uri =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;

#fix time into seconds
$length = int($length/1000);

#check if the flac file has already been converted and cached at cachepath
#if not, convert it and put it at cachepath.
my $path = $cachepath . $artist . ‘/’ . $album . ‘/’ . $title . ‘.mp3′;
if( ! -e $path ) {
#file dne, convert it
print “\nTrack: $title by $artist has not yet been cached, converting…”,”\n”;

#make sure that the file actually exists before attempting to convert it
if( ! -e $uri ) {
print “WARNING: Track $title by $artist does not exist at $uri”,”\n”;
} else {

#ensure that cache album/artist directories exist
my $partpath = $cachepath.$artist;
if( ! -d $partpath ) {
`mkdir “$partpath”`;
}
$partpath = $partpath.’/’.$album;
if( ! -d $partpath ) {
`mkdir “$partpath”`;l
}

#do the conversion – we’re chaining flac and lame here, reading in the flac file from $uri, and putting the resulting mp3 at $path
`flac -cd “$uri” | lame -h – “$path”`;
}
}

#add the track to the m3u file – note that these entries are relative to the location of the m3u file in the root of $cachepath
#the paths use a backslash and a \r\n newline so that they work correctly on windows
print $m3u “#EXTINF:$length,$artist – $title\r\n”;
print $m3u ‘\\music\\’.$artist.’\\’.$album.’\\’.$title.’.mp3′,”\r\n\r\n”;
}

#close the m3u file in the cachepath directory
close $m3u;

#TODO: scan the m3u file and delete any files that aren’t in it from the cache directory

#Pull the list of MP3 files and dump them into an m3u file
my $flac = $dbh->selectall_arrayref(“SELECT sme.TrackID, ct.Title, car.Name AS ‘Artist’, ca.Title AS ‘Album’, ct.Uri, ct.Duration AS ‘Length’ FROM corealbums AS ca, coreartists AS car, coresmartplaylistentries AS sme INNER JOIN coretracks AS ct ON sme.TrackID = ct.TrackID WHERE sme.SmartPlaylistID = (SELECT `SmartPlaylistID` FROM `coresmartplaylists` WHERE `Name` = ‘$plistname’) AND ca.AlbumID = ct.AlbumID AND car.ArtistID = ct.ArtistID AND ct.MimeType LIKE ‘%mp3′”);

#open the m3u file to write the cached items to
open my $m3u, ‘>’, $musicpath.$plistname.’.m3u’ or die “Error trying to open music folder m3u playlist for overwrite. Do you have write permissions in $musicpath ?”;
print $m3u “#EXTM3U\r\n\r\n”;    #note windows \r\n here

#loop through the files and check if they need to be cached
foreach my $i (@$flac) {
my ($trackid, $title, $artist, $album, $uri, $length) = @$i;

#correct the uri to become a windows file path
$uri = substr $uri, 7;            #remove file:// prefix
$uri =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;    #correct uri encoding
$uri =~ s/$musicpath//g;            #remove musicpath prefix
$uri =~ s/\//\\/g;                #change forward slashes to backslashes
$uri = ‘\\’.$uri;                #add the leading backslash

#fix time into seconds
$length = int($length/1000);

#add the track to the m3u file – note that these entries are relative to the location of the m3u file in the root of $cachepath
#the paths use a backslash and a \r\n newline so that they work correctly on windows
print $m3u “#EXTINF:$length,$artist – $title\r\n”;
print $m3u $uri,”\r\n\r\n”;
}

#close the m3u file and the database connection
close $m3u;
$dbh->disconnect;

Sorry for the horrible formatting.

The only snag that I hit during the entire process was really my fault – I have a tendency to overcomplicate things, and did so on this project by initially writing the script to output a *.zpl file instead of a *.m3u file. That didn’t work at all, and I ended up simplifying the script greatly by just outputting an *.m3u file and hoping for the best.

On the off chance that the Zune jukebox software refuses to properly update its playlists after you change the *.m3u files, first try deleting them from the application, and then restarting it. If that doesn’t work, you can write a Windows batch script with code similar to the following:

del /q “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists\*”
xcopy “\\Vboxsvr\mp3cache\Favorites_cached.m3u” “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists”
xcopy “\\Vboxsvr\music\Favorites.m3u” “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists”

This script deletes all files from the Zune playlists directory, and then copies each of the *.m3u files that we created with the above perl script directly into the Zune playlists directory. This should force the application to get it’s act together.

Overall, I’m happy with this patchwork job. It allows me to use the Zune on Linux, which is great because the Zune really is a beautiful piece of hardware. Now if only the libmtp guys could get it working natively, without a WinXP VM…

This piece originally appeared at The Linux Experiment

A Few Good Reads

December 2nd, 2009

The following is a handy list of a few of the things that I’ve been keeping an eye on lately.

The Anti-Counterfeiting Trade Agreement:

If you haven’t been reading slashdot lately, you might not know that representatives from the governments of most of the developed world have recently been participating in some top-secret meetings aimed at establishing something called the Anti-Counterfeiting Trade Agreement, or ACTA for short. Now, according to Michael Geist, the proposed agreement actually has very little to do with counterfeiting, and an awful lot to do with copyright protections for big content – the same guys who influenced the USA’s Digital Millenium Copyright Act. Based on leaked information, Geist has pieced together a very good explanation of the proposed agreement as an online slide show that I snagged from TVO’s Search Engine blog:

Now as you might expect, quite a few people got uppity when they found out that the government was participating in secret meetings with the aim of establishing a global copyright treaty that would bypass the house of commons and fly in the face of last summer’s copyright consultations. So many people in fact, that NDP MP Charlie Angus questioned Industry Minister Tony Clement about it during yesterday’s question period. Thanks to the work of Fair Copyright for Canada, a video of their exchange is available on YouTube:

I too am pretty incensed at the government for keeping this all as hush-hush as they have. As I understand, copyright isn’t even a law in Canada – it is in fact a right, and one that must be exercised by the right holder. In my opinion, it is not the business of the government or of the Internet at large to take care of exercising this right for the holder. Further, much of the leaked information about this law points to it having a clause that bans internet access to any person who has been accused (read: not convicted) of breaking copyright three times. If implemented, this clause would be open to abuse, and far too wide-ranging for my comfort.

Can Software Be Patented?

On a related note, the Supreme Court in the United States is apparently deciding something or other about the legitimacy of software patents this week. While I admit that I haven’t really kept up with the issue enough to appreciate its gravity, the resulting press has lead me to this incredible article on Groklaw that provides a beautiful explanation of Computation Theory and its implications on Patent law.

Of course, I learned all of the stuff in the article in school, but have never seen it explained as simply or applied as practically as the author does in the article. For those who are looking for a printed copy that will persist link rot, a PDF of the article is available here on my server. It’s a lengthy read, but most certainly worth your time if you are at all interested in computers, their history, and its implications on modern law.

Praise is a Strange Thing:

Another lengthy read, this article from New York magazine really got me thinking. It deals with the types of praise that parents give their children, and the implications of that praise throughout their lives. Essentially, there are two kinds of praise: Telling your child that he accomplished his goals because he is smart, and telling your child that she accomplished her goals because she worked hard at doing so. The former gives a false sense of achievement that doesn’t provide a framework for what to do in cases of failure. As a result, children praised in this manner tend to avoid things that they do not naturally do well at, even though they may be accomplished in other areas of life. A related article that I found over on Pixel Poppers considers the implications of this kind of research on video games. Specifically, the author discusses the ‘fake achievement’ that RPGs provide players when their characters level up in lieu of actual skills, and asks if this alone could be responsible for problems encountered in other areas of life.

Back to Studying:

Well, that’s about it for me. I’m back to procrastinating studying for finals.

Cheers,

Jon

Augmented Reality? Hell Yes

November 29th, 2009

A colleague recently linked me to this TED talk from an Indian computer scientist named Pranav Mistry who has created SixthSense, a new platform that brings mobile computing into real life.

His device consists of a camera, projector, and coloured finger tips that allow the attached computer to locate his fingers in 3D space. On top of this $350 hardware platform lies a bunch of really cool software that is capable of some really neat tricks. This presentation put my jaw on the floor. Check it out.

The Return of the iTunes to Zune Playlist Converter

September 24th, 2009

Hey all,

After a couple of irate posts regarding the failure of my old iTunes to Zune playlist converter tool to work with newer versions of the iTunes and Zune playlist formats, I’ve rebuilt the project from the ground up and re-branded it as yourTunes. You can find the support page here, where downloads and tutorials can be found, and you are welcomed to leave some feedback.

This first version is a rebuild and incremental improvement on the old project, but plenty of cool features are planned for future releases, so keep on top of it!

Cheers, Jon

Outlook, How I Loathe Thee

September 16th, 2009

I fucking hate Microsoft Outlook. I cannot think up another English language sentiment that more accurately sums up my feelings regarding Microsoft’s Outlook application. As much as I hate on the Almighty Goog, I long for the days when I could use the simple, clean interface of the superbly well-designed Gmail web application. Then I went and got myself a Blackberry. All hate aside, I love my phone – it is the best phone that I’ve ever carried, and I wouldn’t consider downgrading if you paid me to do so. However, without an Exchange server, the Blackberry is inexplicably linked to Microsoft Outlook. It is the only well-supported application that the device can sync calendars and contacts with. This, in turn, forces me to use the bloated, cluttered, buggy, and altogether frustrating behemoth that is Outlook.

My current problems began with The Linux Experiment, a blog that I helped start whose purpose is to record the experiences of seven computer users with varying amounts of Linux experience who have committed to running various distributions of Linux on their primary platforms throughout the next four months. Previously, I had maintained two devices that checked my google mail account – my Blackberry, which pulled new email down from the server via the IMAP protocol, and Outlook on my Vista PC, which did the same via the POP3 protocol, and immediately deleted the messages once they came down. It was a fine balance that owed its existence to more than a few quirks in the Gmail, Blackberry, and Outlook systems, but in the end ensured that I got my email on both devices, but that it wasn’t stored on the Gmail servers, which the tinfoil-hat wearing paranoid inside of me greatly appreciated. Unfortunately, I then decided to add a third client to the mix, the Evolution client for Debian Linux, which frankly, is an extremely impressive Outlook clone that seems (initially anyway) to do some things better than Outlook itself.

In order to add a third client to the email mix, I had to remove the fine balance between IMAP and POP3 that had originally existed, and set all three devices up as IMAP clients. Further, Outlook was set to delete all messages on the server that were over 30 days old. This provided some modicum of security, while allowing all three devices to share my email. Along the way, I found out that Evolution actually has the best IMAP support of the bunch, and (unsurprisingly. If there’s on thing I’ve learned recently is that Linux does everything, and usually does it right the first time), Outlook the absolute worst that I have ever seen. For easy reference, my various complaints have been summarized into the ordered list presented below:

  1. IMAP folders appear outside of the “Personal Folders” area, forcing me to maintain multiple email inboxes, instead of allowing me to funnel all of my email into a single inbox. (This may be an issue common to other clients as well – I honestly don’t know).
  2. Outlook tends to keep IMAP connections open for too long, resulting in Gmail forcibly closing the connection, and Outlook bitching that said connection was closed by the server. There is no option (that I can find, but hey, have you looked at the option dialogs in Outlook lately?) to adjust this timeout length.
  3. The program does not accurately reflect message status. For example, if I receive an email on my blackberry while away from home and read it, the message status is set to read on the server, and Outlook should reflect this change. It doesn’t. Evolution does, as does the Blackberry. What the hell?
  4. When an email message is deleted on the Gmail server by another client, Outlook does not delete the message locally – it simply shows the message with strikethrough formatting on the subject line. In the same vein, when you delete a message in Outlook, there is no way (that I can find) to delete that message from the IMAP server so that it is reflected on other devices.
  5. The Linux Experiment uses a self-signed certificate to verify it’s identity to connecting mail clients. Granted, this isn’t how certificates are meant to be used, but it’s better than nothing, and we don’t have the money to pay for a CA. Outlook (as one would hope) complains that the certificate is self signed, but lacks an option to ignore this fact. In theory, this is a “feature” that notifies a user that their transaction is potentially insecure, but in practice, it’s a pain in the ass. I know that the email server has a self-signed certificate. I helped set it up. Now shut up and do your job.

Those are the big complaints about IMAP support in Outlook. I have other complaints about the application, but they’re the same as many people’s and I don’t want sore fingers, so just Bing the issue if you’re looking for a half hour rant. The point to take home is that this lackluster support is inexcusable. According to Wikipedia, the IMAP protocol has been in it’s current revision since 1996, and Gmail is hardly a fly-by-night mail server.

In any case, at the same time that I got everything set up and working between all three devices, Outlook became crash-happy, and started going down three times a day. Sometimes it would crash when I wasn’t using it at all, sometimes while I was changing account settings, occasionally when I tried to open an email, and even once while I was trying to retrieve email from the Gmail servers. The idea that Outlook (previously rock-solid stable, among it’s few good attributes) could start regularly crashing for no apparent reason whatsoever seemed far fetched. So what had changed? Well, I’d added an IMAP account and disabled a POP3 account. These changes modified the Outlook PST files (the unreadable binary blob in which the program stores everything including it’s kitchen sink), which could have potentially been corrupted in the process.

So I backed everything up, deleted my PST files, uninstalled and reinstalled Outlook. I did not realize that the program had littered my drive with settings files in both C:\Users\Username\AppData\Roaming\Microsoft\Outlook and C:\Users\Username\AppData\Local\Microsoft\Outlook, as well as (likely) numerous registry keys, and when I launched my fresh install, it attempted to read from these files, and to recreate it’s missing PST files. Balls. So I closed the application, re-deleted the newly recreated PST files, and also nuked the settings files in the two locations. Upon launching Outlook, it again somehow managed to restore all of my settings, including my RSS feeds and both of my IMAP accounts.

Fine. You restored my settings. Not the via the method that I had hoped, but the effect that I was after has been achieved. The old and possibly corrupted PST files have been recreated, my email accounts are once again being monitored by my Vista PC, and the program hasn’t crashed yet. Then I tried to sync my Blackberry with Outlook using the RIM Desktop Manager software (an application almost as poorly written as Outlook itself), and the whole house of cards came crashing down. Somehow, whatever I’d just done absolutely ruined the underlying Intellisync process, and resulted in an error that merely said “Function OpenFolder failed” with no further explanation. A quick web search resulted in nothing of value, and the sync process refused to restore my calendar and contacts from the device. The synchronization log files state only that Internal Error #4238 occurred, and that the translation of contacts failed. I Bing’d up a post on the Blackberry Forums that instructed me to delete my Intellisync folder to restore my synchronization abilities.

After following the instructions and recreating my sync profile within Desktop Manager, everything worked as expected, and my contacts and calendar were restored to Outlook. Needless to say, this entire enterprise was far more painful than I felt it should be, and only time will tell if I’ve actually fixed the crash problem, or if it will resurface in a couple of days. Regardless, I will be exploring alternatives with renewed interest. There are plenty of other email/calendar managers out there including Mozilla’s Thunderbird, which I use for my small business and absolutely love. Unfortunately, Blackberry sync is high on my list of requirements from an email client, and so far, Outlook is the only client that can do that reliably without writing a bunch of intermediary code. As a part of the Linux Experiment, I will be looking into the Barry project, which is promising, but seems to be Linux-only.

Stupid Outlook.

The Snap, Crackle, and Pop of Windows Vista Audio

September 1st, 2009

In a previous post, I complained that my Windows Vista x64 machine was suffering from audio that popped, clicked, and sounded like it was, for lack of a better term, ‘losing frames.’ At the time, I had looked around the ‘net some, and tried a few different drivers for my on-board sound card. The problem seemed to get better for awhile, but steadily worsened again to the point where I considered purchasing a new sound card, something that I haven’t done since 1998.

Tonight I took a deeper look down the tubes, and found this forum post that seemed to suggest that the problem was actually with the way nVidia’s 8800GT drivers access system memory when the Vista machine in question is host to more than 2GB of RAM. Following the suggestions in the thread, I headed over to the nVidia website and picked up the latest copy of their drivers (March 2009).

After the installation and a reboot, everything seems to be working just fine, with perfectly clear audio from multiple applications, and none of the annoying popping and clicking sounds that were driving me crazy before.

Of iPhones, Blackberries, and Opera Mini

August 22nd, 2009

A good friend of mine recently picked up an iPhone 3G, and I have to say that it is an absolutely gorgeous device. I’ve been a smart phone user since picking up a Blackberry Curve 8310 about a year ago, and would never even consider returning to a ‘normal’ phone. While I love my Blackberry, but I must admit that the iPhone really ups the ante in a couple of respects.

For me, the most obvious difference in the two phones is the web browsing experience. The iPhone runs Safari, built on top of Webkit, and pages actually look and act like the real thing. The Blackberry, on the other hand, uses a proprietary browser built on Java (like everything else on the platform), and provides a distinctly last-generation experience. While his pages look like the real thing, mine are often butchered, missing functionality, and hard to read.

Wanting an iPhone but not willing to pay $700 for the device, and being limited by rumours of Roger’s new 2 year minimum hardware upgrade policy, I decided to take a shot at improving my mobile experience with Opera Mini for the Blackberry instead. I had heard excellent things about this app from a friend, and while Opera only claims about 2% of the browser market, I’ve read some excellent reviews, and encountered a few rabid fans.

After downloading and installing the browser, I was immediately greeted by the best web experience that I’ve ever had on a mobile device (short of the iPhone of course). Pages render beautifully, Javascript runs fast, and the entire page is displayed on load. You can choose the section of the page that you’re interested in, and the browser zooms in to an appropriate size for reading. While browsing the page, each link is highlighted so that you can easily see where they are, and the view automatically shifts and resizes so that the entirety of the current paragraph is in view. The user can choose to download low, medium, or high quality copies of images depending on the speed of their connection (I chose low because my phone does not support 3G or WiFi), so even image-heavy pages look great while loading fast.

While using the browser, the idea that gets into your head is that it was designed by people who had actually used mobile browsers for a long period of time, and thought really hard about features that made sense on a low-bandwidth connection with a smallish screen. As an example, I often bookmark RSS feeds from sites that I like to follow, because it’s faster to browse the headlines and then click through to interesting stories than to load up each page individually on my 2G connection. Opera Mini places a link to a listing of all RSS feeds available from a particular site in the top corner of every page, making it fast and easy to add new pages to my bookmarks list.

The only complaint that I have so far about this program is that it seems to eat the keypress events from my system keys, meaning that I can’t raise or lower the volume or pause my music while simultaneously browsing the web. No matter, as a quick tap on the end key minimizes the app, after which the keys work as expected.

All in all, I am incredibly impressed with this application and highly reccomend it to anybody looking to add a little love to their mobile browsing experience without shelling out for a steve-phone just yet.

Givin’ Props

August 10th, 2009

A couple of guys that I went to school with have gone on to live the dream – they’ve started their own video game company, called Shadowcat Productions. I just wanted to take a moment to draw some attention to one of their current projects, an arcade game called Battleshape. As the name would suggest, it’s very Geometry Wars, but with a few new twists and some really cool effects. Check it out under “Other Projects” and “Battleshape”