| Wayne's profileJustPC.comBlogListsGuestbook | Help |
JustPC.comRecycling electrons since 1996. |
||||||||||||||||
|
May 11 It was lost in the move from Memphis to SeattleMoving is a traumatic experience. Take it from someone who's moved halfway across the country three separate times in the last ten years. Nothing goes completely right, no matter how much you plan ahead. Something always gets forgotten or lost or broken. In the case of the JustPC.com web site, it was all three. For the last five years, www.JustPC.com was hosted on a Windows 2003 server located in my home office, along with several other servers such as www.Trybble.com and www.JillFreeze.com. Prior to 2004, I had a similar setup when I lived in South Dakota. When I moved to Memphis, I simply left my previous server in South Dakota, while I built a new server in Memphis. Once I was satisfied the new hardware and software were stable, I simply switched a few DNS entries and my new Memphis machine took over my collection of servers. Since it's been several years since I wrote a computer book or article, I finally decided I no longer needed to operate my own servers. So I switched them to a third party hosting facility knowing I wouldn't have to deal with the day-to-day hosting headaches. So one by one, I moved all my web sites into cyberspace. Save one. I moved to Seattle about five months before my family and JustPC.com continued to function normally since it was still hosted on my Memphis server. I completely forgot about it. About six weeks ago, I moved my family from our home in Memphis, Tennessee to Seattle, Washington including my local server. The moment I unplugged the computer, JustPC.com was broken. Well, not exactly broken since I had a functionally identical server, www.JustPC.net. A long time ago, I found it convenient to have two servers, a production server called JustPC.com and a test server called JustPC.net. That way I could test new software releases on one server before making it public on the other. Unfortunately I never visit my own web site. So I never knew it was down until Ben Ezzell let me know. (Thanks Ben October 02 I'm back........I know it's been a while since some of you've heard from me, but this has been an insane year. Sammy spent four weeks in the hospital this spring, three of which were spent in a special program in Cleveland, Ohio. She ended up missing so much school that her teachers weren't going to let her graduate. With the help of a guidance counselor, Sammy spent the entire fourth quarter at home but made up the work she missed and was able to graduate with the rest of her class. Just when things were starting to look up, the slowdown in the economy hit and I was one of its earliest victims. My company laid me off in May and I spent the entire summer applying for and interviewing for jobs. It took two months before I realized I wasn't going to find a job locally with a decent enough salary to keep my house in Memphis. Most of the employers and recruiters I talked to in the area would pay about half to two thirds of what I was making. While I'm not particularly attached to the house we live in, it was one of the cheapest houses that would keep the kids in their current school. Both kids are very active in the school's marching band. Their band is exceptional and is arguably the best high school band in Tennessee and the surrounding states (http://lookmom.net/houston.html). If they had to give it up, they might as well move out of state. One compromise we made was we wouldn't ask the kids to leave during the band's performance season, which runs though the end of October. Things looked better for the out of state jobs I found. I could make a comfortable living at many of them. However, most of those jobs were for small firms which could be hard hit if the economy got worse, or they weren't in a very appealing location. Early on, I found a job in Reno, which I really wanted, but in the end they judged me based on the things I did in the last year, not the things I've done in the past. During this time, Jill was very supportive. She started applying for jobs at the same time I did. The fact that she found a job first is a testament to her skills and abilities. Within two months she found a contract job as a technical writer for a nationally known firm. They appreciated her for her many skills as well as for her honesty. I suspect had I found a full time job in Tennessee, she'd spend the next twenty years working for them. Around the four month mark, someone paid my way to Seattle for a face-to-face interview. I managed to tack a few extra days on to the trip, so I could check out the area. While I've been there in the past for conferences and things, each time I was without a car. I simply didn't need one. This time was different. Jill has a list of places I needed to visit, so armed with a camera, I spent a weekend checking out schools, homes and other necessities of life. She had located a potential high school which had a very good marching band. Not as good as the one the kid's current band, but very good considering Washington state is known for its lousy weather and most schools don't bother with a marching band program because it isn't fun to perform in the rain. My interview was scheduled for 9am Monday morning and didn't end until after 6pm that night. To say it was grueling was an understatement. It turned out I wasn't interviewing for one job, but three different jobs in the same group so everyone wanted a part of me. I returned to my hotel that night totally drained and wanted nothing more than a good night's sleep. While I was talking to the never ending stream of folks on Monday, another recruiter tried to call me but couldn't reach me. He called Jill and the pair arranged two more interviews for me. So I found myself on Tuesday morning waiting for another round of interviews to begin. The first interview was roughly half the length of the previous day's, but it wasn't nearly as grueling. I liked the people I talked to and knew I'd be happy working there. The final interview of the day was pretty quick - two people and one hour. I suspect they'd've made me an offer on the spot, but it was against the rules. I met my recruiter after the final interview in the lobby of that building and found I had a job offer. It too him longer to reach me than it did for them to make up their mind. While the deal wasn't as nice as the first group, the people made it mighty tempting. So I returned to Memphis, knowing that my time in the unemployment line was just about over. The next few days were draining not knowing what would happen. Impatient, I called the recruiter who handled Monday's interviews. According to her, they couldn't make up their mind and I told them I already had another offer and wanted to know what I should do. She said it could take up to two weeks for them to make a decision. Later that day, I decided to accept the offer I had, knowing that if I didn't it might go away. The time between accepting the job and my projected start date, October first, was insane. There was no way I'd ever be ready. I had a ton of things to do, most of which didn't get finished before I had to leave. Before I had left Memphis I had rented an apartment, signed a bunch of employment papers, one of which means I can't disclose any inside information I may know about the company and its products, and decided to take one of our new puppies with me so I wouldn't come home at night to an empty apartment (you can see pictures of Lady Bandit on Jill's blog at http://freezins.blogspot.com). Originally I was going to load a bunch of stuff in a truck and tow my car, but when I checked on the price of diesel fuel, plus the rental cost, I figured I could buy pretty much anything I needed in Seattle for less money. Since I still needed a car, I decided to pack whatever items I really needed inside and deal with the rest when I got there. Jill and the kids were so sad to see me leave I waited until the last possible minute to leave. With just three days to make the trip, I had to average over 800 miles per day to make it there on schedule. I actually did it in two and a half and with only one speeding ticket - in Wyoming for doing 83 MPH in 75 MPH zone. It could have been much worse because only a few hours later I was cruising at speeds that could have landed me in serious trouble. Anyway, I picked up the keys to my apartment in the middle of the afternoon and moved the few things I brought with me into an empty apartment. For the next few days, I'd sleep on the floor until I stopped by Ikea and bought some furniture. Later that afternoon, I checked in with the recruiter, assuring him I was actually in Seattle and would report to work the next morning. The next morning, I arrived for work at the same rather corporate looking building where I interviewed. Located in the middle of nowhere across from a gravel pit and a UPS distribution hub, it's not the most picturesque place in Washington state. It definitely doesn't compare to the Seattle skyline or the mountains in the distance. But it was beautiful to me. With almost nothing to give away the secrets inside, except for a small logo on the door, I entered the world of Microsoft's Xbox group. May 30 The XNA Game State Management ExampleDisplaying a 3D object on the screen is pretty straightforward, as you saw in the XNA WinForms Content Loading Example, but games need more than just graphics. At a minimum, you need need to keep track of where you are in the game. The Game State Management VB example demonstrates one approach to this problem. Unlike the previous WinForms examples, this one includes no Windows specific code. In other words, it doesn't have a form and it doesn't understand inputs from a mouse. In fact you have to use the keyboard to simulate the controls on a Xbox controls, such as the space bar instead of the A button and the escape key instead of the B button. You can also use the cursor keys to move around on the screen. Again, the content comes directly from the C# version of the program. One of these days, I'll create a standalone Visual Basic application which will compile content files. But in the mean time you can always create a C# program with only the content files. Just make sure that the content files are compiled into the same content folder you use for your Visual Basic XNA application. May 28 The XNA WinForms Content Loading ExampleThe second Microsoft sample program I converted shows you how to load content from an external model and display it on the screen. It's based on the code I wrote about in Visual Basic.NET, XNA and the WinForms GraphicsDevice Sample. Like most of the examples on the Creators Club web site, this one is not a complete solution. It merely gives you a template from which you can build your own program. In this case, the program merely loads a 3D model file and displays it on the screen. A better approach would be to split this process into two passes, "compiling" the model file and loading and displaying the model file. The compiling process relies on the Microsoft Build Engine (the same tool Visual Studio uses to compile your VB program behind the scenes) to translate a list of 3D model files, bitmaps and fonts into a highly optimized form which can be quickly loaded into your program. Once complied, you need not recompile the object again unless it's changed. But even if you do, the Microsoft Build Engine is smart enough to compare the compiled file with the original file and only recompile it if necessary. You can download the second WinForms application here. May 26 Visual Basic.NET, XNA and the WinForms GraphicsDevice Sample
On the XNA Creator's Club web site there are tons of examples that demonstrate all kinds of cool things you can do with XNA. Unfortunately, all of them are written in C#. Personally, I agree with decision as I'd rather see Microsoft release twice as many examples in C# than release one version in C# and another in Visual Basic.NET. However, I know many folks can't translate between the two languages - at least not quickly and easily, which means that some developers might never get to learn how easy it is to create their own graphics programs. While I'm comfortable with C#, I prefer to program in Visual Basic.NET. Mostly because of my long history with the language, but also because I find it faster to write code in a case insensitive language. Since I'm comfortable with both languages, I decided to translate some of the more interesting samples so that Visual Basic.NET only programmers can explore this technology. However, before you start dreaming of writing the next killer Xbox game in Visual Basic, you need to understand that while the Xbox includes much of the .NET runtime library, it doesn't include the Visual Basic.NET libraries. So while it might be theoretically possible, I'm not sure I'd want to try. XNA is really a combination of two distinct features, a custom version of Visual Studio and a series of run-time libraries. The custom version of Visual Studio includes a collection of XNA templates, plus the ability to automatically convert different types of artwork into an XNA optimized format. The run-time libraries are easy to access from Visual Basic, while the integrated conversion process is not, so I'll leave that for the next example. Because you're limited to a Windows environment Visual Basic, I choose to translate the first example in WinForms Series, Graphics Device since it won't run on the Xbox. This sample demonstrates how to create a .NET Control object you can include in any Windows Form application. You can download the complete source code here. I've included the necessary content files from the C# application, so you can run the Visual Basic version. When I cover the next example in the WinForms series, I'll show you how to load your own content files using Visual Basic. May 25 Wayne S. Freeze: BASICally, My Life StoryA few years ago, I was asked by APress to contribute an article for their VB @ 10 Project. They requested essays from the 100 most influential people in the Visual Basic community to celebration of Visual Basic's tenth birthday. I was both surprised and honored by their request and wrote the following article which tells how the BASIC programming language touched me at several key points in my life and how I ultimately became a programmer and author. In the years that followed, APress disappeared from the Visual Basic scene as did many of the people on that list, including myself. I had completely forgotten about the article until I started revising my resume. It reminded me of how I got to where I am today and hopefully it will provide some direction on where I'll go in the future. Hopefully, you might find it interesting too. It seems like BASIC has played many pivotal roles in my career with computers. In 1969, I skipped my junior high school algebra class to punch a BASIC program that played tic-tac-toe onto paper tape using an old Teletype ASR-33. Each time I made a mistake, I carefully backspaced the paper tape and used the Rubout key to delete the last character. Once I had entered the program, I uploaded the program to the mainframe and played the game. Only after I had finished punching the game, I learned that the mainframe already had tons of games that I could load any time I wanted. While this exposure to BASIC lasted only a few months, it would change my life forever. Five years later as a college freshman, I had no idea what courses I wanted to take. I wanted to study physics, but somehow ended up taking several engineering and math courses, plus a course called Introduction to Computer Programming. This course taught students how to write simple BASIC programs, using a Hewlett Packard 2000F timeshare system. I really enjoyed that class.... Based on that experience, I decided to take every computer class available. While still a freshman, I inherited a copy of a program known as the Star of Essex. This program displayed some simple graphics on a Hewlett Packard plotter or a Tektronix 4010 graphics terminal. This program was written in BASIC and included the code to actually drive the graphics devices. This started my fascination with graphics, which also continued to evolve over the years. In the spring of 1976, I took an engineering course in computer interface design. This course explained the fundamentals of input/output devices and focused on how to build device drivers. One rather unique aspect to the course was a class project to build the original personal computer – the Altair 8800. After spending the entire semester making thousands of solder joints and debugging various hardware problems, the computer worked. Once the computer was built, a few students gathered together in the evenings to tinker with the computer. Since there is a limit to how much you can do with hardware, we turned to playing with software. One piece of software I enjoyed working with was a BASIC interpreter from a small company called Microsoft. While the interpreter was known as 4K BASIC, it used slightly less then 3K of memory, leaving nearly 2K of memory available for programs on our 5K machine. Connected to the Altair was my old friend, the Teletype ASR-33. We used the Teletype to interact with the computer. To run BASIC, we entered a small bootstrap program with the front panel, and loaded BASIC's paper tape at the incredible rate of 10 characters per second. It seemed like loading BASIC from paper tape took forever. Eventually we built a board that would program EPROMs, and we loaded 4K BASIC into a set of EPROMs. Then any time we wanted to play with BASIC, we entered a small program that copied the code from the EPROMs to RAM, which took next to no time. Then we could focus our efforts on writing interesting programs in BASIC rather than waiting for the tape to load! While I was going to school, I got a part time job as a computer operator working on a Hewlett Packard 3000 CX computer system. One of the programs that they ran on that computer took many hours to work. The program was written in COBOL. I studied that program and rewrote it using BASIC in my spare time. This program could process data about 100 times faster than the COBOL program. When I compiled the program using the BASIC compiler, I reduced days of processing to just a few hours. This little program got me a raise and a job as a full-time programmer. The following year, I built my first personal computer called a Xitan. Around the same time I started reading Dr. Dobbs Journal because one of the first articles I saw discussed how to build a 2K BASIC interpreter, because the 4K BASIC didn't leave a lot of room for my own programs. Later, I created my own version of BASIC written in Pascal that ran on an upgraded version of the Xitan that included a pair of 256K floppy disk drives and a whopping 56K of memory. During the next 20 years, I had the opportunity to work on nearly every major computer system in the marketplace. I learned many different programming languages including COBOL, FORTRAN, Pascal, PL/1, C, and C++, plus a quite a few languages you've probably never even heard of. However anytime I needed to test a new idea or prototype a new algorithm, I always went back to BASIC. Once I've proved that I could do it in BASIC, I would usually rewrite the program in the preferred language for the computer systems I was using at the time. In the mid-1990's, the people I worked for were looking at creating client-server applications. They believed that Power Builder was the wave of the future. I wasn't so convinced. So, I did a little research and found an alternative to Power Builder that I though would be easier to use. It was yet another implementation of BASIC called Visual Basic for Windows, Version 3.0. I managed to get my hands on a copy and started playing with it. While I was never able to convince my boss that Visual Basic was better than Power Builder, however I was hooked on the language itself. I started writing a simple, single user database program with it in my spare time. When Visual Basic 4.0 came out, I converted my little program to it and released it as shareware. While it wasn't a financial success, I had a lot of fun writing it. Shortly after I finished the application, I saw an interesting message posted in one of the Visual Basic newsgroups. The note listed a bunch of topics for computer books – one of which was Visual Basic and ActiveX – and asked you to send a note to an email address for more information if you were interested in writing about any of these topics. Since I was playing with some ActiveX controls at the time, I figured what the heck and responded to the note. Bill Adler, Jr. responded to my note explaining that he was an agent, not a publisher, however he could forward a proposal to several different publishers. One of my wife's dreams was to become a published writer. However she never could get up the courage to submit her material to a publisher. My wife agreed to help me, and together we created a 25-page proposal that we sent off to Bill. Bill suggested a few changes, which we made, and then we returned the proposal to him. After a few days, I hadn't heard from Bill and I was wondering what happened. I called him and found out that he sent my proposal off to several publishers. After a few more days, I started getting calls from various acquisition editors who wanted to discuss my proposal. After nearly a month of this, I was rewarded with a contract to write my first book. While it wasn't very successful, it was the start of a new career for me. Many books, magazine articles, and several versions of Visual Basic later, I now spend my days (and nights) writing about Visual Basic. As a writer, the challenge for me is to prove that someone using Visual Basic can do nearly anything that a C programmer can do. Since I started writing about Visual Basic, I've run into only a handful of situations where I couldn't use Visual Basic exclusively to solve a problem. In those situations, I developed workarounds that my readers could incorporate into their applications. Conventional wisdom says that you can't write certain kinds of programs in Visual Basic. Since I hate being told something can't be done, the challenge for me is to prove that you can do it with Visual Basic. I've shown my readers that they can use Visual Basic to create their own web browsers, generate their own 3D graphics using DirectX, access the Windows registry, play their MP3 music files, build their own Internet applications with Winsock, and add VBScript macro processing to their applications. I even demonstrated how to build a screen saver with Visual Basic by using a version of the Star of Essex program. Of course, I've also shown my readers that Visual Basic is the best possible language for building database applications by walking them through the steps to create web based e-commerce database applications, by showing them how to create multi-tier database applications and how to use message queuing for asynchronous processing. I demonstrated to my readers that Visual Basic isn't limited to just SQL Server and Access by showing them how to use Visual Basic with other databases such as Oracle, Access, DB2 and Informix. With Visual Basic.NET, the gap between the C programming language family (C, C++ and now C#) and Visual Basic has narrowed to the point where it really doesn't matter which language you use anymore. Both Visual Basic and C# allow you to create true object oriented programs, and both rely on the same libraries for system services. The only significant difference between the two languages is their syntax. Similar programs will generate similar object code, and there will no longer be a reason to choose another language over Visual Basic. There is very little that you can do in one language that you can't do in the other. Many people wonder why I don't write about C++ or Java. I'm never quite sure how to respond. While I've used these languages many times over the years, I somehow feel there is something magic about the BASIC language. For over 30 years BASIC has influenced my life and I believe it will continue for years to come. So as long as I continue to write about computers, you can be sure that I'll be showing my readers how to push the envelope with the latest version of Visual Basic. May 24 Welcome to my world
But that all changed earlier this week. Effective, Tuesday 20 May 2008 I am no longer employed. I was unprepared for the layoff and find myself in need of a new job. Fortunately I have a rich collection of skills to draw on and I'm relatively up to date in terms of technology. My most recent job involved incorporating Microsoft's new XNA technologies into a Manufacturing Execution System, which basically controls how their products are assembled and tested. This job also included writing specialized drivers for various devices including a real time, 3D positioning sensor similar to the Nintendo’s Wii controller, but much more accurate. Prior to this job, I was a full-time author and consultant where I wrote books, magazine articles and commercial white papers, while developing web sites and advising clients on how to incorporate DirectX into their Visual Basic applications. My wife is the really talented member of my family, as she writes much faster and better than I can. As you can see, my new web site is a blog rather than a traditional web site. I wanted a more interactive experience than a static web site provides. Over the next few weeks, I'm going to try to find some of my old articles, update them, and post them on my blog as well as writing some new articles about some of the new XNA technology I used at my previous job. Look for some more stories about my family too. And if I get really brave, I might even talk about my journey from accomplished technical writer to becoming a published fiction author. In the mean time, if you know anyone who's looking for an senior level .NET programmer, please drop me a line. Until next time, take care. |
|
||||||||||||||
|
|