It’s been two years since I started work on Chordious 2.0, and today is the first official release.
Read more about it in the announcement blog post.
Just a quick message, I’ve been feverishly working on the next version of Chordious, and today have just announced the first “preview” build of Chordious 2 for Windows. It’s not 100% complete, but I think there’s enough there to start gathering feedback.
Find out more in the kick-off blog post: Try out the Chordious 2 Preview for Windows.
It’s here! Over a year since my first code check-in, and I’m finally ready to release Chordious 1.0.0 into the world. Need chord charts for your favorite stringed instruments? Want to make your own? Chordious helps you find chords and make customized chord diagrams for free.
It’s my first major cross-platform application, and is available now for Windows, Mac OS X, and Linux, with fancy-pants installers to boot.
Find out more at the new official Chordious website.
Last year I attended the first annual Port Townsend Ukulele Festival, and had so much fun that I jumped at the opportunity to preregister for this year. Yesterday marked the end of this year’s festival, and I thought I’d take a moment to review some of the wonderful things I’ve learned in the past few days.
The festival consisted of four sessions of ukulele workshops a day for three days, along with ad-hoc non-ukulele classes, daily open-mics, jam sessions, and two live concerts featuring the instructors. The classes were held in the various buildings at Fort Worden, and included one-day drop-in sessions for shorter topics, along with three-day classes let you really dig into particular subjects.
Besides all of the wonderful opportunities to just sit down and jam with other ukulele players (there were some 160 participants this year), I also came away with a bunch of new techniques to practice, songs to learn, and a greater appreciation for all of the music that these little instruments can make.
Of particular note this year was the acceptance and accommodation of baritone ukuleles. In fact, one of the biggest highlights for me was the positive reception to my playing of Hawaiian slack-key on my baritone uke by both the staff and other participants. (I really need to make some videos, at the very least so I can get on Humble Baritonics again.)
The other highlight was showing off Chordious, which also elicited a positive response from some of the instructors, especially those with upcoming books.
It would be impossible to list everything that happened this weekend, but here are some of my notes (grouped by class and not in any particular order):
The biggest refrain was about practice. It’s a dirty word to some, but it really is the only way you get better. Period.
I could fill up post after post with highlights from the festival, but writing about it just isn’t the same as having been there. This year there were some 160 participants with another 180 or so on the waiting-list, so rumor is that next year they’re going to try and meet the demand with two separate festivals back-to-back.
I can’t wait to register.
Mono is great for cross-platform development – maybe not so great for cross-platform deployment. In working on Chordious, a Gtk# app written entirely in MonoDevelop on an Ubuntu machine, there’s been no greater struggle than trying to find a simple “double-click” launch of Chordious on Windows.
Yes, if you stick with just the “standard” libraries and write your GUI with Windows.Forms, all an end-user has to do is double-click on your executable, and let .NET run it. But what if you don’t want that? What if your app needs to be launched by the Mono Runtime?
Realistically, the bigger hurdle is getting your end-users to install Mono in the first place – but even if you can get them past that – you’ll still need a double-click way to start your app. You’ll never convince them to start up a Mono command prompt and manually launch your app with mono.exe. And unfortunately for us, the Mono installer for Windows isn’t so nice as to add itself to the PATH, so you can’t just get away with a one-line batch file.
@echo off setlocal rem Script: StartMonoApp.cmd rem Author: Jon Thysell <firstname.lastname@example.org> rem Date: 7/15/2014 set _MonoApp=YourMonoApp.exe rem Checking for 32/64bit machine if exist "%SYSTEMROOT%\SysWOW64" ( set WOW6432=\Wow6432Node ) else ( set WOW6432= ) rem Find default Mono version set _MonoBase=HKEY_LOCAL_MACHINE\SOFTWARE%WOW6432%\Novell\Mono echo Looking for Mono registry key %_MonoBase% for /f "Tokens=2*" %%I in ('reg query "%_MonoBase%" /V "DefaultCLR" 2^>nul') do set _MonoVersion=%%J if "%_MonoVersion%" equ "" ( echo ERROR: DefaultCLR not found! goto nomono ) echo Default Mono is %_MonoVersion% rem Find the path to where that version of Mono is installed for /f "Tokens=2*" %%I in ('reg query "%_MonoBase%\%_MonoVersion%" /V "SdkInstallRoot" 2^>nul') do set _MonoPath=%%J if "%_MonoPath" neq "" ( if not exist "%_MonoPath%" ( echo ERROR: SdkInstallRoot not found! goto nomono ) ) echo Mono %_MonoVersion% installed at %_MonoPath% rem Check for the mono.exe binary if not exist "%_MonoPath%\bin\mono.exe" ( echo ERROR: mono.exe not found! goto nomono ) set PATH=%_MonoPath%\bin;%PATH% rem Launch the app pushd %~dp0 echo Launching %_MonoApp% start mono.exe %_MonoApp% %* popd goto :quit :nomono echo ERROR: Unable to find Mono. Please install Mono and try again. pause :quit endlocal
So let’s say you’ve got yourself a nice little Gtk# app named GreatMonoApp.exe. To make a double-click launcher that uses Mono, simply:
There you go! Double-click on that new batch file and your app should launch via Mono. You might see a flicker or two of command prompts, but otherwise works quite well. If something does go wrong, the command prompt will stay open with an (hopefully useful) error message for you to debug.
How does the script work? Essentially it looks for the registry keys that the Mono for Windows installer created, and uses them to find where the mono.exe binary is. Then it adds that folder to your PATH (temporarily) so it can use mono.exe to launch your app. And as mentioned before, if there’s anything wrong (can’t find the registry keys, can’t find the folder or binaries) the script will show an error.
I hope someone out there finds this as useful as I do – I’ve spent forever trying to solve this problem, with progressively more and more complicated scripts. I’ve verified that the script works on Windows XP, 7, 8, and 8.1, 32 and 64-bit.
P.S. I have no reason to believe the script won’t work on Vista, I just don’t have access to a Vista machine to test it. Sorry true believers.