Wednesday, August 16, 2006

Porting a Win32 Delphi App to .net - Part 2

When we last left our hero, he was struggling to figure out why the .net compiled engine was so damn slow. When it comes to diagnosing performance issues with an application, the smart programmer reaches for a profiler.

From the wikipedia article:
A profiler is a performance analysis tool that measures the behavior of a program as it runs, particularly the frequency and duration of function calls.

Knowing what I needed to do, I sought out the tools which would allow me to profile the library. I downloaded Microsoft's CLR Profiler (there are separate versions for .net 1.1 and 2.0). However, after installing it, I could not get it to work.

Next, I searched Google for .net profilers that support Delphi. On of the first ones I spotted was called ANTS, by Red Gate Software. It only supports .net languages, so the profiler wouldn't be able to help me with the Win32 side of our product line, but I gave it a go anyhow - and it worked beautifully and intuitively.

Finally, I investigate a profiler which would work both with our Win32 library and our future .net library. The only one which meets this criteria is AQTime, by AutomatedQA. Unfortunately, to use AQTime, you must have Administrator privileges. I only use my administrator account for system maintenance, so this was a deal breaker for me. It will also be the subject of an upcoming post on dumb-ass software development for the Windows platform.

So ANTS it was! Using the profiler results from the 15 day free demo, I was quickly able to see where a large chunk of time was being spent - and it wasn't in any code I wrote! One of the data structures in the library is a very large array, which is exposed as a property of one of our objects. It seemed as if a call to initialize this large array was occurring way too many times, since only once instance of it should have been created.

Stumped, I turned to ildasm - Microsoft's Intermediate Language DisASseMbler. It allows you to look at the byte code generated by the .net compiler, and see what the heck is going on at a much lower level. Sure enough, in one routine I saw that it was requesting seven local copies of the large array I mentioned above - each of which needed to be initialized, and copied!

Investigating further, I found the cause of the problem. Instead of using the private field names for the large array (e.g. FArray), a property (e.g. Array) with get and set methods was being called, and for some reason this resulted in local copies being created. By replacing Array with FArray, I saw the calculation time plummet from the 2+ seconds observed before, down to around 1/3 or a second.

I cut the calculation time by another 10% using targeted fixes, and then measuring the results. Since then, I've further profiled the library, tuning code most likely to benefit, and not worrying about code which has little impact on the overall time. Just this morning, I reduced they profiling the calculations again. Now, I believe I am at a point of diminishing returns, and will stop profiling and optimizing until a later time.

Next step: see if I can use the library using mono on linux!

Friday, August 11, 2006

Porting a Win32 Delphi App to .Net

I have been using Delphi since version 1.0. When Delphi first appeared on the market, it blew the doors off Visual Basic 3.0. It was a rapid application development platform which compiled code down to native machine code, and allowed the creation of all new visual components using the same Delphi environment. Delphi used a beautiful object oriented language, Turbo Pascal, which had proven itself in past Borland products. Since everything was compiled into a single EXE or DLL, you avoided the Visual Basic DLL/VBX version hell. Delphi version 2.0 brought 32 bit support, and continued dominance over VB 4.0.

And now, to the present! The company I work for provides a fairly complex loan calculation engine, which is written using Borland Delphi for the 32 bit Windows platform. Lots of numerical calculations wrapped in iterative loops, etc. Since it is a standard, 32 bit Windows DLL, we can provide many different ways for our customers to access it:
  1. The standard LoadLibrary() / GetProcAddress() win32 routines.
  2. We provide a wrapper class for those developing on the .Net platform in vb or C#.
  3. If using Java on Windows, we even provide a Java wrapper class which accesses the DLL via JNI.
  4. If using Delphi, you can link to it in code easily.
  5. We even provide a Win32 service which listens on a specified TCP/IP port to service requests from non-win32 platforms.
All this is well and good. Performance is outstanding, with a couple hundred requests per second being handled under optimal situations - and there was much rejoicing!

However, a situation has come up wherein a potential client who uses C# to develop their application has requested that we port the DLL over to the .Net platform. Why? Because one of their huge selling points is that, "Our software is pure .Net".

I won't go into my initial "WTF?" reaction, and rant against rewriting a perfectly good and accessible calculation engine just for the sake of what amounts to code related religious fanaticism. When it comes down to it, the customer asks, and we do what we can to accommodate.

With this in mind,we looked at a few possible options: rewrite it the 70K+ lines of code in C#, license our source code to the prospective customer and have them rewrite it, or investigate Delphi for .net.

We dismissed option #1 as being too time consuming for a small company, considered option 2 as sub optimal, and have for now gone with option #3. In about a week, I was able to compile a portion of our calculation engine DLL using Delphi for .Net.

And then I ran a test calculation... and waited... and waited. It took 2 seconds to complete a simple calculation which would have been done in the merest fraction of a second using the native Win32 DLL. We are talking about a performance differential of around 99%. Le ouch!

So now I need to look at profiling the .Net assembly, and try and figure out what the hell is causing the problem. The .Net platform could not be this horrible slow with numeric calculations, can it? It must b some sort of Borland.Vcl.dll .net implementation issue, right? Right!?!?!?

Gahhhhhhhhhh! If anyone has any ideas and/or suggestions, I'm ready and willing!

Tuesday, July 25, 2006

Summer Vacation Part II - Lake Shasta (cont.)

Other than camp and eat near-gourmet quality food (if I do say so myself) while at Lake Shasta, what else did we do? For each of the two full days there, we planned something different.

On our first full day in the Shasta area, we decided to visit Lake Shasta Caverns. After a brief boat ride across the Lake, and a shuttle ride up a twisting and turning path, we all delved into the natural caverns discovered above the McCloud arm of the lake.


