New Blog, New Site

I’ve been wanting to re-do my entire web site for quite a few months now, but just haven’t had the time. To complicate things, my server runs PHP 5 and MySQL 4.1, which used to be a requirement for me to host and develop web apps for clients. I’m not strictly tethered to either now, but don’t wish to put any effort into regressing my platform. I just don’t see the point. The reason it complicated things is because it left a slim-to-nil selection of applications to run, as most things PHP don’t support the MySQLi layer in PHP 5. So the basic option left was to rewrite or continue using my custom content system, which has worked very well for years, but has recently left me wanting to add features.

Enter Jaws. Wow. While still under heavy development, it is very promising and has a very bright future. Move over WordPress. It wins in my book simply because HEAD supports MySQLi, which means I can use my existing database server. But what I’m really impressed with is the quality of their code. They are taking advantage of the pretty decent new object model in PHP 5, and they handle their development like a real application, with version control and all, which is fairly uncommon (though I’m a bit out of the loop) with PHP applications.

So in just a couple of hours I wrote a script to port all the entries from database tables in my old content system to Jaws, and have added some links, etc, and set a cute little simple theme. Their template system is pretty nice too, so I need to finish my new design at some point, because I hate themes I didn’t create.

Since I already migrated my old blog, I felt the need to just start using Jaws for new entries. I guess over the next few weeks I’ll be moving non-blog content from the old site to this one, and get that new theme up and running.

So bottom line: I highly recommend taking a look at Jaws!

Mono Development Best Practices

After seeing much code over the past few months that uses some not-so-good practices (myself being the producer of some of the code that fell into one or two of these), today I started the Best Practices page on the Wiki.

I’d like to get a tentative list of these “best practices” going that I can then roll into a more useful, organized, and verbose list in a few weeks. I think it will be very beneficial to anyone who develops under mono, especially newcomers, to be able to glance at this list to keep from falling into these not-so-obvious traps that seem to be repeated here and there. Awareness, awareness, awareness!

So if you have an item to add to the list, please do so. If you don’t have write support on the Wiki, just mail them to me (aaron aaronbock net)… or feel free to add them as comments on this entry.

Socks are an investment in your feet

About six months ago I was shopping for some clothes, and came across this seemingly amazing bundle of socks. I was groping them for about 10 minutes in amazement before I realized, “I must have these.” Yesterday I bought four more bundles (three pair in a bundle), as the trial bundle is still holding up. Quite simply, they are just amazing socks. Made from 81% Duraspun (R) Acrylic, 17% Nylon, 1% Polyester, and 1% Lycra (R) Spandex… these socks are not ordinary socks. They mold to your feet, and provide great support and comfort. I’ve never been so happy over a sock.

The amazing socks

While more expensive than most socks, these socks far outlast traditional socks which break down over a few months. It’s been 6 months with the trial pairs, and they’re still just as sturdy as they were the day I purchased them. I now have fifteen pairs of these amazing feet jackets, and they’re worth every penny.

What’s really insane is that they come with a one year warranty.

Socks with a warranty

Nothing says “you care” to your feet like a great pair of socks.

So what are they? Why none other than New Balance DuraSpun Performance Allsport Acrylic Socks. I highly recommend them. I got them on sale too!

njb-sharp: grabbing some more market-share

libnjb is a nice library that provides support for the Creative NOMAD, Creative Zen, and Dell Juke Box (NJB) music player devices. Supporting the iPod was first priority, given they are the most popular (various reports indicate around 90% for hard-disk-based devices, and I think around 50% overall). Anyway, the Creative devices are also very popular, and I have had numerous requests from users of these devices to have them work with Banshee. It’s just a matter of time.

I began work on C# bindings for libnjb, and they are available in Mono SVN under the module njb-sharp. Currently I have only the device layer working, but I think that’s a good start for a late evening. I also add a HAL layer for detecting device events and roll that into the bindings.

The nice things about libnjb is that… well, they handle the dirty work. With libipoddevice/ipod-sharp, all the reverse engineering and device handling is done from scratch, because there was no existing “libipod.” This just means NJB support should take about a week, versus a few months.

After the bindings are finished, I’ll probably hold off on implementing them in Banshee, because I’d rather wait until I have finished the refactored Source/View core. Otherwise I’d have to re-implement the NJB source.

Now for those without an iPod or an NJB device, after NJB support is added, I’ll add generic USB mass storage audio player support. And after that… iRiver, maybe?

Banshee BOF Presentation

The Banshee presentation on Sunday went very well, and I was happily surprised to see so many in attendance. There was much participation, and some great ideas were tossed around and recorded. I’d like to thank Miguel for jumping in and lending a hand to touch buttons on the presentation hardware as its software crashed, rebooted, rolled up the screen, turned on the lights, and shut off the video. After nearly making the screen fall off the roll a few times, we finally got everything back to presentation-mode. It was hilarious.

I have posted the presentation slides to the Banshee Wiki. You will need 2.0 to view them.

Banshee Presentation Screenshot

In related news, Luis introduced me to Nathan Yergler, from Creative Commons. We talked a bit, and I now have code in entagged-sharp to identify Creative Commons licensed media. Banshee will display a CC logo when it is playing CC media, and you will be able to create selections (sorting, searching, etc.) based on CC field data (“Show me all my CC music”). Beagle will be able to use this as well, to show emblems and such in search results. Larry will be doing similar things with F-Spot, but on a more exhaustive scale, since F-Spot can essentially author content.

Oh! So during the first Summit meeting, Owen Williams did a speed talk on PenguinTV, which takes RSS and podcasting to a whole new level in terms of UI. I was pretty floored with the idea, and asked him about refactoring relevant parts of it as a Banshee Source Plugin fairly soon. He seems interested in it, so I’m really looking forward to working with him and seeing PenguinTV functionality in Banshee soon. And great job Owen on PenguinTV itself, especially considering you say it’s your first project!

I’m super-excited to finally see the Tango Project and Better Desktop go public. So much effort from those involved has gone into the specs and design, and the UI testing… it’s good to see it out in the open now. Speaking of Tango, Ryan Collier has done an excellent job this past week and at the Summit on creating Tango SVG icons for every current iPod. These will be in Banshee as soon as I get optimized bitmapped versions from Ryan :)

Banshee BOF at Summit

Due to fairly numerous requests and inquiries about Banshee and whether or not I’d be doing any kind of talk on it, I threw together a quick presentation, and would like to talk about it, some of its reusable components, where it’s going, and also maybe get into more detailed discussion on bringing ubiquitous iPod support to GNOME (Tomboy, Evolution, Nautilus, etc). I’ve penciled in a tenative BOF Time for the talk from 2:00-2:45. If I can somewhat stabilize my local copy of Banshee, I’ll of course demo it as well. See everyone in a few hours!

Parallel Mono Installs

I am finally running a sane version of SUSE 10! Having been running Beta 2 for over a month, it feels good to be running a desktop that doesn’t make me feel like my laptop is 10 years old (Nautilus was buggy and sloooooww).

For the first time I now desire to keep the distro-provided Mono stack, but need newer tools from source to do my own development. Today I set up my development environment again, and documented having parallel mono stacks on the Mono Wiki.

This is just a basic environment setup, so if anyone has some nice tweaks for their own parallel environments, please update the page!