Friday, March 26, 2004

I've been thinking about getting a real domain name rather than piggybacking on dnsalias.com.  marklio.com is available, but I'm not sure that's what I want.  Since my name is pretty common, MarkMiller.com and .net are taken.  Since marklio has become my online identity, that will be my default, and it would probably be useful to have.

I'm looking for suggestions though.  Whoever can impress me with the best name gets dinner on me.

posted on Friday, March 26, 2004 5:09:59 PM (Pacific Standard Time, UTC-08:00)  #    Comments [9]
 Thursday, March 25, 2004

I did a bunch of profiling at work today.  I use the Allocation Profiler for memory profiling.  It does a great job of letting you see your allocations visually in several very useful forms.  Today, I took a second look at nprof, a more CPU-oriented profiler that attempts to give you an idea of what calls are taking up the most time.  When I first looked at it almost a year ago, it was not useable at all.  Now, it seems to only have a few problems with GUI apps, and multi-threaded/multi-AppDomain projects.

The app I spend most of my time on at work is a data analysis application.  Data is loaded into the DB from a spool, so 99% of the app is “read-only” access to the DB.  This means I can optimize the heck out of it since I'm not concerned with transactions and such.  The downside is that i must optimize the heck out of it.  A common query can return millions of rows from the database, so taking even a few milliseconds out of the loop can save alot over that many iterations.

My first insight is: Don't use NUnit to run performance tests.  At first, my unit tests seemed to be a very convenient location to put performance tests.  That is a bad idea.  The perf numbers scared me to death.  It appeared as thought I had created a performance monster, and not the good kind of monster.  Turns out, NUnit goes to alot of trouble to isolate the test runs in separate AppDomains so it can unload them easily and you don't get undesired interaction.  This seems to add a great deal of overhead, probably in marshaling across the boundaries.

My second insight is: Use the Allocation Profiler (or some other profiler that lets you look at memory usage)!  I don't want to go into a big discussion on how to use it.  It's pretty straightforward.  If you interested in specifics, leave me a comment.  Remember, allocation in the CLR is cheap, but excessive garbage collection can be costly.

My last insight is: Use nprof (or another profiler that gives you CPU info).  nprof gives you a good idea of where your CPU bottlenecks are.  I was really able to get a good idea about what needed attention.

In a particular performance test of my data access layer, I was pulling over a million rows.  I was able to cut memory consumption in half, and increase my speed by a factor of 10 by using information gleaned from the profilers.  This, or course, means the code was pretty crappy.  He he, just kidding.  Like I said, it's a very tight loop, and a little goes a long way.

If you want a good reference for performance-related stuff, check out Rico Mariani's blog.  He appears to be THE Microsoft performance guy.

posted on Thursday, March 25, 2004 6:41:23 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Wednesday, March 24, 2004

With Mozilla (FireFox, Netscape, etc) becoming a more viable alternative to Internet Explorer, we've had a push for Gecko (the Mozilla rendering engine) compatibility at work, so we've been going back and redoing some things to layout correctly.

We noticed a few things that just weren't working.  When we looked at the HTML source using FireFox, I was intrigued by the fact that all my div tags had become tables.  Turns out, the ASP.NET browser capability detection identifies Gecko as a down-level browser, and gives you an Html32TextWriter rather than a regular HtmlTextWriter.  And, sure enough, digging around using the Reflector confirmed that div tags are replaced by tables when using Html32TextWriter.

This guy, has a solution.  Just thought some of you would be interested.

The browser capabilities section is extremely powerful and insulates you from alot of headaches, but the default configuration is very annoying.  Take a look at your machine.config and you'll see what I mean.

posted on Wednesday, March 24, 2004 3:14:30 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Tuesday, March 23, 2004

No, I'm not gaining weight back.  Becky called me this afternoon and said her Explorer was hard to turn, the A/C stopped working, and the battery light was on.  Pretty simple diagnosis; either the car had exploded, or the serpentine belt was slipping or had fallen off.

When I got home, I popped the hood, and, sure enough, the belt was quite loose.  It had slipped off of the belt tensioner.  As I pushed the belt back onto the tensioner, the tensioner pulley broke off into my hand.  The bearing had frozen, and the plastic pulley had melted from the inside out.  Whoa.

