Thursday, May 10, 2012

Lossless Audio Files To Play On iPhone

I know of two apps that are able to play lossless audio files on iPhone:

- FLAC Player
- GoldenEar

Each have its unique features:

FLAC Player only plays FLAC, but it includes an equalizer with lots of presets.

GoldenEar plays FLAC, APE and some other loss-less audio formats. It does not have an equalizer.

So far in my testing, GoldenEar seems to handle CUE sheet better. Given a FLAC file and a CUE sheet, it represents the FLAC file as an album (just as expected), and individual tracks are correctly recognized as songs. FLAC Player, on the other hand, does not seem to recognize CUE sheet in my testing. A FLAC file is played like a song without splitting out individual tracks.

Both apps plays FLAC well. While GoldenEar also plays APE, it did have some problem play one of the APE files in my testing. The beginning 1-2 seconds of the file sounded like skipped and broken. It seems the app is lagging on trying to process the file. The rest of the file plays fine.

Since FLAC Player seems to be more advanced in playback due to its cool equalizer, it would be a waste if the problem with CUE sheet and other loss-less formats (like APE) prevents us from using its full potential.

One way to go around CUE sheet is to extract individual track on a computer, and then copy the FLAC of individual track to FLAC Player. A free tool called CUETools can do this pretty well. Use the CUETools.exe to accomplish this.

APE files can be converted to individual FLAC tracks using foobar2000.

Tuesday, February 28, 2012

Backup Software Review Notes

I tried to find the best inexpensive backup solution.

Cobian Backup 10

Where I heard about it: It's the on the top of the best free backup programs reviewed by ghack.net (4/2009).
Cost: Free
Notes:
- Can only do mirroring on local drives (cannot mirror with FTP, for example).
- Program seems stable. Has not crashed.
- Can do full, differential, incremental backups.
- Backup can go to network drive, FTP, and internet (not tried this).
- Backup creates files and path just like the source. No use of proprietary backup set file format.

Super Flexible

Where I heard about it: wikipedia's list of file synchronization software
Cost: Trial version for 30 days free. Each license costs $50. Can install on multiple PCs, but only one may run at a time.
Notes:
- Program seems stable.

Best Sync FTP

Notes:
- Program crashed one time. UI is pretty but not stable.

Verdict: Forget about all the others and just use Cobian Backup. It is free, and it is simply the best!

Useful Software Tools

Fiddler - record http requests
Etheral - troubleshooting network issues
Revo Uninstaller - uninstall Windows programs with 'deep' leaning
Axure - software prototyping program
NetMon (Microsoft Network Monitor) - to capture network traffic







Experiencing Entity Framework - Code First

I spent most of my time lately on learning Entity Framework, and the latest and the coolest Code-First. It is a nice tool overall, but one can realize that the object-relational mapping (ORM) is a huge world, and this tool, already reached version 4.3, still has a long way to go. I hope some day version XXX can be mature enough so one does not need to keep on pounding it, and ask: "Why isn't this supported?"

This post is my attempt to document some of the road blocks that I've encountered:

Cannot use a discriminator field as part of the key.

I'm designing a system that can use external web-services, such as Facebook, Google, and etc, to authenticate a user. So a user can have multiple 'identities' (Facebook identity, Google identity, and etc). Any of these identities is enough to authenticate the user. So, I have an abstract base class called UserIdentity. I also have 2 concrete classes: FacebookUserIdentity and GoogleUserIdentity:

public abstract class UserIdentity
{
    public string UserKey { get; set; }
}

public class FacebookUserIdentity : UserIdentity
{
    public string SomeFacebookSpecificData { get; set; }
}

public class GoogleUserIdentity : UserIdentity
{
    public string SomeGoogleSpecificData { get; set; }
}

