Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Jeff Makes Software

The software musings of Jeff Putz

  • OS X on Intel... it's for real

    Actually, the theory is that OS X has been running on Intel CPU's for a long time internally at Apple. But anyway, the build that went out to developers, that was supposed to be tied to special prototype machines with a DRM chip, was hacked and it's all over the Internet now.

    I watched one of the video clips someone did, where the thing boots natively on a laptop with a 1.6 GHz mobile Pentium. It loads really, really fast. I can't wait to see this thing run on actual Apple/Intel hardware next year.

    Yeah, I'll buy one. I've always loved the Apple hardware, and OS X, but being a Windows developer, it's not like I can totally switch. Give me a box that I can run Windows and OS X on, and you've sold me, especially a laptop.

  • Perhaps self-publishing is the answer

    No one is interested in picking up my next book proposal, and they all seem to have a ridiculous number of books in the pipe. A lot of them are the kind with a dozen authors that they can crank out quickly but generally aren't very good at teaching the subject matter. (I've been approached about writing on these... no thanks.)

    I had heard about it before, but forgot about LuLu.com until I heard one of the founders on This Week In Tech. There's a service that speaks my language. It may not offer the really broad distribution that book stores offer, but if you have something you really want to get out there, now you can. If I could sell a dozen or two copies a month, I'd be more than thrilled.

    I still believe in books. I'm not sure I believe that publishers are making the right decisions though on what to publish. I probably wouldn't have published my book unless it was part of a bigger strategy, a real understanding of where it fit. The publishers don't really have the expertise to sit down and look at the big picture in terms of the potential audience, then map out a strategy to give them a sensible offering. The old Wrox did this well, but obviously they made a lot of bad decisions financially.

    Does anyone have any self-publishing experience to share?

  • To delete or not to delete, that's a tough question

    I had a discussion with a "customer" (or I guess technically it's a freeloader ;)) about why the old version of POP Forums didn't allow you to delete a forum. That's a good question.

    The truth is that in terms of the database, there is a mountain of data that is eventually connected to a forum record. It has topics, which in turn has posts, favorite topics, e-mail notification, search word records, moderator associations, moderation log entries... I'm sure I'm forgetting something. That's a whole lot of relational data. Even with the database set up to cascade deletes, that's a whole lot of data. I could do it in a new thread so it didn't time out or hang up the page, but I'd hate to see what happens to a live forum in terms of performance. The biggest pool of data I have involves about 400,000 posts in a single forum, so I don't even have that big of a data pool to test against.

    Despite all of that, you can simply turn a forum off, which for end user means it's essentially not there, but I can see how someone on a shared SQL Server account might have limits and they need to blow away a particular forum.

    It might still happen... but not by the first beta.

  • Editing web.config through the configuration API is less than ideal

    While it's pretty cool that you can programmatically mess with web.config, I'm starting to feel that it's not entirely practical because of the security implications. NETWORK SERVICE needs permission to write to it, or you need to use impersonation. Regardless, this is not xcopy deployment.

    If there's a simple, streamlined way to work around this problem, I'd love to hear about it.

  • Oh my God! The sky is falling on .NET v2!

    What the hell is going on in the .NET community? By reading some blogs lately, you'd think that .NET v2 was going to suck and be a tragic mistake, based entirely on the premise that they won't fix bugs in beta 2 or won't provide feature "A" or make feature "B" the way one person or another wants.

    Has the entire community lost its mind? I mean, we do all develop software for a living, right? I have a hard enough time after weeks of requirements gathering trying to develop and deliver a product that is exactly what a hundred people want, let alone what hundreds of thousands of people want. It feels a lot like all of the VB6 people that felt kicked in the nuts because they weren't getting their way back in 2001.

    I guess this is the down side of having a very public and open beta process. On one hand, you get valuable feedback and improve the product, but on the other you get hundreds of people declaring a worst-case scenario. Then perfectly smart and rational people make it worse by spreading irrational FUD about how Microsoft won't fix whatever, or won't issue a patch or service pack, etc. I wasn't aware that so many developers had access to Crystal Ball .NET!

    The way I see it, I've spent years now with a Visual Studio that "mostly works" and put up with it. Maybe fight it is a better word. VS 2005 is like a breath of fresh air, and if there are quirks in it, or the framework or C#, I'll deal with those quirks. There comes a point where you just have to roll with it or the project will never ship. Never shipping is worse than living with quirks.

    Am I making excuses for Microsoft? Nope. I don't think they should ship crap either. But that's just it... my perspective is such that I don't see crap in the pipe. It's all relative to your perspective. I think some people have lost perspective. On a scale of "good enough" to "outstanding," I think they're a lot close to the latter than the former.

    Must get back to developing software now...

  • Does ASP.NET v2 allow you to do the "wrong" thing?

    A post today from Paul Wilson got me thinking about what the "right" thing to do is in terms of how you organize code in a Web project. One of the replies in particular implied that the allowance to put code right on the page (which you could do before anyway, without Intellisense) reinforces the old script way of doing things. I don't entirely agree.

    One of the goals of my book was to teach former script people (like me) that the world object-oriented programming was worth understanding and implementing. In thinking about the things that cause a mental block for developers in transition, clearly Visual Studio's codebehind model was one of the problems. Not only did we expect the developer to think of objects and classes (oh my!) in more of an abstract sense, but we also wanted them to think about a system of files (assemblies, codebehind, pages) that were also spread apart in an unfamiliar way. The truth is, if you fought against VS, you could do things "the old way" anyway, it was just a pain.

    Now v2 comes along, and we can comfortably put our code right there in the page. The design of an application can still be bad, just as it was in v1.x. I should know... the first port I did of POP Forums put the crap all over the place with no true reuse of code. It was a nightmare, but familiar ground for someone coming from the ASP.old world.

    PHP is huge, and it's not going away. It's easy to learn. ASP.NET, as of v2, is also a lot easier to learn. The simplicity of the physical file layout makes it easier for a beginner to get their head around what's going on. The challenge is to get them to the next level, and this is what I've been telling bloggers, authors and publishers for two years now. I feel like no one is listening. You can't start bantering about design patterns with a transitional developer before they even understand what a class is. One does not go from script person to uber-code monkey. There are interim steps. In a world where we use iterative development every day, you'd think people would get that!

    I guess what I really mean is, don't jump out there and say, "You're doing it wrong, stupid!" Tell people, "This is a better way to do it, and this is why."

  • POP Forums v8... it does exist!

    Tonight I did more meaningful work on POP Forums v8 than I did probably in the last 12 months combined. Yes, it does exist, and in terms of basic functionality, it works. It even has Membership, Role and Profile providers in place.

    I struggled in my mind for a long time about how I would build out the application. On one hand, I could be clever, OOP it to death, and wind up with something that beginners could never alter in a way to suit their own needs. That would be great for me, but not so good for the target audience. The PHP guys have been kicking our asses for years because their forums are fairly easy to hack and slash. That's what I want. The happy medium I've come up with is to build a nice rich class library, but avoid hard-coding UI into it. That means templated controls and UI glue code right in the pages, where the beginners and in-between folks are used to seeing it (and where it's perfectly acceptable in a VS/VWD 2005 world).

    Another thing I've charged myself with is really stepping away from the UI that has been around since UBB and think about how it could be better. POP Forums was the first forum to use a crude rich text editor (that's the honest truth... I searched everywhere for one that did it back in the ASP.old days). Now I want it all to make more sense in the context of human conversations. I don't even know what that means, but I'll let you know if I have any ideas.

    The project is not without its scary stuff. There was no way I was going to totally start over from scratch, so the class library did start from v7.x. Back in those days (October, 2003), I didn't even know what NUnit was, so there were no unit tests. I have written some tests, but they're crude, and mostly done to address changed stuff. I could write more tests to cover more code, but that's a huge undertaking with thousands of lines of code, and of course writing the tests after the fact taints the tests with code monkey bias.

    I don't know if the text parsing engine is 100%, but that was something I rewrote out of unit tests. That has been the bane of my existence since I first tried writing a forum back in 1999. One drastic improvement is that I also hacked apart my less than stellar rich text control and almost started over. The new one is much cleaner, works in Firefox, and is far less bulky than FreeTextBox. It does all of the basic formatting, sans fonts and colors, because as a site owner, frankly I don't want people messing up the color scheme I work so hard to make not suck. ;)

    I wish I knew when it would be done, but it's too hard to say given the day job contract I'm working right now (not to mention coaching high school volleyball). I hit a nice stride tonight, and met a few milestones I was anxious to get to.

  • Is List<T>.IndexOf() broken?

    I was messing around with a List<T> object today and found that IndexOf() never calls T's int IComparable<T>.CompareTo(T t) method. I used to do this with arrays of container objects all of the time in v1.x and it worked like a champ. Is it broken in beta 2?

    EDIT: OK... it calls it for BinarySearch(), but it gives up before getting to the end of the collection. That's still weird!