Saturday, June 14, 2008

Who Says Space Quest is Dead?

Nice! It looks like Akril is back to writing her WSSQID comics again (http://sq7.org/wssquid). She has two new comics in the past week.

Saturday, March 29, 2008

Lights Out?

My Uncle noticed this today. It is an interesting approach to saving energy. It works for CRT's, but not LCDs(http://www.google.com/intl/en/earthhour/), Still cool, just don't try to print pages like this with Background printing turned on.

Thursday, March 20, 2008

Software Complications

I think I finally understand some of the strange things which complicate the creation of software.

I was involved in testing a small piece of internal software written by one person then handed over to a small group to finish. It mostly worked when he handed it over but was missing some stabilization and fit and finish. Being handed over it fell into a strange mix of complications.

Number of coders When there is one coder, there is one opinion and one style. The program should theoretically be consistent. Adding other coders throws a wrench in the works. Each coder has a different style and a different background. Not to mention they aren't familiar with the other coder's code.

Language complexity The complexity of the language can make things more difficult by hiding useful elements of the language in places some programmers wouldn't think to find or wouldn't know it even existed causing programmers to wrap their own solutions to things which already exist.

Language stability The stability of the language helps quite a bit. If a language is a type-safe language with garbage collection it is more difficult to have more disastrous consequences. Where in a language like C++, if you are not careful the program can leak and corrupt memory.

Project Complexity It is impossible to write a program which does not have errors. There will always be bugs in any program. Even a simple program will have some kind of way it can fail. The more code a program has and the more pieces it accumulates the more bugs it is likely to have. So the number of possible bugs is somewhat proportional to the complexity of the program.

Coder's Programing skill No two programmers have the same skill set or experience. Some have years of college and work experience, while others are new but well taught. Others are self taught, gleaning on the histories of others. As such the ways code is written will vary deeply depending on who codes.

Coder's Language familiarity The familiarity a coder has with a language certainly helps with how well they can code. A lot of languages have a very similar structure so someone familiar with a similar language can generally be somewhat efficient in another. But there are things such as libraries and learning the gotchas of a language which differ. For instance Someone who was educated in C++ can program in C# but they are likely to make things more difficult than necessary. And Someone who was trained in C# is likely to need to heavily use references to get much dome.

All of these things and others can make things difficult. A Programmer who is handed a project but is not familiar with how a program works is likely to unknowingly break parts which work perfectly well, while trying to fix some other part.

It was amazing to see how all of these factors can play into how a program eventually ends up. And the quality of it.

Cool Releases

A few cool releases this week, and one from a while back.

Windows Vista SP1 was released to Windows update yesterday. There are supposed to be lots of improvements and changes, including updating the Kernel to the one used in Windows Server 2008. I installed it last night. So far I haven't seen much difference. Instant Search is supposed to be cut back now, but I don't see any change there. Maybe there is some power mode I don't usually use or something.

The most drastic change is supposed to be with the speed of the normal File operations, such as Moving or copying files. Finally! I won't have to wait an eternity for a file to move! Another is that unzipping zip archives should be faster as well.

I think I can vouch for the zip file extraction being faster. I just unzipped an archive and it didn't seem as painfully slow as usual.

I also found out that Apple's Safari 3.1 has been updated. It's improvements are supposed to make it faster and more standards compliant.

It does seem faster. It actually seems to be usable now. But Safari it is still missing some power features which still makes IE, Opera and FireFox better for developers. Such as being able to save an entire website rather than just the html.

Right now I'm using Safari to write this post. The built in spell checker is a nice feature for blogging, as is the ability to resize the text box. But it is still such an ugly misfit to run in Windows. Skinned windows are for toy applications not serious ones. It also still looks horribly naked without the Windows borders.

A while back FireFox 3 Beta 4 was release. It is on it's final leg of Beta's so there shouldn't be many differences with it from Beta 3. I haven't spent much time on it so I haven't found many interesting points. However the user interface is kinda cool.

Tuesday, March 18, 2008

Unemployed

A week long Friday is now over. I am officially unemployed for an hundred days. Today at a little after 3:36 PM I handed my badge over to my Employment Rep.

Before the day was up, I sent this email to those I thought would care.

The curtain closes and it’s time to take the final bow.

Goodbye all, the pleasure has been mine, to have worked with each of you.

Thank you.

The funnyest responce was from my former Manager:

Not every day a tester comes along like Him who both cranked out a lot of excellent work and didn’t drink all the beer!

It's a bitter sweet time. A short time to be free before the next adventure begins. Yet sad, to miss what I have been enjoying doing for the past year.

Friday, March 14, 2008

Happy π day!

it's 3 14 again. It looks like librivox is celebrating in their own way http://librivox.org/?page_id=1999&preview=true You can listen to the first 50 digits read by many readers. Sounds like fun. Once again I forgot all about it so I don't have any Pie to celebrate with but it's a fun day anyway.

Wednesday, March 5, 2008

Drooling over announcements

Oooh! IE8 Beta 1 is out today. I'm excited! I'm easy to excite aren't I? I simply had to download it and try it out. http://msdn.microsoft.com/ie

I decided to re-download the IE6 and IE7 Virtual machines so I could try installing IE8 in a safe environment, so I wouldn't mess up anything. When I went to the VM page I found there was already an IE8 Virtual machine up too. Nice! But it means that just running the VM I don't get to see the installation, oh well.

I'm having fun anyway. I'm even writing this post from IE8 running on the Virtual Machine. It's so funny how broken Blogger is as it's expecting the old broken IE behavior.

Another really cool thing I saw today, is that a project I have been watching excitedly for a few years, has been released with source code. The project is Microsoft Research's Singularity OS. The all Managed Micro-Kernel, Software Isolated Process, Operating System. Even better, I know the one of the guys in charge of it. I've gotta find the time to try it out some time. http://www.codeplex.com/singularity. I wonder if I can understand any of it?

Sunday, February 17, 2008

Time Line Template

Here is something I have been working on over the past week or so. I keep coming across the need to use certain dates in forms or Resumes and so on. But all of these dates are scattered all over the place.

I have employment dates in my Resumes, Special Church dates in my Baby book and Church records, and certificates. Mission dates in Mission Journals etc.

So it is sometimes difficult to find the exact date info I need. As I thought about it I realized that what I really needed, was a Time line. A central location to store all of the scattered date data of importance. And as a time line I could also get a nice visual perspective of my life.

So Here it is. I have linked the thumbnail below to the file on my SkyDrive.

Download Timeline.xlsx

It is created in Office 2007 Excel and uses some of the new features found in Excel 2007 such as Sortable tables and some of the new visual styling. It may be possible to convert it to the old format, but I haven't had a need to try.

For now now, I filled it with generic sample data and it is currently only set up for 100 events. To add any more, requires expanding the two tables and editing any new data labels to point to the event text.

One more thing. The Time line is also set to January 1st 1978 as the current Axis minimum, it can be changed but you will have to find the right numbers for the date. I did this because there seems to be a frustrating issue where if the dates span a certain point Excel thinks the Axis minimum should be 0 which coincidently is 1/0/1990 but in the chart it is 1/0/1900, neither of which make very valid dates.

The file is 30.6 KB.

Saturday, February 16, 2008

Refrigerator Doors

Refrigerators could really use glass doors. Maybe something with blinds just behind the glass so the world doesn't have to see the contents all the time. It's such a waste ending up standing in front of the  open refrigerator staring in trying to figure out what I want to eat.

Lately I just end up popping some frozen food like item into the microwave. Ah what a life.

Sunday, January 27, 2008

Farewell President Hinckley

I received a Phone call from home. President Hinckley passed away at 7:00 PM Mountain Time today. He will certainly be mourned and missed. He was a great and courageous leader of the Church of Jesus Christ of Latter-day Saints.

While he will be missed, we certainly look forward to sustaining the Man who will fill his shoes.

Thursday, January 24, 2008

Spreadsheets

I got my spreadsheet start in Quatro pro. Now days I now use Excel quite allot. It was an easy transition.

What is cool about spreadsheet programs like these, is what you can do with them.

Most people use them to create stuff for finances like budgets, schedules, Payrolls etc. Excel is really good at those sorts of things. After all that is what it was designed for.

But it's the other things it can be used for that I find interesting. For instance I created a spreadsheet which every morning at Work I enter the time I arrived and then at the end of the day I enter the time I left so that I can calculate my hours every week.

When I first started at my current job I created a spreadsheet to keep track of where things are and what and when to do it. Basically I used it as brain storage. Pretty soon it became a piece of a model for organization for the team. It's strange.

When I was at school I had finished several programs and wanted to see how close I was to achieving any certificates or degrees. So I took the Syllabus and duplicated it in Excel then plugged in some formulas so I could set some check marks which would then highlight certain cells if the achievement was accomplished.

While at it I discovered that the Syllabus hadn't been calculated correctly. So I asked my Instructor about it and when he looked at it he asked if I could finish it so he could use it. He also said it was worth extra credit. So I finished it, and in the process helped fix the credit distribution.

Believe it or not Excel is also pretty good at geometry too. Using the right kind of chart it is simple to create graphs, but by indicating x and y the graph can go back on it's self. Then by doing this it is relatively simple to create a graph of a circle or square or whatever.

Back when I was small and One of my Uncles was going to school to be a Math Teacher he showed me this really cool Quatro pro graph he had done. It produced a Spirograph where you could change certain cells and get really neat designs.

Whenever I have something I want to formulate like how to write a program which draws an ellipse I'm likely to draft it out in Excel.

The more I use spreadsheets the more I think of the possibilities of what they can be used for.

I bet one day someone will figure out how to write a game of Asteroids all using Excel cell formulas. It would be difficult for sure. But it would sure be cool. even though it would be equal to using a screwdriver or a wrench as a hammer.

Friday, January 18, 2008

CRT RF Ghosting

I'm sitting here watching TV and finding it a little weird that I'm seeing a few second delay precursory ghosting in the screen.

It seems to be the DVR sitting on top of it, for some reason, as it records the analog signal of the live broadcast, produces RF interference which, with the 2 second + delay on the signal out, overlaps the interference as the ghosting effect of what will soon occur.

It's kinda interesting. And even stranger when there is an hour or so delay.

It reminds me of a computer we once had, which if it was turned on within 5 feet of a powered on CRT monitor or TV, would ghost whatever the Video card was displaying.

It was entertaining to watch the cursor moving Solitaire cards on Windows 3.1 superimposed over the news.

Fun days.

Sunday, January 13, 2008

Reverse

While helping my office mate prepare for his Interviews a whole bunch of us were coming up with questions and challenges for him. We were really hoping he would make it. One of the challenges asked was to reverse a string.

Having been asked to do it in an interview before (I did it in VB then) I had, had the time to come up with other possible solutions to the challenge. Here is a C# version of the method from memory:

/// <summary>
/// Reverses a sequence of chars in a string.
/// </summary>
/// <param name="value">String to Reverse</param>
/// <returns>the reverse of the provided string.</returns>
/// <remarks>
/// Reverse by back stepping through each char in the string 
/// and filling a StringBuilder with the result.
/// </remarks>
public string reverseStringFill(string value)
{
    StringBuilder temp = new StringBuilder();
    // Iterate backwards through each char and copy 
    // it's equivalent from the source string.
    for (int index = value.Length - 1; index >= 0; index--)
     {
         temp.Append(value[index]);

     }
     return temp.ToString();

}

Here is another variation:

/// <summary>
/// Reverses a sequence of chars in a string.
/// </summary>
/// <param name="value">String to Reverse</param>
/// <returns>the reverse of the provided string.</returns>
/// <remarks>
/// Reverse by back stepping through each char in the string 
/// and filling the resulting array.
/// </remarks>
public string reverseStringBFill(string value)
{
    char[] temp = value.ToCharArray();
    int length = value.Length - 1;
    // Iterate backwards through each char and copy 
    // it's equivalent from the source string.
    for (int index = length; index >= 0; index--)
    {
        temp[index] = value[length - index];
                
    }
    return new string(temp);

}

My Office mate having learned in C/C++ most of school came up with a swap method that he had learned in class, but when he tried to run it in C# it had compile errors. because he was trying to do things the C way in a type safe language. After a hint about casting he figured it out. What he ended up with is something similar to the following:

/// <summary>
/// Reverse String using Swap
/// </summary>
/// <param name="value">String to Reverse</param>
/// <returns>the reverse of the provided string.</returns>
/// <remarks>
/// This is how a C/C++ programmer would reverse a string in C#
/// </remarks>
public string reverseStringSwap(string value)
{
    char[] returns = value.ToCharArray();
    int index = 0;
    while (index < value .Length / 2)
    {
        // Swap chars
        char temp = returns[index];
        returns[index] = returns[(value.Length-1) - index];
        returns[(value.Length-1) - index] = temp;
        index++;

     }
     return new string(returns);

}

While he worked at the problem I was thinking of a similar way to do the same thing from a managed perspective:

/// <summary>
/// Reverses a sequence of chars in a string.
/// </summary>
/// <param name="value"></param>
/// <returns>the reverse of the provided string.</returns>
/// <remarks>
/// This is similar to the swap method except it
/// only pulls it's chars from the source string.
/// </remarks>
public string reverseStringBSwap(string value)
{
   char[] temp = value.ToCharArray();
   int length = value.Length - 1;
   int half = length / 2;

   for (int index = 0; index < length; index++)
   {
      temp[index] = value[length - index];
      temp[length - index] = value[index];
                
    }
    return new string(temp);

}

He had written his in a console app and I in a GUI app so rather than  return new string(returns); His actually used Console.Write(returns); I stumbled around for a little while trying to remember how to cast to a string. But eventually found it, hopefully I can remember it now. I have changed the methods so they work the same in a GUI and a Console app as I like a clean Modular design.

While at it I found Array.Reverse(""); and this nice little, simple, clean and tidy, method ensued:

/// <summary>
/// Reverses a sequence of chars in a string.
/// </summary>
/// <param name="value"></param>
/// <returns>the reverse of the provided string.</returns>
/// <remarks>
/// This is the simple way to reverse a string.
/// Simply by using the power of the Framework.
/// </remarks>
public string reverseStringArray(string value)
{
   // Copy to an array
   char[] temp = value.ToCharArray();
   // Reverse
   Array.Reverse(temp);
   // Return casting the array as a string
   return new string(temp);

}

Now for the real fun. Recursion (Where a method calls it's self over and over until it finishes it's work, then backs out to provide the results.). This method ends up being fairly simple, but it is slower, has potential to crash and is somewhat difficult to wrap one's head around. But it looks clean and impressive.

/// <summary>
/// Recursive String Reverse
/// </summary>
/// <param name="value">String to Reverse</param>
/// <returns>the reverse of the provided string.</returns>
/// <remarks>
/// This method Reverses a string by calling it's self recusively 
/// The method used here is certainly not the fastest method avalible
/// as it uses slow string concatenation and has the possibility of
/// having a buffer overflow recursing to many levels if using a 
/// string which is to long. But the idea is just so fun.
/// </remarks>
public string reverseStringRecursive(string value)
{
    if (value != "")
    {
        // Recurse the incoming string, minus the first char, then return 
        // the resulting string, appending the first char to the end.
        return reverseStringRecursive(value.Remove(0,1)) + value[0];

    }
    else
    {
        return "";

    }

} 

Ah, this was fun! One of these days I should revisit one of my old favorite sites (http://www.xbeat.net/vbspeed/) and try to work out a method for timing the methods and try a few other speedy ideas.

One of the odd things from that site is that you learn that simplicity is not always equal to speed. Rather often the reverse is true. There are some strangely long code snippets setup just for improvement with speed.

Monday, January 7, 2008

Résumé updating

I have less than three months left in my contract, so I'm back looking over my Résumé again, trying to figure out how to add my current position to it, which apparently I had added in June and since forgotten about the contract mix up which required an update. Well, I have updates to add to it anyway, as I have been doing some SDET work lately. Ah, having fun breaking software, he he.

While helping cleaning on Saturday I stumbled across a packet which included a handful of Resumes. I glanced over them and thought about what would cause a potential employer to balk, while trying to read them. I was balking anyway, they were a little brash, slightly pompous and blindingly difficult to read. All written using one of the the standard Word Resume templates. On one the goals mentioned had nothing to do with the position.

If I were the hirer I don't know how long I could stand looking over those resumes unless all of them were similar. So I think I know some things I should remember as I work on mine. But it is hard to detach myself from what I have written, to look at it through someone else's eyes.

One reason for the update is that there are a couple of FTE positions open on my team which I could possibly apply for.

I'm not going to get all excited, thinking I will actually get a position, but if I do interview, it would at least be good practice as I continue to learn and grow in this career path.

Sunday, January 6, 2008

I _ Software

A silly thought came to me the other day of the perfect bumper sticker if I were to ever get one. So I went searching around and finally found a website which allows you to design your own bumper stickers http://www.makestickers.com/customize.aspx?TID=5870 And this is what I ended up with:

But if I was ever to find a way to get in on the Dev side I would have to switch to this one:

I think the first one is funnier.

Wednesday, December 19, 2007

IE Passes Acid2

Woo, hoo. A couple of months ago I was waking through the halls of IE, so I could catch my carpool home, and glanced something exciting on the wall.

What I saw has finally been announced. It should have been introduced something like: 

I hope all you developers out there there now have smiles on your faces.

Why? Because IE8 finally passes the Acid2 test!

http://blogs.msdn.com/ie/archive/2007/12/19/internet-explorer-8-and-acid2-a-milestone.aspx

The first section of the video on Channel9 is cool.

The team has put in a lot of work over the past year, they still have work ahead. But it is exciting. At least for someone who does occasional web development.

When IE had a public bug tracking system setup for IE7 there was a bug which simply stated. "Pass Acid2 test". Well I suppose that bug can be closed now. :)

Friday, November 23, 2007

Visual Studio 2008

Woo hoo! Visual Studio 2008 went RTM on Monday. So I downloaded and installed the Free Express Editions. Now if I can just get over my programing block so I can actually do some programing.

Cool highlight: JavaScript intelisence for WebDeveloper. Improved CSS handling. Okay that's about as far as I have explored so far.

So far the little bit I have seen is pretty cool. One thing I was kinda hoping for which has not changed is the placement of the close button for the tabs in the tabbed display. I was hoping the tabs might work like IE7 and FireFox2. Oh well.

Wednesday, October 10, 2007

Krondor mmm.

Ah. DosBox. I decided to reminisce I downloaded DosBox and opened one of the games I have fond memories of. Betrayal at Krondor. Good memories of a classic game.

Now if I can just figure out how to give it write access to specific files so that I can get past the introduction. Nice! Got it. Just had to share the folder so that the program has permissions.

Good thing DosBox works with Visa. I wonder what else I can get working on it?

Sigh. Weird. For some reason I have been longing, yearning to use Windows 3.1 again. The nostalgia. Yeah. Really Weird. I wonder if I can put it in a Virtual PC? Hmm. Could be cool. Another day though. Krondor Tonight.

Sunday, October 7, 2007

Aw. No Analytics report

Aw. It looks like I didn't install the Analytics tracking script correctly, or something. I happen to know there were at least two hits over the past week.

I had thought that maybe those that read, might be doing so via. RSS Feed. It is quite possible but then I went looking for the tracking script I had placed and, it was gone. Whoops. This time I placed it in a place where I know it should go.

But then if Javascript is turned off in a browser it won't be tracked. Actualy, I wonder what this page looks like without JavaScript. Google relies on it heavily.

Monday, October 1, 2007

Socks and Sandals

Sad. My Manager is moving to a new position soon. He is an awesome Manager. I suppose it is good that he is moving on at the highpoint of this position. That's the way to do things.

He is one of the classic Pacific Northwestern Socks and Sandals guys (http://www.werealotlikeyou.com/) See #56. And the Youtube to go with it (http://www.youtube.com/watch?v=Z59fQ12OR0A).

Ah. Maybe I didn't have to give up Sandals and socks when I moved up here after all.

I finaly fixed the you tube link