There are some fields that I can use to be the key of the entity, rather than defining another int or Guid property. UserIdentity.UserKey is a value provided by these external web-services to identify the user. It can be part of the key, but not the whole key, because different services may issue out the same UserKey. Therefore, it is logical to add the name of the service (Facebook, Google) as part of the key. This is naturally the "Discriminator" field which is used by Entity Framework to determine the type of the class. The problem is I cannot add the discriminator field as part of the key.

 
There is no way to define a unique constraint.

Many people have complained about this. They also complain that they cannot add database indexes via Entity Framework. My opinion is that defining database indexes is not the responsibility of an ORM tool. The ability of creating databases from some ORM tools (like Entity Framework) have misled people to think that they should 'define' the database in an ORM tool. An ORM tool, by definition, should provide data mapping only. So, should it support unique constraint? Yah, why not? Now I have been mislead too.


Tuesday, January 18, 2011

Super Flexible File Synchronizer - Most Versatile Backup Solution Final Pick

I was finally sick of DeltaCopy to sync files. Even with all the updates and hacks I was still not able to get it to run smoothly. So I started the journey again seeking the best software to backup my personal files. The solution that I'm looking for must satisfy the following:
  • Local backup, not some free on-line backup service on the cloud that takes weeks to create the initial dump.
  • Support Unicode file names.
  • Backup to another networked computer, not just to a local drive or a USB drive.
  • Transfer files through protocols other than the native file-sharing.
  • Runs on Windows 7.
  • Allow scheduling, and can run even without user logged in.
  • Delete file from the backup when the source file is deleted.
These are just the most important features that are useful to me. It turned out that I was looking for a "file synchronization" software, and not a "backup" software. Almost all of the backup software combines all of the source files into very few "package" files. This resembles the old tape technology. Each "package" file is like a tape. You cannot view the files in each tape easily with something like the Windows Explorer. You must perform a lengthy "restore" operation which searches linearly for the file you need. If your file is at the end of the tape then you are out of luck. The files that are backed up by a "file synchronization" software, on the other hand, are the same as the files at the source. It creates a carbon-copy of your file for redundancy. It is KISS.

OK. So I finally gotten to the point. This is a good list of file synchronization programs. I downloaded and tried a free one (OneSync), and two commercial ones (Best Sync FTP and Super Flexible) which seem to have the most features. Then I conclude the free ones are just not stable (OneSync didn't even run on my Windows 7 VM) enough for serious jobs. Both of the commercial ones satisfy all of my requirements above. However, Best Sync FTP is more expensive (about $100 for the Ultimate version on 3 computers) and it requires on-line activation. On-line activation sucks, what if I retire my server and get a new one. Does that count as 2 licenses? Super Flexible costs only about $60, and you can install it to all your computers. You only need multiple licenses when you want to run it on multiple computer simultaneously! This is the most generous software offer that I've ever seen. It is truly an amazing product.

Wednesday, October 13, 2010

Sony Vegas Movie Studio HD Platinum

Sony Vegas Movie Studio HD Platinum is my favorite video editing program on Windows. It is good for the following tasks:

- It allows me to apply cuts to videos, combine multiple videos, apply transitions in between, and render the final product in MPEG-2 which is a lossless video format that let you preserve a uncompressed video for future editing. I also notice that the final video files are much smaller than the original, which is a plus for archiving them.

The best feature of it is that it does not crash so frequently like other Windows based video editing programs. I know iMovie is probably the best for simple tasks like the ones I need. Can someone donate me a Mac?

Flash Decompiler Trillix

My goal was simple. I just want to take art works from the vast Flash applications that are available on the internet, and put them into better use... re-use. Flash Decompiler Trillix did the job right. After playing with many Flash decompiler programs Trillix was the best one because it got the job done right without crashing itself in front of my face. Trust me, most of such programs crash moments after you hit the decompile button. The source code it generated sucks, but I don't care much about the source code. I don't believe any decompiler can produce code that are readable by non-hackers like me. The version I tried was version 4.1. I'm not sure about how much the latest one has improved.