I went to the AutoZone and picked up a new tensioner and belt.  They were incredibly busy, but I was happy to be able to get the parts I needed.  Removing the old tensioner proved to be difficult, as the fan blocked all but the tiniest access to the bolt.  After noticing I had better access to both the belt and the tensioner from the bottom, I got it off and the new one on.

I'm really glad the explosion diagnosis was incorrect.

posted on Tuesday, March 23, 2004 8:38:01 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]

Over the weekend, I completed my first completely 24p (24 progressive frames per second) project.  Traditional film runs at 24p, and it's this framerate that is responsible for that “film look” that you can't quite put your finger on.

I've done several 24p projects, but always added 3:2 pulldown at the end to but back on miniDV to show.  I've also done several projects with mixed rates for a “flashback“ type effect.  This project was different in that it was completely 24p all the way to the DVD. (I've only just recently figured out the intricate MPEG flags and settings for proper 24p DVD encoding.)  It wasn't that big a deal, it was really just a for fun project that Dave and I shot last year that I finally got around to encoding to MPEG2.  Some of you have seen my NFL-films-style mockumentary, “The Road to Catathalon, 1987“, about our cats training for an athletic competition.

I have a Panasonic DVX100, which shoots in native 24p and encodes it on miniDV using an advanced pulldown technique to make removing it a lossless conversion. (DV is stuck at 60i, or 60 interlaced fields per second)  To remove this encoding, I use Maker, a deinterlacing tool with special settings for my camera.  This tool is excellent.  The latest version can even convert 60i (that all video cameras us) to 24p!  I thought several of my readers might find that particularly interesting.  I haven't tried it out with my Sony Digital 8 camera yet, but the results are supposed to be pretty good.

The guy who wrote the software runs a Digital-to-Film transfer house in town, and actually lives right down the street from me.  He also has a great book out called Shooting Digital, which has some very valuable material in it.  I recommend it highly.

I am looking at Vegas Video as an alternative to Premiere and Encore for editing and DVD creation.  It is alot cheaper, and supports a 24p editing pipeline with much fewer hassles.  Does anyone have any experience with it?  I've heard good things, especially about customer service, something that Adobe is notoriously bad with.

posted on Tuesday, March 23, 2004 9:58:49 AM (Pacific Standard Time, UTC-08:00)  #    Comments [5]
 Wednesday, March 17, 2004

All in all, I'm pleased with the outcome of our carpet cleaning.  Blackmon Mooring Steamatic came in and did 3 rooms for $99.  Since we did the 3 biggest rooms, I felt pretty good about that. They tout a no-chemical approach (from the Blackmon Mooring site):

Our hot water extraction method uses no chemicals or shampoos for several reasons: shampoos and chemicals leave a residue that actually attracts dirt meaning that your clean carpets will get dirtier faster. The hot water extraction process is recommended by top carpet manufacturers to extend the life of your carpets.

It did pretty well against general grime and dirtyness.  There were some dye-type stains that did not come out, but that's what I expected.  It took longer than advertised for the carpets to dry, so we haven't moved all the furniture back for fear that the wetness would cause more stains around the wood furniture.

The best part was that they showed up on time for the appointment, and finished all three rooms in less than an hour (They advertise 20 minutes per room).  It was very convenient, except for having to move furniture.

I did use it as an opportunity to redo all the connections and such around my entertainment center.  It's much less of a rat's nest now.  I also got the cable hooked back up so I can Tivo something while watching live television, which I disconnected due to a bad coax cable some time ago.  Becky will like that.

[UPDATE] I've gotten several search hits on this, and I wanted to be sure it reflected my long-term opinion.  After a few weeks, most of the stains magically returned.  I imagine that while the cleaning removed the dirt from the stain, that it did not dissolve whatever sticky substance was in the carpet, and it simply grabbed more dirt and the stain re-appeared.  So, one could argue that it removed the stains, but not the cause of the stain.

posted on Wednesday, March 17, 2004 8:59:57 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Tuesday, March 16, 2004

With me working at a semiconductor manufacturing facility, you might think this has to do with a particle-free, static-free environment where you've got to suit up like a ninja to get in and use special chemical-free paper and ink, etc.  But I'm not.

We're getting our carpets steam cleaned tomorrow, and I just finished moving all the furniture out of the 3 rooms we're getting done.  I have an incredible amount of crap.  It's really quite phenomenal.  So now we have three clean rooms, and the rest are stuffed to the gills with crap.

We're taking this opportunity to make a “fresh start” with layout in some of the rooms.  We may use it as an excuse to get some new furniture as well.  Dave and Jen have a really neat computer armoire that looks like a really nice piece of furniture and opens up to reveal a computer desk.  We're thinking about getting one to house a couple of the 6 or 7 computers I have strewn about the house.

Anyway, I'll let everyone know how the cleaning goes.  The carpets are pretty old and cruddy, so it should be obvious if the service is good.  Expect a full report.

posted on Tuesday, March 16, 2004 7:17:39 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Saturday, March 13, 2004

At work, we create weekly reports to let our boss know what we're doing.  The important stuff then get pushed up the chain of command so that upper management knows what we're doing.  When I first started at Motorola, I automated the system our group used so that it was a web-based app that emailed the report at the end of the week.  It went through several iterations and feature additions over the years.

Recently, after I began blogging both at home and at work, I noticed a striking similarity between blogging and entering our weekly reports.  We scrapped the old system and built one that uses the RSS syndication of our blogs to publish the weekly report.  We've used it the last several weeks and it's a fantastic hierarchical model.

This week, we began to see the real power of this approach.  We recently wrote some software to aid in embedded memory bitmapping on devices we test. I posted an image of a memory defect the software found to my bog, and it was automatically aggregated, and emailed up the chain as part of the report.

I'm trying to get management to let us clean up the report software and sell or license it because it's pretty sweet.

posted on Saturday, March 13, 2004 8:15:29 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Friday, March 12, 2004

With Becky in Fort Worth for a Chamber Winds concert, I was free to sleep on the floor.  Those who have shared an apartment, youth mission trip, or other sleep-inclusive event with me know that I slept on the floor just about my whole life until I got married.  (Although, I did sleep in a bed my last few semesters of college to get used to it)  I'm not talking about lush carpet with a thick pad either.  I've been known to find a flat rock on a camping trip and bed down right on it.  As such, I prefer a hard sleeping surface.

Last night, I decided to jump on the chance to experience that again.  Even though I didn't get all that many hours of sleep, I woke up very rested.  The problem is, Becky prefers an extremely soft surface.  I think we need to get one of those sleep number beds where you can adjust your side to the right amount of hardness...or softness...to suit you.  I've heard several endorsements from acquaintances at work.  Anyone else have experience with one of these beds?

posted on Friday, March 12, 2004 1:09:32 PM (Pacific Standard Time, UTC-08:00)  #    Comments [4]
 Thursday, March 11, 2004

I finally had some “spare” time at work today, so I re-worked the layout of our huge data analysis web site using CSS styling and layout rather than the original old skool methods we used when we first built it many years ago.  The original design was done back in about 2000, and I didn't have alot of time to do it, so I just threw it together.

I've had a fair amount of experience in the last couple of years with all-CSS layouts.  My favorite place to learn is CSSZenGarden.  Anyway, the benefits of separating content from presentation are well known, and CSS is not the only method of decoupling, so I won't really go into why I was doing it.  Although I did come to the conclusion that CSS is lacking some things that would make what I was doing much better.  Anyway, I did do some searching for some examples when I couldn't eliminate a stray pixel spacing here and there.

What I found was alot of people raving about having no tables on their site.  Personally, I think that's a little silly.  Not to say I'm not impressed by what people can do without tables, but that would be like me saying, “I built a house, but I didn't use any bricks” and expect people to be impressed.  Certainly, there are many houses built without bricks.  Very functional, beautiful, well-built houses.  But you can't build a brick house without bricks.  Most people who brag about not having any tables don't realize why they would want to banished tables other than they read someone else bragging about being table-free.

The point is not to rid the earth of the table because it's evil. Tables are perfectly fine for identifying content as being part of a table, after all, you don't replace all the images on your site with thousands of tiny DIV tags perfectly sized, colored, and positioned to replace every pixel.  That sounds silly, but I've seen people do the equivalent of that in trying to replace a table in the quest of table-less HTML.  The point is to organize the structure of the content so that it can be interpreted as simple data, and can then be “styled“ for presentation.

Well, looking back over this entry, I find it to be one of the most lame entries ever.  Oh well, I feel better having griped about that.

posted on Thursday, March 11, 2004 9:04:16 PM (Pacific Standard Time, UTC-08:00)  #    Comments [1]