Thursday, 07 July 2011

This will be the last post from here. New blog location will be https://lautzofdotnet.wordpress.com/

Thursday, 07 July 2011 20:18:09 (Eastern Daylight Time, UTC-04:00) | Comments [6] | #
Saturday, 01 January 2011

This almost seems to be a running joke around my house.  Just about the only time I update my company blog is this end of year review I do.  To me this is at least useful.  I’ve found that putting my thoughts for the previous year down on the proverbial paper and expressing my hopes for the new year help me get focused, at least in the short term, to start my year off right.  So here we go, I’m sure everyone (at least all two of you) are anxiously awaiting to read what I have to write.

 

Recap of 2010 (last years post)

  • I wanted to honor God each and every day.  While some days are better than others, I don’t think I’ve forgotten where my blessings flow from. 
  • I wanted to become a better father and husband.  Again, I struggle at times to be patient with my children and to honor and love my wife like she deserves, but I can say that they are the most important thing that God has given to me.  This world can take my house, my car and my dog away, but nothing can never take my family from me.  I love each one of my four children more each and every day.  My wife has become my anchor and her strength and love for me gives me the strength and will to move forward each and every day.
  • I mentioned last year that I had a tool idea that I wanted to develop.  To be honest, I don’t even remember what that tool was.  However, we have in development now a  new product that we plan to market towards our manufacturing clients (at least initially) and then expand beyond that down the road.  I hope to have something to announce on that within the next month or so.
  • Last year I read over 40 books.  This year I hit 50 so I’m quite proud of that.  Not as many work related ones as I would have liked, but nonetheless I’m happy with my achievement. 
  • At the beginning of 2010 (as I’ve done every year), I vowed to blog more.  Well that failed miserable as you can tell. 
  • I wanted to become more reliant and move towards becoming debt-free.  Don’t think I’ve made any progress there unfortunately, however circumstances have dictated that I need to focus on that more and more and my wife and I have made a commitment to strive towards those goals and have begun to make progress on that in the last quarter of 2010.
  • Finally, I wanted to work towards expanding and growing Malachi Computer.  While the first half of 2010 moved slow in this regards, we’ve really begun to make great strides in this area and have picked up a few new clients and a number of new projects in the last quarter of 2010.  We have also begun a heavy push in marketing the business and being more proactive in communicating with our existing clients and reaching out to new ones. 

 

Where do we headed in 2011? In the past I’ve mixed personal goals and business goals here on this list.  My personal goals change little from year to year, so aside from the first and primary goal of my life, my personal goals will go unstated here.

  • Again, as every year, my primary goal in life and in business is to honor God in all we do.  Conduct our business and life as if we were working for Jesus Christ.  Make my family a priority in my life, for without them, I want little else.
  • I won’t promise to blog more, but look for a new look to the Malachi Computer website and making the blog an important part of our marketing strategy.
  • I’ve also created a new blog that I’m really enjoying writing for.  Not business or computer related, but a topic of importance to me.  I look to move it from it’s current host and make an effort to have it to reach more people.
  • Continue to strive to market Malachi Computer in a number of ways.  We are solidifying the services we offer and moving to be more proactive in marketing those services to new and existing clients.  Our focus this year (and really the last quarter of 2010) was to become the solution provider for our customers.  Our customers have problems or inefficiencies and we want to be there to provide a solution for them.  We are really excited about some of things we are seeing that we can do for our clients and looking forward to expanding that out to our entire customer base and beyond.

 

2010 was not a great year, but I look and see that I still have my health, my family and I’m still working.  Perhaps business has been slow and things have been tight (but really who hasn’t been in the boat this year?), but we are still blessed beyond comprehension.  I look for 2011, with the grace of God, to be a productive and exciting year.  God bless everyone of you that may read this post and to all my friends, colleagues and clients.  May everyone of you be blessed in 2011!

