Web Design. Development. Optimization. RSS 2.0
 Monday, June 07, 2004

This is a cool idea. I actually have an old Laptop lying around. I'm gonna investigate it a litte to see if I can do it.

From Robert Scoble (the Scobolizer):

Citizen Engineers: Build your own digital picture frame from an old laptop

I should have linked to this in an earlier post, but it's so cool that I think I'll call it out separately: Learn to build your own digital picture frame. That's part of a new feature we started on Channel9 named "Citizen Engineers."

 

Monday, June 07, 2004 1:09:48 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] -
Technology
Del.icio.us Digg Technorati Blinklist Furl reddit
 Friday, June 04, 2004

Some people debate the benefits of earning developer certifications. While they are obviously important in the Systems Engineer field, where MCSEs and Cicso certifications are often job prerequisites, the common wisdom for Developers seems to be that “what you have done” counts way more than simply “passing a certification exam”.

The anecdotal evidence gathered from my personal experience is overwhelmingly in favour of certification, as far as I'm concerned. I have been Microsoft certified for 6 years, and have:

  • landed at least one job where having an MCSD certification was a prerequisite to even apply;
  • gotten into the book industry on the back of my certification; and
  • found situations where interviewers/employers mention it favorably - “Ah, I see you're certified. That's good!”.

I am not out to convince people that everyone needs to become certified, or that certification is the Holy Grail that will allow you to find work faster and easier than anyone else. I just want to say that I, personally, find that Microsoft certification is one element that has helped drive my career forward.

(See Eric Sink's excellent article on Career Calculus, to understand the correlation between constant learning and career development.)


As some of you know, I have been maintaining a MCSD/MCAD Certification Wiki elsewhere on this site. As I gather info and links, I update the pages of the Wiki. Since I am currently studying for the 70-316 exam (officially called Developing and Implementing Windows-based Applications with Microsoft Visual C# .NET and Microsoft Visual Studio .NET), that is the section of the Wiki with the most information.


Some people study for an exam, and then wait until they are 100% ready to book it. I can't work like that. I prefer to book the exam the moment I decide to go for it, and schedule it for a date 3 or 4 weeks in the future. Then I study like crazy and take the exam. Booking the exam first gives me a definitive deadline to work towards, ensuring I devote the time necessary to pass. 

Of course, if I honestly felt I was not ready a few days before the scheduled exam date, I could always call Prometric and reschedule the test... there's no charge for that. I've had to do that once or twice when my work schedule did not permit me to take time off to study for or take the test.

 

Friday, June 04, 2004 4:07:46 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] -
.NET | The Blogging Life
Del.icio.us Digg Technorati Blinklist Furl reddit
 Wednesday, June 02, 2004

God, I love this stuff.

So I sit down, and in less than an hour build a simple model-based testing program for my Rock Paper Scissors web service.

Basically, I start by defining all the valid states for my service.

private enum states
{
    Offline,
    ShakeHands,
    TakeTurn,
    ReceiveTurnFeedback,
    ReceiveGameFeedback
};

Then I create an array indicating all the valid state from-to combinations.

private states [] testorders =
    {states.Offline, states.ShakeHands,
    states.ShakeHands, states.TakeTurn,
    states.ShakeHands, states.ReceiveGameFeedback,
    states.TakeTurn, states.ReceiveTurnFeedback,
    states.ReceiveTurnFeedback, states.TakeTurn,
    states.ReceiveTurnFeedback, states.ReceiveGameFeedback,
    states.ReceiveGameFeedback, states.Offline};

So, taking the first line of the array above, if the rps service is currently offline, the only valid action would be to shake hands. If you have just shaken hands, you have two choices: you can either take a turn, or receive game feedback (close the game down).

The actual code is rather simple. If my RPS service were a professional application, I would improve this a bit. Basically, I keep track of the current state, loop through the array looking for all the possible actions, and then randomly take one.

// What can my next states be?
ptr = 0;
for (int j = 0; j < testorders.Length - 1; j += 2)
{
    if (testorders[j] == CurrentState)
    {
        // Add this to the list
        NextState[ptr++] = testorders[j+1];
    }
}

// Pick one
CurrentState = NextState[rndm.Next(0, ptr - 1)];

If I do this enough times, I will have tested every allowable combination of actions and states. And somehow there was a new allowable action, for instance, SayNiceGame(), I could add that to my states array easily enough.

Possible improvements to my application would include testing for exceptions, and handling them gracefully; keeping statistics about the number of tests run; calculating the percentages of each choice made (rock, paper and scissors)... You can start with a basic test model, and make it more complex as you have time.

Testing Web Service, v1.0 - C# Source Code

Testing Web Service, v1.0 - .NET Binary

 

Wednesday, June 02, 2004 12:54:08 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] -
.NET | Demo Code
Del.icio.us Digg Technorati Blinklist Furl reddit
 Tuesday, June 01, 2004

Josh Ledgard points (through Nihit Kaul) to an excellent article on testing methodologies - well worth a read. Automated testing seems to be the new "hot" technology of 2004.

 

For Testers: Nihit Kaul Talks Up Model Based Testing

It was my belief as a test lead and is still my belief.  To test a product with any amount of interesting complexity you need to find good ways to reduce a reliance on manual processes.  If you test manually you need automation.  If you are writing a test plan you need to have a machine figure out the details.  If you start writing automation you need to reduce the cost of writing automation.  One way to reduce costs and start abstracting the testing problems is through model based testing.  Nihit has a good introduction article to the practice you should read. 

Internally we have gone so far as to write automation that abstracts Visual Studio, write a model that represents a feature, and have that model make calls to the automation. This reduces the cost of writing scripted automation.  Only a few teams have started doing this and I think it has a long way to go, but I would be surprised if the use of such practices don't take off quickly. 

 

Tuesday, June 01, 2004 11:49:50 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] -
.NET | Technology
Del.icio.us Digg Technorati Blinklist Furl reddit

I have written about Eric Sink on this blog a couple of times before, but it's time to do it again.

Eric runs a successful software company called SourceGear, who have a professional source control product called Vault. He writes a regular column for MSDN called the Business of Software, and on his personal blog is now posting his take on the 22 Immutable Laws of Marketing.

If you are at all interested in the business side of the software industry, read Eric Sink. As soon as possible.

 

Tuesday, June 01, 2004 10:54:59 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] -
Business and Investing | Technology
Del.icio.us Digg Technorati Blinklist Furl reddit

Here's how to get rid of the welcome screen, and allow your computer to automatically logon upon boot. Thanks to TweakXP for the info.

Note: This is not a good idea in an open environment, such as the office, but makes sense for the Home PC, especially when there is only one user account and no password.

1. Click Start on the Windows taskbar, and then click Run.

2. In the Open box, type:

control userpasswords2 

then click OK.

3. In the dialog box that appears, you'll see: "Users must enter a user name and password to use this computer" check box. Enabled will require users to logon, disabling will make XP automatically logon to the Administrator account.

4. Go to Control Panel / User Accounts, and click “Change the way users log on or off”, and untick both “Use the Welcome Screen” and “Use Fast User Switching”.

 

Tuesday, June 01, 2004 6:27:20 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] -
Technology
Del.icio.us Digg Technorati Blinklist Furl reddit
 Monday, May 31, 2004

that is the question.

Today I had a pleasant experience modifying some open source software to meet a particular need. The software was FlexWiki and the changes I made mostly had to do with incorporating Google AdSense over at my Wiki pages.

The changes themselves were trivial. I wanted to start serving ad banners with my wiki pages. The wiki is not templated, so I could not just pop in and modify the HTML. I had to download the source code for Visual C# .NET, find the relevant method, and hard code the Google AdSense in there. Once I recompiled and uploaded the new DLL, everything worked like a charm first time. (I love it when things work like they are supposed to.)

Now what made this whole process easy was that the source code was freely available. If this were a closed source project, I would not have been able to incorporate my ad code so easily. So, in effect, my experience is the "poster child" for the open source movement. If you have an itch, you can scratch it yourself. This isn't about politics, anti-capitalism, freedom, or any other grandiose concept - it's about being able to make changes you need in a matter of minutes.

The downside to having the freedom to change the fundamentals of an application becomes obvious rather quickly. Here I sit with a version of FlexWiki that is no longer compatible with the master version. When the developers release the next version of this software, I will be stuck trying to integrate their changes with my own. Most likely I would lose my changes entirely, and have to reimplement them (if I can remember what they were).

So open source, while good for scratching an immediate itch, allows the user to paint themselves into a "can't upgrade" corner. No bug fixes. No security enhancements. And no new features. On top of that, if FlexWiki starts misbehaving and I can't locate the source of the problem, who do I call? Are the original developers now going to be responsible for helping me find and fix problems that may be of my own doing? Of course not.

So while open source makes sense for people like me, who have the knowledge and expertise to integrate my changes with any new versions that come down the road, it does not make sense for crucial end-user software like Windows or Office.

 

Monday, May 31, 2004 12:26:27 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [1] -

Del.icio.us Digg Technorati Blinklist Furl reddit
Archive
<June 2004>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Scott Duffy
Sign In
Statistics
Total Posts: 488
This Year: 48
This Month: 0
This Week: 1
Comments: 76
Themes
Pick a theme:
All Content © 2008, Scott Duffy
DasBlog theme 'Business' created by Christoph De Baene (delarou)