As it turns out, I've already missed one of the milestones I set in my last post about my forum app rewrite. Instead of beating myself up over it, I'm just going to pat myself on the back for working on it at all, since this is something I've been wanting to do for, uh, more than two years.
So far, there are about 4,700 lines of code, and 42% of that is test code. I know that I don't write particularly good unit tests, because I just can't always burden myself to think about them the way I should. I test too much or too little. Since so much of testing exercises data CRUD, I can say that it does serve me well in that it's easy to add or remove something and no immediately if I break it. Especially in an application like this, so much of it is data access.
So what do I have so far? Membership, Roles and Profile are good to go with custom providers. They're not fully implemented, because there are certain things that, frankly, I don't need and I'm not going to waste time on them just to say that I fully implemented a provider. I'm not even supporting anonymous profiles. I also have fairly extensive security logging in place, which is something I've wanted for a long time. I think it's up to like 14 events that are captured now.
Next up, probably before I bang out the meaty parts of forums, topics and posts, I want to figure out a clever way to encapsulate permissions. I've never done that very well. You know, based on your roles, what you can read, post to, edit, etc.
The 37signals guys would probably freak out that I haven't done any UI yet. :) Granted, I already have a pretty good idea of what my UI should look like. But for all of their crazy "getting real" talk, I can identify with a lot of what they say. Some of it just isn't practical in real, large-scale software development teams, but there's truth to a lot of those beliefs as well. For example, I agree that meetings are toxic, as they say. On the other hand, I think worrying about scalability later is a bad idea, because if you get it really wrong up front, you're looking at a total rewrite later, and who has time for that?
I hope I can continue to have this level of energy and wrap this project by the end of the summer.
As I've said before, sales of my book have generally sucked. Again, great reviews and lots of e-mail from people who really liked it, but A-W did an incredibly shitty job marketing it (putting ASP.NET 2.0 on the cover would've been a good start).
While I haven't been making the kind of progress I'd like on my forum app, it has been on my mind a lot. Back in January I decided it was time for a regular salary job after two years of consulting, not for any financial reason, but to be in a place where my brain would be challenged and I wasn't the smartest person in the room. That part is going fairly well, but naturally with all of that time accounted for, I haven't spent a lot of time on my stuff.
And as time has rolled on, the code in the old version gets more and more scary to me. It's three years old, and it's pretty bad. I wouldn't say I didn't know what I was doing back then, but I certainly know a little better now (until three years from now). To rebuild my existing communities around it, I need to rewrite it, and that's going well, just really slow. I set up various milestones that I want to hit, with deadlines, and already I've missed one.
The problem is that I can't motivate myself to see these things as high priority when the pay-off isn't clear. I mean, having more scaleable sites with more manageable code is an obvious incentive, but things have been (barely) doing just fine for those three years. And on top of that, I give the code away. Ah, the good old days of ASP where I sold it for $175 per license! People wonder why I don't get the whole open-source scene. I like to get paid for what I do!
In any case, right now I miss the days of sitting on my deck and editing my book in the middle of July. Those were good times, and I'm constantly reminded of them on nice days like today. But I need to get back to working for The Man... for now...
I made a post on my personal blog about my MacBook Pro hacking to cool it off.
It's surprising how hot it got when running Visual Studio of all things. I mean, VS spends a lot of time basically just editing text, but it's weird how the CPU tends to spike as you're working. Weird.
The week before last I spent some quality time in the field with my HVX200 doing simple ENG work, and a little bit of editing. I didn't have any time to really play with settings or experiment. It was a media event to preview a new amusement ride. These are my impressions.
First of all, P2 rules. When you're trying to get stuff online quickly, I can't imagine a better way to record than using P2. Tape is dead. I bought the camera in part because I needed something quality to shoot HD for the Web (yeah, you could call me an early adopter), and it didn't make sense to me to buy a DVX100 at this point.
The camera itself performed as expected, and like a pro camera. Save for the non-shoulder-mounted nature of the camera, it did everything I expected. I have an Azden AZ-200UPR receiver and a Vidled that I had mounted, and both worked great with the camera, provided it was on the tripod. It gets a little heavy with that stuff if you have to go without.
We shot interviews in 480/30p anamorphic, so we had plenty of space with a pair of 4 gig cards. There is little reason to go to a higher resolution for talking heads. I was doing the interviewing, so the guy I had shooting for me made some mistakes hear and there, especially with focus, but nothing was totally unusable. The overcast skies made for some goofy white balance at times too, but again, it wasn't horrible. Using Compressor to squash the video to H.264 worked as expected, and without issue. The images were a little on the soft side.
I shot some stuff in 720p as well of the amusement ride. First I tried 24pn, figuring I'd go for that "film" look, and I knew immediately that was a bad idea. All of the tips and suggestions you read on this forum about capturing fast horizontal motion became evident, and having no experience in that area, it looked pretty bad. I tried again doing 60p, and it looked fabulous, even using the camera handheld. This compressed really well to H.264, but needless to say, it won't playback at speed on most computers.
In every case, I was unhappy with the black levels in the compressed video, especially when viewed on a Windows machine. That's something I need to figure out. Playing back on an actual HD monitor via Final Cut Pro's full-screen function, it's still not great.
I'm not at all happy with a lot of the images I shot, but I don't blame the camera, I blame myself for not spending the time with it I should have. It reminds me of the crap I used to shoot when I first got an SLR camera. With time, I'm sure I'll figure this out too. As is the case with most things I do, I can't really learn unless I can apply what I'm learning. I have to fail at something worthwhile, I can't just come up with some artificial situation and work from there. :)
Getting this stuff to DVD was a lot more work than I expected too. Exporting cuts out of FCP sequences did not preserve the aspect ratio. Using default settings in Compressor, we didn't get good quality MPEG-2 for the DVD we wanted to send to the park either. Ultimately, I ended up telling Compressor that it was 4:3 instead of 16:9, so it wouldn't cut the resolution down to 720x404. Even then, it was coming out as 640x480, which someone in the Apple forum assured me was still 720x480 internally to QuickTime. Even more weird was the way it treated the 720p stuff when I wanted to compress it for DVD. I ended up having resize it first to an uncompressed Animation movie at 720x480, then compress that to MPEG-2. Going without the intermediate step introduced all kinds of interlacing artifacts that I couldn't account for.
So overall it was a chance to do some experimentation, and as is the case with most first attempts, the results weren't great. You can see the product of some of this experimentation here:
And yes, I know the images aren't great. :)
I found this little utility for remapping the keyboard on the MacBook when you're in Windows:
It works pretty well, and maps the little enter key to a right-click, and the fn key makes the arrow key functions work. The UI is pretty bad, but if I can figure out how to map the F12 key to a Windows delete, I'll be happy.