Saturday, 01 January 2011 09:46:34 (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Wednesday, 08 September 2010

This was a tricky bug I ran into recently.  First a bit of back history.  I’m working on a largish win-forms MDI application.  Early on in the development I received the  exception “Error creating window handle”  when trying to show the MDI child.  I’m using a 3rd party tab control and I originally thought it was a bug in there.  I found a work-around that if I switched back to the first tab (tab index 0) before showing the new child, the error seemed to go away.  For many months, this worked fine.  Recently I went through a bit of refactoring of the application and suddenly this bug reappeared despite my hack.   Well to make  a long story short some more research ensued and I found the fix (hopefully the true fix now)…actually it is a bit of workaround as well, but we’ll just have to live with it for now.  It appears that .NET MDI applications hates a maximized child window.  To bring another tab to the front, it has to restore the active child window from the maximized state, which triggers the forms layout method to re-layout the form.  This causes a series of events (not interested in digging too deep) that basically seems to create your form twice causing a NullReference exception at some point.  More details here

 

Some code that might help me in the future:

 

    public void DisplayChild(Form child) {
      bool max = false;
      if (this.ActiveMdiChild != null && this.ActiveMdiChild.WindowState == FormWindowState.Maximized) {
        this.ActiveMdiChild.WindowState = FormWindowState.Normal;
        max = true;
      }
      child.MdiParent = this;
      child.Show();
      if (max) child.WindowState = FormWindowState.Maximized;
    }

Wednesday, 08 September 2010 12:48:57 (Eastern Daylight Time, UTC-04:00) | Comments [1] | Code#
Tuesday, 13 July 2010

I ran into a situation where I needed to know what control was gaining focus in the Leave() event of another control.  The situation I was working with is as follows;  I have a multi-line text box that when it gains focus I want a listview of potential values to popup below it.  When the textbox loses focus, the listview should be hidden.   The user should be able to click on the listview to select items to input into the textbox.  The problem was when the user clicked on the listview, the textbox lost focus and was hiding the listview. 

 

Enter the ActiveControl property on the form.  This handy property allows me to check, in the Leave() event, what is the new active control with focus.  Thus I can check to see if the textbox lost the focus to the listview control and if so, skip the hiding of it. 

 

Here we have the textbox named txtComplaint, when it gets the focus we make listView visible.

 

private void txtComplaint_Enter(object sender, System.EventArgs e)
{
  listView.Visible = true;
}

 

When the textbox loses focus we see if the ActiveControl is the listView, if not we hide it.

private void txtComplaint_Leave(object sender, System.EventArgs e)
{
  if (ActiveControl.Name != "listView")
    treeComplaint.Visible = false;
}
Tuesday, 13 July 2010 15:56:56 (Eastern Daylight Time, UTC-04:00) | Comments [0] | .NET | Code#
Wednesday, 12 May 2010

Thought it was about time I start these back up.  Simply a few links I find interesting, perhaps some short brief thoughts that don’t necessarily deserve their own post, or whatever tidbits I may find interesting.

 

  • I hate nulls, I hate checking for them, I hate having to muddy my code up testing for null.  In code that I write I try to avoid return nulls as much as possible.  John Sonmez seems to agree with me in this nice article.
  • I love enums… I love using them, I love the readability they give me… I love the aspect of limiting my choices on values so I don’t have to worry about bad values, I love not having to check for nulls…I could go on, but it seems once again John Sonmez agrees with me.  Read his article.
  • I love var….ok, that is an exaggeration….I do like it though.  Resharper suggests strongly that I use it (by default anyway), so I got in the habit of doing so.  I’m not extreme, I only use it when the type of the variable is evident from surrounding code.  Yes, here again John writes and speaks of his conversion to the var side.
  • jQuery is just cool.  The plugins people create are incredible.   Here is a cool one I found today, jQuery Circulate.   That’s one I just want to find a use for.
Wednesday, 12 May 2010 22:51:05 (Eastern Daylight Time, UTC-04:00) | Comments [1] | Midnight Snack#
Thursday, 31 December 2009

Well here I am again, if I blog nothing else each year, I have always opened the year with a post to reflect on the past year and to look ahead to next.  Let’s take a look at 2009 and see what my goals were and see how I ended up.

 

Recap of 2009 (Last Years Post)

 

  • Last year I stated I wanted to become more Christ like and to become a better father and husband.  Not sure how well I succeeded in that, guess you’ll have to ask my wife and kids.  I do know that I love my wife and kids more and more each day.  And while I falter like any human and don’t always show it like I should, my love for Christ has not lessened.
  • Last year I stated I refused to participate in a recession.  Well I think I’ve succeeded in that to a degree.  Business has been great, perhaps better this year than in recent history.  On the other hand, I’ve been more careful with my purchases and have been hesitant to make any purchases beyond the essentials.  I think this stems from the uncertainty of where our current administration is leading us more than anything.
  • I wanted to develop more tools and products – well I’ve failed miserably there.  No progress at all on this, though in the last few months I’ve come up with some ideas that might actually work (we’ve all said that haven’t we.)
  • In 2009 I wanted to read more.  In that, I have more than exceeded my expectations.  I typically read between 20-30 books each year, mostly fiction with a few non-fiction sprinkled in.   In 2009, I finished the year with 42 (if I counted correctly) So I’m quite happy.  To see the books I’ve read (as well as my buddy Todd) go to www.wordsforwords.com.
  • I vowed to blog more in 2009.  I’ve failed miserably there, other than my increased book reviews due to my reading 42 books.
  • I wanted to get my wife started in a business.   Well, that didn’t work out so well either.  The idea we had just never got out of the idea stage.  The good news is, it didn’t cost us anything and very little time was invested.
  • I wanted to continue to get in shape.  Well I failed miserably there as well.  I put on the 30 pounds that I lost in 2008 and failed to follow through with my marathon hopes.

In general however, I did enjoy 2009 much better than 2008 and it was a very good year.  Anyone who knows us knows that are children are very involved in sports.  I got to see my oldest son play varsity football as a freshman (limited Friday night time, but did start on the JV team), my second son had a good year in his first year of tackle football and his team made it to the championship game (which we lost, but we were very proud of the team), youngest son too young for sports yet, but becoming quite the little person.  Our daughter was involved in competition dance the first part of the year and did quite well and has the trophies to prove it.  We did pull her off the team this year because of the financial and time commitments was just too great for the family.

 

Looking forward to 2010 – my goals for 2010 are much the same as they are every year.

  • As always my number one priority above all else is to honor God each every day, as well as becoming the husband and father that my family needs.
  • Continue to grow and expand my business.  We have some great plans here that are already in the works.  I hope that this time next year I can come back to you and report success.
  • I do have an idea for a tool that not only would I use every day in my work, but may just be something I can make a little from.
  • I read 40+ books in 2009, I want to at least stay at that level if not exceed it.  I do have some work related  books that I want to read as well this year to expand my knowledge in my field.
  • Ok, ok….I’ll say it again.  Blog more.
  • Get myself in shape and improve my healthy lifestyle (or start living one at least)
  • I’ll get slight political here….I want to work towards bringing our nation out of the mess it is in and work towards restoring our republic.  Return our nation to one where the constitution mattered and people worked hard to achieve what they obtain…I feel we’ve moved away from what made this nation great over the last year and I want to work in my own small way to restore that.  End of my political rant.
  • I want to become more self-reliant.  What do I mean by this?  Well garden more, raising my own crops and livestock (starting with chickens – have one already), and putting more food up by canning, freezing or whatever.  Here’s a great magazine / website I’ve found with lots of great articles to help towards this goal.
  • Work towards becoming debt free.

I’m sure there are goals here that I will not succeed at or at least not to the level I may have hoped, but I always feel goals are worth having.  If you set your sights high and work towards that, then even if you only make it halfway, you’ve at least moved closer.

God bless you all and here’s hoping that you all have an awesome 2010.

Thursday, 31 December 2009 10:23:09 (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Thursday, 23 July 2009

We're meeting for Code and Coffee at the Canton Arabica tomorrow (Friday) at 7am. We trying to move quickly through Ruby Koans.

Thursday, 23 July 2009 08:49:14 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Code and Coffee#
Thursday, 18 June 2009
Code and Coffee in Canton set for Friday June 18th at 7am at the Canton Arabica.  Check out Darrell's post on getting started with Ruby Koans if you're interested in working through it with us.  Hope to see you there.

Thursday, 18 June 2009 10:56:21 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Code and Coffee#
Thursday, 04 June 2009
We have another Code and Coffee scheduled for tomorrow (6/5) at the Canton Arabica on Dressler.  We'll be there around 7 staying for about an hour or so.  Darrell, Eric and I have been working through Ruby Koans and are working through the array's section.  Please feel free to join us, you can start from the beginning and catch up to us or work on something else if you're so inclined.  If nothing else, drop by have a coffee and say hello.

Thursday, 04 June 2009 13:51:34 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Code and Coffee#
Friday, 22 May 2009
Three of us made it for Code and Coffee in Canton this morning.  Always good to see Darrell and Eric.  We're starting to work through Ruby Koans to learn the Ruby language.  Very cool stuff and a very neat way to learn a language.  Would be a good idea to see something like this for C#, VB.net or any other language for that matter.  If I had time, maybe I'd work on something for C#.

Anyway, our next get together is schedule for Friday June 5th.  Same place, same time.  We'll probably continue to work through Koans (we were working through about_arrays when we called it quits this morning).  Feel free to come jump in and join us or if there is something else you'd rater work on that's cool too.

Friday, 22 May 2009 15:21:44 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Code and Coffee#
Thursday, 21 May 2009
We're meeting for code and coffee again at Canton Arabica on Dressler in Belden at 7:00 am Friday, May 22.  Four of us there last week (Darrell Mozingo, Eric Schliffka, Josh Clark and myself).   Last time we decided we're all interested in doing some Rails.  That's way out of my comfort zone so should be fun.  I'm looking forward to this week to see what we get started.  Come out and join us!

Thursday, 21 May 2009 20:34:54 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Code and Coffee#
Friday, 08 May 2009
A few weeks back I read about the Code and Coffee meetup in the Columbus Ohio area that Jeff Blankenburg mentioned.  Sounded like a great idea to put together for those of located in the Stark County region in Northeast Ohio.  Darrell Mozingo expressed an interest in at as well and helped to get this first one organized.

What is the purpose of this?  To get together for some great coffee (or other preferred morning beverage) and do some pairing in the hopes of pushing the comfort zone and learning some new stuff.  Our hopes are to keep this very informal and casual with really no agenda, just working on some things that are interesting and helping us all grow.  Idea is to pair, so no need to bring laptop if you don't have one, just come and we'll all hopefully learn something.

First meetup for the Stark County Code and Coffee will be Friday May 15th at the Canton Arabica on Dressler in Belden.  We'll be there at 7am and try to get the old brain functioning that early.  Since everyone is busy, we'll try to keep this to about an hour so most anyone can be back to work by 8:30.  I'm an independent so there is a great possibility that I may stick around longer, so if you can too, we'll keep on working. 

Unless we come up with something better, we'll probably keep this first one to more of a meet and greet to see where everyone's interest lies.  But we'll pretty much play it by ear and just wing it.

If you're interested or have any more questions, contact either myself or Darrell.  Otherwise, we hope to see you there!

Friday, 08 May 2009 23:43:31 (Eastern Daylight Time, UTC-04:00) | Comments [1] | Code and Coffee#
Wednesday, 11 March 2009
This was an interesting problem I ran into today. Suddenly whenever trying to debug an ASP.Net project, I was getting a Page Not Found error from the browser. What gives? It worked this morning!! What had I done? I installed some windows updates that had been waiting for me while I ate lunch.

What was the problem? Well it seems that an update for windows defender caused the hosts file entry for localhost to stop working.

What was the fix? Add the line 127.0.0.1 localhost to the end of your host file....all seems well now.

Some more discussions here

Wednesday, 11 March 2009 14:35:38 (Eastern Daylight Time, UTC-04:00) | Comments [0] | .NET#
Tuesday, 13 January 2009

I don't blog much, but I do try and do a recap of my past year and set my goals for the following year.  Here we are on the 13th of January (happy 11th birthday to my daughter) already and it's high time I get to work on this post.

Recap of 2008
As always, first a few highlights from 2008.

  • While I'm still human and falter like anyone, my faith in Jesus Christ has grown stronger throughout the year.
  • Secondly, another awesome year with my wife and best friend of 16 years.
  • Thirdly, the joy that my four children bring me.  Aged 13 through 3, they keep us moving, but I wouldn't have it any other way.
  • While business wasn't quite as good as 2007, I'm still very thankful that 2008 was a success and I still am amazed that I have my own business doing something I truly love each and every day.
  • While I seemed to have more health issues this past year (I seemed to be suffering from a constant cold or something all year long and the doctor put me on blood pressure meds), I did manage to lose around 30 pounds over the last year, going from 230 to hovering around 200 now.  This came about from being sick, but also from eating healthier and doing a bit of excercise.

Looking forward to 2009
Looking forward to 2009, my goals are not much different from last year.

  • Once again I strive to become more like Christ each and every day and by doing so become a much better husband and father.
  • I refuse to participate in any recession and intend to work smarter this year.  I believe I can grow my business this year and I fully intend to do so.  I believe there is opportunity in any economic environment and believe that it is I (or any individual), not the government, that will bring the economy out of this down cycle.
  • Develop more tools and products that I can either offer up for download or perhaps sell.
  • I tend to read around 20-30 books a year (reviews blogged at www.wordsforwords.com).  This year I want to push that to 30-40.
  • Blog more here and in my other blogs (Words For Words and Lautz of Thoughts)
  • Assist my wife in getting a business idea that we have for her off the ground and moving to being profitable.
  • Continue to work on getting in shape.  Last year I started with 100 pushups program and began training for marathon (as described here).  The marathon thing fell by the wayside as winter set in, but this spring I intend to get back to it.  I may never run a marathon, but I want to work towards that goal.
  • In general, I want to just enjoy life each day and live each day to it's fullest. 

 

Tuesday, 13 January 2009 16:01:47 (Eastern Standard Time, UTC-05:00) | Comments [0] | Other#
Monday, 17 November 2008

If you are working with Sql Server Management Studio 2008 and trying to manage a database on a hosted server, you probably have run into this error when opening the Databases node in Object Explorer.

Error 916 - Server principal "userx" is not able to access the db "dbwhatever" under current security context

Searching around we see it's a known issue but no real workaround. The only clue I had of what was going on was that the reason this was happening was because of the Object Explorer Details view of the databases which gives a ton of information on each database.  Unfortunately, in a shared environment, you don't have permissions to gather this data from most databases.  The error isn't handled cleanly and I think it has something to do with a setting for the Auto_Shutdown...but regardless, the bug exists and seemingly no fix for us using shared servers.

However, I've found a workaround!!  After the error comes up, click ok through the error.  You will still get access to the system tables.  This allows you to click on the Databases node to bring up the Object Explorer Details screen.  From there you can right-click on the header to change the viewable columns.  Deselect everything except for the name field.  Refresh the view and all the tables will come up.  In a shared environment, I could care less about just about everything but the name, so I'm not really losing anything. 

Problem solved, error worked around and we don't have to wait on and hope that MS does something about the error.

Monday, 17 November 2008 11:52:02 (Eastern Standard Time, UTC-05:00) | Comments [0] | SQL Server#
Wednesday, 09 July 2008

I'm a little late to the party, but a tweep, Michael Eaton, posted some questions on how he got started in programming.  So I thought I'd finally provide my own answers.

How old were you when you started programming?  I was probably around 13 or so when I started coding.  I had gotten a second-hand Vic20 that I practically lived on.   After a year or so of that I had saved up some money and purchased a Commodore 64 with disk drive and was in absolute heaven.   About age 18 or 19 I purchased an Amiga 500 with some college loan money (I justified it to my parents since I was going into computer science).  Then at age 23 or so (around 1993 / 1994) purchased my first PC a screaming 486 66 and I paid the extra money to get the CDRom addon.

How did you get started in programming? When I had the Vic20, I loved the old Scott Adams adventures games that you purchased on cartridge.  My coding interest grew really out of a desire to hack those old adventures and write some of my own.  This grew into getting the programming magazines of the day (Compute and Compute Gazette being a few that I recall) and typing the code in from the magazine.  I grew beyond that to start writing my own games (back when you could still develop games in your garage or familiy room as was my case).  I continued in that direction with the Amiga and really wanted to develop games for a living, but I never had the artistic background and got a bit discouraged that I couldn't create the nice looking games I saw on the Amiga.

What was your first language?  I started off with Commodore Basic on the Vic20 and Commodore64 along with learning some 6052 assembly language.  Once I moved to the Amiga I learned C and went on from there.   In fact at one point I wrote C compiler/interpreter for the Commodore 64 in its Basic language....that was fun.

What was the first real program you wrote? I think the first real program I wrote was a few text adventure games on the Commodore 64.  Also I wrote a pacman clone on the Amiga as my first real C program.   One game I started writing with a buddy of mine was called Time Train and was a text adventure with some minimal graphics.  We never got really far as that was about the time girls started looking more interesting to me than computers, but I remember we spent a lot of time on the title screen (animated graphics and such) and on the first few rooms of the game.  I've thought a few times of reviving that concept, rewrite it in Inform (Infocom based development language) and submitting it to the Interactive Fiction competition.

What languages have you used since you started programming? I've used a ton of different languages over the years (some just in college so not sure if that really counts) but of course many version of Basic, from Commodore Basic to QuickBasic, AMOS on the Amiga, and to VB3, 4, 5, 6 and VB.NET.  I've used C, C++ and now practically live in C# (I think I talk to my wife and kids in a C# dialect at times).  I've touched Fortran, Lisp, Pascal, assembly mostly in college.  REXX on the amiga and now starting to use some Powershell scripting.    I'm sure I've forgotten a few obscure languages I played with at one time or another, but those are the major ones.

What was your first professional programming gig?  I got a job straight out of college in 1994 working for a place called Synergy Data Systems, then known as Nationwide Interchange Systems and then Top Echelon.  I met some great people there (Goody being one) and have kept intouch with some people since.  We worked on desktop applications, web sites, and server procesess and I did learn a ton there.  I left in 2001 to work for a local consulting firm (basically an independent who decided to hire an employee) and left there in early 2002 to start my own consulting firm which I've been working hard at ever since.

If you knew then what you know now, would you have started programming? I probably would have as it is a great career.  My only regret is that I've discovered as I get older and my children get older that I really don't like being stuck behind a computer all day.  Consulting has helped in that regard some, but still a lot of time spent at the keyboard.

If there is one thing you learned along the way that you would tell new developers, what would it be? I'm going to have to say don't get stuck in a cubicle your whole career.  Also as Michael said in his answers, communication is key.  It is easy to hide behind the screen and not communicate with anyone.  I'll just say it can be very lonely there at times.  Consulting has enabled me to interact with people on a regular basis and that has got to be one of the great benefits of what I do now.

What's the most fun you've ever had ... programming? I can't really nail it down to just one moment.  But I really enjoy working with other developers, especially in the early design stages of a project when ideas are flowing freely and there is just a general excitement about the project as a whole and everyone is just itching to get started.

Wednesday, 09 July 2008 10:46:19 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Misc#
Friday, 28 March 2008

Well, I've heard about Twitter but just never really saw the point.  But after I noticed my good friend Dave was a twitter (what do you call people that use Twitter?  a twitter, a twit, ...) I thought, what they hay, I'll give it a whirl.  I'm trying it out and will see how long I stick with it.  Check me out at http://www.twitter.com/lautzenheiser

Friday, 28 March 2008 12:28:49 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Misc#
Friday, 21 March 2008

OK....this may be well known, but I seem to forget it all the time.   If while browsing data you want to set a field to NULL, Ctrl-0 will do the trick.  Very simple and easy.  I know it works in Management Studio 2005, but I think it works in Enterprise Manager 2000 as well.

Friday, 21 March 2008 14:55:41 (Eastern Daylight Time, UTC-04:00) | Comments [0] | SQL Server#
Sunday, 02 March 2008

I'm officially tired of cold, snow and grey days.  I'm ready to mow my lawn, open my pool, crack open the windows to let a warm breeze blow through the house.  I'm ready to end the sniffles, coughs and runny noses.  I'm ready for the sun to set at 9pm.  I'm ready to be kept awake at night listening to crickets, or staying up late laying out on the deck looking up at the stars.  I'm ready for a good thunderstorm.   I can't wait.

Sunday, 02 March 2008 09:05:59 (Eastern Standard Time, UTC-05:00) | Comments [2] | Misc#
Tuesday, 01 January 2008

Here we are at the start of another new year.  My parents told me when I was just a young lad that time went faster as you got older, how right they were.  Let's look back at a few personal highlights of 2007.

  • Number one on my list:  My continued faith in Jesus Christ as my Lord and Savior.  As any believer, I've faltered throughout the year, but my faith continues to carry me through. 
  • A very close second:  15 years of marriage to a wonderful woman.
  • A very close third:  Another year spent with my four awesome children.

Now some more business / technically related highlights:

  • Started off the year finishing up a fairly large web app, that while it was mostly completed early in the year, has just now in the last two months been launched live.  The delay sprung from mostly marketing timing and issues and some last minute changes from the client.  So far while traffic is light (limited number of existing customers, so not a public site), things seem to be going well.
  • Come June, we landed a huge project that while it was only supposed to last through June, ended up last though October.  This was an open-ended project (basically they called us in to finish up a project that was a bit in trouble)..they anticipated only a months worth of work, but it was quite a bit larger than that.  We still go in sporadically now, but there is some potential for another fairly large project with them that could take us well into 2008.
  • Finishing up another large web application now, hopefully to be completed by end of January. 
  • I recently opened an office with a collegue of mine.  This is really just a place to get away and stay focused.  Anyone who works from home can testify that it can be a distraction at times, especially with children.  My home isn't large enough to have an office I can really go to that can be closed off from the rest of the home (I have to wait until the kids leave the house, which is quite a few years off).  This office away from home has helped gain me a few extra productive hours each week.

Goals for 2008, most fairly typical, I hesitate to call them resolutions though:

  • Become a better husband and father.  Spend more quality time with my family while not taking away the quality time I give my clients.
  • Become a better football coach.  I coach youth football.  2007 was my first year coaching flag (been coaching tackle up to this point).  All boys were 1st and 2nd graders so it was quite the challenge, but I had more fun this year then I did all the years coaching the older boys.  2008 I will be with the flag teams again this year so I'm looking forward to the fall for that.
  • Continue to grow my business while still taking care of my existing clients.  Getting to the point where I need to find an employee or two.
  • Find that one product to develop that may not make me a billionaire, but will at least give me an area of focus to move in that direction (yes I dream large).

I'm sure there will be plenty of surprises (some good some bad) in 2008, but that is what makes life interesting.  Best wishes to everyone in 2008.

 

Tuesday, 01 January 2008 12:05:52 (Eastern Standard Time, UTC-05:00) | Comments [0] | Misc#
Saturday, 03 November 2007

I've recently started playing with SubSonic on a new project.  My first few attempts at generating code failed.  The files were being generated, but they contained no code.  I'm sure it states it clearly somewhere but I was in one of my moods where "By golly, I'm not reading the stinking documentation, I'm figuring this out myself."  Well after an hour or so of this, I finally discovered, SubSonic really likes primary keys on the tables it's generating code for.    I had a few tables that didn't have primary keys (I know, smack me now), anyway's I throw those keys on and all is well. 

I'm really liking SubSonic and I tend to agree with Rob more than Jeff in the recent debate (makes for a good read).

Saturday, 03 November 2007 11:02:25 (Eastern Daylight Time, UTC-04:00) | Comments [0] | .NET#
Tuesday, 30 October 2007

I love the ClickOnce technology of smart clients.  What a great way to distribute software to my clients.  Since I'm an independent with many clients all in geographically different locations, most of which I've created a mixture of web apps and winforms software for, smart clients have simplified my job greatly.  Someone needs a quick fix or tweak, presto, from home, I make the change, publish it and there off and running.  No more taking an hour or so out of my day to go spend 5 minutes distributing an update on site. 

There are pitfalls to the clickonce technology however that I've discovered.  Mainly the issue of the expiring certificate which requires and uninstall and reinstall of the application.  A buddy of mine has created a workaround that using the C++ code in the KB article linked, that fixes the issue, but still not an optimal solution.  Supposedly this is fixed/changed in Orcas.  I'll have to dig up his solution and blog about it soon.

Wondering though, is ClickOnce used in the wild much?  For standalone apps, commericial or otherwise?  I would think that there would be some, but having difficulty finding any.  Just curious if the ClickOnce model is viable for a released product.

Tuesday, 30 October 2007 15:54:10 (Eastern Daylight Time, UTC-04:00) | Comments [0] | .NET#
Monday, 29 October 2007

Off topic, but this is pretty cool.   I'm a bit of a amateur astronomer (and I mean really amateur) but I read about Comet 17P which had a super outburst on October 24th where it brightened 12-13 magnitudes.  Anyways it was pretty easy to find and while I didn't drag my telescope out, it was quite visible and spectacular in binoculars.  Once you know what you're looking for it's easy to find with the naked eye.  It's currently in the constellation Perseus.  Check out the links and you'll find pics and better description of where to look.

Monday, 29 October 2007 20:53:13 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Other#

I've played off and on over the years with developing my own blog engine.  Why?  Mostly just as a learning experience and a place to experiment with new stuff.   What I've been finding with most other blog engines (dasBlog used here, Wordpress being the two that I'm most familiar with) that while they have a great number of features, like most software, I only use a small fraction of the features.  I want a blog engine that is all my own that has just the features that I want.

I've been inspired to finish it up.  Check out this new blog I stumbled upon through a comment in a Hanselman post.  Josh took up the challenge to create his own blog engine and I must saythe result is a very clean, nice design.  While I haven't seen any of the underlying code, I'm pretty impressed with the end results.  Great job Josh.  Now to polish off my source (perhaps polish it off just to throw it all away) and get moving on my own engine.  Plenty of stuff to learn!

Monday, 29 October 2007 13:17:40 (Eastern Daylight Time, UTC-04:00) | Comments [0] | ASP.NET#
Friday, 05 October 2007

Been a bit since I've been around, but I won't dwell on that.  I'm here now and that's all the matters.  Here is my question to anyone that still may look at this from time to time.  I often work on projects with other consultants and normally we work remotely.  I've got some ideas on how to handle source-control remotely amongst many independent developers that are not necessarily in the same town, state, whatever, but I wanted to get some other opinions on how others many handle this.  What software do you use?  What services if any are available? 

Friday, 05 October 2007 12:49:56 (Eastern Daylight Time, UTC-04:00) | Comments [1] | Misc#
Saturday, 31 March 2007

Been a while since I posted, so here are some updates probably only of interest to those who know me (though maybe not even to them.J)

I'm working hard to finish up our large project for a client. It's an online ordering app for a customer that only their distributors can get to. It's been a fun app to create, though I can't wait to get it down and on to other things. We're about ready to move it live in a beta mode for those lucky few. I still have some things to clean up, a few pages that need completed and a backend admin type smart client that the customer can run from their end, though this isn't a complete necessity and we can probably hold off on that a bit if need be.

Next we're starting up another online ordering project for another client. This one will be open to the public to purchase their product so we will be accept credit cards and dealing with those issues. Right now we're in the design phase and deciding whether to use a 3rd party shopping cart or develop one ourselves. This app will have some special needs so a cart will either have to be very flexible or open source.

My partner's and I met yesterday to discuss taking on a very large project (initial talks reveal somewhere around 1000 hour project). This looks to be a very exciting opportunity and we're not willing to pass it up, though the timing could have been better. We're going to do the requirements phase of the project and once that is done we and the customer will see how we stand in regards to the length of the project and their deadlines. Once there we will have to decide how to handle.

We also have 3 or 4 smallish websites (20-30 hours) to do in the next two months or so. There's nothing like keeping busy.

Looking at this, we have reached a point where we may need to bring some people on board with us, either in a subcontractor role or perhaps, for the right person, as an employee.

If you live in northeast Ohio and are interested in a subcontracting role, please forward on your information to me (Jason at malachicomputer dot com).

Dave G….give me a call sometime (or an email will do) if you're interested in some side work, I have some for you.

Saturday, 31 March 2007 09:31:41 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Misc#
Monday, 12 March 2007

Here's something handy to know that I had a bit of trouble finding information on. Perhaps I didn't look very well, but I was working with a colleague who had created a ClickOnce app and was having an issue where it appeared some of the files weren't being updated properly when he published a new version. Well, the problem turned out to be something else, but we were still curious on where the actual files were being downloaded to. After some digging, we found them at

C:\Documents and Settings\Jason Lautzenheiser\Local Settings\Apps\2.0

Under that folder are two more folders one called DATA and the other with what appears to be a random name. Under randomly named one, two levels deep are the main folders where all the different smart clients are downloaded to. It appears that each smart client will keep two versions, the current one and the previous version. I'm assuming this is for easy rollback a version.

Under the DATA directory any application files that the Publish Status is set to DATA.

Maybe this is well known, but it doesn't appear to be well documented.

Monday, 12 March 2007 23:15:53 (Eastern Daylight Time, UTC-04:00) | Comments [0] | .NET#
Thursday, 01 March 2007

There I was, fresh out of college, a little wet behind the ears in the way of the world, excited about starting my first day at my new job. This was back in 1994. I was newly married, no children yet, but we were planning on having some as soon as I got a real job. Well here was my chance. I answered an anonymous ad in the classifieds and received a call back from the "Company" within a few days and a brief phone interview ensued. Having passed that phase, I was called into for an in person interview. Well, the interview is a story for another time, but let's just say I passed with flying colors and was offered a job for a sum that at the time sounded like a fortune (and really was for someone with no kids whose wife had a decent job with great benefits). I was to begin in 3 days time and I was very excited to get on with my life.

Fast forward three days, having purchased a new wardrobe for the business casual environment (not really completely understanding what that meant, but hey I managed to do alright). I arrive for my first day and after the preliminary meet and great by the president of the company I was shown to my desk and promptly forgotten. It wasn't until a few hours later that someone realized they had someone they didn't know sitting a desk in an office trying to look like they belonged. This colleague, who turned out later to be a great guy, promptly introduced me to the person that would turn out to be my direct boss. Nice of them to remember they had a new employee starting wasn't it? I was taken into his office where we sat and talked about nothing in particular for about an hour while he smoked cigarette after cigarette, which was ok because I was a smoker as well at the time and I really thought… "Man this working stuff isn't so bad after all."

I was then walked back to my desk and handed about five programming books to read up on (it was a FoxPro shop at the time and this was my first exposure to it.) Why they hired me? My only guess was that entry level FoxPro developers were hard to come by. Anyway, after flipping through the books was doing me no real good as I'm more of a hands on person and I still didn't have a computer. Needless to say, being a little green in the ways of the business world, I didn't realize I was allowed to take a lunch pretty much when I wanted to (I came from the retail world which was very structured). So there I say, shriveling away to nothing until again someone walked by and said "Hey, did you ever go to lunch?"…this wasn't until mid-afternoon. Ok, I can blame myself for that one as I should have known better, but I couldn't believe I was basically being forgotten for the most part. In the 7 years I was there, it became a tradition (perhaps because of their failure with me) to take a new hire out to lunch on the company their first day. I wasn't so lucky I guess, but perhaps I've paved the way for all hires since.

What was the point of this short novel? Well my friend, I have these posts in a category of "Lessons Learned". As a business owner now, one of my greatest strengths is looking back at things that did and didn't work with past employers and reacting to the lessons I learned from them on how to run and how NOT to run your business. Now it may seem obvious to most that ignoring a new hire is something you really should NOT do, but back in '94 it wasn't so. If you've made the commitment to hire someone new treat them with the respect they deserve (and that you would expect yourself) by making sure they are not forgotten and thrown into a corner. Make sure they understand that while you expect them to work hard and do great things, you also see them as a valuable part of the company. First impressions are huge and nothing could be more critical to an employee's future at your company than how they reflect on their first day on the job.

Thursday, 01 March 2007 22:51:45 (Eastern Standard Time, UTC-05:00) | Comments [1] | #

There just hasn't been much out there over the last week or so that has caught my eye. But here are a few things I want to read closer when I get a free moment.

Thursday, 01 March 2007 22:24:05 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Wednesday, 21 February 2007

Been a while since my last post and February has been slow in general as far as the blog is concerned….just too much work to do. I'm trying to finish up a very large project and running into a few snags here and there which are taking that extra time and just putting in the extra hours to get it done. Here are a few links that I need to go back to once I get a free moment or two.

  • Reflector 5.0 – This is a no brainer….just go out and download this. I grabbed it the day it was released and as always a great tool with some nice new additions. Scott has a nice write-up on some new features so I won't repeat that here, just go get it.
  • ViewState Helper – This looks like a promising tool to check out. Haven't played with it as yet, but reading up on it, it looks very useful.
  • I'm no CSS guru so I definitely have not used these…but here is a list of CSS Properties you Probably Never Use.
  • I've been on a Pattern kick lately. Here are a few articles I need to read sooner than later.
  • One thing in regards to patterns….I've got to watch, because as I read and learn more, I tend to look at my current project and see where I can fit this pattern in there and that one in over here. That is not always the most productive path to go down as you're meeting deadlines. I've got to focus on finishing the project (which the architecture is already set) and come back to some of these things as we do revisions in the future. I have a fairly large project which design will start on in another month or so which I can look forward to implementing some patterns in the design of that project if they fit.

Be on the lookout for a new post or two on things I've learned from a previously employer. Some topics coming up are taking a look at my first day on the job (or how not to treat your new employee), how we were tasked with the impossible task of translating a huge system originally in DOS to a windows application in 3 months with ever changing requirements yet a firm due date, and how to kill a giant (otherwise known as reinventing the wheel).

Wednesday, 21 February 2007 23:16:10 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET | Midnight Snack#
Monday, 12 February 2007

We're going to get blasted with a major snow storm tomorrow….they're calling for at least a foot by tomorrow evening…I know that pales in comparison to some areas this winter, but this will be our major snow storm this season for our part of Ohio. Went to the grocery today and have plenty of worked lined up to work from home.....just need to get to the dentist first thing in the morning tomorrow. Well been awhile so got some links piling up, won't bore you with all of them tonight, but will spread over a few days.

Monday, 12 February 2007 22:53:39 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Wednesday, 07 February 2007

Just some quick links tonight.

  • AJAX Hover Panel Control – I've read many of Rick's blog for some time, always interesting. I'm going to play with this panel control as the samples look very slick and I happen to be working on a project where something like this would fit nicely.
  • As some of you may know, I have a book review blog that I maintain with a few friends of mine (thanks Todd and Dave). Well anyways, you'll see that we all read a lot. Here are some articles on improving your reading speed and comprehension. Now most of this is better for non-fiction. When I read fiction, I'm reading for pleasure and like to savor the words on the page. But if I'm reading non-fiction for knowledge then better comprehension at a nice speed would be very useful. Anyway, lots of good tips here.
  • One of the tips I read about reading comprehension suggests creating a mind-map soon after finishing your book. Here is a free alternative for mind mapping software that looks interesting. I have yet to install and play with it, but I will.
Wednesday, 07 February 2007 22:49:35 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Monday, 05 February 2007

How reliant have we become on Intellisense? It seems for some, very much so. I admit, I'm an Intellisense junkie. I may even suggest that if it wasn't for Intellisense, .NET may not enjoy the popularity that it does today. Intellisense allows one to peruse the object model seeing what is available, forge into new areas, and discover new things that you can do straight from the framework. In fact, I may be so bold as to suggest that Intellisense could be one of the most important Visual Studio features.

But with this importance and ease of use, comes great danger. The danger is that we may rely on it too much. We may become so reliant on it that we forget the basics of the language. As an example, a former co-worker of mine (in fact he was my manager in title, but not much more) once argued with me over whether VB6 actually had a LEFT function. See we came from a FoxPro shop doing a lot of FoxPro for DOS development back in the day. We moved on to VB3 and soon after to VB4 and VB5. Finally when VB6 came out, we had a fairly robust system to develop in. While my coworker and I rarely worked on the same projects, he would often come to me for advice, for while he was a far better FoxPro developer than I, I had the upper edge when it came to VB.

Well anyway, one day in idle conversation the topic of VB code came up and how we did things differently in VB compared to FoxPro. The conversation went something like this:

Coworker: I wonder why VB doesn't have a LEFT function like we had in FoxPro.
Me: <silent confusion at what he is saying>
Coworker: In fact, it's really strange that we have the RIGHT method, but no LEFT. This VB is crap, nothing like the greatness we had in FoxPro. <Ok so I exaggerated a bit there, but not by much>
Me: How do you figure? I've been using the LEFT for years now with no problems.
Coworker: You couldn't have….it's not there.
Me: How have you been doing your LEFTs?
Coworker: Well I use the MID function with a starting position of 1. <At this point he shows me some code that he is doing this in>
Me: Well sure that will work, but why not use the LEFT …. I swear to you it is there. I've got production code running with it right now!
Coworker: Impossible.
Me: No really, let me show you. <Here I fire up VB6, whip up a quick sample program and prove once for all that the LEFT truly does work>

     

It's at this point that I realize what is problem truly is. In VB6 (not sure if it applied to VB5 as well) there was a bug in IntelliSense. It did not have the LEFT function defined in IntelliSense. So when one typed "LEFT(" no tooltip came up with the parameters. Since nothing came up, he assumed it didn't exist, so he never even tried to use it. (OK, for you purists, I realize that the tooltip popup may not technically be considered IntelliSense, but hey, I'm trying to prove a point and it works well enough for that)

He had become so reliant on the help that IntelliSense provided that he had forgotten in some sense how to problem solve. I'm not trying to single him out as I think we've all fallen prey to the allure of IntelliSense and in some ways it has become addictive. Use it as the tool that it is, just be careful, that tool doesn't replace your better judgment and common sense.

Monday, 05 February 2007 23:29:27 (Eastern Standard Time, UTC-05:00) | Comments [1] | Lessons Learned#
Thursday, 01 February 2007

Boy I'm glad this week is almost over…ready for a quiet weekend of relaxation. Oh wait….got a lot going on this weekend too, never mind.

  • Whoops!! This doesn't affect me, but I could imagine it would suck pretty badly if it did.
  • I've never been a big user of Outlook's notes. Oh sure, I keep an occasional bit of information, but I usually tend to forget it's there and it languishes there for all time. Well here's a novel idea for using the notes to help you learn any subject. Repetition does well for me. I do well to read things over and over and it will stick with me.
  • I'm sure everyone can use a bit of tune-up from time to time on their financial health. I'm notorious for reading about new techniques or ideas , but never really implementing. Perhaps this guide to fix your finances in 31 days will be useful and something easy to implement. We shall see.
  • Another HanselMinutes on one of my favorite subjects, PowerShell. Haven't had a chance to really sit down and listen yet, but I'm sure it will be a good one.
  • While we're on the subject of PowerShell, here's an interesting article on creating providers for PowerShell. An interesting read.
Thursday, 01 February 2007 21:34:38 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack | Powershell#
Tuesday, 30 January 2007

We have a house full of sick kids. All have pretty bad chest colds. It really hasn't been that pleasant around here, though I'm hoping that I may escape from getting it.

  • I just heard that author Sidney Sheldon died today at age 89. I can't say that I was a huge fan, in fact I don't think I've ever read anything of his, though I know some who just love his work. I can however respect anyone who has the muse within. I have been trying to get myself to sit down and write. While I work in a technical field, I have no desire to write technical books (in fact I read very few technical books these days). I have too many stories inside that I need to get out someday. A friend of mine, who is an aspiring author, once told me that the only way to become a good writer is to just sit down and do it.
  • On that note, however, I read an article today that states called, How to Become a Better Programmer by Not Programming. Interesting premise and to a certain degree I agree with Jeff on that. It is true that there is a vast divide between those that are excellent programmers and those that just get by. I think that I can tell in a very short time whether someone is an excellent programmer or not. Unfortunately those mediocre programmers often see themselves as top-notch and on the flip side the really excellent programmers are normally fairly humble about it.
  • Ahhh yes….. tax season is upon us. I've just finished up preparing the last of my 1099s I need to prepare for some sub-contractors I had work for me this past year. Nothing like waiting until the last moment. I've only received one of the one's I'm expecting as of yet, but should see the rest of them here in the next week or so.
  • I think I'm going to start a series of posts relating some interesting stories (funny, scary, sad …) from a previous employer. The names will be changed to protect the innocent, though if you know me; it won't be hard to figure out who I'm talking about. No offense meant to anyone, but hey, they are my life stories and I'm going to tell! I learned a lot from working there some good, some not so good. So anyway, be prepared for some.
  • Just for a taste of what I'm talking about, here is a list of some SQL don'ts. This list that Brian put together mirrors some things that my former employer did, despite advice against.
Tuesday, 30 January 2007 22:54:50 (Eastern Standard Time, UTC-05:00) | Comments [1] | .NET | Midnight Snack#
Monday, 29 January 2007

Well here was an interesting one. I was working on adding some AJAX capabilities to a few pages. I had added my ScriptManager to my MasterPage and then on each of my pages I needed to, I added the UpdatePanel to that page. Well on one page, while it compiled fine and worked like it should, Visual Studio was showing my an error on the UpdatePanel control as well as each of the controls in the ContentTemplate. The error was;

    Not a known element

And intellisense refused to work. After a bit of research and trial and error, it appears that it may be a bug with ASP.NET AJAX. There does seem to be a simple workaround however. Simply open your masterpage in the IDE and the sub-page will then behave as expected. According to the ASP.NET forums another workaround is to change the asp prefix to something else (atlas perhaps).

Monday, 29 January 2007 22:45:53 (Eastern Standard Time, UTC-05:00) | Comments [1] | ASP.NET#

Well here's one that has me stumped. Basically what I have is a ClickOnce deployed app that is deployed to my client's network. I would like to pass it some command line parameters, but for the life of me cannot get it to work. All the examples I can find are for web-deployed click once apps, but the code given there does not work. For web-deployed apps it's very easy to retrieve the parameters using,

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0].Query

and parsing out the parameters (normal query string parameters like www.blah.com/myapp.application?param1&param2). However when using the same construct with the network-deployed app, this simply returns the name of the application file (file://myserver/apps/myapp.application?param1&param2 simply returns apps/myapp.application). Trying to pass parameters in any other way results in windows not finding the application file.

Either I'm overlooking something very obvious or there is just no easy way to do this. Luckily this isn't a must have feature for this particular client, just something that would be nice.

Any thoughts or ideas?

Monday, 29 January 2007 09:55:11 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Saturday, 27 January 2007

I have some work to make up this weekend so my Saturday will be pretty busy. I'm making a "fourth quarter" push to finish up a huge project hopefully by mid-month February. But I'll take a break in the work to see what has been going on.

  • Joel announces version 2.0 of their Copilot remote control tool. While I haven't had the opportunity to use it yet as most of our clients I have a direct VPN in, I have used their trial and it is pretty slick. I keep it in my toolbox for that odd ball time when nothing else will do. Some nice new features including direct connect if possible resulting in possibly faster connections, file transfer, and support for the Mac for those so inclined. Also the lowering of the 24 day pass to $5 makes it so much more inviting.
  • Forgotten SQL Functions – Jason brings up a good point, how often do we go about creating the greatest function to perform some operation only to discover that it's already available built-in? Whether it's SQL or .NET, C# or VB.net doesn't really matter as I'm always discovering something new. I have to agree with a few of the commenter's in the original post. COALESCE is the bomb. See here for a performance comparison between Coalesce and IsNull. Also here is a novel usage of the Coalesce function to build a comma-delimited string.
Saturday, 27 January 2007 00:31:55 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Thursday, 25 January 2007

This one had me stumped. A large web app I'm working on for a client has some cases where some AJAX would be very handy. I wanted to take this opportunity to learn about ASP.NETs AJAX release as it looked real easy to work with. I watched the videos and followed the instructions and created a test app and all worked well. I then tried to take what I had learned and incorporate it into my existing app. The Partial Rendering did now work and the SupportsPartialRendering continually came back as false. I had checked to make sure that all references were in place and the web.config file was updated with the required <httpHandlers>. Well interestingly enough, I missed a very important part of the web.config.

<configuration>

    
<system.web>
        
<xhtmlConformance mode="Legacy" />
    </
system.web>

</configuration>

With the xhtmlConformance mode set to Legacy, AJAX will not work on your pages. Scott Guthrie has a good explanation with all the gory details. In a nutshell, apps that were upgraded from 2003 to 2005 (which mine was) will have this setting in place. Removing that and automagically, my newly AJAXed pages now work as designed!!

Thursday, 25 January 2007 22:17:27 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Wednesday, 24 January 2007

Snowing pretty good right now, always wonder what you'll wake up to.  If you don't live downwind from one of the Great Lakes, and have yet to experience the joys of lake effect snow.  What a joy.  You can wake up to 20 inches and half a mile down the road, nothing but a trace.  Hard to predict what you'll end up with.  I'm on the southern reaches of the snow belt in Ohio, so I can be thankful for that.

  • I've looked briefly at the Validation Block of the Enterprise Library and it's attribute validation.  And now I've found EViL which also does attribute validation.  Seems like these will be pretty handy tools.  Still trying to mentally wrap my mind around setting up my validation with attributes (just seems a bit odd for some reason), but I think I may just being old fashioned. 
  • Installed Office 2007 this evening and have really only messed with Outlook.  I'm liking it though...love the To-Do Bar, love the way you can collapse both the To-Do Bar and Navigation Pane.  Love the Ribbon and while it can be a bit confusing at first, it really is much more intuitive.  Be back with more updates as I dig deeper into Outlook as well as the other office apps.

 

Wednesday, 24 January 2007 23:17:20 (Eastern Standard Time, UTC-05:00) | Comments [1] | Midnight Snack#
Tuesday, 23 January 2007

Went to the Launch 2007 Tour event in Cleveland today.  I was in the developer track and while it was interesting to see some of the new things you can do, it was really nothing new if you've been paying attention at all.  It seemed like a sales pitch when really most everyone there was already sold.  But hey, can't beat the free license of Office 2007!.

  • Speaking of Vista, here are "5 Sins of Vista" to watch for.
  • I have yet to go through this yet, but this workshop on .NET Instrumentation looks real interesting.
  • If you haven't heard by now.... ASP.NET AJAX 1.0 is released.
  • I've known this was available in 2.0, but have yet to really have a reason to explore deeper, but reading this about creating network aware apps sparked a few ideas for an app I've been working with lately that runs on a slightly unreliable network.
Tuesday, 23 January 2007 22:51:09 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Monday, 22 January 2007
  • Maintainable Code - Another great post by Jeremy Miller.  I love to optimize code, I find it quite enjoyable to take a bit of code and tweak the last few cycles out of it.  I know, however in the process, I've made my code hard to maintain for a not so beneficial gain.  I'm striving to focus more and more on making my code more maintainable and Jeremy adds another fine post to move me closer to that goal.
  • Performance Iterating Generic Lists - well in seemingly contrast to the above link, here is a post on an optimization.  I absolutely love generics and have found the use of anonymous methods beneficial in making my code more maintainable (at least to me), so I'm happy to see that my prefered technique for iterating through those generic lists in some cases (#3 List.ForEach method with a delegate) is at least not the slowest.
  • I was working today on making some changes to a website for a client today.  These changes involved some enhancements to the login and password maintenance routines.  This stuff was hacked together years ago in 1.0 (upgraded to 2.0, but the code has changed little) and while it has worked fine for many years, it is not the prettiest code.  I tried to incorporate the membership providers into this site with no luck.  Was receiving an OutOfMemory Exception while it was parsing the provider section of the web.config. No solution could be found so after a few hours of trying to solve it, I needed to move on.  I will have to create a test site from scratch and see if I can get a handle on the provider stuff before trying to hook it back into the existing site.
  • Error handling in PowerShell - Nice little post about topic that is not documented very well. 
  • Well it's coming time for a new computer.  While my main machine (my laptop) is working just fine and still has a few good years left in her, my desktop, which is more of my non-work / gaming / wife's machine is in need of an upgrade.  I'll hand my current desktop over to my kids and get a nice new shiny one for myself (and of course my wife!)  I don't think I'll go the route of my buddy Dave, but I'll be interested in hearing how he likes it once it comes.
Monday, 22 January 2007 22:54:54 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Saturday, 20 January 2007

Not sure if I'm coming down with something or not, but just haven't been able to shake a chill I've had since I got home this afternoon. 

I'm tired...off to bed.

Saturday, 20 January 2007 00:05:16 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Friday, 19 January 2007

Well in concordance with this, I've decided to post about my favorite tool.  Well in coming up with my favorite tool, I had to search through many of them that I use and love.  But most recently, I believe my favorite tool, that I use every single day has to be ReSharper from JetBrains.  This add in to Visual Studio (I use Resharper 2.5 for VS2005) adds so many tiny benefits it would be hard to list them all.  Just go their site and look through the feature list.  It's simple, fast (as of the new version, the past versions did have some speed issues) and it stays out of the way.  I've gotten to the point now where I don't even realize it is there.  I was at a coworker's machine, which does not have Resharper installed, and I was amazed that I was able to get anything done without it.

Hard to say what my favorite feature is, I really like the Usages (Alt-F7).  The Ctrl-Click Go to Definition is a huge time saver.  Surround With (Ctrl-Alt-J) is another tool I use alot.  I could go on and on.  The hardest part for me has been learning some new keystrokes, for some of the lesser used items, the keystrokes still escape me from time to time, but I'm getting better. 

I won't get into a ReSharper vs Refactor Pro holy war, as both products have a ton of nice features.  I wish I could take the best of both, combine then into one and you would have one killer app.

Oh BTW, JetBrains has just put out an update as I've mentioned previously

Friday, 19 January 2007 10:43:15 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET | Cool Tools#
Thursday, 18 January 2007

Went to my son's 6th grade band concert.  Love watching my kids do about anything, whether it's sports (he's quite the athlete, didn't come from me) or his music, I just love these things! 

  • 7Zip In Memory Compression C# Code - I've been wanting to switch to 7Zip for awhile.  I purchased WinZip a few years back and it has worked well, but 7Zip has intrigued me.  Now with this SDK, perhaps I should take a closer look.
  • TryParse() - Here's another one I like to use alot.  I'm always on the lookout for code that simplifies my code.  Very nice addition to 2.0
  • Start and Stop Services - This is here more for my own info.  I have used this a few times in the past and always spend a few minutes looking this up...now I'll know exactly where it is.
  • As a small MicroISV myself, good the hear Scott talk about it on his latest Hanselminutes.  Another nice place, though it hasn't been updated in a while, is MicroISV.com.
  • Blog about your favorite developer tool tomorrow.  I've got so many, I'll have to think which one I would like to highlight.
  • The front-runner for my favorite tool blog post, Resharper, has just released an update.  Nice to see a quick update to fix some stuff.  Looking forward to the next major update.
  • <begin soapbox>Watch the price of gas creap back up if this gets signed into law.  Don't forget that most any tax placed on business, get's passed right back to the consumer....so who ends up paying these extra taxes?  Yep, you and I, the ones the Dems say they are trying to help.</begin soapbox>

 

Thursday, 18 January 2007 23:37:05 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Wednesday, 17 January 2007

I guess I've been under a rock, because I just discovered this operator this evening.  Catching up on some of my unread blogs and read this post on Tests for Null in which mentioned the new coalescing operator (??) in C# 2.0.  How had I never noticed this before.  I could use this almost every day and I'm always one for neatness and compact code so this kind of operator will fit nicely into my toolset.

How does it work?  Well it simply checks if something is null, if not null, returns that something otherwise if null it returns the alternative.  Works very similar to the Coalesce keyword in SQL Server (which I do use often)

ThisClass objClass = aClass ?? new ThisClass();

Which is equivalent to

ThisClass objClass;
if (aClass != null)
   objClass = aClass;
else
   objClass = new ThisClass();

and also;

ThisClass objClass = (aClass != null) ? aClass : new ThisClass();

 

Wednesday, 17 January 2007 22:32:22 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Tuesday, 16 January 2007

Let's get right to it:

  • I've seen this around before (I think I may have even installed it once to try it out), but one of my goals this year is to focus a bit more on writing.  Darkroom may just help me out with that.  I'm easily distracted and that is probably my main reason for not writing more.
  • Managing Processes in Powershell.  I'm just now getting into powershell so I'm reading up just about everything I can find.  Good examples on the flexibility and power of PowerShell.
  • Using Anonymous Methods - I for one love anonymous methods.  I use them quite a bit and have been meaning to write up something a bit more elaborate...here is a quick and simple post on a good usage of anonymous methods.
  • One Stop Shipping Tracking  - Nice service here to track all your shipments from different carriers.  Also some nice tools to estimate shipping charges.  Might be handy if you do a lot of shipping or buying / selling on eBay.
Tuesday, 16 January 2007 19:39:19 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Monday, 15 January 2007

Well here it is late at night waiting to see if I'll be driving in snow in the morning...I hate the idea of waking up to the roads covered in snow in the morning.  Been a very mild winter so far here in northeast Ohio...I've gotten spoiled.

  • Yes I watch 24 almost religiously.  I really don't watch much TV, but that is one show I do enjoy.
  • Ever wanted to manage multiple assembly's version info from one place.  Well there ya go.  Seems pretty obvious now that I've read it.

I'll keep it short tonight...

Monday, 15 January 2007 23:38:36 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Friday, 12 January 2007

Wow, I managed to do this two nights in a row!!

  • It's really amazing how easy .NET makes some things.  I whipped up a quick app today that handles some data uploads to a web app I'm developing.  I created it to allow for plugin modules for different data uploads.  Really some basic stuff and from start to finish, about 2 hours of work.  I can remember trying to do something similar in VB6 many, many moons ago...not quite so easy.
  • Tomorrow is my daughter's 9th birthday...tonight is her sleep over with some friends at our house....use your imagination what a house full of 8 and 9 year old girls looks and sounds like!
  • Good article on Coding Horror today on the importance of setting good defaults.
  • CodeRush and Refactor! Pro 2.1 are released.  I'm a Resharper man myself, but Refactor Pro has always looked very good and many have spoken highly of it.  I'll be honest, Resharper got me on their holiday $99 dollar special which I believe runs through the end of this month and it does have some great tools (love the usages F7 tool). 

 

Friday, 12 January 2007 22:44:20 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Thursday, 11 January 2007

Who doesn't enjoy a quick snack before bed.  Well here is my attempt at what everyone else seems to be trying.  A few quick snippets of information, links, thoughts, ... whatever, more or less as often as I can.

  • I may be a bit behind, but I've finally starting working with Enterprise Library from Microsoft.  Specifically the Data Access Block.  I'm really diggin it.  I'm just now scratching the surface, but it didn't take very long to take a fairly large ASP.NET project I'm working on and converting all my data access to use it.  I'll probably blog about it more eventually. 
  • Speaking of the Enterprise Library and application blocks in general, I need to check out some of the other blocks and see what I can use and where.  I'm really intrigued by the Smart Clients blocks
  • I've also started playing with PowerShell.  Again, perhaps I'm late to the party, but I guess better late than never.  Scott Hanselman has been talking about for quite a while and is quite the proponent, so I figured I needed to take a look for myself.  So far so good...learning curve seems big, but lots of potential.
  • Been using the Emergent Task Planner from David Seah for the last week...and I must say, putting things down on paper is very conforting to me.  I always did prefer to write things down, but as an IT consultant, I always feel like I should be using something electronic, seems a little "dirty" to me to be using paper...but I like it!

 

Thursday, 11 January 2007 23:33:37 (Eastern Standard Time, UTC-05:00) | Comments [0] | Midnight Snack#
Monday, 08 January 2007

Again, another post with something that seems obvious at the moment and something I've done many times and it works like a charm everytime.  Last week I ran into a situation where I was performing a SqlBulkCopy on some data up to a Sql Server on a shared host.  This process has run nightly for over a year, however Friday the structure changed slightly so my client called me in to make the changes.  Changes are made and the process runs fine. 

Moving forward about 6 hours....suddenly an exception is generated in the SqlBulkCopy (don't recall the exact wording on the exception) which seems to indicate that either my structures between source (Access) and destination are out of sync or perhaps there is some corrupt data.  Since it worked fine previously in the day, I opted towards looking at the latter.

Quick once-over on the source data didn't show any problems and after doing some more preliminary searching....data appeared to be fine, but there were tons of records and I'm sure I missed something.  So what was my secret tool in solving this problem...

   Select Top 10 from myData

Just simply ran the the above select when selecting my source data, changing the Top XX to different values to zero in on the record that was causing the error.  Once I narrowed it down to that one record, it was a simple matter to scan the data looking for a problem.  Within seconds, I found the problem (calculated field which had a division by zero error), fixed the field and all was well.

Monday, 08 January 2007 05:59:57 (Eastern Standard Time, UTC-05:00) | Comments [0] | SQL Server#
Thursday, 04 January 2007

This is something that I tend to forget even though it's pretty basic and probably obvious to most.  I have a comma delimited string which I wanted to put into a List<>.  Here's a one-liner to get the job done.

   List<string> aList = new List<string>();
  aList.AddRange(myString.Split(','));

Where myString is my comma-delimited string.  Pretty basic, but very handy.

Thursday, 04 January 2007 10:06:53 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Monday, 01 January 2007

Well here we are at the end of another year.  Boy did it go fast.  This has been another good year both professionally and personally.  Personally, our family is healthy and happy.  We've grown together as a family and done a ton of fun things together this year.  Professionally business has been good.  While, looking purely monetarily, 2006 has been about equal to 2005s production, things seem to be picking up none-the-less so I'm looking forward to a good 2007. 

So where is the new year leading us? Not sure yet.  Where am I trying to drag it (perhaps kicking and screaming)...well I want to make this year the year that we break out of the mold and take the business to the next level.  To me that means, going after new clients while still maintaining good relationships and high levels of service to our current clients.  This will be a big challenge for me.  I'm not a real outgoing person and the thought of putting myself out on a limb and trying to attract new clients is kind of scary.  Most of my business so far as been word of mouth and that's easy when you come recommended to someone.  But to sell our services to someone I've not met and has no reason to believe that we can help them, well that's a different story.

Another step in growing the business is to look at creating a product that we can sell and service in niche markets.  Yes we have ideas on what those products are and which niches to attack, but no...I'm not sharing :->  This could be a huge step (and a lot of work) but would be a good step for us.

In closing, if 2007 is even close to as good as 2006, then I'll be happy, but I'm not content to stop there.  So we shall see what 2007 brings and we'll trust in the good Lord that He will provide all we need and will open and shut the doors as they come before us. 

God Bless you all and here's looking forward to a good and prosperous 2007.

Monday, 01 January 2007 10:30:47 (Eastern Standard Time, UTC-05:00) | Comments [0] | Misc#
Tuesday, 19 December 2006

OK....been gone too long from here.  Working as an independent consultant can be great if you have the right attitude.  Most people I know think that because I have my own business and work for myself, that I have all kinds of free time and still make tons of money.  I don't help that perception, because I do use my flexibility and take time off during the days to do family things.  However, what most people don't realize is that I tend to work more hours now than when I had a normal 8-5 job.  My work is always with me and always on my mind.  While I can take time off during the day sometimes, I often work late into the evening after the kids are in bed to make up for lost time.  While there are days I can take off, one phone call can change all that in a heartbeat when a client calls with an emergency.  But I wouldn't change it for the world.  I love what I do, love the clients I work for, and enjoy the challenges that come to me most every day.

Now it's time to take the business to the next level.  This new year will see us exploring new avenues and ways to expand and grow our business, all the while taking nothing away from our quality of service for our existing clients.  It looks to be an exciting and challenging 2007.

Look for this new year to bring more posts here to this blog.  I've been working on a few new projects that have pushed me to learn a number of new techniques and processes.  I hope to expound on those in the coming months in some technical posts.  I also plan on posting our steps and progress as we move into the next phase of Malachi Computer. 

Tuesday, 19 December 2006 08:53:16 (Eastern Standard Time, UTC-05:00) | Comments [0] | Misc#
Wednesday, 31 May 2006

Here's a nice tool that Hanselman turned me onto a few weeks back.  SpeedFiler, has literally made my inbox management so much easier.  My inbox is now at zero at the end of nearly every day.  I've been slowly incorporating GTD into my life and have started with my email handling system.  Every email that comes in gets processed quickly or filed away for future consideration into the proper folder.   SpeedFiler assists with that, improving upon Outlooks standard move to folder tool by allowing you to find a folder in a short time, allowing for very speedy filing.  Read Scott's entry as he shows screenshots and gives more details.  I just wanted to give a little bit of promotion for this great tool.

Just for the record, this was an unsolicited endorsement and I have just purchased SpeedFiler no more than 10 minutes ago after a few weeks with the trial version.  I'm not affiliated with the Claritude Software in any way.

Wednesday, 31 May 2006 15:18:31 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Cool Tools | Life Tips#
Tuesday, 09 May 2006

Been a long time since I've found a few seconds to post here.  I need to just make the time.....As a independent, I have my slow times and busy times.  Well for the past few months, it seems that all my projects that I've been quoting out for the last year have all been pushed to the forefront by my clients and they all want them now.  I've been subcontracting out some of my smaller websites just to get them out of the way, but more keep coming in.  I just received a phone call today from a client whom I met with almost 2 years ago (when I was very slow and needed the work) who finally is wanting to pull the trigger and build their website.  It's either feast or famine....but I sure like being busy like this!!!

Tuesday, 09 May 2006 15:05:44 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Misc#
Tuesday, 04 April 2006

Wow this new SuperFetch in Windows Vista is a cool feature.  I'm sitting here with my 2G memory stick.  Thanks to Stefano for pointing this out.

Tuesday, 04 April 2006 16:38:47 (Eastern Daylight Time, UTC-04:00) | Comments [0] | Misc#
Monday, 20 March 2006

Not sure how I missed....but here is a very handy new feature in VS2005.  Thanks to Jessica for pointing me to this.  Had I not stumbled upon this I would still be tracepoint-less. 

What is a tracepoint?  Well, in a nutshell.  It's like a breakpoint without the breaking part.  I can now use this to replace some of my Debug.WriteLine statements I use to debug in certain cases.  How to create a tracepoint:

  1. Create a breakpoint as normal.
  2. Right-click on the red circle indicating the breakpoint.
  3. On the context menu, select When Hit.  There are other options as well, though they deal with breakpoint filters and such that I believe were in previous version of VS.
  4. Fill in the dialog with whatever text you wish to print, you can even run a macro.
  5. Close dialog, and red circle changes to red diamond indicating a tracepoint.

Very handy new tool and another reason I like VS2005 more and more each day.

Monday, 20 March 2006 10:37:05 (Eastern Daylight Time, UTC-04:00) | Comments [0] | .NET#
Tuesday, 14 March 2006

Well, everyone else seems to be doing it.....  I come across quite a few links each day that interest me or I should investigate further.  Here is my attempt to list those ...  while I would like to say daily, I really doubt that will happen.  Here is my first short batch.

  1. Reading Excel with ADO.NET - an interesting look into how ADO.NET handles Excel Docs.  Most interesting was how it guesses the data type of each column.
  2. Creating a unique or semi-unique ID in .NET  - As I ran into a similar situation not too long ago (I actually stuck with using GUIDs as in this particular application, the length didn’t matter to me), this opens up a discussion on the GetHashCode() method used on a GUID to create a semi-unique ID.
  3. Using ResolveClientUrl in markup This comes in handy more than not, but it is invariably something I forget about each time.
Tuesday, 14 March 2006 07:57:05 (Eastern Daylight Time, UTC-04:00) | Comments [0] | .NET#
Wednesday, 22 February 2006

Wow...this is a bargain. I've used OneTime for a year or so now (started with 2005 version) and have been happy with it.  Well now they are giving the 5-user small team edition for $5.00 (normally $495) in social experiment and all proceeds go to the Red Cross.  Can't go wrong with this deal.  This deal ends Feb 24th.

Wednesday, 22 February 2006 21:14:57 (Eastern Standard Time, UTC-05:00) | Comments [0] | Cool Tools#

I ran in to a bug today in regards to a ClickOnce app I've developed for a client.  I inherited a website that was partially completed when I has hired on by my client.  I developed a ClickOnce app for them (actually two different apps) along with completing and enhancing the website.  Portions of the website run with an SSL Certificate (through HTTPS), the certificate was purchased long before I came into the picture. 

The ClickOnce client app is launched from within a secured area of the website.  Everything worked fine, until someone browsed in through a different sub-domain.  Specifically the Certificate is for www.blahblahblah.com where as the client where we received an error came in through http://blahblahblah.com (without the www).  The certificate is not a wildcard certificate so if I had browsed to that page I would have recieved a Security Alert message box with the message:

The name on the security certificate is invalid or does not match the name of the site.

Well while browsing it's simple enough to click yes to proceed, however you don't get that option and are simply presented with the Cannot Start Application dialog.

Clicking on Details gives a ton of information on the exception that occurred.  Looking down I see the following:

--- Inner Exception ---
  System.Security.Authentication.AuthenticationException
  - The remote certificate is invalid according to the validation procedure.

So I can see that this is related to the Security Alert given above.  After doing some digging, it appears that this is an acknowledged bug with .NET 2.0.  While this isn't quite the same scenario that I ran into, it looks to be similar enough to possibly be the same cause.

I'm not that versed on SSL and security issues in 2.0, so my speculation may be incorrect.  The client was happy enough to be sure to include the www and I can always redirect so it wasn't that big of an issue, but thought it was interesting enough to share.

Wednesday, 22 February 2006 18:29:16 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Friday, 17 February 2006

A bit off-topic, but I'm always striving to improve my business, my personal life, and my spiritual relationship.  I ran across the Clean Sweep Program which is a checklist of 100 items, when completed, gives you complete personal freedom (at least according to the author).  I took the assesment and scored a grand 34 out of 100.....I have a ways to go and a lot of things to improve on.   

Some seem quite simple to do (make your bed every morning) and I suppose once you complete those, it will give a small bit of satisfaction that may not otherwise be obtainable.  Others, could take a lifetime to achieve completely (if ever), though making strides towards those goals would be a worthwhile pursuit in it's own right.  Anyway, this provides an interesting look into yourself.

Friday, 17 February 2006 22:09:52 (Eastern Standard Time, UTC-05:00) | Comments [0] | Life Tips | Misc#
Wednesday, 15 February 2006

Just discovered this today (yes I'm a bit behind, version 1.0 was release July 25, 2005..)....I had some legacy INI files that needed parsing and I've got a general class that I use normally in cases like this that handles all my INI needs.  Generally it works fine as it simply wraps the API.  I found recently that with .NET 2.0 (at least that's all I've tried with) there is a issue with reading an INI that resides on a networked drive.  Needless to say, I needed to do just that.  After a brief look I came across NINI, a nice tool that not only handles INI, but also XML configuration files, Registry,  .NET configuration files, and command line parameters.  The INI functionality at least was written without the use of API, so it runs just fine reading the INI across the network.  I haven't looked any deeper into the other files it can handle, but I've got a few uses for this library already.  Wish I would have discovered this one long ago.

http://nini.sourceforge.net/

Wednesday, 15 February 2006 17:33:22 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET | Cool Tools#
Thursday, 09 February 2006

Here's a handy tool to extract files from a MSI install file.  There has been a few times when I've wanted to either see what was in a MSI, other times when I only needed one or two files, and/or I needed the file in a custom location other than the install directory.  Well now I can with this tool....not something I'd use everyday, but handy to have in my toolbox for those special occasions.

Less MSIérables: A tool to Extract the contents of an .msi File

Thursday, 09 February 2006 15:32:11 (Eastern Standard Time, UTC-05:00) | Comments [0] | Cool Tools#
Wednesday, 08 February 2006

I've been doing the consulting thing for about 5 years now and I’ve started to notice that over the last 6 months or so I’ve been looking at my time that I spend in a completely different fashion. 

For example, last night my furnace broke.  Normally this is something I can fix myself being somewhat handy (in fact the problem with it this time is something I most likely could fix).  However, while debating whether to cancel my appointments for the morning (at least) and get to work on the furnace I realized that by trying to perform the work myself, saving myself a service fee for a repairman to come out, it was actually more expensive than just bringing in a serviceman and going to work.  With the billable hours, I would make more than what it was going to save me to do the repair myself.

Another example, a few months back I’m sitting in the dentist office waiting to be taken in for my appointment.  They were running behind and I ended up sitting there for 30 minutes or so past my appointment time.  The thought running through my mind was “This appointment is costing me X.XX amount, plus the extra 30 minutes of billable time.”

I guess now that I’m working for myself, billing by the hour, I’m more aware of where my time goes and I make a conscious effort to minimize wasted time. 

Wednesday, 08 February 2006 10:32:11 (Eastern Standard Time, UTC-05:00) | Comments [0] | Misc#
Wednesday, 01 February 2006

Where have I been that I haven't run into this before.  I recently wanted a compact yet secure password management tool that would ideally run from my thumb drive.  Found KeePass, a very slick package.  While I haven't delved deep into the full power of this tool.  It does exactly what I need.  It's quick, runs from my thumb drive and looks to be plenty secure enough and extensible enough to grow with me in the future.  One less thing I need to write for myself!!

Wednesday, 01 February 2006 19:56:49 (Eastern Standard Time, UTC-05:00) | Comments [0] | Cool Tools#
Thursday, 26 January 2006

In an effort to try and keep this blog technical in nature, I've decided to create a new blog dedicated entirely to books, reading and other publishing news.  New blog is at www.wordsforwords.com.  Check it out if you were even half interested in what I was reading.  I'm also extending an invitation to a few friends that were keeping track of their reading lists in different areas.  Perhaps this way we can create a useful blog for book reviews.

Anyway, I'll try to keep this blog mostly technical from now on, so if you're here for my .NET / Consulting stuff, then stay right where you are.  If you were interested in my reading preferences and reviews, then head on over to www.wordsforwords.com.

 

Thursday, 26 January 2006 20:37:05 (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#
Sunday, 22 January 2006

Yes, book #3 (The Hawkline Monster) is completed already, since this was a short one coming in under 200 pages this only took a few nights before bed and a few mornings over the cereal bowl to knock this one out.  I must say this was not a book I really enjoyed.  The only reason I really kept moving through it was the sheer shortness of it and the speed I was moving through.  The book is written in a very juvenile manner that is really quite annoying, in fact, I would rather have read my sons picture books. 

The story itself wasn't bad, though there was a bit of gratuitous sex that really didn't add much to the plot.  Had the story been written by a better author, it could have potential to be quite a story, however, I just could not get past the writing style.  There was little character development and plot turns and twists that seemed to go nowhere for no good reason.  Just a strange, strange book.

I know this author has quite a following and judging by some of the reviews on Amazon, it appears that this was considered one of his better books (though perhaps not his most famous) but this is just not my style of story and I while it showed promise, it just wasn't something that I enjoyed.  I give this a 3 out of 10;  one point just for the briefness and two points for the main plot line that could have been interesting.

Next up.... something more interesting I hope.

Sunday, 22 January 2006 23:04:49 (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#
Thursday, 19 January 2006

Well book number 2 is done (1/18/2006).  Gerald's Game by Stephen King from 1993.  This book was a quick read only taking about a week reading a half hour or so at a time in the evening before bed.  Very intriguing and a page turner that was very suspenseful up to the last few chapters.  However, fairly typical with King's novels, the endings leave something to be desired sometimes.  This is no different.  Up to the last two chapters or so, the book moved quickly and was a page turner...the last couple chapters really felt just like "oops, I have some loose ends to clean up, let me try and explain everything now"...while it was interesting to see the reasoning behind everything, it also took away somewhat from the "thrill" of the story. 

Having said that, I would definitely recommend this book to anyone who is looking for a quick horror read.  I would say, the best way to read this is late at night having put the kids to bed, climb into your own bed, with just a reading lamp with just enough light to read by and read a few chapters.  This will maximize the thrill as once you turn the lights off, you can put yourself in the place of the lead character and feel a little bit of what she must be feeling.  Certainly a creepy feeling. 

I won't say this is one of King's best overall novels, but it is one of his better in bringing the reader into the story.  Very worth the short time it will take to read.  I'd say about a 7 out of 10 for this one.

Thursday, 19 January 2006 20:12:24 (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#

I switch daily between c# and vb.net for different projects with different clients.  One of the things I've always plagued me was those subtle little differences between the languages; putting semi-colons at the end of vb.net code, typing Then....EndIf in c#, those types of things.  Those are easily noticed as soon as they fly off my keyboard.  The ones that are really evil are differences in techniques that, at least I, just don't use that often.

For example, yesterday I was working on a vb.net project for a client.  I created a new class that I wanted to implement an interface.  Not a big deal, I remembered that in VB you need to use the Implements keyword.  What I didn't recall, and embarrassingly enough took me a few minutes to discover what I was doing wrong, was that you needed to use the Implements keyword tagged on the end of each method in the interface.  It's something I don't do quite enough to have it instantly recalled when I need to (although perhaps by writing this up, I will forever have it etched in my brain, "What's wrong here, why isn't it seeing the methods I implemented....Oh yes, remember that blog entry you wrote last year....need the Implements on the methods!!!"   Another benefit to blogging!

Thursday, 19 January 2006 07:37:18 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Saturday, 14 January 2006

Well the first book finished of the new year (on 1/10/2006) was Dragons of a Vanished Moon by Margaret Weis and Tracy Hickman.  Book 3 of the War Of Souls Trilogy.  This really brings to a close a great story line that began many many years ago with Dragons of Autumn Twilight, probably one of the most influential fantasy novels and series of all time.  This series I feel brought the Fantasy genre into the mainstream of literature. 

Perhaps that's an over-dramatization, but it's a good read non-the-less.  The War of Souls bring to a close this story line.  Without giving too much away, the ending of this book really leaves no where to go in the current story line without making it feel like a completely different world.  I'm no author though, so I'm sure Weis and Hickam could manage to pull that rabbit out of the hat if they so desired.  You've got plenty of dragons, elves and battling between gods.  Everything you could ask for in a good action fantasy.  I would definitely recommend this book and give it a good 8 out of 10.  Best way to enjoy this would be to start from the very beginning in Autumn Twilight and continue through the rest of the Chronicles series, read the Legends trilogy,  then read Dragons of Summer Flame which nicely sets up the War of Souls trilogy (though you won't realize it at the time).

One book down, lots to go!

Saturday, 14 January 2006 23:33:07 (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#

I've made a decision, call it a resolution if you'd like, to read more books this year.  I've always read plenty of books, but the last few years I've slacked off quite a bit....just been too busy I guess...never took time out to sit down and read like I used to.  Well this year I plan on making time to read more. 

So with that in mind, I plan on writing mini-reviews here on this blog (while this blog is mainly development related, I have the luxury of writing about whatever my muse reveals to me).  I read a wide range of books.  Obviously I read the occassional technical book (though not as much as I used to now that most the information is available to me as quick as I can type up a search on google), I read other non-fiction: history, science / math books, Christian subject books.  I may even pull out the occasional medical, psychology or political book.  I also read a fair share of fiction as well.  Over the years I've mainly leaned towards reading fantasy, sci-fi, horror, but have been know to read the occassional mystery, action/adventure or classic literature from time to time.  I often have 2 or 3 books going at once, though I will normally focus on one of those (my wife laughs at me, but I can keep them all straight).

Here's my plan for this.  Here in this blog, unless I decide to setup somewhere else, I'll give mini-reviews of the books that I read as I finish them off (or put them back on the shelf if it's a bad read or not just the right time).  I will also setup a page here that I'll keep a running list of what is currently being read and what has been finished.  I'll be curious to see how many books I'll finish off over the next year.  I doubt I will catch a buddy of mine (who is the inspiration for doing this) who is shooting for 100 books this year (had 34 in 2005), but would like to increase my count of about 10 -15 this past year (purely an estimate, I kept no stats).  These posts I will be sure to put them in the Book category so if you aren't interested in those (or perhaps only interested in those) you can filter them out.

I think this will be a fun diversion for me with my busy schedule, I'll look back at the end of the year and see how I've done.

Saturday, 14 January 2006 23:16:31 (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#
Friday, 13 January 2006

Two days ago my host (a fairly well known host that I recommend to almost all my clients) changed the trust level on all their shared .NET 2.0 servers at the recommendation of Microsoft.  Unfortunately, little warning was given and some sites broke because they were depending on Full Trust.  I had two of those myself, not really sure what was causing  the need for full trust. 

After investigation, it appears that third party web control I was using on these sites require full trust and was causing my problems.  Now that I figured that out, I contacted those third-party companies and unfortunately those controls do not work in partial trust, although one company at least put the request on the feature request list for a future version.  Not much comfort for me at the moment however. 

Fortunately, the dependence on these controls is minimal and in my case will take some minor work to work around.  However, I know of some other sites that will not be as lucky.  I can understand the security reasoning behind running in partial trust, but it is very hard to explain to a client why there site which worked fine in the morning, suddenly no longer works in the evening, seemingly for no better reason than the site host upgraded the security.  Security of your site matters little if it is down.  So needless to say, I have some work ahead of me to change the sites to work under partial trust.  I also imagine we will see quite a few updates to 3rd party controls to run under partial trust if that is what Microsoft is recommending to hosts now.

One good thing that came from this, it put me in a position that I had to learn more about the different trust levels and what I can and can't do in each....something I perhaps took for granted in the past.

Friday, 13 January 2006 12:46:12 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Monday, 09 January 2006

Older post on setting focus to a control in ASP.NET, but found this useful today.  Something I do often enough that I don't want to have go searching again for it.

Monday, 09 January 2006 22:03:26 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Thursday, 29 December 2005

Well as I alluded to in a few previous posts, I was running into issues with my 1.1 No-Touch Deployment smart clients I developed for a client of mine that ran across the internet.  Well I've finally found something official from Microsoft in regards to this issue.

Bug Details: .NET Framework 2.0 breaks No-Touch Depoyment (HREF exe) apps from the Internet

There are a few workaround's posted which you may get varying mileage out of.  I in fact took the third suggestion when I converted them to 2.0.  This actually worked out pretty well and from the looks of things, this was really the only good solution that worked in our situation.

This should be considered pretty critical as it breaks existing code which can cause great problems.  In our case, it was easy enough to convert them to ClickOnce apps which enabled us to take advantage of some other enhancements, but for others this may not be so simple or feasible.  Non of the other solutions look appealing either at least for our application. 

Thursday, 29 December 2005 09:01:45 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Saturday, 24 December 2005

Having used Outlook for years and years, there is one feature I've always wished was there, though it has never been a show stopper, just a nice to have.  A Bounce feature that would take an email meant for someone else and send it on to them as if it was originally sent to them.  I know, nothing that couldn't be simulated with a forward.  I've also seen some 3rd party utils out there that have functionality like that (as well as some other email clients)....I've just always been curious why Outlook has never offered that feature.  Even just a button in the toolbar to bounce the current email would be fine with me.

At a former employer, one of my last tasks for them was to write an email client that integrated with their other custom software (they didn't want to integrate their software with Outlook, but wanted to write their own package to distribute to their clients).  The functionality rivaled Outlook (it was when Outlook 98 was the current version). 

One of the extra's I added was a bounce button.  It was one of the favorite features for them and came in handy for them.  The people using the client were often small offices that would have a central email setup (like a sales email) where all emails would come into.  The software did implement rules which could filter some out to the correct users, but often it would take a human eye to determine who the email should go to.  The bounce feature worked great for the situation as the email appeared to come from the original sender and was easily replied to.

While I don't have a huge need for this feature in Outlook, unless I am missing something, it seems that this might be a nice feature to have for some people.

Saturday, 24 December 2005 08:38:14 (Eastern Standard Time, UTC-05:00) | Comments [0] | Misc#
Thursday, 22 December 2005

I was trying out the VS 2005 Web Deployment Projects addin on one of my websites.  Wanted to merge all to one named DLL.  I was getting an error "Aspnet_merge Exited with Code 1" with very little other detail.  After some digging found the solution (at least in my case).  It appears that I had a duplicate class name in my project (actually had two of them).  Once those were cleaned up, build succeeded without problems.

 

Thursday, 22 December 2005 11:26:11 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Monday, 19 December 2005

Maybe this is something that is well know already, but thought I would share this with my few readers.  We just moved into our new home about 2 months ago and our 4 year old son decided (without our knowledge) to take a cup of grape juice in the the living room which has a very light colored carpet.  Needless to say, the worst happened, he tripped and grape juice all over.  Not only the main spilll, but splatter's of grape juice everywhere.

Being that we just moved in, we still have yet to unpack a lot of stuff and of course all of our carpet cleaners / stain removers could not be found.  We didn't want to let it sit for too long while we ran to the local store to grab something to remove the stain, but we had also heard that if you tamp the grape juice with towels, while it will soak up some of the juice, it often pushes it deeper into the carpet, making it even harder to clean up later.

Then I remembered my general science and remembered how well salt soaks up liquid, I thought what the heck, we'll give it a shot.  Dumped the salt on the stains and immediately the salt started to clump as it soaked up the juice.  I used the salt very liberally all over the stain and let it sit for about 30 minutes. 

After sitting, we vacuumed up the salt and believe it or not, most of the stain was gone.  While at the main spill you could still see the purple tint of the grape juice, it was tremendously lightened and alot of the secondary splatters were gone altogether.  After going to the store then and purchasing some chemical remedies, the stain was completely lifted and you'd never know anything happened.

Next time we have a staining liquid spill I'll be going for the table salt instead of the paper towels.

Monday, 19 December 2005 07:02:47 (Eastern Standard Time, UTC-05:00) | Comments [0] | Life Tips#
Saturday, 17 December 2005

Here's a nice list of the new and improved security feature in the 2.0 framework.

New and Improved Security Features in the .NET 2.0 Framework

Good reference.  I need to go through this and learn what I can, I'm sure I'll have some comments as I read through this and play with some new things.

Saturday, 17 December 2005 10:05:27 (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Thursday, 15 December 2005

Now this is slick.  Thanks to Scott Munro where I first saw this.  I've often wanted to see the sizes of folders, but always seemed to be more of a hassle than it needed to be, but the FolderSizes tool (freeware from SourceForge) does just the trick.  You have to add a new column to your Windows Explorer view and it will display not only the file sizes but also the folder size for subfolders.  The calculations run in the background and I really didn't notice any slowdown as this background count runs.  In the past I've used the properties on the folder and/or other 3rd party tools to display folder size, now it's all right there in the explorer window.  Very slick.

Thursday, 15 December 2005 08:25:24 (Eastern Standard Time, UTC-05:00) | Comments [0] | Cool Tools#
Friday, 09 December 2005

Reading Geoff's post about the VS launch got me thinking when he made the following statement:

I'm sick of clunky-to-say product names. While I thought WCF and WWF were bad (and are :) VS, SQL and Biztalk are also bad.  The 98 in Windows 98 is easy to say. So's the 2000 in Windows 2000. 2002, 2003, 2005 - none of these roll off the tongue anywhere nearly so easily. After spending the day where the most common sentence included the phrase '...Visual Studio 2005, SQL Server 2005 and Biztalk Server 2006...', damn I'm sick of both hearing and saying these lines - all those 2005s get very clunky when wrapping your mouth around them. From now on, I'm going to refer to each one as VS8, SQL9 and Biztalk3 (I think it's three...). If you don't know your version numbers, look them up! Actually, I'm still quite partial to the code names. You'll still likely still hear me say Whidbey and Yukon too.

I never really thought about it before, but I do tend to shortcut some of those names when I'm talking with people as well.  Windows 98 became 98, Windows 2000 became 2000, Windows XP is just XP, Visual Studio .NET simply became .NET until 2003 came out then I had to start distinguising between them by using 1.0 and 1.1 respectively.  Now with 2005 out, it's become 2.0.  I do still use the code names quite often as well, I called Windows 95, Chicago for quite some time.  Luckily, most of the people I talk with understand and use similar if not the same shortcuts. But I realize now that I should be careful when talking with others.

Be interesting to hear how others shortcut the names.

Friday, 09 December 2005 08:44:57 (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Wednesday, 07 December 2005

As I mentioned before, I had some issues with our smart clients developed under the 1.1 framework after installing 2.0 on machines.  I was also running into the same issue almost randomly on some machines that did not have 2.0 installed.  They would work for a few days, then for a few days trigger the file download dialog.   Never really figured out the reason.

Our solution was to convert our smart clients to 2.0 framework.  While at first I was nervous about taking that step, what a blessing it has been and it was very simple to do.  The wizard converted everything over with very few problems.  Only had a few things that I had to change due to being made obsolete in the new framework.  Other than that all worked fine, for the most part. 

The biggest issue I ran into was where I was doing some asynchronous FTP transfer and updating a progress bar.  You can probably guess the problem I ran into.  Cross thread issues updating the UI.  Took care of those problems with a few Invoke and all was well (nope didn't take time to use BackgroundWorker).  I should have caught those in the old version, but never ran into troubles and 1.1 let you get away with it without warnings.

The other added benefit is the ClickOnce technology that gives progress bars at every step when launching the app.  I had issues with the 1.1 smart clients when people would be impatient with the loading of the client (mostly after I had updated the program and they were downloading new components).  Now while the load time is not much different, it at least gives the appearance of faster loading and the user at least knows what is going on.  Very nice.

Wednesday, 07 December 2005 21:15:15 (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Sunday, 20 November 2005

Goody wrote about a web service he created that was changing strings as they come across against his will.  This was converting the \r\n to \n essentially stripping off the \r.  While I hadn't run into a similar situation, it got me curious on what was going on.  After some digging, it appears that this might be documented by Microsoft here in it's White Space [XML Standards].  Down at the very bottom it has a section labeled End of Line Handling which states:

XML processors treat the character sequence Carriage Return-Line Feed (CRLF) like single CR or LF characters. All are reported as a single LF character. Applications can save documents using the appropriate line-ending convention.

Also in the W3C it states:

XML parsed entities are often stored in computer files which, for editing convenience, are organized into lines. These lines are typically separated by some combination of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).

To simplify the tasks of applications, the XML processor MUST behave as if it normalized all line breaks in external parsed entities (including the document entity) on input, before parsing, by translating both the two-character sequence #xD #xA and any #xD that is not followed by #xA to a single #xA character.

Seems like that is just the way it's gotta work if the standards are to be followed, so Dave's workaround sounds like a good solution if you need to preserve both the carriage return and line feed.

Sunday, 20 November 2005 10:25:20 (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Thursday, 17 November 2005

I developed a smart client for a customer a while back.  It's linked off of their website and has worked fine for quite some time.  I haven't worked with it for awhile, but this morning I had someone ask me a question about it so I went to fire it off to take a look and now IE is bringing up the standard download dialog.  It is happening on both of my development machines.  Program still runs fine in development. I will test on a few other machines, although it appears that it may be working fine for other people.

My initial thoughts is perhaps since I installed VS2005 on these machines that since the smart client was developed under 1.1 that perhaps the 2.0 framework is causing my some grief.

Any thoughts?

Thursday, 17 November 2005 07:54:21 (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Tuesday, 15 November 2005

Received a lot of activity recently on an older post surrounding an exception received when trying to send email.  Thought I would summarize the information in a new post to hopefully help others out there.

The problem surrounds receiving an exception

[COMException (0x80040211): The message could not be sent to the SMTP server. The transport error code was 0x800ccc15. The server response was not available]

when trying to send an email using System.Web.Mail in the framework.  The problem is caused by having McAfee VirusScan on the server and having OnAccessScan enabled (at least it was in the discussion we were having, there may be other causes that we haven't discussed.)  Thanks to David for further confirmation and too Marcel (see last comment) for the following steps to work around the issue in McAfee VirusScan Enterprise 8.0.

- go to VirusScan Console
- Right-click Access Protection
- Click "Properties"
- Go to Port-Blocking tab
- Select Rule: "Prevent mass mailing worms from sending mail"
- Click Edit (in order to edit this rule)
- Add "aspnet_wp.exe" to the exclusion list

Other products such as Norton and other antiviral or firewall software may cause the same issue, but I'll bet the underlying issue is the same.

Hope this helps others out there.

Tuesday, 15 November 2005 20:29:23 (Eastern Standard Time, UTC-05:00) | Comments [0] | #

I hope to make this my new blogging home, to talk about a ton of things regarding my business and developing.  Making a home all my own giving me the freedom to tinker and modify to my hearts content.  Shoul be fun.

Tuesday, 15 November 2005 20:07:24 (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Search
Archive
Links
Categories
Admin Login
Sign In
Blogroll
Themes
Pick a theme: