Analyze and fix what ails your music files with MP3 Diags

Chances are you sometimes come across an MP3 file that won’t play properly or does something quirky in your favorite music player. You can try ripping or downloading the file again, or you can fix the problem yourself with MP3 Diags. This utility has two main goals: See what’s inside MP3 files and identify errors and potential issues, and change MP3 files to conform to standards and contain all the useful information they are supposed to contain.

Ever wonder why a picture or lyrics are shown when playing some files but not when playing others, or why the song duration is wrong, or why some files sound much louder than others? MP3 Diags can help. You can also employ it on collections of tens of thousands of file to discover up front what might be wrong with them. After an initial scan, which can take a long time, the program loads quickly with complete information about the MP3 files.

Romanian developer Marian Ciobanu began writing MP3 Diags in 2008 after he tried several utilities to solve the problems in his MP3 collection, and found they all came up short. After a year’s work, he says, “I had something that was almost good enough for me.” He decided to publish it as open source software not only to give something back to the open source community, but also “to show that well-supported and well-documented open source projects can be created.” He also wanted to see what people would think about his unusual approach to GUI design. And it didn’t hurt that the project gave him something to show people who asked about his software coding and project management experience.

MP3 Diags is unusually well-documented for an open source project – by design. Ciobanu says, “The thing about documentation is that it’s not ‘cool’ so nobody wants to do it, especially if they don’t get paid. Some projects need documentation more than others; MP3 Diags would be pretty hard to use effectively without it. Even so, judging by some questions and suggestions I’ve gotten, I’d say that most people don’t read much of the documentation, so in a way it feels like a waste of time, but I’m not sorry that I’ve done it, because the people who read it benefited from it. Complete, updated documentation makes a project look more professional, and can increase the number of users and improve their experience with the project. Another benefit is that as you’re trying to explain what you are doing and why, you may identify ways to improve your project. And after you’ve done several pages, it becomes easier to write the rest.”

The project is coded in C++ using Qt 4 for the user interface. “For serialization I used Boost, for its well-known quality and availability on many platforms. KDevelop 3.5 is the IDE – it seemed like ‘the way to create Qt 4 applications.’ It is pretty solid and still far better than KDevelop 4 for what I need.”

Ciobanu says enhancements in future releases will depend a lot on feedback from the user base, and the time he has available. “Now I have a job, so I don’t have that much time, but I could find some if there seems to be a need. However, this is a quite complete product (it does pretty much all I want), so maybe it shouldn’t be changed much. In the end it’s mostly about the users. If they make a good case that something should be added or done differently, it’s quite likely to happen. The plan is to keep 1.0.x as the stable release for probably the rest of this year, making new versions quickly after crash fixes, as often as needed. During this time 1.1 will be more of a playground, with users being encouraged to keep using 1.0 unless they really need something from 1.1. One thing that 1.1 might get is internationalization; I might switch to using a library that will allow this to be done.”

Ciobanu would welcome help in the testing area, to identify what makes the program crash or perform incorrectly. “I get reports of bugs that I can’t reproduce on my system. To make matters worse, 80% of those who report bugs don’t reply to any of my questions, and as a result many times the bug remains unfixed until somebody else reports it again and is more willing to provide details. Of course, if somebody wants to join the project and make significant improvements, they’d probably be welcome too.” The best ways to get in touch are through the project’s forums or bug/feature tracker.

Turn XForms into betterFORMs for your site

betterFORM is a full implementation of the W3C XForms 1.1 standard. XForms became a recommendation in October and is described as “the next generation forms language for the Web.” As an embedded XML language, it is typically used in conjunction with XHTML. XForms has a Model View Controller architecture and allows datatyping and complex validations and calculations, and has a full action and event model.

As a server-side platform, betterFORM generates full, highly dynamic AJAX web applications from XHTML/XForms input documents without coding JavaScript or Java, as is typically necessary with other tools.

If your applications already use XML, XForms and betterFORM are a natural fit. Together they provide a powerful, fast way to develop single-page applications that can load data, process it in complex ways, and submit it to various endpoints. Forms can access any data source through standard protocols such as http, file, smtp, and others. betterFORM also has a pluggable connector interface that makes it easy to add other protocols if you need to.

betterFORM developers Lars Windauer and Joern Turner say XForms compliance is currently between 95 and 98% depending on the browser used; Chrome 4+5, Safari 4, IE 7+, and Firefox 3+ are currently supported. “Other browsers might work too but are not actively tested.”