The caverns were a good twenty degrees cooler than the outside temperature, which was quite welcome. The caves had some pretty amazing formations, which don't show up to well in the photos I took due to a distinct lack of good lighting. In total, we made out way up, down, and around 695 steps on our round trip explorations of the caverns.


No children were harmed in the taking of this picture:


The second full day found us traveling a bit North and then a bit east, to hike up and see the Middle McCloud falls.

The middle falls are around 100 ft. wide and 50 ft. tall, and quite breathtaking.

After snapping a few pictures, we made our way down to the Lower McCloud falls, and tempted fate by changing into bathing suits and braving the near pure snow-melt. I didn't have a thermometer with me, but I'd estimate the water temperature to be in the 40s - much colder than any ocean water I surf during the winter here in San Diego (with a full suit). The water was so cold that your feet felt a bit numb after a few minutes in the water. However, the weather was so beautiful that we braved the chilly temperatures and had a good time.


The next day we said our farewells to Lake Shasta, broke camp early in the morning, and continued on our journey heading further North.

(To be continued!)

Thursday, July 20, 2006

Summer Vacation Part I - Lake Shasta

Prior to this summer, our family had not driven farther than the distance from Oceanside to San Mateo, to visit my brother and his family up in the bay area. It also has been two years since our last summer vacation (camping at South Carlsbad State Beach). So, this summer we planned a long road trip from Oceanside up to Seattle , stopping at points in between.

The first leg of our journey found we five hardy travelers making our way up to Lake Shasta. From Oceanside, that is approximately a 10.5 hour trip. The kids handled it well, and we only stopped once for breakfast at 9:00 AM, around 5 hours after we left the house. Yes, those of you who are handy with numbers will quickly deduce that we left the homestead at 4:00 AM. Doing this, I can avoid the traffic in LA and the kids will go back to sleep for a while.

The drive up I-5 went well, except for a closure in LA due to who knows what. We made it up to our camp site at Shasta Lake RV Resort and Campground by 2:30, and boy was it warm! I think it was in the mid 90s as we pulled in to our site. Thankfully, the tent sites there are almost all shaded, and very spacious. So long as you were not doing much physical, the temperature wasn't too bad. The picture to the right gives a decent overall view of the campsite.

The campground had hot showers, a swimming pool, and a nice little camp store that sold ice, beer, and other life or death items. The people who worked there were polite and friendly, and I wouldn't hesitate camping there again in the future. The RV sites looked a bit close together, however.

I cooked all meals using charcoal and my two dutch ovens. We ate well, cooking dinners of stew, cornbread, dump cake, tequila lime turkey breast, home made sourdough bread, apple crisp, etc. Breakfast was also cooked, featuring: bacon, eggs, potatoes, pancakes, etc. We kept lunches simple with PB&J sandwiches. Unfortunately, I was so busy cooking that I forgot to take pictures, except for the following from breakfast one morning.


So, what did we do for the three days we were there? That'll be the subject of my next entry...

Tuesday, July 18, 2006

Torn Calf Muscle

About 4 weeks ago, the little league baseball season was wrapping up, and we held our end of the season team party at a park close by. Around 6:00 pm, after everyone had eaten their fill, we held a parents vs. kids whiffle ball game. No gloves, no helmets - just one whiffle ball and one big plastic orange bat.

After crushing the ball in my first at bat (batting opposite to try and even the odds a bit), I approached my second at bat with something resembling a smidgen of over confidence. Oh, how the proud are laid low!

I hit the pitch offered, and started down towards first. I am still unsure of the exactly what happened. All I do know is that it felt as if someone with a real baseball bat smashed my right calf muscle, and I gimped up immediately, barely making it to first on one leg, being put out at first.

I could barely walk for the next 24 hours, and things didn't start really improving for another 2 to 3 days. By the end of the week, I noticed my right foot was swollen, so I bit the bullet and made an appointment to see the doctor. After 15 minutes and a $30 co-pay, my doc cheerfully told me that I had described a text-book muscle tear, hitting the nail on the head with the "hit like a bat" description.

He massaged my calf seductively, and said that while he couldn't actually feel the tear (which was a good thing), it seemed to be fairly high up on the muscle (also a good thing). If the tear is lower, where there is less muscle to tear, then at times it is necessary to cast the lower leg. So, he said that like Woody Williams of the San Diego Padres (who tore his left calf muscle running the bases a few weeks before I did), I was on the "DL" for 4 - 6 weeks, and to try to take it easy.

Later that day I took my son to The Wave Waterpark, and stupidly tried to ride the Flow - rider wave machine, and tweaked the hell out of my calf again. Stupid me. After another 5 days of pain, it started getting better.

So here I am, roughly 4 weeks after the injury, and things are looking up. I went surfing last Thursday and today, with not too many issues. I'm taking it easy, while still trying to exercise it a bit to prevent too much muscle atrophy. Hopefully in another 2 weeks I'll be back to 100%.

Thursday, June 15, 2006

Cleveland Rocks!

Over the weekend, I attended a conference in the suburbs of scenic Cleveland, Ohio. During our stay, we saw a few of the following sights:

