Tuesday, May 31, 2005
The quote's from the Playboy interview with President Jimmy Carter while he was in offer. I can't remember whom he was talking about, but here's what I've got lust in my heart about. Now all I need to do is get a huge gig or win the lottery. (BTW, Carter didn't use that exact phrase in his interview, but the title phrase has pretty much become the psuedo-standard. [Link is worksafe for that page only.])
Monday, May 30, 2005
James Avery and Alex Lowe both have thoughtful notes on what Memorial Day's really about. Grilling and relaxing in the back yard is a great thing to do on Memorial Day, but take a moment, please, to keep in mind those whose sacrifices have kept tyrants, fascists, and despots at bay. My family's been kept safe by everyday Joes and Janes struggling in far off lands to improve the lives of strangers they've never met in a land they most likely hadn't read much about. War's not glorious, except to those naieve and far behind the lines. War is blood, tears, shit, missing limbs, missing friends and fathers, innocent children dead in the street as collateral damage. War is men and women standing in front of a stone wall on the Mall searching for the names of their fallen comrades. Still these amazing troops get their jobs done, sacrificing more than most of us will ever understand in order that our nation continues its wonderful, creaky, flawed role as a shining beacon to those wanting a better life. By far the best words I've ever heard to describe the importance of what these men and women do comes from the Arborath declaration where in 1320 a group of Scottish barons gathered to draft a letter to Pope John XXII asking for his support of the Scottish independence war. The declaration concluded "for it is not for glory, riches or honours that we fight, but for freedom alone, that no man of worth yields up, save with his life”. AFTERTHOUGHT: I should also add that most in the front lines fight for something few others away from the lines understand: they fight for their comrade next to them in the foxhole or trench. Read Ambrose's Citizen Soldier or watch Band of Brothers and you might get an idea what that bond's like. Those who never served, or those of us who served only in peacetime, can't truely understand the depth and intensity of that bond.
Check out John Scalzi's thoughts on Revenge of the Sith. Scalzi's got some terrific thoughts on Lucas' impact on filmmaking, merchandizing, CGI, sound, and a host of other matters. Scalzi hits hard the many problems with episodes I-III, but not in a snarky way. There's also some interesting thoughts on the future of the Star Wars juggernaut, including this terrific set of sentances finishing off Scalzi's post: "Lucas, who I think is well pleased to finally wash his hands of the Star Wars universe, is likely to have minimal involvement. That means there's an excellent chance some good writers and decent directors will creep back into the Star Wars universe and make it finally live up to its potential. A new hope, indeed."
John Scalzi's got a terrific post on how the publishing/writing business is changing, at least by his line of reasoning. According to Scalzi, revenue streams won't be primarily from selling printed matter, they'll be from ancillary lines such as blog ads, material sold from an author's site, etc. Regarding publishers and editors, as General Shinseki said, "If you don't like change, you're going to like irrelevance even less."
Friday, May 27, 2005
Anybody else have odd issues with MS's Anti-Spyware? I've felt it's been dragging down system performance, so I've been trying to run with it disabled in order to get some subjective comparisons. Right-click on the taskbar icon, select "Shutdown". A dialog appears with dire warnings that my system will be suceptible to spyware attacks and may even do something more horrific. [What, like register itself as a Howard Dean supporter? -- ed.] Fine. Click "Yes" to confirm that I know what I'm doing (supposedly). The little icon goes away and everything looks fine and runs just ducky. Until... Some hours later, I notice Anti-Spyware's icon is back in the taskbar. Hmmm... I had no notification it was starting back up, nor can I find any preferences or options which would explain to me why this is happening. This has happened several times on both of my systems. Software that starts up on its own and sucks up resources even when you've told it to stay gone. Wouldn't that be considered, well, SPYWARE??? I need to caveat this with the note that I've not done much checking into MSAS's configuration, nor have I even looked to see if there's an online forum or blog where I can go for more info on it. What, you want me to actually do some research before ranting? Hah!
Thursday, May 26, 2005
Tom Peters has a terrific post on giving great presentations. There's a link to a PowerPoint slideshow in his post with 59 points on how to consistently make great pitches. You absolutely need to know how to effectively communicate your ideas and goals, even if you never give a pitch to a group larger than your five member development team. The two most important points to me are #15: "No more than THREE key points! Come at them in several different ways." and #17: "Slides: NO CLUTTER!!!!!!!!!!!!!!!!!!!!! (no wee print/ charts/graphs)" If you can only remember two things on how to form your next presentation/pitch/briefing, remember these two. I've sat through too many briefings and presentations where the speaker hadn't thought out a clear story -- we were overloaded with far too many important points. Worse yet are the folks who think that more graphics == more clarity. Bullpuckey. The only thing you're doing is showing that you didn't take enough time to distill your point or issue down to the essence. Even worse, your audience may think you're trying to pull a smoke and mirrors act by splattering crap all over the screen. As Glenn Reynolds would say, read the whole thing.
Wednesday, May 25, 2005
Rico Mariani has a good post on statements "so obvious as to be uninteresting." How often have you run across marketing blabber BS which fits this bill? How about poorly-worded requirements? (OK, so you XP fanatics will just refactor the requirement.) Oh yeah, the rest of his post on performance analysis is pretty damned useful too. But I still dig the peanut butter sandwich part.
having three boxes in the front hallway with parts for my new computer. And not being able to put the toy together until I pass the first test for my MCSD. I'm forcing myself to wait until the afternoon of 6 June to start putting pieces together. Maybe I'd best not even open boxes to RTFM yet. The horror. For those interested, I've got an ASUS P4P800-E motherboard, P4 3.4E GHz (Prescott socket 478), 2GB RAM (1GB modules from Crucial), a 300GB Seagate Barracuda S-ATA 7200RPM drive, and an ATI Radeon 9800Pro video card. All that's going in an Antec Solution 1650 minitower case with TAC (Thermally Advanced Chassis) with a side vent right over the heat-producing monstrous processor. I still need to pick up a Plextor PX-716 DVD+-RW drive and a KVM switch to flip between my existing system. The Radeon 9800 supports dual monitors, but I'm forcing myself to wait for a second monitor until I get a gig and a paycheck!
Monday, May 23, 2005
Are you confused about the numerous variants of Visual Studio 2005 and how it fits in with MSDN subscriptions? Check out these two posts from Rob Caron: A Hitchhiker's Guide to Visual Studio 2005 Team System, Part I A Hitchhiker’s Guide to Visual Studio 2005 Team System, Part II There are a lot of changes coming about, and Rob's posts do a great job of explaining them. Lots of purty pictures make it more clearer for dumb folks like me. Bottom line? Get an MSDN subscription now if you don't already have one. (Like me.) (Via dasBlonde)
Sunday, May 22, 2005
A friend passed this on to me some time ago. It's a great way for linking CruiseControl's automated build cycle to a terrific visual feedback system. Some folks have a bit too much spare time on their hands. (But I'd love to put this together!)
Friday, May 20, 2005
I stumbled across a great tool for generating PDF files from Office documents: GhostWord. This handy front end for GhostScript installs itself as a button in Word, Excel, Access, and PowerPoint. Click the button and you'll get a simple dialog. A couple sanity checks, one button and Poof! you've got a PDF file. You'll need GhostScript 6.0 or higher, plus a PostScript printer driver. Note that I say driver, not a PostScript printer. Install the recommended driver (HP Color LaserJet 4500) and select "File" as its connection port. I tried one simple resume Word document with moderate formatting, one basic PowerPoint, and one moderately complex Word document with an odd-sized paper setting and a few graphics. GhostWord worked terrific in all cases. Best of all, it's FREE.
Wednesday, May 18, 2005
Tuesday, May 17, 2005
I spent part of yesterday and much of today fooling around with getting my LLC's website up and running. The graphics and colors are still quite rough, but hey, it's an iterative process. Boy, there's nothing like trying to do something fancy with CSS to make you learn CSS. There are still some rough band-aids on the styling, but I am fairly pleased with the general layout. I still need to re-read sections of Meyer's Cascading Style Sheets: The Definitive Guide, 2nd Edition, particularly the details of how text flows. I'm not happy with the h1 and h2 blocks not resizing, but I couldn't figure out what I changed from when they were working. Rat farts. I'll dope it out soon. I'm also not happy with some of the duplicated properties I've got scattered throughout the sheet, particularly those dealing with block and border sizes. I wish there was some way to declare constants and reference those values in the properties themselves. This is a bit too much like the awful "magic number" issue which crops up in far too much software code. The rose graphic is an initial cut from a friend who's a real artist. I'm looking forward to seeing what her final work is. I'm paying her in home roasted coffee; she and her husband both seem very pleased with the barter deal -- and I'm sure I'm getting the best out of the deal by far.
Friday, May 13, 2005
Jean Tessier's got a good list of books he's read with short, sweet reviews. It looks like there are some listed which are worth reading. He's also created an open source project which sounds pretty dang interesting: Dependency Finder. It's in Java, but I wonder if there's a .NET port or something similar around. Note to self: Worth looking at later. (From a post at Yahoo's Test Driven Development group.)
Woo hoo! The Ohio Secretary of State's office just confirmed my paperwork has been approved. I'm now officially the owner of Iterative Rose Solutions, LLC. I've even got a logo, an idea I had a long time ago brought to life by a friend who actually does art stuff for a living. The piece is still evolving, but it's supposed to show a rose emerging in an iterative fashion. Clever, no. Y'know, "owner" just doesn't have the right ring to it. Maybe my title should be "Supreme Ruler", or "President for Life". Got a name, got a logo, got a biz plan. Now I just gots to get a gig, and I'm working on that!
Thursday, May 12, 2005
I haven't posted anything in the last couple days simply because it's been a madhouse. I've been dashing about doing the usual FrazzledDad chores of running my daughter around, chasing my son around, chasing the cats around, etc., but I've also been spinning up something big in my life: a single-member limited liability corporation. Yes, it's true: I'm now a small businessman. I'm going down this path simply because I think it offers me the best chance to get part-time work from home over the next 15 or so months. I think it also offers me a terrific vehicle to complete certifications and perhaps more education. Paperwork for registering the LLC went off in the mail Wednesday afternoon. I'm hoping to hear something back in the next few days -- I had to expedite things because of another possible Big Event which I can't talk about quite yet. (Dave Donaldson's not the only one who can be mysterious. Heh.) I've also been hitting my study material fairly hard. The Transcender tests have been spanking me nastily on everything relating to databases (DataSets, DataViews, Commands, etc.), but I haven't even gotten that far in my books. Attempts at linking ADO.NET and .NET's SQL stuff to my past experience with JDBC and Oracle/Sybase/MySQL will only go so far... Overall, I'm fairly pleased with my progress, especially since the eight yards of mulch in my driveway are almost gone. Amazing how long it takes to get a couple wheelbarrows of mulch moved when you've got a ten-month-old in a baby backpack and a 4.83 year old running around your feet and wanting a ride in the wheelbarrow every time you move it.
Tuesday, May 10, 2005
If you're going to write APIs, then you ought to take care as to how you're doing your naming. Go back and read McConnell, Scott Meyers, or any other good author and see how they talk about having constistent naming styles across your public accessors. Consider then, a couple disconnects in the .NET Framework:
- Form. Activated vs. Form.Deactivate (Tense disconnect)
- Form.Load vs. Form.Closing (Tense disconnect)
- Array.Length vs. ArrayList.Count (Noun disconnect)
Having problems getting Firefox's middlemouse functionality to work like you want? Check your mouse software's configuration. I had my Logitech's mouse button set to "Double-Click", rather than "Middle Button". I'd been living with that annoyance for longer than I care to admit...
Cyrus's Blather has a great post on why C#'s "using" construct is such a terrific thing. Good in-depth discussion with some pitfalls and recommendations, especially for remaining in compliance with .NET and FxCop guidelines.
Monday, May 09, 2005
From Grey's Anatomy, the ABC television show about intern docs at a Seattle hospital: the Buffseeds' Sparkle Me (EP). Good alt rock music, great vocals. (BTW, most all the music in Grey's Anatomy is good stuff. You can read music listings at the show's homepage.) From Austin City Limits, always a terrific source for good music I'd never have found otherwise: Jason Mraz's Waiting for my Rocket. Mraz talked about his music being like Brunswick stew: a little of this, a little of that. It's a serious mishmash of everything from rap to Bob Marley to Appalachian. The guy's got an amazing voice and does neat things with the meter of his vocals. (Obviously, I'm no music major. Sue me if you can't figure out what I'm trying to say, other than I think it's wicked cool music.) From old memories: The Outlaws' Green Grass and High Tides. This is, to me, by far the best southern rock song ever. Freebird sucks. Big Time. It's recycled bong water dreck. Green Grass and High Tides, however, is killer stuff. Guaranteed to get you pumped up, or your pulse wasn't active in the first place.
More from Scott Hansleman's list of what great developers should know: "Describe the difference between Interface-oriented, Object-oriented and Aspect-oriented programming." Aspect-oriented programming looks at how many components or pieces of a system might need to interact. The intersections of these pieces are what are important in AOP. "Crosscutting" is a slice across several units, all of which interact during some operation. The article Discussing aspects of AOP in Communications of the ACM, Volume 44, Number 10 (2001) shows an example of a drawing editor with point and line elements. If the drawing is moved, both point and line elements need to update. A crosscut hits these elements for this event. Other examples might include logging or exception handling which hit several different layers in a system. (Viji Sarathy, Aspect Orienting .NET Components ) Sarathy's article shows using attributes to "dynamically alter the manner in which the code executes", thereby causing events to be fired during runtime when a particular method, field or property is accessed. Interface-oriented programming is a contract-based approach. Nether side of the interface cares how the other does its work, only that the two sides can communicate via an agreed-upon contract. WSDL-based web services are the prime example of this. Object-Oriented programming is based on abstraction, encapsulation (data hiding), polymorphism and inheritance. Classes implement these concepts to build objects controlling or implementing a system. Abstraction allows loose coupling between components by providing a layer between objects so that one object isn't concerned with how the other implements its business rules. (Interfaces, layers) Great stuff when you want to isolate parts of the system so they can be swapped out without killing the rest of the sytsem. Encapsulation allows abstraction to work by hiding details of a class's implementation from calling classes. (Public vs. private fields) Inheritance enables base (parent) classes to have common functionality defined in it and passed down to child classes. A Shape class might have a field for color which is inherited by child classes of Square or Circle type. Polymorphism enables implementation of same-named public fields, allowing different classes to perform different actions on the same call - rendering a Square or Circle object differently in a graphic program, even though they might both be subclassed from a base Shape class. (Overriding)
Sunday, May 08, 2005
This recipe was inspired by something I've had at the wonderful Winds Cafe in nearby Yellow Springs. The Winds' recipe is based on a Spanish Tapas and is served with loads of garlic toast. I loved it so much I had to play around and see if I could come up with something similar. I use frozen shrimp in this simply because I live in Dayton, Ohio, smack in the American midwest. Think you can find high-quality, fresh shrimp here? Hah! I use Rainbow extra-large raw, peeled shrimp and am actually very happy with them. Note: Measurements in this recipe (as with most of mine!) are off the cuff. A swag. An approximation. A ballpark estimate. A guestimation. Doesn't matter and don't wig out about it. SHRIMP IN GARLIC HERB OIL 3 - 4 c. oil. (See note) 5 large cloves garlic, peeled and sliced 2 springs rosemary 4 strips orange rind (peel only, no white pith) 1 tsp peppercorns hefty pinch red pepper flakes ~10oz peeled, deveined raw shrimp
- Use a heavy, tall pot or pan. I use an All-Clad 1qt. sauce pan which is tall and narrow. Add the oil, filling no more than 1/3 tall and place over medium-high heat.
- Add the garlic cloves, rosemary, orange rind, peppercorns and red pepper flakes. (Adding these in while the oil's cool means the maximum flavor will get extracted as the oil heats up.
- Wait a few minutes until the oil's moderately hot -- the garlic and other additions should be bubbling nicely.
- Carefully drop in a handful or so of shrimp. Best bet is to use a spider basket or slotted spoon to carefully lower the shrimp into the oil. If using frozen shrimp, raise the heat up to high for a bit to keep the oil's temperature level.
- Cook frozen shrimp for 3 - 5 minutes until thawed and cooked through. Check for a nice pink color and test one of the shrimp for doneness. (Darn, testing the food.) I've never done this with fresh shrimp, but I'd imagine they'd only need to cook for 2 - 3 minutes.
- Remove from the oil when done and set aside. Raise the heat again if needed. Continue cooking the shrimp in batches.
- When all batches are complete, return all to the pan to reheat the entire set. Scoop all the shrimp into a bowl, along with all the garlic and herbs from the oil. Drizzle a hefty amount of the oil over the top of the shrimp.
- Serve with crostini, toast, or just plain. Make sure to try some of the garlic -- it's altered considerably during the cooking and turns quite sweet and delicious.
Saturday, May 07, 2005
Yesterday I bought and installed the MCSD study pack from Transcender. It's not cheap, but I used a couple Transcender modules years ago when working through my MCSE and I thought they were worth the money. The content seems good, and there are a passle of options for narrowing down topics, handy for focusing on weak areas. The flashcard interface is a bit clunky, requiring too many mouse actions to get from one card to another. I'd rather everything was hotkeyed so I could just blast through the cards like the Flash. The reporting's nice, showing a breakdown of the scores in each area. I took a self-assesment for test 70-316, developing apps in C#, and was pleased at my results. I'm not ready for the real test yet, but I'm not too far away. I've been a bit wigged out at how large a mountain I had to climb moving into the .NET world. This self-assesment eased those fears quite a bit. My OO knowledge, database/SQL experience, and other programming fundamentals were all of use in the test. There were also two RTFQ tricks. One I caught, one was a head-slapper during review. I remember a couple tricky RTFQ items during my MCSE tests; this was just a good reminder that one needs to carefully read and understand the problem before answering. Kind of like real software development, no? IAC, it looks like the Transcender tests will be a good tool for me.
In a previous post, I complained about Eliot Spitzer's spyware suit, ranting about government intrusion where it might not be warranted. Self independence, action and responsibility! was my mantra. Jerry Pournell's column in the June issue of Dr. Dobb's Journal (not yet online) made me rethink my stance on adware/spyware/malware. [Good Lord, rethinking your stance! What's next? A "Vote for Dean" bumpersticker? -- ed.] Pournell, if you don't read his columns, isn't exactly a computer user novice. He's also very careful about how he has his security set up and how he surfs the Web. The short version of the story is that he spent a lot of time recovering his system after hitting a website that installed all kinds of crushing crap on his PC. A heck of an article and, as I said, one that made me rethink my stance on just how bad this stuff can be. I still don't like Spitzer, though, so there. Thbbbt. Good resources pointed out by Pournell in his article:
- PC Hell. No, really. Lots of info on removing various nasty viruses, adware, etc. from your system. WinTools is the particular problem Pournell got smacked with.
- HiJackThis. Lists all the add-ons, buttons and startup items added to your system; allows you to inspect and remove items.
- Microsoft's Anti-Spyware beta. I've heard plenty about this, but haven't yet used it -- but it's downloading right now. You have to validate that you're using "genuine Microsoft Windows", maybe Microsoft's version of spyware???
Thursday, May 05, 2005
From the NUnit mailing list, an announcement about FxCop4NUnit, a set of custom FXCop rules for verifying general unit test guidelines and the NUnit framework. I haven't checked this out yet, but it sounds very, very promising. Check out the project page or the project's Wiki.
Wednesday, May 04, 2005
We had a terrific kickoff meeting today for the Dayton .NET Developers Group, hosted at GDITA's Tech Day. We had 16 folks show up to hear Brian Prince from Quick Solutions, Inc. give a great talk on web apps in Whidbey. His presentation went very well (a couple hangups from VS.NET 2005 Beta 2 aside), and I think we had some great interest from the attendees. I was pretty dang nervous that we'd only have four or six folks show up after all my legwork, so I was very happy to see the room moderately full! I also had several good contacts for publicising the group. I'm hoping to continue getting good exposure for the group via several IT community organizations here in Dayton. I've got some numeric goals in mind for membership and attendance in the next year. I set the bar high for myself, partially to force me to get other folks involved. All the effort I put in for today paid off, I think. Now I need to notch back a bit in order to refocus on my studies. While I've been productive in chasing down some new knowledge, I've still got a lot of work to do before I'm ready to sit down for my first test. Drew Robbins, the regional Microsoft Developer Evangelist, told me something I already knew but was ignoring: "Make the appointment to take the test. That's the best motivator you'll have."
Tuesday, May 03, 2005
Bill Wagner writes both about cutting back on blog reading and getting more out of books. He speaks of too much blog content being not having enough detail, lacking editorial review, and having too low a signal to noise ratio. He says he's cutting his blogroll down to 50 from over 200 feeds in order to cut out things like posts on Hitchhikers Guide to the Galaxy. I'm not particularly bothered by "off topic" posts on blogs. First, using the title of the post, I delete 95% of what I get from SlashDot -- but the other 5% is great stuff to me. Secondly, I do on occasion find very useful pieces of information. Eric Gunnerson's blog pointed me to a great place to find information on headphones as well as the terrific book Take Back Your Life!, a great organizational guide for effectively using Outlook to organize yourself. (I wonder if Wagner's complaint about Hitchhiker was from Gunnerson's posts about the movie...) Perhaps more important are Wagner's thoughts about low detail and technical errors. I've never thought of blogs as having the answers to all my questions, nor are they my sole source of material when searching for a solution to a problem. I tend to use several sources to cross-check potential answers or solutions. Blogs are one source, Safari Books Online another. Regardless of the source, the real cross-check is testing out whatever I've found. Bet I didn't make Wagner's cut if I was on his blogroll in the first place. He probably didn't like my Pepper Vodka Chicken recipe post. Heh.
Sunday, May 01, 2005
Here's a list of previous posts covering topics from Scott Hansleman's list of things every great developer ought to know. Aspect vs. Interface vs. Object Oriented Programming Listener Processes & TCP Ports PIDs & Troubleshooting With Them Strong Versus Weak Typing DLLs & EXEs Memory & Processes Services and Executables Threads vs. Processes Initial kickoff post
More from Scott Hansleman's list of what great developers should know: "What is the GAC? What problem does it solve?" The Global Assembly Cache allows multiple versions of an assembly to exist and be used side-by-side with each other. Assemblies must be strong-named, then registered against the GAC. (Side note: Strongly-named assemblies stored outside the GAC require validation each time they're loaded. GAC-registered strongly-named assemblies only get validated when they're installed, so there's a performance gain by using the GAC.) According to Serviced Component Example from the .NET Framework Developer's Guide, assemblies for server apps must be GAC'd, along with any dependent assemblies they rely on. This is because assemblies in the CAG can't use dynamic registration. While the GAC may sound like it gets rid of the DLL Hell problem with older versions of Windows (different versions of the same-named DLL scattered all over a system, thereby wreaking more havoc than a baby loose in the cat food), the GAC merely shoves off DLL Hell issues to the developers responsible for building and deploying the software. Dependency issues can cause significant heartburn, as does the policy of how to handle publishing of version updates. Two good blog posts talk about this. The first, from Hansleman himself post from Hansleman himself talks about how developers get impacted. The second post, from Alan Shi, talks about updating GAC-registered assemblies and has some very good discussion in the comments.