The most recent release of betterFORM, which came out earlier this month, contains a unique feature that allows it to work with dynamic subforms that are loaded at runtime. The feature is implemented as a small extension to the standard, and it allows the software to build more complex interfaces that can’t be created statically.

Windauer and Turner built betterFORM after “wandering for years in XForms land. We gathered a lot of experience with a former implementation called Chiba, but we decided to make a fresh start building on top of that experience.

betterFORM implements the core XForms processor in Java, running on the server side, feeding browser clients with update information which is applied to the client DOM via JavaScript. It employs XSLT for the transformation of XForms into HTML+JavaScript. To provide attractive, accessible, and consistent user interfaces, betterFORM uses the Dojo Toolkit. Also involved in XForms are XPath, XML Schema, and CSS for styling and layout.

The developers host the project on SourceForge.net, as they have done with other projects since 2001. “We like sf.net for the quick project creation and the source control and web features. I always liked the statistics feature to gain feedback about the adoption of the software. And of course as one of the biggest attractors in open source it is a prominent place to put your software; many people come along to look for solutions.”

Windauer and Turner plan to make at least two major releases a year and several minor ones to implement important fixes or improvements. “We welcome contributors. We can create branches for external developers which will be re-integrated when stable. People with good skills in JavaScript and Dojo are highly welcome to expand our palette of controls. And for the core processor implementation, Java developers with good skills can help us with the implementation of XForms features.” Developers interested in contributing can contact the developers via the project’s mailing list or by direct mail.

What’s coming up in those future releases? Turner says, “As a forms language the attractiveness of the user interface has a major impact on the acceptance of the software. We will continue to integrate new controls such as trees, grids, timelines, and a whole bunch of derivatives of the existing controls, such as masked inputs and currency and numerical controls, and also improve layout containers to simplify the life of page authors. As XForms itself continues to evolve as a standard we will work on implementing new features that come up.”

If sudoku has you puzzled, turn to HoDoKu

A search for “sudoku” on SourceForge.net yields more than 300 projects, so why use HoDoKu to generate, solve, and analyze sudoku puzzles? Creator Bernhard Hobiger gives three good reasons: the number of techniques the software employs, the ability to create several solutions for one puzzle, and the application’s scalable GUI.

Hobiger elaborates: “Over the years sudoku players have developed a large array of techniques to exclude possible candidates from cells. HoDoKu supports more than 90 techniques, more than any other software I know. You can search for all implemented techniques at any given state during solving and display them graphically.

“Several solutions: You can change the solution path, create new solution paths, and compare them. This is something I have never found in another tool.

“Scalable GUI: That was the main reason I started the whole project. Many helper programs have two or three predefined display sizes, and most of them are simply too small for modern large monitors. With HoDoKu you can make the puzzle area as large as you want.”

One of the most useful features of version 2.0, which was released this month, is the training mode. Select Mode -> Learning… from the menu, choose a technique, and create a new puzzle. The program then displays the puzzle in a state where the selected technique is applicable. Advanced users can use the backdoor searcher for creating shorter and more elegant solutions.

Hobiger says he started working on HoDoKu about three years ago, “when a friend introduced me to sudoku. In the beginning I just wanted to write a small tool for myself, but it soon became a bit of an obsession. I have been a teacher for the last 10 years after working as programmer and project team leader in the industry. Although I love teaching, one problem is that you never have a ‘product’ that is really finished and deployed. So I decided to make HoDoKu my product.

“I wrote the software in Java to make it platform-independent, using NetBeans as IDE. I use Launch4J to create an executable file for Windows, wix and WixEdit for the Windows installer, and BrowserLauncher for accessing the user guide on the Net – all SourceForge projects.”

From the beginning Hobiger planned to release HoDoKu as open source software. “SourceForge was always the number one open source site for me, so naturally I put it up there. I can create a web page and make releases without having to think about administration, and without costs, which is really great.”

The developer is still improving the software. “A few techniques are still missing, the puzzle creation should be enhanced (creating puzzles with predefined shapes for example), and users have asked for more printing options. Since I can only work on HoDoKu in my spare time I can’t say exactly when the next release will be available, but I plan to create new releases about every half year in the future.

“It would be cool to port parts of the GUI over to mobile platforms (iPhone and Android come to mind) but I personally don’t have enough time to do that myself. If anybody is interested in doing it (or at least helping with it), I would be glad to get an e-mail.”

WordPress Themes