First up was Lake Erie (it's sort of hard to miss it as you fly over it on landing approach). We drove through Sandusky and up North to the Marblehead peninsula to get a good look at Lake Erie, the shallowest of the Great Lakes (maximum depth of 210 ft.). In the past, it has frozen completely over, allowing people and cars to traverse the lake over ice to the islands. Ice fishing is also fairly popular, or so I was told.

Thankfully, the weather was very pleasant while we were there so no cold weather gear was required! :> While on the Marblehead peninsula, we visited the Marblehead lighthouse, which is the oldest lighthouse on the US side of the Great Lakes. We managed to visit on the one day of the week it is closed (Sunday), so we had to make due looking at its exterior and watching folks catch fish nearby.

On the way back to our resort, we stopped at the Firelands winery, on the outskirts of Sandusky. For $1, we were able to sample some of the local wines and then took a self-guided tour through the winery. The wine was good enough to persuade us to purchase a bottle, so I'd easily recommend the stop to anyone.

I didn't have a chance to do any more sight seeing until our departure date, as I was busy attending seminars, presentations, and the like. However, our last stop was the best by far. We stopped at the Rock and Roll Hall of Fame and Museum for about an hour and a half, and were quite impressed. With a $20 admission price, I'm glad to say that I think the museum is worth it. A fan of rock and roll could easily spend a half day there, and a whole day isn't out of the question. Two thumbs up, definitely!

After four days away from home, I was glad to slip back into the ocean yesterday! There's just no place like home.

Tuesday, May 30, 2006

Springsuit Surf Report

Ah yes, that wonderful time of the year has come when the water warms up enough to put away the 3mm/2mm wetsuit I've been wearing for the past several months, and get back out the springsuit! The water has warmed up significantly over the last several days, and if this trend continues, I'll be able to ditch the springsuit in no time as well!

Last week, the onshore winds were extremely strong in southern CA (10-15+ knots in the afternoon), which really kills the surf. Yesterday, I woke up and noticed that the wind wasn't blowing much, and took a Memorial Day jaunt down to Oceanside Harbor. The waves weren't great, but there was some fun short period wind swell with a few occasional set waves making a rare appearance. I surfed for almost 2 hours, and the overall weather conditions were amazing. I was wearing my wetsuit, and actually felt too hot as noon approached.

During lunch today, I broke out the springsuit and headed down to D street. Another beautiful day with playful surf, and the water just felt perfect. Of course, this means that the crowds will start to increase as well... ;<

Thursday, May 11, 2006

2006 Fish Fry


Last Sunday was the annual Fish Fry - a gathering of surfers and shapers who enjoy surfing fish surfboards. A "fish" surfboard is usually shorter and wider than your usual shortboard, customarily with a swallowtail. A standard fish has two fins (or keels), although more modern designs are now popular as well, like the quad canard fins on my GH board.

As I was getting ready to paddle out, with a crowd-induced grimace on my face, Mike Miller of ppb-photos snapped a rare picture of me. Note to self - need to cut back a bit on the red trolley ale...

Monday, April 24, 2006

Thy Dungeonman 3

Ok, this post is brought to you by the fine folks at Homestarrunner.com. If you can remember the first generation graphical adventure games, then you will certainly get a kick out of Thy Dungeonman 3. While it is a parody of the old games, it is in fact a complete mini-adventure game, which I just finished in something under 10 minutes or so. Give it a spin, and relive ye olde monochrome graphics adventure.

And yes, I know that Zork I was not a graphical adventure. However, it sort of defines the genre (sans graphics, admittedly), so bugger off!

Tuesday, April 11, 2006

On Vacation

So, I decided that since I had to cut my Christmas / New Year's vacation one week short (due to work) that now seemed as good a time as any to take that week off. The weather has been improving (today was gorgeous, perfect Spring weather for San Diego), the kids are on break from school, and I could use the break from work.

Today I made a killer steak and eggs burrito breakfast, surfed and had fun with the kids at the beach, rested a bit at home, then tackled baseball practice in the afternoon. You know, I think I could seriously live like this, sans work, if you know what I mean! If only we didn't have those nagging monetary needs... ;>

So, I'll be out of the office for a few more days, and plan to enjoy all of it.

Saturday, March 25, 2006

What's Up?

Well, things have been real quiet around the blog lately because things are anything but quiet in life. Baseball and softball monopolize four out of the five work evenings, as well as Saturday. That leaves Friday night to collapse and Sunday afternoon to get done all the things that should have been done during the week.

However, it is fun watching and helping the kids play ball. The AA baseball team I am managing (the Raptors ) won our first game today, 10-9. We now have one win, one loss, and two ties (3-3 and 16-16!). Life is good.

Friday, February 24, 2006

The Launching Pad


The picture above is from Wednesday, December 21st, 2005. With the winter sun lower and to the southwest, I thought the back-lit take-off zone at Swami's was particularly beautiful. Watching the wave regularly jack up and over the reef is one of the more amazing sights on a large swell day. Posted by Picasa

Wednesday, February 22, 2006

Swami's, Big Wednesday - Dec. 21, 2005


The day after I took the picture below (at D Street), the bulk of northwest swell slammed into North San Diego county. Swami's picks up these winter NW swells exceptionally well, and the reef can hold wave sizes of triple-overhead plus... as the picture above can attest!

Friday, February 17, 2006

D Street in December


December was very good to surfers in North San Diego county. The above picture was taken on December 20, 2005 at D street in Encinitas. An alternate title for the picture I like is, "A Shoulder to Cry For". Posted by Picasa

Thursday, February 16, 2006

It's Baseball Season Again


... and our brief period of no youth sport practices and games has come to an end. Between the end of soccer (November or so) and the beginning of baseball / softball (February), Theresa and I enjoy a couple of months when we don't need to be somewhere just about every day of the work week plus Saturdays.

But baseball season is now back, and our rest is over! I am managing my son's AA team this year - the Ogden Raptors (that would be the real team web site, not our team web site). Being a manager is a bit of a handful, especially when about half of my team has never played ball before. Ay carumba!

Still, it is my sincere hope that rushing around and keeping up with the kids helps to keep us young. If you have found this to be untrue, please keep it to yourself as it's what I'm going with for the time being.

My oldest (and only) daughter is playing softball again this year, and thankfully my youngest son is too young to play any sports yet. So, we have softball practices on Monday and Wednesday. Then there are the baseball practices on Tuesday and Thursday. Games will be held on Saturdays and at least one game during the week. Oh yeah!

In all seriousness, I really do believe it keeps us (my wife and I) active. We meet lots of new people, and get to know better those we already know. I love working with the kids, almost all of whom are out there just having a good time playing a team sport. And with the cutbacks in physical education I've seen at our elementary school just over the past 5 years, it is a good way to get the kids outside and off their butts.

"Take me out to the ball game.
Take me out with the crowd.
Buy me some peanuts..."

Well, I gotta get ready for practice now! :>

Friday, February 03, 2006

How to Salvage a Subversion Screw-Up

Yesterday, one of the developers at work attempted to add approximately 14,000 files to one of our subversion (aka svn) source control repositories. The svn server itself resides on a linux box, but the interface the developer used was TortoiseSVN, a Windows explorer based interface that is pretty slick.

Anyhow, the attempted addition of 14K files caused TortoiseSVN to choke. Futhermore, actually checking out the repository with all of these files added takes almost an eternity in developer time, and also causes TortoiseSVN to choke.

So, I knew what I had to do - remove the files added in the offending transaction. Now, how do I do that?

After a bit of googling about and reading through the administration chapters of the svn book, I realized that I would have to dump the repository (minus the offending transaction), and then rebuild a new one.

Looking over Trac (our project management app that integrates nicely with svn and provides bug/ticket tracking etc.), I found that revision 688 was the culprint. Thus, after a bit of trial and error, I finally zeroed in on the following comman (executed from the bash shell on the linux box) to dump the repository as desired:

svnadmin dump [repository path] --deltas --revision 1:687 | gzip > ~/dumpfile.gz

Next, I renamed the old repository directory to [repository path].old, and created a new repository to fill back up.

Finally, the step I was waiting for - loading the new repository up with the good transactions:

gunzip -c ~/dumpfile.gz | svnadmin load [repository path]

After a few minutes of churning away, svn finally notified me that revision 687 was committed, and I am now ready to go! Woo-hoo!

Friday, January 20, 2006

The Great Pink Eye Epidemic of 2006

Ah yes... the first major infectious epidemic of 2006 to ravage through our house seems to finally be contained. I am speaking of Pink Eye, clinically known as conjunctivitis. Like a trained fictional CSI agent, let us relive the infection by winding back time in CGI generated timeline goodness:

Dec. 26, 2005: A grand time is had by all while visiting with my relatives up in Orange County. My brother's newest child (almost 1 year of age) has pink eye, so we are all careful to wash our hands after holding him, letting him jab us in the eye, etc.

January 2, 2006 (aka I-day): It seems not all of us were as careful as needed. Peter, my youngest son of 3 years, now has pink eye. I simply can not tell you in words how much fun it is to try and get the eye drops actually in his eyes. Oh joy.

I-day + 3: Jasmine (my daughter) now in infected. She handles the eye drops with aplomb, and Peter is now getting used to them. Perhaps we will contain this strain to these two?

I-day + 6: My other son, Alan has fallen to the microscopic varmints. Curses! Who will fall next? I look at my wife knowingly and realize that it is just a matter of time... Perhaps if I were to go feral and live outside with the dog I could escape becoming a victim?

I-day + 9: Mother has fallen to the ranks of the eye-terrorists! On the other hand, Peter is done with his run of the medicine. At least that's a good thing.

I-day + 11: Peter is infected again. Man, does it get any better than this?

I-day + 13: I guess it does! Now we are all infected, but that means we are all also on medication.

I've been on my meds for almost four days now, and it looks as if the quarantine has been lifted on our residence by the CDC. Everyone but me has finished their run of eye drops, and it looks as if we will win this battle in the next few days. HOO-RA!

Monday, January 09, 2006

First Surf Report of 2006

subtitled, "It's About Damn Time"
The holidays have come and gone, and we are all still alive. That's always a good thing, I think you'll agree. I need to post up a few pictures from the holidays, but they are at home and I am at work, so those will have to wait for another update.

During the end of December and the beginning of January, I took 7 days off. During this time, I did many things having absolutely nothing to do with surfing. I got a lot of stuff done, saw a movie with my kids, and enjoyed sleeping in for those seven days - but I didn't surf one day.

So, when I came back to work last week and got back into the water with big surf, you can guess the consequences. As I get older, I find that taking time off from surfing will make me pay dearly when next I go in. And pay dearly indeed, I did.

On Thursday and Friday of last week, I paddled against the oncoming waves, duckdiving and paddling until my arms resembled wet vermicelli noodles. After 20 minutes of paddling both days, I consoled myself with this hollow platitude: "Well, at least I got some exercise".

Today (Monday) was the beginning of a new week. Over the weekend I performed minor ding repair surgery on my beautiful turbo canard quad fish (shaped by Gary Hanel), and decided to take her out for a spin today.

Victory at last! The smaller waves and increased endurance from my previous two outings allowed me to get out there and catch a few fun waves. My arms are now tired, but in a good tired kind of way, if you know what I mean. I'm not back to my pre-vacation form, but I can feel myself getting there!

Here's hoping you had a wonderful Christmas, and a safe and prosperous New Year to come.

Tuesday, December 20, 2005

Monday Surf Report - "Humbled"

I haven't posted to the blog in a while, since I've been extremely busy at work (getting ready for my vacation) and at home (getting ready for the holidays). Furthermore, a plague descended upon our family over the last week, infecting all but the strongest of our clan (my wife - mothers aren't allowed to get sick, I guess).

So feeling moderately better yesterday (Monday), which means I was spewing out a relatively smaller amount of chunky green phlegm balls, I decided to try and hit the water again and get a few waves under my wetsuit. Great idea - poor timing!

All this week we have some good sized swell coming to our coast, with some truly gargantuan waves forecasted for tomorrow (Wednesday). So, not being in the best paddling shape, I tried to paddle out through the crushing beach break. After 20 minutes of fighting against mother nature, my arms were spent. Humbled for the first time in I don't know how long, I paddled back into shore.

I'm getting ready to go and give it another shot today, before the monster swell arrives tomorrow. Tomorrow will be a picture day, I'm thinking...

Tuesday, December 06, 2005

Accessing Password Protected Remote Calendars with Evolution

You can access a password protected remote calendar from evolution by specifying a url in the following format:

webcal://username:password@servername.com/path to calendar/calendar.ics

Unfortunately, as of evolution 2.4, the remote calendars are still read-only. :<

Monday, November 28, 2005

Thanksgiving Day Play

We made it through another Thanksgiving at our house, which is always preceded by lots of cleaning up; and allows followed by another round of lots of cleaning up. In between those two bookends of frenzied sanitation goodness falls the cooking, the family, and the eating.

We didn't have as many people at our house this year, since two of my wife's siblings were out of town celebrating the holiday elsewhere this year. However, those who did come had a good time and enjoyed eachother's company - especially the kids.

After dinner, with a renewed source of energy, the kids went wild with a round of dodgeball in the kitchen, followed up with some wrestling (complete with Hulk Hands) in the living room.

It was exhausting, but well worth the effort (as these family gatherings always are). The day after Thanksgiving, we headed on over to my parents' house to celebrate Thanksgiving with them, as well as my brother's family (down from the bay area), my aunt, and my grandmother.

Tuesday, November 22, 2005

Tour of (Jury) Duty Over

A month or so ago, I received the dreaded jury summons in the mail. Last Thursday, my time was up and I went in to the Vista courthouse to do my civic duty. Apparently, that consists mainly of sitting around for long periods of time, doing nada.

As luck would have it, there were two people I knew who also were summoned for the same day - a neighbor and a friend whom I hadn't seen in quite some time. We three talked for most of the morning, sharing stories of our life, catching up with what had happened recently, etc. All in all, it was the best experience I've had in a jury lounge so far.

Shortly before lunch, they informed all of us that they had one other trial that needed a pool of potential jurors for the day, and that if our name was not on the list, then we were excused for the day. As a lack of luck would have it, my name was on the list, as was my friend's. My neighbor, on the other had, got a free pass to head back home. Lucky bastige!

So we went to lunch, then came back and waited some more in the jury lounge. I had hoped that they would get started right after lunch (1:30), but we were not seated in the court room until 3:30. Ug! I was potential juror number 45 out of 47, so I just listened to the judge and attorney while they focused on the first 20 jurors.

If you have never gone through the process, I will tell you that it is somewhat interesting. The potential jurors are asked general questions by the judge (usually involving answering some kind of questionnaire), followed up by questions from both attorneys. In general, these questions are asked to see if any of the people should be dismissed for cause. That is, dismissed because the person would not be able to provide an equal footing for both the prosecution and defense. Since this case involved the alleged molestation of a child, you can imagine that there were several people who fell in this category.

Thursday ended with only the first 20 people questioned, so court was adjourned for the day and we were told to report back on Monday (the Vista courthouse is closed on Fridays) for further selection.

So I went back Monday, and the process continued. After dismissals for cause, the prosecution and defense also have a set number of dismissals that they can use at their own discretion, for any reason whatsoever. Perhaps it's a gut feeling, or it has something to do with the answers given to the questions posed previously.

By the time they arrived at the back row (where I was seated) which held potential jurors 41 through 47, the 12 seats had been filled with only the two alternated juror seats remaining open. Then, I was finally questioned (with the others), and as expected - I was not selected. Have a sister who is a DDA in superior court downtown probably has something to do with it, plus my uncle who is a city attorney for Anaheim, and an aunt who is an ex-probation officer. That, and the fact that I have three young children probably doesn't endear me to the defense in the least.

Perhaps someday I'll be able to sit on a jury and see what the process is like in one of those twelve seats. Until then, I'll just keep waiting, and waiting, and waiting...

Wednesday, November 09, 2005

Kung Fu F-U

Two post in one day? Preposterous! This one will be quick - a humorous link to amuse you when you have a spare minute or two. I give you...

Kung Fu F-U

That is all.

Soccer Tournament Results

Saturday saw us at the soccer field once again, as my daughter's team was scheduled to play in the semi-finals for her division (girls under 10). The first game was at 2:45, and everyone showed up ready to play.

After a bit of warming up, and a quick pep-talk by yours truly, the girls took the field and dominated the game from start to finish. The final score was 2 - nil, shutting out the opposition for the fourth time in five games. Not too shabby!

Winning the semifinal game entitled us to play for the championship, under the lights at 6:00 that evening. We knew the final game was going to be very tough, as it was against a team which had gone through the season undefeated. During the regular season, we lost to them 5 - 2, and during the tournament the previous weekend, we lost to them 1 - nil.

As it turns out, the fewest goals this team scored during the season was five, and the most goals scored against them were two - by us. So we prepared as best we could, and the game began.

The girls played their hearts out. At halftime, we were knotted up at a scoreless tie, thinking that the championship might come down to penalty kicks. Unfortunately, during the second half the other team managed to score a goal when our goalie didn't see the ball coming due to so many people being in front of the box. The game ended with a score of 1 - nil.

After the game, we had our team party, and all of us coaches congratulated the girls on an amazing final game, as well as stupendous play over the entire tournament. As a relatively young team (the champions had five girls older than our oldest player), they showed a lot of skill, determination and drive. They were awesome!

And to crow a bit about my daughter - let's just say that she was a bulldog on defense. A damn quick bulldog at that. Several times she rode the other team's best player to the sidelines, and then took the ball away from her. A few times she streaked back to save a goal from across the field, saving at least two goals. Way to go Jazzy!


So the regular season is over, and now we have two weeks of all-star practices and an all-star tournament on the 19th of November.

Friday, November 04, 2005

Weekly Wrap Up with Weekend Preview

I've been busy this week, and have been neglecting updates here due to business at work and home I ask you, my humble readers, for forgiveness and hope that this simple missive is counted as a small token of my affection. Blah, blah, blah...

So, what've I been up to as of late?

1. I am finally upgrading the PCs at work. Last week, I spec'd out a nice system to replace our old AMD Athlon 800 boxes: AMD Athlon-64 3200; nforce 4 motherboard with build in sound, networking, video, sata2; 1 gigabyte of ram; a 250 GB western digital sata2 hard drive; a DVD-+R/RW drive; and a nice compact Antec case and power supply. I ordered all the stuff from newegg.com (a very good on-line place to order computer stuff - the deliver quickly and are good with returns as well).

The systems went together extremely easily, and I had no problems except for with one motherboard (bad on-board network controller - put in a spare PCI NIC that I had, and all was well). The real pain in the arse is getting the systems set up for the users.
I installed Windows XP on them, with OpenOffice.org (a great, free office suite), Mozilla Firefox and Thunderbird (web browser and email client), Picasa (picture viewer), plus a few other useful tools.

On the boxes that the development team uses, I also had to install our development platform, which is somewhat time consuming. Since it is a newer version that we were using, it also is a bit nerve wracking as you need to migrate your projects to the new platform, which can either being extremely easy or entirely frustrating.

2. At home, we are wrapping up the soccer season this Saturday with my daughter's team seeded number two as we head into the semi-finals. The girls are excited, and if they make it to the finals, then they get to play at 6:00 pm under the lights that evening. W00t!

3. I have also been tasked by my boss to take a look into the J2EE platform, as we have a client which would like us to give them a quote on some J2EE work. I have limited experience with Java, and J2EE is a voluminous subject, so I am trying to put all the pieces together. Between which application server to use, to enterprise java beans (EJBs), to Java server pages (JSPs) - I have a whole lot of ground to cover in a relatively short period of time. Yeah, me! :S

Anyhow, that should wrap it up for today. Hope you all have a great weekend!

Friday, October 21, 2005

Soccer Season

Well, I've certainly been busy as of late. Not that it totally excuses the lack of updates here, but it is certainly a factor. Soccer season is winding down, with this Saturday holding the final regular season games for both of my children that play. My oldest daughter's team (Shockwave) has a playoff tournament the following Saturday, so we are gearing up for those games in practice now.


Between the two of them, we have soccer practice on Monday, Tuesday and Thursday nights, with two games on Saturday. What's going to happen when my youngest wants to play? Ack!


Anyhow, hope you enjoyed these pictures from the season.

Wednesday, October 05, 2005

Recipe: Amazingly Good Steaks at Home


It has been quite a while since I last posted anything, so in an effort to make it up to any and all visitors, I thought I'd give you my recipe for cooking great steaks at home.

What you'll need:
  • A large skillet that can be placed in a very hot oven, as well as on the stove top. I prefer cast-iron as it holds heat incredibly well, and they are nigh indestructible. I have a few Lodge skillets, and use the big 12-inch one for most of my cooking.
  • Some good steaks. For this method, I'd recommend the following types of steaks: New York strip, rib eye, filet. If you don't know much about buying meat, take a look here. You'll have difficulty finding prime (the best) grades of meat at the grocery store, but they will usually carry choice (good) for a it more than select (ok) grades. Boneless cuts will cook a bit more evenly than those with the bone in.
  • Some kosher salt.
  • Olive oil.
  • Red wine (I usually use a cabernet).
Directions:
  1. Remove steaks from their packaging one or two days ahead of time. Place them on a rack inside a dish with high sides, and cover with plastic wrap. Cut several holes in the plastic wrap to facilitate air flow. This will remove some of the excess water from the meat, concentrating the flavors a bit more. If you don't have the time (or just need a steak right now, you can skip this step).
  2. Take the steaks out of the fridge, and place them on the counter.
  3. Put your cast iron skillet in the over, and set the oven to 500 degrees Fahrenheit.
  4. Take the steaks and sprinkle kosher salt over both sides. Pat the salt into the meat using your hands.
  5. Rub some olive oil on both sides of each stake (not too much - maybe a teaspoon for each steak).
  6. After the oven and fan have reached the temperature of a small fusion reaction, remove the pan from the oven (keeping the oven on at 500) and place the pan on your stove. Crank up the burner to full.
  7. Carefully place your steaks in the pan, being careful to not move them once they have been placed in the pan. Set a time for two minutes.
  8. When the timer goes off, flip the steaks over and set the time for one minute and 30 seconds. If the steaks stick a bit when you flip them over, don't worry about it.
  9. After the timer goes off again, turn off the burner and slide the skillet with your steaks into the oven.
  10. Set the timer as appropriate to the desired "doneness" of the meat, which will probably vary a bit from oven to oven, the thickness of the steaks, as well as the type of pan used. I generally use six minutes for one inch steaks, which gets the meat to a nice medium.
  11. After the timer has gone off, turn the oven off and remove the pan from the oven, placing it back on the burner. Remove the steaks from the pan, and cover them lightly with aluminum foil.
  12. Turn the burner under the pan on medium, and deglaze the pan with the red wine (use about 1 cup or so). Scrape the bottom of the pan off using a spatula, to ensure all the good meat bits get incorporated. This will produce a strongly flavored sauce which complements the meat nicely, in moderation. It also cleans out the cast iron skillet quite nicely.
After that, you are ready to eat. Serve with some steamed green beans, a baked potato, or fresh bread. A glass of cabernet will complement the meal nicely as well. I have found that using the above recipe with good cuts of meat will produce a great steak. Perhaps not as good as Ruth's Chris steakhouse (the pinacle, IMHO), but very close and better than most places which will charge you $25+ for the same steak.

Friday, September 23, 2005

Two Great Days of Surf

What a way to wrap up the week! Thursday and Friday saw some of the best waves I've ridden in quite a while roll into North San Diego county. I took an extended lunch yesterday and today, and rode some of the longest, biggest, and fastest waves on my new quad fish.

The new board performed extremely well, and I never felt under-gunned in the bigger surf, even though the board is only six feet. Today, I am sore in a way that is sooooo good.

Up in Newport Beach (which faces to the South more than the beaches here in Encinitas do), the surf was bigger and meaner. I can't wait to see some of the shots from the Wedge, which will probably be completely crazy tomorrow.

Tuesday, September 20, 2005

Worst Night's Sleep EVER!

About 11:30 pm last night, we had an unusual (for San Diego) display of mother nature's light and sound show, as thunder and lightning pounded us. Ace, our almost 10 year old black lab great dane mutt, was quite upsent with the racket and showed it by panting lightly, knocking over a bunch of stuff in the living room, etc.

The lightning came and went in about 3 waves, and I figure I may have gotten about three hours of sleep last night. Yippee-ki-yai-yai!

Hopefully I'll be able to sleep like a rock tonight, and that the thunder and lightning (while awesome), will only visit again during non-sleeping hours. Thanks you very much for you support and understanding...

Tuesday, September 06, 2005

Trip to Callaway Gardens

A few weeks ago, I went on a business trip down to Callaway Gardens, GA. I don't go on many business trips (thankfully), and this one was even more unusual as I was able to bring my wife along with me.

My wife and I haven't been away from our kids (together) for more than 12 hours, since our daughter was born about nine years ago. I knew it would be a great break for my wife, and we both thought they would have a good time being taken care of by my parents.

Walking off the plane into the air-condition free terminal (AC was broken), a wall of humid, sticky air nearly stopped us in our tracks. I haven't felt humidity like that since we were in the Florida keys after my college graduation.

The gardens themselves were gorgeous, with flora and fauna up the wazoo. Here in Southern California, we don't have many forests like the South and East does. Seeing the giant trees covered in kudzu vines, going on as far as the eye can see, is quite impressive. We also saw lots of beautiful butterflies (as the pictures illustrate), turtles, and even a doe grazing on the side of the freeway.

While it was beautiful down there, the extremely rural community next to the gardens was an eye opener as well. Downtown pine mountain consists mainly of a two block area. We went looking for a grocery store on Sunday, and were surprised to find the only one closed all day.

We had a nice time biking around the gardens, walking about downtown Pine Mountain, and just having time together. However, when our fourth and final day was up, we were more than ready to come back home. To see more of the pictures, please check out my Callaway Garden photo album.

Thursday, August 18, 2005

3 Days on My Fish

With swell scheduled to arrive on Tuesday, I took out my new 6' GH quad on Monday to get a feel for how she paddles, takes off, rides waves, etc. Went out on Tuesday and some of the swell was starting to show, but not too much (too steep for my location). Wednesday was damn fun, with some big waves and the first "outside!" moments I've had in quite some time.

Paddling my new board, I was immediately struck by the width. She's a good 2 inches wider than my thruster (19.5"), and it just felt a bit different. Even though my fish is 4" shorter, she paddled like a dream and I felt comfortable paddling quickly. Duck dives like a... duck, I guess. No problems there (easier than the 6'5" CI MSF, without a doubt).

Taking off and catching waves was comparable to my thruster. I didn't notice it beeing much easier, but I probably need a few more sessions to get dialed in on the board.

On my first wave, I tried a hard turn and dug my backside rail pretty damn deep. Lesson 1 - that thick tail will not respond the same as the thruster. Instead of stomping on the tail, I approached turns with a more "carving" approach, and things got much better. Yesterday I caught a nice left set wave and carved up and down the wave, connecting sections and looking a "drop-in foo" off the wave. I dunno if he didn't see me or if he didn't think I'd make the section, but at least he had the decency to get off the wave.

How about them turbo canard quads? I expected the board to feel a lot more skateboardy-flicky than it was. I never lost the back end on a hard bottom turn, and on steep wave faces she held like a dream.

The low entry rocker is throwing me a bit off, as I've had to "walk off the nose of the board" twice after late/steep takeoffs. Nothing major, it's just something I'll need to work on a bit.

Overall Impressions: Damn fun. I love the carving turns and speed, and didn't once feel like I had too little board. The turbo canards really seem to keep the board in line, and I've fleetingly glimpsed some of the speed of which this board is capable.

Tuesday, August 09, 2005

Mini-Vacation Day #2 - The Stoke Strikes Back


After a great Friday, I wasn't sure if Saturday could live up to the expectations of the following day, and thus slept in. We had plans to meet my uncle along with my cousin and his family down at the South Carlsbad State Beach campgrounds around 11:00, so we had a relaxing morning.

Then, it happened. Yes, it! Out of the blue, like a piano falling on your head while walking down the street (but in a good way), Sally from Moonlight Glassing called to let me know my new board was done and ready to be picked up. Woo-freaking-hoo!

We decided to leave a little bit early to swing by the moonbase on the way to the camp grounds. As we parked, I asked if the kids wanted to go in with me and see the new board. They all nodded in agreement, so we went inside to see who was there.

Mr. and Mrs. Pinliner were the only folks in the shop at this early-for-a-Saturday-morning glass shop hour (10:00 or so), and both stopped what they were doing to talk with my kids as I ogled and drooled over my new board and then wrote out a check for the balance.

The kids got a tour of the moon unit, and some Moonlight stickers as well! My kids were very impressed with it all, and many thanks go out to Peter and Sally for treating them so well! I oftentimes think that how a person treats children is a good way to see past their exterior and into their true nature. From silly questions about bubble wrap to boards heading off to Japan, they fielded them all. Again, thanks very much!

And now, onto the new board porn! As mentioned earlier, it turned out amazing. Pictures of it are scattered throughout this entry, so enjoy the views! This is probably my favorite picture of the tail end, as you can see the grass reflected in the gloss coat.

The fins are LokBox Turbo Canard Quads (aka "Speed dialers" for their reputation for some giddy-up). Here's another look at the tail end, showing all four fins.

The turbo canard quads are actually curved, and canted out at a pretty good angle. A view from the rear illustrates this better than anything else I could describe in prose.

One more shot of the tail, looking from above (including Moon froggy).

The boards was shaped by Gary Hanel (a local Encinitas shaper and calculus teacher), and looks like it will be the perfect small wave board. The dimensions on it are: 6'0" (length) x 16.5" (nose) x 21.5" (mid) x 17" (tail) x 2.75" (thickness). You can see the rocker in this profile view.

Ack! Ace (our dog) wanted to get into the action, it seems. One more try...

For now, I'm letting the board cure until such time that a decent wave is spotted here in SoCal. Hopefully that will happen sometime before the end of August!

After picking up my board, we headed down the beach to spend time with relatives (successfully avoiding the jellyfish), and later had a great BBQ dinner with friends. It just doesn't get much better than this...

Monday, August 08, 2005

Mini-Vacation, Day #1

Day 1 of my mini-vacation was Friday, and I was determined to get some surf generated stoke in my extended weekend one way or another. After going to the AM swimming lessons (see here), we went back home and loaded up the family bus to head to the beach.

With three kids, getting ready for any trip (no matter how mundane or short the duration) is an organizational task similar to that required to invade Europe on June 6, 1944. Factor in the additional stuff you need to bring to the beach (surf board, boogie boards, beach chairs, drinks, food, towels... and don't forget the munchkins!) and you can possibly understand what a herculean task this is.

We muddled through the supply and planning phase of the operation, and actually left our house. Our Destination? Oceanside Beach, near the South jetty:

I didn't bring my camera, as sand and expensive camera equipment generally don't go real well together, and I planned on doing stuff other than just shoot pictures. The picture above is from December of 2003, but the conditions weren't quite so nice.

In fact, the waves were miniscule, it was overcast with the sun in hiding and the water was extremely chilly for this time of the year. In short, it was a near perfect day for letting my two older kids try out surfing! I brought my old (from the 80s) 6 foot thruster for them to beat up. It is thick, and floats them both well.

I pushed both Alan and Jasmine into a dozen or more "waves", trying to teach them how to pop up in a somewhat smooth manner (and how to avoid going to the knees as well). Jasmine got up once or twice, and Alan seemed to nail it down extremely well.

In fact, Alan seems to have caught a mild case of the surfing bug, as he asked if we could watch one of my surf videos the day after. We sat down and watched through September Sessions, and he's ready to go charge. He's already talking about his first surfboard, and being able to turn and get in the tube. Too funny!

I think Jasmine had a great time as well, and I'm thinking she'll be a surf queen in a few years. We'll see if they both stay interested in surfing as time goes by. It is my hope that they can find the peace and solitude I enjoy while bobbing in the lineup, waiting for that next does of adrenaline delivered from 270 degrees at 14 seconds.

Thus, at the end of my mini-vacation day #1, I was already filled with surf stoke even though I didn't catch a single decent wave the entire time I was at the beach. Little did I expect it to be exceeded on Day #2...

Sunday, August 07, 2005

Summer Swim Lessons

We didn't take a family vacation this summer, instead taking a short a trip up to San Mateo for my nephew's baptism as well as a trip out to Phoenix to see my niece graduate from high school (talk about two ends of the childhood spectrum!). So, I have a few vacation days accrued, and decided to take Friday and Monday off to spend with the family before their summer ends on the 18th.

Friday morning we went to the local YMCA for swim lessons for our two youngest (Alan and Peter). Jasmine (our oldest) has completed all of the swimming courses and can pretty much swim like a fish in any pool. So I tagged along to try and get some pictures of our fish-in-training.


Alan is in the mid-level swimming class, and in fact advanced to the next level this very day. He likes his spring suit since it makes him a bit more buoyant, and hence he can actually almost float on his back! That it also prevents his lips from turning blue is an added bonus.

He's getting his back stroke down fairly well with the assistance of his teacher, and is very confident in the water.


Here he is, leaping in before his instructor is ready for him. Let's just say he is enthusiastic...


Peter is our youngest, and he breezed through the first level of swim class, and is now in the second level. He's not real thrilled about the backfloat, so we'll need to work on that a bit. Other than that, he's very comfortable in the water, and seems to enjoy it.


Here he is, warming up his synchronized swimming skills before his lesson:

And here he is with his swimming instructor, having a heck of a good time:

After an hour of enjoying the fresh water, we left the confines of the pool and headed out to the beach for some fun in the salt water. Too bad Fridays can't always be so relaxing, eh? More on my mini-vacation to follow, as time allows.