Tech for Non-Profits

Thursday, October 15, 2009

Vista to Windows 7 upgrade on Mac Parallels


Earlier, I did a couple of fresh installations of Windows 7 and found it agreeable, so now I'm upgrading the Vista VM running on my iMac with Parallels 4.0. This has presented various points of interest .

1. You can do an in-place upgrade from Vista to Windows 7, but not from Windows XP.

2. I had to increase the size of the Parallels Vista VM disk from 30 gigs to 48 gigs to accommodate the installation files for Windows 7. You do this in Parallels through the Parallels Image Tool which expands the disk partition size. Before doing this is will merge any snapshots that you've taken. I had only a single snapshot that I had created when first installing Parallels a year ago. Rather than allow this merge, which would have taken several hours, I exited out of the program, deleted the snapshot through the snapshot manager, then reentered the Image Tool and performed the expansion in a about 30 seconds.

3. I increased the available RAM from 1 gig to 2 gigs, at least for the installation, since it was a stated requirement to have more than 1 gig. I may crank it back to 1 afterwards.

4. Among the steps during an upgrade, there is "Gathering files, settings and programs" The count of these was 414,061. That is not a misprint. Amazing, after less than a year of running this particular Vista workstation how much crap you accumulate. I'm also wondering at how they calculate the percentage in the upgrade status screen (above) which doesn't seem to correspond with the numbers.

My guess is one reason XP isn't supported for an upgrade is that XP still runs nicely on smaller, older machines, and these are probably not good candidates for a Windows 7 upgrade... notwithstanding the fact that Win7 is supposed to have a smaller footprint both in disk space and memory requirements than Vista. Accordingly, any machine that can run Vista should be able to accommodate Windows 7.

Labels: , , , ,

Friday, October 02, 2009

Twittering for Non-Profits

Much fiddling with Twitter. One thing that is great about Twitter is that it more or less seems to pass the five minute test. Two resources to help get past Initial Euphoria, and move to Potential Productivity include O'Reilly's The Twitter Book.

There is also a pretty good on-line guide at FastForward,, albeit with a more corporate orientation. I admit that I cringe when I see tweets like "Insurance industry finds value in social media". Oh goody. But there is a lot of provocative theory there which suggests why Twitter might be a great way to leverage awareness of your non-profit "brand".

One thing that makes Twitter so cool is that they published their application programming interface (API) early on, thereby enabling third-party programmers to cook up all manner of search and ranking tools that can sample and mine the tweet stream. This is a terrific example of a company who took a simple idea, maintained control of the idea, and yet allowed others to add value to it. And Twitter the company was recently valued at 1 billion dollars. Not bad for a company with no revenue yet.

Here are several Twitter search tools... mostly shamelessly cribbed from The Twitter Book

What The Trend http://whatthetrend.com
Twitscoop http://twitscoop.com
Twopular http://twopular.com
Twitters own Advanced Search found as a link near the search box on the normal twitter search page.

For some examples of what non-profits are doing with Twitter, there is a discussion on Mashable. Other comments and ideas are on Beth Kanter's blog,"How Non-Profits Can Use Social Media"

Labels: , , ,

Friday, May 15, 2009

Tech Friday: Video-The Right Tool For The Job

Two Stories:�

I

I've been participating in a�entrepreneur�boot camp of sorts which requires us to create slide show presentations to introduce our company. Because the leader is using an older Dell laptop with Microsoft Office 2003 installed, we are required to create these presentations to run on PowerPoint 2003 on her laptop. After the presentations have been created, our team was asked to record a voice-over to accompany these slides. This was recorded using Audacity�on a Windows machine using a Samson condenser microphone with a USB interface. We did it in a couple of takes, and listened to the playback. All seemed well, although the team expressed some trepidation at attempting to�synchronize�the playback of the audio with the individual slides, a finicky process which would take some hours. �So the question is, why not use the sound recording function in PowerPoint 2007, (Windows) or Keynote '09 (Mac)?�

II

We've been engaged in a study comparing a 15 week exercise program delivered in three "modes", 1.) a live class at the 'Y', 2.) an interactive version delivered over the internet using multi-point two-way videoconferencing, and 3.) a DVD version of the program. �As part of our telemedicine project we had a contractor create a version of our program for delivery on DVD. We shot great footage with professional audio, lighting, and camera work. The footage was edited to create a 15 week version of our program. �Once the raw edits were created, we sent them off to a DVD guru who used one of those $1,200 authoring programs to put it together. �The result was OK, but non-intuitive. The users of the DVD basically hated it and several dropped out of the study. �

Now, a year has past and the study subjects who participated in the live session and those who took the interactive tele-version of the program want to have a DVD version of the program as a reference so that they can continue their exercise. We decided to provide them with a free DVD, using clips recorded from the telemedicine session. I combined these using iMovie '09 and the result is better than the original professional DVD. (!) �I subsequently bought David Pogue's Missing Manual book on iMovie and iDVD and am looking forward to re-doing our original DVD as well as create some promotional material for sharing on the web. �

Now, video editing isn't my favorite�pastime, but it is certainly no worse than grant-writing, and if the results are near-professional, then why not take advantage of what has really become a disruptive technology?�

On the other hand, here is an example of Eva Sollberger's Stuck in Vermont video blog. Eva is a one-person video production company. She shoots, edits and publishes. This particular episode is about 6-8th graders creating their own news show. �It sure beats Channel 5 eyewitness news.�




Labels: , , ,

Friday, March 20, 2009

Tech Friday -- WES and Ruby

Microsoft has made available considerable information about Windows Embedded Standard, (WES) which is the latest version of Windows Embedded, based on Windows XP.

There are (roughly) three versions of embedded operating systems from Microsoft:

Windows Embedded Standard: Allows a stripped down version of Windows XP for powering set-top boxes, game boxes, and machines dedicated to a single application. This is what we're using in one version of our telemedicine set-top box.

Windows Embedded POS: An enhanced version of WES for cash registers and checkout scanner applications.

Windows Embedded CE: This is the version of Windows used for mobile phones and other hand-held and portable devices. The code base and software development tools for CE are different than Windows Embedded, with many of these related to WES.

There are a total now of twenty-nine (29!) training videos related to Windows Embedded Standard.

The Windows Embedded Developer Center site is the gateway on Microsoft's Developer Network to all things related to Windows Embedded.

The Windows for Devices web site has information related to all version of Window Embedded as well as hardware that runs under Windows Embedded.

Other Notes:


Smashing Magazine has a nice introduction to Ruby on Rails.

Labels: , , , , ,

Friday, January 30, 2009

Tech Friday: Programming the Logitech Orbit Webcam

Just dabbling.

The Logitech QuickCam Orbit AF Webcam is a motorized point/tilt/zoom (PTZ) web camera with outstanding resolution and performance.�Logitech has provided some additional documentation on manipulating the webcam. In Windows this is done through the DirectView API. To get as far as "Hello World", i.e just to demo the whole thing, I first downloaded a sample C++ program provided by Logitech called. PTZ.exe Then I realized that I better see if the camera works in the first place, so I downloaded the current QuickCam driver set qc1150 from the Logitech site. Once that was installed, it worked fine when testing.

Then I tested PTZ.exe. This seemed to work fine. It is a command line program which does the following:
* Scans existing USB ports to find the webcam.
* Issues a series of commands to exercise the mechanical and digital PTZ functions of the camera.

Because my camera is an older version, just the zoom seemed to work. I'll have to test it again with current AF.

Since PTZ.exe also comes as C++ source code, I downloaded and installed Visual Studio C++ Express Edition. This is the free version of Visual C++ . I opened the PTZ "solution", when showed the various header files, and the main routine in a "folder" hierarchy to the left of a standard editing pane.


[Click picture to see full size]

Just like old times. You compile. You link. You run the application in a command box. This all works pretty reliably, even in Vista, running on my Mac through Parallels.

I then downloaded a USB port sniffer, and watched the messages merrily going to and fro between the web cam and the USB port. Much more on USB in Jan Axelson's books and on her web site.

Next steps: Get the proper webcam, and try modifying the PTZ program myself to see if I can change the parameters. Oh, and maybe get a proper Windows development system.

By the way, the Logitech support forum has support for Linux and Solaris.

Labels: ,

Friday, December 19, 2008

Tech Friday: Small Business Network

In a recent column �Jerry Pournelle talks about problems with the Microsoft Active Directory. �
Back in 1999 I set up the Chaosmanor domain with Active Directory on two machines running Windows 2000 Server. I knew at the time that I didn't need that complex a network, but a number of my readers did. In those days networking was hard, Active Directory was new, and many of my associates were curious about how well it would work. At worst this was another of those silly things I do so you won't have to.

Actually, it worked pretty well. Windows Server 2000 with Active Directory had some infuriating requirements, and it really wanted everything done precisely its way, but from 1999 until this year it served me well. When Windows Server 2003 came out I was tempted to upgrade to that, but there was never any powerful reason to do so, and as time passed it seemed less attractive. I had novels to write and other work to do. I was able to try several Linux-based on-line backup systems - Mirra was one of them - and those worked just fine. Of course machines were getting better, and my old servers were getting more obsolete each year.

Now he thinks that everything he knew about networking is wrong. In particular, like many of us, his experience carried over from older versions of Windows networking, which makes things a lot more complicated than they need to be these days. You can reads more about workgroups, domains and routers and alternatives to Windows networking in the column.

At Microdesign we are reevaluating our own network, that has a core server running Windows 2003 Small Business Server; i.e. relatively unchanged for the past five years. Nothing has really changed as far as our core requirements are concerned, except there are several of us working from different offices, and on occasion when traveling. We increasingly collaborate on projects with partners who are outside our company. Our requirements parallel many small businesses and non-profits with 2-50 computer users. Here are our "legacy" requirements:

  1. Common file sharing area where multiple users/machines can access the same document
  2. Absolute trustworthy security of those files
  3. eMail and calender - available from anywhere on multiple devices
  4. Shared printing, from multiple machines to single printers.
  5. Reliable backup�

Those modest requirements suggest a file and print server based in the office, connected permanently to the internet, with printers shared off of the file server, and some kind of backup scheme (tape or additional hard drive). The network diagram which fulfills these requirements is essentially unchanged from the 1990's.

Even with a server-centric network our advice to clients has always been to use the facilities of an internet service provider for two applications; eMail and the outward-facing (public) web server for the organization. �We (still) recommend having eMail outside the organization to provide greater reliability, ubiquitous access via the web, and industrial-strength spam control. We recommend the organization's public web site be hosted outside the organization to provide 99.99% uptime, and to take advantage of higher bandwidth typically provided by an hosted provider.�

So, what has changed? Two things; disk storage and broadband. Broadband, or rather cheap broadband, has made it possible to reconfigure things so that the cloud �can now substitute or supplement a file server. With individual personal computers routinely having disk drives of 250 gigabytes or larger, the original�justification�for "server as giant hard disk" is falling away.�

Along with hardware improvements, there are now a host of inexpensive applications available on the internet that can supplement or replace software that used to require a file server. Basecamp is one example that can be used for project management and shared file storage.�

A more modern interpretation of the legacy network diagram puts the cloud at the center of the network.

So, I'm wondering whether to replace my file server. The server is no longer the be-all end-all of my network. Like Jerry, I don't need a domain login mechanism. I barely use my printers, and those are attached directly to the local network. The small business server's eMail, and web hosting have always been done off-site. The server does offer SharePoint, which is a capable platform for Basecamp-like project management, but Basecamp is about $12.00 per month, and it took about five minutes to set up. And, now that we have been invaded by the Macintosh monster...there are more reasons to find, (or at least evaluate) a cross-platform solution for our application needs.

Labels: , , , ,

Friday, August 29, 2008

Tech Friday: Bento database - First Look



Well, although I've managed to not worry about a database for several months, it finally happened and I need to keep track of my "opportunity matrix", that is, a list of grants, their deadlines and status, the responsible contact person, partners, and whether I've created all the necessary collateral: prospectus, project summary, grant application, etc.

Typically this would be done in Access on a Windows machine, and I've got Access 2007 installed in my copy of Parallels so that I could run this up pretty quickly.

But, since I want to stay native on the Mac, I poked around at an old favorite, Filemaker Pro. One thing I've always thought about FMP is that is relatively expensive, even in an academic edition, especially if you want to share the data using a server. But FileMaker now offers a "home" version called Bento for about $50.00, and this looks promising for my app.

I've downloaded the 30 day trial, and installed without fuss. Installation consists of dragging the the file to the applications folder. I started playing with one of the templates, and after ten minutes or so, I've ended up with the following data entry screen:



Points of Interest:
  • Bento integrates with iCal, Mail and the Address book. You can eMail from a field which is designated an email field.
  • One to many relationships are supported. For example, you can have a task list for a project, with multiple tasks displayed for a single project. Some relations are already connected; for example the tasks list from iCal can be embedded into a Bento form
  • What one would consider to be a "database" in Access, or, loosely, a "group of tables" in another database program is called a "library" in Bento.
  • What might be called a "recordset" in Access, or a "cursor" in an SQL database is called a "collection" in Bento. Collections are much like playlists in iTunes, they are a subset of records from the entire library.
You can create your own drop down list, so I've attempted to capture the workflow in a "status" field which currently contains the following:

Seeking Partner: Since virtually all my projects are with others, this is the first step in any application project.

Developing Project

Application Submitted

Awaiting Feedback from Funder (may be redundant with the previous step)

Under Revision

Revised Submitted

Awarded

Rejected

I was curious about the name, but I think it refers to a Japanese bento box, which are the compartmented dishes for serving Japanese food.

Here's a review of Bento in MacWorld. They point out a couple of limitations. For one thing, there is no way to export data in anything other than a comma delimited ASCII format.�

Another limitation is that the Bento data libraries are strictly single-user data files for a single machine. Anything larger needs to go into something like Filemaker. So, is is inadvisable to think that we could run a multi-user grant flow application using Bento. That's OK. For $50.00 we can play with Bento for awhile and work out the data that we need to keep track of. We'll be that much farther ahead when we're looking to move up.

Labels: , , , ,

Thursday, June 05, 2008

Ubuntu Linux rescues Windows XP Embedded

This being summer, we're back on the Windows XP Embedded kick. After generating an image, the question was..how do we get this on to our target machine?

We wasted a lot of time on this one. As recommended in the docs, we installed "regular" Windows XP on the target machine to make sure that it would run Embedded. No problem there, it installed without problems from CD. We ran the Target Analyzer, to get our device.pmq. Copied device.pmq back to the development machine and generated the image.

At this point, we started fiddling with a second partition on the target machine. We created and formatted this using Acronis Disk Doctor, which comes on a bootable CD. Our plan was to install our target image on this partition, change the ARC listing in boot.ini to point to the second partition as the boot partition. We spent a day fooling with this, including changing the drive letters, hiding the partition, moving stuff around. Didn't work.

Finally, we reformatted the hard drive on the target machine. Now you'd think that Microsoft would have something like a "LiveCD" for this purpose, which would boot a version of Windows enough to allow copying to an existing hard drive. It doesn't, but Ubuntu, Suse, and Fedora Linux all have this, and Ubuntu had drivers that would read the USB drive where we stored the image, as well as the NTFS formatted hard drive.

A quick drag and drop, and we're done!

Have they no shame? (Microsoft that is...) There is a Community Technology Preview out for a new version of Embedded...let's hope this issue might be addressed with a couple of extra tools.

Labels: , , ,

Friday, March 14, 2008

Tech Friday: Putting Vista Business on a Diet

Last week's Tech Friday discussed how to remove several enhancements of the Vista interface using Vista business. Today, I'm at it again...and now have supplied the details. Links go to sites where I found a source of the information. This is all basic stuff, but it is hard to find it all at once; and I'm in a situation where I may need to install ten machines with Vista in the next couple of days.

� Turn off Welcome Center
Uncheck on Welcome Center, lower left-hand corner of window

� Turn off Sidebar
Right click Sidebar icon in the system tray and then select exit

� Turn off User Account Control
Control Panel | User Accounts | Turn User Account Control On or Off
(requires a restart)

Turn off Balloon Help (requires a registry tweak)

Click Start, Run and type Regedit.exe
Navigate to the following subkey:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Advanced
Create a new REG_DWORD (32 bit) value named EnableBalloonTips
Double-click EnableBalloonTips, and then assign a value data of 0
Exit the Registry Editor
Log off Windows, and then log back on.

Turn off Vista automatic searching
This requires stopping the Windows Search Service
1. Type "Services" in the start search box.
2. If User Account Control asks for permission, click Continue. (but turn it off, see above)
3. Locate an service named Windows Search. Right click on Windows Search, and then select Properties on contextual menu.
4. Click on Stop button to stop the indexing service immediately.
5. On the Startup Type dropdown box, select Disabled.
6. Click on OK button.

Set for automatic login - (eliminate the log-in screen)
1. Type netplwiz in the Windows Search box
2. You'll see the user account window. Make sure your account is highlighted
3. Uncheck "User must enter name and password"
Upon a reboot, the machine will not ask for a name and password. Note, this only works if your machine is not part of a Windows domain or an active directory

� Set Window resolution to 800x600
We'll use 800x600 because ultimately, we're sending the output to a tv screen.

Turn off the enhanced graphics and Aero
Rightclick on the desktop and choose Personalize
Windows Color and Appearance| Color Scheme choose "Windows Vista Basic"

Turn off Windows firewall.
Click on the start "orb"
Select the Control Panel
Select Security
Select the Firewall | Turn Windwos Firewall on or off

Labels: ,

Thursday, February 28, 2008

Tech Friday: Installing Ubuntu on the Mac and the PC

I've been drinking a lot of coffee today, and I think it affects my ability to concentrate. So, one thing has been leading to another and another, and I've ended up installing the latest version of Ubuntu Linux on both my PC and my MacBook using virtual machine software.

Why Virtual Machines?

A virtual machine allows you to host multiple operating systems on a single physical computer. The classic reason for doing this is to run some form of Windows on the Macintosh OS because you just can't live without some crucial Windows program. (Think Quickbooks, or OutLook, or in my case OneNote). The Virtual machine program is a thin layer of software which sites between the original OS (on the Mac this is OSX), and one or more "guest" operating systems, (in my case Windows Vista). There are a couple to choose from. The people at our university recommended Parallels. Installing Vista and Parallels went pretty smoothly. So, as I hadn't seen a Linux desktop for while, I thought I'd try installing the latest and greatest Ubuntu.

Why Ubuntu?

Ubuntu appears to the current favorite for a "desktop" Linux. It is available on some Dell machines. It comes with a large number of applications, and an attractive desktop. There are several versions available for specific purposes. It is well supported.

I started with this step-by-step tutorial, which is available for a couple different combinations of Parallels and Ubuntu.

While waiting for this to install, I fiddled with Microsoft Virtual PC on my Windows box and found that I was using an older version 2004. I downloaded and installed version 2007. Looks just like 2004, but includes support for Vista as reported at Linux.com. After a couple of false starts dealing with the mouse, I was able to get Ubuntu installed.

Once installed there are several additional tweaks that need to happen which required editing the boot loader parameters and some config files to get the mouse working. Then a similar process is required for sound drivers, and network drivers.

Rather than go through all that, I downloaded VirtualBox and installed it on my workstation. Then I reinstalled Ubuntu. Mouse worked immediately. Networking came right up. The sound card worked as soon as I changed the default VirtualBox configuration to include the sound card. So far, Ubuntu works fine, and is surprisingly fast, and VirtualBox appears to be superior to Microsoft Virtual PC, at least when installing non-Microsoft operating systems.

Meanwhile, back on the Mac, its been more of a struggle. Here a couple issues and solutions:
  1. When choosing which version to install, choose the "alternate" form of the Ubuntu installer. (There is a checkbox for this on the download screen.) This is a text-based installer. Otherwise, it will just hang as you start to do the install, and you'll get a funny message saying somthing like "Tried 6 times to start the X-Server and something is seriously messed up".
  2. When you download the .iso file from the mirror, it will appear on the desktop as a disk. However, this is actually, just a pointer to the file ubuntu-7.10-alternate-i386.iso which is located in your download directory. This caused a lot of confusion, because when you attempt to assign an "image" for the installation process through Parallels, you have to point to the actual file with the .iso extension. (If in doubt...just burn it to a physical CD for heaven's sake; I should have done this and saved myself an hour of futzing. To be honest, my problems with the disk and the .iso are due to unfamiliarity with OSX on the Mac, not the fault of Parallels or Ubuntu.)
  3. When installing, you'll be given the opportunity to select the screen resolutions that you want to install. The excellently named Muffin Research discussion page suggests selecting two resolutions: 1440x900 for using full screen, and 1280x800 for use when you have Ubuntu running in a window. Once you have installed, if there is still a problem, you can run the following command to start the selection process again:

    sudo dpkg-reconfigure -phigh xserver-xorg


  4. Parallels gives you the opportunity to set up networking to use the existing Mac network addressing, (shared), or the not-so-well-named (bridge). The bridge will treat the Ubuntu VM as a separate machine, so it will get an IP address separate from the Mac. There is an icon in the "system tray", located in the upper right hand of the Ubuntu desktop window, that shows if you are connected. If not, just click once on the icon and select "Wired Nework", if that is how you're connected.

More from LifeHacker on running Parallels on the Mac.

Labels: , , , ,

Friday, February 22, 2008

Tech Friday: Troubleshooting Windows Firewall

Tech Friday is the day when we get bogged down in technicalities.

Dynamic DNS Redux

Today I've been doing some further research on Dynamic DNS, and indeed I found out that Wednesday, I was actually playing with the Unix/Linux version of the the DynDNS updater. They have a more conventional Windows client available with a nice graphic interface. It still does the same thing as the earlier one does, and it can install as a Windows service.

Firewall Issues

The Windows XP SP2 firewall can be managed locally on the XP Workstation through the Control Panel applet, via the local Group Policy, or via a domain group policy. When running into problems with the firewall, often the first problem is to figure out just where the settings are coming from. Microsoft has provided a handy guide on troubleshooting the Windows firewall, using familiar tools like netstat and netsh. For example, the following command will display the firewall status, and show where the settings are coming from. Note the returned results in my case show that the workstation is controlled from the Domain under the Group Policy.

C:\netsh firewall show state

Firewall status:
-------------------------------------------------------------------
Profile = Domain
Operational mode = Enable
Exception mode = Enable
Multicast/broadcast response mode = Enable
Notification mode = Enable
Group policy version = Windows Firewall
Remote admin mode = Disable

Ports currently open on all network interfaces:
Port Protocol Version Program
-------------------------------------------------------------------
1052 UDP IPv4 C:\WINDOWS\system32\spoolsv.exe
26675 TCP IPv4 (null)
67 UDP IPv4 (null)
135 TCP IPv4 C:\WINDOWS\system32\inetsrv\inetinfo.exe
137 UDP IPv4 (null)
139 TCP IPv4 (null)
138 UDP IPv4 (null)
3389 TCP IPv4 (null)
38293 UDP IPv4 (null)
443 TCP IPv4 C:\WINDOWS\system32\inetsrv\inetinfo.exe
443 UDP IPv4 (null)
445 TCP IPv4 (null)
37674 UDP IPv4 (null)
37675 UDP IPv4 (null)
37674 TCP IPv4 (null)
2869 TCP IPv4 (null)
1900 UDP IPv4 C:\WINDOWS\system32\svchost.exe
2967 UDP IPv4 (null)
990 TCP IPv4 F:\Program Files\Microsoft ActiveSync\rapimgr.exe

Additional ports open on Local Area Connection:
Port Protocol Version
-------------------------------------------------------------------
427 UDP Any


C:\

The Microsoft network troubleshooting white paper describes several additional troubleshooting tactics and is recommended.

For a cookbook approach to the Windows command line, check out the Administrator's Pocket Consultant series title Microsoft Windows Command-Line by William R. Stanek.

Labels: , , ,

Wednesday, February 06, 2008

Tiny Computers from Logic Supply

I'm testing a tiny computer from Logic Supply It has the following specs:

Intel Celeron M440 (Yonah) with a Front-side bus of 533Mhz
1 gig of memory
A 2.5" Hitachi hard disk 5400 rpm
Panasonic DVD/CD reader
No OS
Build and test for additional $45.00

The case is about 7" x 7" and maybe 1.5 inches tall.

Total price is $661 before tax.

They gave me an awesome tour of the assembly plant. Dozens of these little guys being assembled, tested and burned in.

The one caveat that I would bear in mind is that the ones without fans can run hot...really hot, like hard to hold your hand on to them hot. This was the case at least when they were running the test program which exercises the processor.

I ordered mine with a fan; and the noise is acceptable, just a low swoosh (so far).

It came without an OS, so I'm installing Vista just for grins.

So far the buying experience has been terrific. They are really helpful on the phone. They specialize in small machines using mini-ITX motherboards using either Intel, AMD or Via systems. This unit is a candidate platform for our embedded application, and a successor to our beloved Pundit pizza-box sized system.

Labels: , , ,

Friday, December 14, 2007

Tech Friday: Amazon's Web Services - Database

Every so often somebody makes a prediction which at the time seems plausible, but maybe somewhat out in front of things. They always with start with the word "Someday..." For example:

  • Someday, you will be able to go to a machine and withdraw money from your checking account.
  • Someday, there will be a little box that knows where it is at all times.
  • Someday we'll all buy our computing power just like we buy electricity.
So it was interesting to see an announcement by Amazon yesterday about the Amazon SimpleDB database, a sort of do-it-yourself pennies per hour Oracle database. Well, maybe not Oracle, but a substantial database back end that can be used to host a major application. Actually, the SimpleDB appears to be primarily a querying component; for hosting a large dataset, Amazon offers S3, the Simple Storage Service.

Just a quick browse around shows support for C# and Ruby-on-Rails, among other development languages. In addition, Red Hat is offering Red Hat Enterprise servers as part of the Amazon offering. Their FAQ about "cloud computing" is located here.

This is something to keep an eye on, perhaps the next logical step after virtualization of existing servers in your machine room. Why have any servers at all? Why have a machine room?

Labels: , ,

Saturday, December 08, 2007

Windows 2008 Server: Joining my existing domain

Or not. I attempted to join my existing domain with this server being a member server, and received a message:

An attempt to resolve the DNS name of a DC in the domain being joined has failed. Please verify that this client is configured to reach a DNS server that can resolve DNS names in the target domain.


OK...I actually know how to fix this, I think... when configuring IP addresses, I didn't put the local address of my domain controller in as one of the DNS possibilities. Once this change was made...it worked.

So far so good. Now I'm trying to promote the Win 2008 server to a domain controller; it will be interesting to see if this works with Small Business Server as the master domain controller; I recall that one of the restrictions of SBS was that it could be the only DC.

So I can run this remote desktop. I change the permissions to allow logging in under Remote Desktop. Now I can watch this run from my main workstation, with full video support, and avoid the maddening mess on the native monitor screen.

Before actually running the upgrade wizard, there is a utility called adprep which is provided win Win2008. This version is run on the master DC (ie the SBS 2003) to upgrade the AD database to match the level of the Win2008 database. A message suggests that this upgrade takes the existing AD level 30 to AD level 40.
So, I copy the entire adprep folder from the Win2008 machine to the SBS2003 machine, then on SBS2003, I run the following commands:

adprep /forestprep

adprep /domainprep

Then in response to a message from the result of the domain prep, I run the following to update permissions on the group objects:
adprep /domainprep /gpprep

There is a nice help screen which explains this process.

Now, in on the new machine, running the AD Domain Services Installation Wizard, I will "Add a domain controller to an existing domain."

Now I get an error: "You will not be able to install a read-only DC in this domain because adprep /rodcprep was not yet run. Do you want to continue?" Since I don't want a RO DC here, that is fine, and I just continue.

It asks to select a site:
Defualt-First-Site-Name

It now asks if I want to install additional services; a DNS server, and a Global catalog. This dialog includes some additional stuff about a Read-Only domain controller, that is irrelevant because I don't want to install a Read Only domain controller.

So, while I would prefer not to install the DNS server and Global catalog, since eventually I want to promote the Win2008 machine to the master domain controller, I'll allow these two items to be installed. I hit the "next" button.

Now an error message comes up:

A delegation for this DNS Server will not be created because the authoritative parent zone cannot be found or it does not support dynamic updates. To ensure this DNS Server can be resolved as authoritative for the domain mxdesign.local, you can create a delegation to this DNS Server manually in the parent zone. Do you want to continue?


Well, OK...let's continue.

Now it asks for locations for the database, log files and SYSVOL, suggesting that these should be on separate volumes. Ain't gonna happen. Next.

The Directory Services Restore Mode Administrator account is different from the domain Administrator account. Assign a password for the Administrator account that will be used when this domain controller is started in Directory Services Restore Mode.

I give it my normal admin password. There is this talk about the password being the correct complexity and length, and conforming to the correct history.

So far so good, the DNS install goes ahead and completes in about two minutes. This requires a reboot, so I'm psyched to see how this will work when it comes back up.

Labels: , ,

Windows Server 2008

I've installed a beta of Windows Server 2008 on a new partition that I carved out on my secondary workstation. Installation went fairly smoothly, but both my sound card and the onboard Intel graphics chipset are not supported, so I'm stuck with the generic VGA driver which, frankly, looks like hell. Still, since most server management will take place remotely, this shouldn't be a show stopper.

The install creates a dual-boot menu at startup, which allows me to choose betweein Win 2008 or a "legacy windows system"...that is, my existing Windows XP workstation.

The beta is good until April 2008. After about 20 minutes, everything is copied to the hard drive, and you can start playing.

A major advantage of 2008 is that the wizards previously available on small business server have been added to 2008 to provide "accidental network managers" some additional support.

I quickly changed the default IP address obtained from the DHCP server on my router to a fixed IP4 address. I also nailed down the admin password.

Right out of the box the server doesn't do a thing; you have to assign "roles" from the extensive list provided:


  • Active Directory (several items)
  • Application Server
  • DHCP server
  • DNS server (and is this required for AD as in previous versions?)
  • Fax server (the application that apparently will never die)
  • File Services (our first role)
  • Network Policy and Access services (functionality provided by the previous add-on application, including VPN services and fewalling)
  • Print Services (shared printers)
  • Terminal Services
  • IIS
  • SharePoint
  • Windows Deployement Services


Picking one of the roles above then allows you to pick additional functionality related to the main role.

Roles that require other roles as a prerequisite will automatically let you know.For example you can't install Sharepoint without installing IIS and the Net Framework 3.0. Makes sense, of course.

For starters, I've installed print services and file services. Once the installation is complete, I received a message saying I had to restart the server.

Labels: , ,

Friday, December 07, 2007

Tech Friday: Notes & Visual Studio 2008



Bob and Chris MSDN Road Show

Spent yesterday, Thursday at the Bob and Chris MSDN Roadshow. They had introductions for Visual Studio 2008 and Microsoft's suite of "Adobe Killers".... the expression series. Imagine a day-long master class, or set of high-level lectures, (for free!) and you'll have an idea of what these days are like. Because of the amount of time available, it is possible to talk about issues in more depth than during most of the half-day TechNet/MSDN days. Recommended. They provided pizza and soft drinks for lunch. At 4:00 we went directly into this month's meeting for the .NET Developer's Group, and they provided us with Visual Studio Professional 2008 installation CDs. Everyone who came close to completing an installation was included in a drawing for a Zune. The really good news is that they provided install IDs which we can use for obtaining a full copy of VS2008 professional. My rough notes follow:

08 AP/Honors Accelerated Class
cbowen@microsoft.com http://blogs.msdn.com/cbowen

Multi-Targeting: found under new project and new web site
Choose the version of the framework enable and disable features of the IDE.
WCF - for example does not appear when you choose a framework <3.0
Need to maintain two versions of the solution file if you are using 2008 and 2005.
Rick Strahl does a nice walk-through of the project and solution files.
New controls in Ajax 3.5
You may have to go to the AJAX CodePlex to get the latest controls.
Anything that is in a referenced assembly, it gives you the oportunity to add the call the "using system" call at the top
Expression Web design sufaces shared with VS2008
Ajax is native
Javascript is really well integrated
Sliverlight focused on javascript

Idea of master pages with content in particular rectangles within a page
IDE now supports the idea of "nested" master pages.

Has a "design view" which shows the image
Has a split view with code and design view like Dreamweaver.
There is a very nice GRID view which allows you to align
Turn on formatting marks (like tags and formatting, kind of like a paragraph mark within Word)
A lot easier to work with CSS in 2008. There is a CSS properties view that show the hierarchy of the CSS values.
Manage Styles View - a higher level way of managing CSS styles and there is a really neat "CSS preview" (like in Word 2007) which shows what something would look like if you apply the CSS style.
There is a kind of "refactoring" thing which will move the CSS reference from an inline to a CSS style sheet page.

Formatting and Validation - two new features (not in the Orcas betas)
You can treat validations as warnings instead of errors. (which would normally stop the app from running if they are errors). Validate html, xml, accessibility, different browsers/versions etc.

Ajax minimizes the full page refresh. Only a small part of the form updates. This is a feature of Ajax. Stock Ticker, Scoreboards, etc.

Ajax master page, Ajax web form, etc. The only difference in these project pages is that the Ajax library code is already includes the Ajax Script Manager. The S.M. control is key for Ajax.

Javascript Suport
Intellisense support for Javascript
for example, type document. and a full list of properties called up.
Drag and Drop script referencing . Just drag a snippet into the editor and the editor will create the references to the library. This is similar to C# and VB.

Javascript is loosly typed. The IDE will tell you if you change a type definition in the code. Changes are automatically detected in the IDE. So the loose typing is supported�

Debugging Javascript
You can set breakpoints.
VB uses IE script debugger. Tools| Options| Advanced -- enable script debugging. so that VB can talk to IE. So when a script goes bad it pops right back into VB.

Stepping.

"Visualizer" allows you to see full code when expanding a tool-tip.
"Dataset visualizer" shows a grid of the current record set, for example.

Web Deployment Projects - separate download.

Windows Forms- user settings on the web
"Click Once" will now work with FireFox.

WWPF /Windows Forms InterOp
Add WPF to existing Windows Forms ("Crossbow") allows you to WPF with WinForms and vice-versa.
There are controls for InterOp.
WPF: WindowsFormsHost
WinForms: ElementHost

Client Application Services
Share user authentication and authorization between Client and Web applications
Store user settings on the web
Handles web services communication

WCF Services
Secure, reliable, transacted and interoperable distributed applications
"Contracts"

Tools for Office
Visual designers for Ribbon, Task and Action Pane
Workflow and SharePoint Support
Application-level add-ins for most client programs
Document level add-ins for Excel and Word 2007
Projects for OutLook Add-in, PowerPoint Addin, In OutLook, it automatically docks a form at the bottom of a particular eMail.
This is now integrated directly into 2008.

Team System
AJAX support
Data-driven
Easy to use wizard
Bind XML and CSV files
Deployment assistance

Load Testing - Take any non-manual test and beat on it.
Unit Testing - Available in Pro!
You can right-click on a class, and there is an option to "unit test". Automatically creates the framework for a unit test for the class. An example of a data-driven test would be run this

Mobile Development
Smart Devices
Device Emulation

Resources
www.msdn.com/vstudio
White Paper: 14 page overview (non-technical) of the feature sets

================================
Bob:

Software + Services
Example:
XBox Live - device, has a community aspect, allows for multi-user gaming, there is a web component, combination of device+data center services. The New York Times has a WPF client for reading the Times offline.

What is Software + Services
Software deployed as a hosted service accessible over the internet + a mobile device

Multi-tenant data architecture (single instance)
Similar to a conventional three-tier database client/server
Metadata Services are the unique addition�..allows: configurability, authentication, branding (logo), unique fields/reports, etc. Custom Business Rules

Authentication:
Centralized: ASP.NET membership, profile storage, groups of users with roles and authorization.
Decentralized: Federated approach/allow the customer to manage their own authentication via the customer's Active Directory

Separate Databases

Shared Database /Separate Schemas (each tenant has their own tables within a single database)
Restoring a single tenant is a problem. - additional maintenance costs

Shared Database/ Shared Schemas
Tenant ID/UserID/RoleID

Regularity Issues: SOX requirements

Implmenting the Configurabilty
Extension Table
Fixed Columns
XML Columns

Extension Table
Example: Employee table offered with base set of fields. Extra fields are added by the customer.
Create a View for Each Tenant . Table Employee, Table Employee_Extension.

White Papers
Published on the road show
All code is available LitWare HR CodePlex

Multi-Headed Client:
Browser
WinForms
Offline with Synchronization
Mobile

Example: Salesforce.com

======================================
Bob
Silverlight 2.0
Scott Gutherie's blog
bob.familiar@microsoft.com
http://blogs.msdn.com/bobfamiliar

Takes a subset of Windows Presentation Foundation
Vector Graphics, Animation, Streaming Video, Vector fonts

Silverlight is cross platform

Version 2.0 will include a subset of the .NET framework

Tools for developing in Silverlight include Expression Blend, and VS.
Remix07Boston.com

SkyDrive = 500 megs of storage in the cloud. Currently In beta available for those with an Windows Live ID. Try this out!

======================================
Chris Bowen
LinQ

Allow data expressions and SQL queries within VB and C#... LinQ is an evolution of ADO
How have the languages been enhanced to incorporate this stuff

Type inferencing
Compiler infers the correct type from variables which are initialized in-line.
Only works for local variables, not parameters or return variables

Class and Collection Initializers
Shorter Form of Object Creation Syntax
Anonymous Types
You can create an object which is not typed. Compiler creates the type anonymous
Frequently used by Linq
Extension Methods
Extend existing type without having to subclass it
Add Methods without Derivation
Accesses Public Members of Extended Types
Must be:
public and status
housed within a static class
Use this keyword before parameter of extended type
Lambda Expressions
Inject code into something else. Formerly delegates, or C# anonymous methods
Reduces code needed to write
Based on anonymous methods
Might be used to translate syntax.
Predicate "(p) => p.Gender == "F"
"All persons p, such that person's Gender is F"
Projection
Query Expressions
Embedded SQL within native VB and C# syntax.

Question LK --- What is Reflection, or reflector?

5 types of LinQ

LINQ to Objects (in memory)
LINQ to DataSets, SQL, or Entities. (Julie is one of the experts on Entites).
LINQ to XML

Deferred query evaluation, - means that the query is really executed during foreach

Deferred Query Execution - is huge�because the query itself isn't actually run until the foreach

SEveral extension methods are really helpful working with data including:
intersection
in A but not in B
Except B
Union

100 useful examples in LINQ


LINQ to SQL
ORM Designer
Maps Relational Structures to Classes

Listview is a new control in 3.5

Use the ENTITY FRAMEWORK as a way to create an abstract mapping between the relational data and object-based applications. This is better than LinktoSQL because it will allow you to mess with the back-end database .

Scott Guthrie's Blog


Bob
=====================
Microsoft Expression Studio
New product line from Microsoft
Set of tools used primarily by web designers
Import and Export capabilities for Adobe products
The goal is to help the designer be a first-class citizen with Microsoft development prodcuts.
5 products
Media, Encoder, Web, Design, Blend

Media
Manage all graphic assets
How does this integrate with source-code control?
Searching for metadata
Makes a lot of sense when you have a lot of assets
Creates a metadata dictionary with pointers to the actual data
Create web galleries, slide shows, videos, etc.
Looks a lot like Outlook�allows the classification of objects. Allows you to give the items ratings. You can add custom people to a file or custom fields
Includes a thumbnail viewer (videos play as well)
"Light table"
You can share the catalogs with Mac users (how? requires a download for the Mac)

Encoder
Encode Video for use with Silverlight
VC1 codec
Sony Vegas Pro or Finalcut for editing although you can
Add a leader, add a trailer
Scrub the beginning or end.
Import .AVI, QuickTime, MPEG, WMV
Will encode in real-time for streaming for live video broadcast
HiDef 720p
You can do an AB compare = see the original video and compare it with the compressed version
There is a batch mode, or batch job definition. encode a bunch of things in a folder.

Markers can be set within a video. Example: Guy riding around London, markers trigger a javascript call to virtual earth to show the guy's position on a map. They can also generate thumbnails to go to the beginning of each stream.

You can generate a WMV file, or to full Silvelight application with templates. classic, glassy, expression,


Web
=Dreamweaver
Follow on to FrontPage? Yuck
Fully integrated with ASP.NET
Same/similar Visual Studio IDE
For the person who wants to spin up an html site without a lot of work� there are templates included.
Master Pages - parts that are editable and parts that are not.
Understands data bindinding and ASP.NET controls

LK Question: what is a div?

Good for creating style sheets
Targeted at the designer/end-user

Design
= Ilustrator ?
Can it do color separations?


Blend (December CTP)
= Flash? no actually, that is Silverlight.

When should I use WPF instead of WinForms - when you need to differentiate your user interface, think about using WPF, or when you are using Windows Media or Documents.

www.microsoft.com/expression
Training http://www.totaltraining.com for self-paced training
also training for expression defalt.apsx
Wintelect or Pluralsite


Silverlight
VS 2008
Silverlight Tools for VS2008
Blend CTP (December)

======== end of notes =========
Swag was available too....pens, squishy balls, tee-shirts, and a Silverlight book. They came in with two giant screens and put up four-player versions of Halo-3 for the breaks. They also provided sandwiches while we did our installations of VS2008. If you are able to get to one of the cities they are visiting, be sure to check out the Roadshow.

Labels:

Friday, November 02, 2007

Tech Friday: New MacBook with Leopard OSX 10.5

In the Pournelle tradition, "we do these things so you don't have to"... and contrary to advice to clients, I've remixed my operating systems, and gotten an Apple Macintosh, a MacBook. This is the little laptop with a 13.3 inch screen.

It was fun to place the order last Friday and then watch the machine wing its way over from China to Anchorage Alaska, and then down to the lower 48 over the course of the next couple of days on the FedEx tracking site. I was told that the unit would come with the latest version of the Mac operating system installed. It wasn't, but there was a CD enclosed, and the first thing I did was to do an OS update, which went without a hitch. Now I've been reading on-line discussions about the update, but since I had zero experience with Mac operating systems since the first Mac was introduced about twenty years ago, I was blissfully ignorant about all the changes. My baseline is simply the latest and greatest...and my early experience has been favorable.

There are still a few hold-overs from the earliest Macs. The startup sound is the same. The finder "logo" with the two faces is still the same. I wonder if someone, somewhere, has a digital recording of the first Mac floppy drives as they sort of clicked away. I can still remember that sound.

The OS comes with an embarrassment of riches. Like Ubuntu or other Linux distributions, there are enough applications in there to keep you busy (and unproductive) for days. So far the only things I've added are the iWork suite (word-processing, presentations and spreadsheets), and an upgrade from the standard GarageBand recording software called Logic Express. I also installed the Cisco VPN client for our university's wireless network. A second power brick for the office is $70.00.

Frankly my first impetus for the change was to solve a hardware problem. My Dell Inspiron is falling apart, and the keyboard never worked the way it should.

The MacBook hardware is quite complete. It includes an integrated microphone and camera. There is integrated Airport wireless networking which works flawlessly. Integrated BlueTooth, (haven't tried it yet...need to get one of those nerdy headsets). A FireWire port. Two USB ports. External microphone input, and headset output. All this is wrapped up in a sleek black package which weighs a little over five pounds.

Of course the underlying OS is Unix, so all the Unix command-line goodies are available. And Boot Camp, which allows you to set up a dual-boot Mac/Windows is now out of beta and integrated directly into the Mac OS. So, even if I relegate the Mac to "personal" use, I'll still be able to use it with Windows XP or Vista.

Labels: ,

Friday, September 28, 2007

Looking Back: Database Development with Microsoft

Many careers require you to update or reinvent yourself on a regular basis. Expert programmers turn into beginners again every three years or so as their software tools, methodologies, and paradigms change.

So I certainly wasn't surprised when after several months away from the Microsoft Visual FoxPro page I ran across an announcement from (April 2007 no less):

We are announcing today that there will be no VFP 10. VFP 9 will continue to be supported according to our existing policy with support through 2015. We will be releasing SP2 for Visual FoxPro 9 this summer as planned, providing fixes and additional support for Windows Vista.


The oddly-named FoxPro has had a good run. I started using it I think around 1988 when I first took a job at the University of Vermont in their Continuing Education division, setting up Novell networks and maintaing a couple of FoxPro applications that had been written over the previous couple of months. FoxPro really started out as a complier for dBase code. DBase was one of the first, if not the first relational database programs created to be used with desktop computers. DBase, an interpreted language, was slow and quirky, but if I recall, I actually got a couple applications going with it. Some years after dBase was created, Clipper came out. Clipper could compile dBase code into machine language which could then be run natively on the computer without an interpreter. Clipper had no user interface to speak of, you still had to do the development in dBase, then take the dBase files and run them through Clipper by running batch files.

FoxPro was developed by David Fulton as an improvement over Clipper. It included a user interface for development and allowed you to create one for the end-user. It was less expensive than dBase or Clipper and had terrific performance. I started with version 2.0 right after it had come out, and by the time they were up to version 3.0 they had a program to create sophisticated user interfaces with overlapping windows. The programs would work in both Windows and Unix, and at one point there was support for the Macintosh.

More on this ancient history is available on the FoxPro Wiki.

[pause to take unsolicited spam phone call in heavily accented English from Ravi via what must be a bad VoIP connection to solicit IT services]

Fox Software was bought by Microsoft in 1992. For awhile they maintained a DOS version, but they were keen on developing a version for Windows. This appeared to be before Access or SQL-Server had any major marketing traction. There were other desktop databases, and Microsoft may have felt that they needed to have a dog (er, fox) in that particlar fight. In particular, one competitor was Borland Paradox, which had a terrific user interface and query system. Borland was also competing with development tools and languages.

FoxPro-for-Windows, renamed Visual FoxPro, became a major development system for deploying desktop database applications. Paradox never made an effective transfer from DOS to Windows, although it still exists in the WordPerfect suite.

FoxPro isn't dead though. There is a conference happening in October, and as the announcement says, there will be support until 2015. Version 9.0 will receive some updates to help it integrate well with the dominant Microsoft dot-net technologies. For interactive querying and data manipulation, it remains a wonderful tool.

Labels: ,

Friday, August 24, 2007

Disk Partitions

I am reminding myself of how disk partitions work, and how they can be manipulated. The impetus for this is an attempt to load Windows XP Embedded (XPe) on my target machine, an ASUS Pundit. Using Acronis Disk Director Suite, ($49.00) I created a separate small partition for the XPe installation. The problem then was trying to figure out how to boot the extra partition.

Partitions can be marked several ways
a. Active Primary - this is the boot partition. There can only be one of these on a disk.
b. Primary - This can be either a bootable partition, or not.
c. Extended - A physical partition that can be further subdivided into other partitions.
d. Logical - A subdivision of an extended partition.

The upshot for the test machine is that I want to have two partitions; one for the original Windows and software installation, that includes all of the necessary application software and a second testing partition for the Windows XPe image which contains all the applications and drivers already burnt into the XPe image.

Also, I need to be able to designate one partion or the other as the boot partition. This is done by marking the partiion as �Active�, and insuring that the boot drive letter is designated drive C:. The first part, designating the partition as the boot partition, seems to work fine within the Acronis program. Changing the drive letter, on the other hand, does not seem to be so intuitive as it involves a registry edit.

The drive letter desgination is important, because many programs rely on the designated drive letter to find their own executables and data.

To boot the XPe partition, I changed it to the �active� partition, and then renamed the drive letter to C: A final change involved changing the Boot.ini file which is present in the root directory of the partition. This file looks like this:

[boot loader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows
XP Embedded" /fastdetect /noexecute=AlwaysOff

and it gets modified to change partition(1) to partition(2) in both instances, so that the boot designated boot partition is indeed the 2nd partition on the drive. I recall from my distant MCP days, that although disk drives are numbered beginning with 0, the partitions are numbered beginning with 1. The diagnostic for this is that if you have already designated the second partition as active, but still boot into the �wrong� partition, it means that the OS files that are loaded are the ones that are pointed to be the boot.ini. To make this even more confusing, there is the notion of the �system� partition and the �boot� partition. This is a distinction which I think is only talked about when dealing with Microsoft operating systems. Perversly, the names seem to be reversed�.it is the �system� partition which contains NTLDR and boot.ini. and the �boot� partition which contains \Windows, and \Windows\System32, and all the operating system binary files.

In 99% of the cases, of course these files are are all on the same partition and in most cases there is a single partition on a drive anyway.

Labels: , ,

Friday, July 13, 2007

Building a Windows XPe Test Environment

Back in May I worked through a Microsoft Virtual Lab online that created a test target environment for a Windows XPe device.
Today, I'm attempting to build my own version of a target device using Microsoft Virtual PC, following instructions from MSDN, How to Demonstrate Windows XP Embedded.

Continuing with the "virtual" theme, I was pleased to see instruction for creating an image on a Microsoft Virtual PC.
If you have never used this, it is available now as a free download, and it is great for trying things out without trying to scrounge another PC someplace. An essential developer's tool, Virtual PC can be used to try different operating systems, (including non-Microsoft O/S's), program builds, simulated client environments, virtual networks with multiple workstations, you name it.

But back to Windows XPe. I'm a newbie, so there were several non-obvious issues that I noted in the MSDN instructions.

The procedure describes using the Windows Preinstallation Environment. This is the equivalent of a DOS boot disk with a bunch of command-line utilities that you can use to prepare disk drives, copy drivers, and so forth. Windows PE has been around awhile, it appears to have been initially designed for use by "white box" computer system builders who wanted to configure hardware before installing Windows. So, essentially what you are doing to prepare the virtual PC is the following:

1. Create a new virtual PC and virtual hard drive for the embedded XP application.
Be sure the networking setting is set for "shared networking".


2. Boot this new virtual PC using the first CD from the Windows XPe Evaluation Kit. This CD 1 contains the boot image for Windows PE. It will boot up the virtual PC and come to a command line with X: as the drive letter. The X:, in this case refers to the CD drive NOT the disk drive that you created for the virtual PC. This is because�you have to partition and format the virtual drive, per the instructions above in the MSDN article.

3. The article then describes the process of running TAP, the "Target Analyzer Tool" which captures the configuraton of the hardware that you are running on. This creates a file called devices.pmq

4. You need to get the devices.pmq to your host machine, either by running TAP with the output switch or copying the file to a share. This is a little confusing in the instructions; here is how I interpreted it.

a. Create a folder on the host machine called C:\Windows Embedded Images"
MD "C:\Windows Embedded Images"


b. Share this folder with a name XPe
NET SHARE XPe="C:\Windows Embedded Images"


c. On the virtual machine, Map the Z: drive to the shared folder using the IP address of the host machine as the server name.
NET USE Z: \\192.168.0.102\XPe

You may have to supply a name and password for this, (actually, this is a good thing..); I had to use my admin name and password to get in.

d. On the virtual machine drive C:, copy the devices.pmq to the shared folder
COPY  C:\ devices.pmq Z:


After completing this portion of the instructions, I continued on with the discussion of the compnent designer. This is one of the tools included in the Microsoft Windows Embedded Studio

1. Go to File Import, and choose the devices.pmq


The import function takes a few minutes to run. (10 or more). Once it is completed and you close the import dialog, you'll get a first look at the component tree with the imported devices shown on the right.




Photo: c:\componentdesigner.png

2. Ok, moving right along the next step is to "finalize" the component.


This screen shot matches the one in the MSDN article.

3. Saving this file (from File|Save) creates an sld file.

4. Now the sld file needs to be imported into the Windows XPe component database using the Component Database Manager. This step is described in the MSDN document.

Finally, you get to build the Windows XP image using the Target Designer. This is where the components are chosen for the Windows image. Of course, the componet that you've just created needs to be added, as it contains all of the information about the target hardware.

The instructions say you should update the User Interface Core Component, but as this wasn't added yet, I first added this manually. My guess is this would get added if you updated the dependencies before this step. By changing these, you have the opportunity to manipulate the user environment, similarly to the way you can set options using group policies.

Then, when you do the Dependency check, hundreds of components will be added. This step takes several minutes. When it completed, it showed that there were 10430 components included.


When all dependencies are resolved, you then build the run-time image. This took about 3 minutes, resulting with an image of 129.0 mb compressed, and an estimated uncompressed size of 179 megs. Not something that will fit on a floppy disk!

Doesn't this look familiar?

As part of the process of installing this on to the virtual machine, the instructions call for using the Microsoft Resource Kit utility RoboCopy. This is XCOPY on steroids. Not only does it copy files and directories, but it preserves any attributes and settings on the files and directories. I did the copy. Occasionally it would stop because it claimed the network connection was down. I don't think think so�.as it copied from the the same physical machine. But in the end it looked OK.

This shows the result of the copy operation, and the root directory of the target machine. Recall that this is a command window within the Windows PE Environment (the graphic backround image), appearing in a virtual PC (the title bar and toolbar). Let's see if the XPe image will boot!

The first boot agent starts. This writes the registry, installs system security, registers components, registers class installers, installs hardware devices, in short, completes the process of installation. Once configured, it forces a reboot again, and Voila! We're into a session of XP embedded.

Labels: , ,

Wednesday, July 11, 2007

Embedded Hardware and Software Resources

Beginner's (that's me!) Information:

ASIC
Application Specific Integrated Circuit

FPGA
Introductory information for Field Programmable Gate Arrays (FPGA)
http://www.fpga4fun.com/FPGAinfo1.html
http://en.wikipedia.org/wiki/Field-programmable_gate_array
http://www.fpgacentral.com/
http://www.openfpga.org/

Programmable digigal logic chips.
Are "volatile", program has to be reloaded when the unit is turned on.

Article/Blog about working with FPGA development kits
http://svenand.blogdrive.com/archive/11.html


CPLD
Complex Programmable Logic Device (technology of the 1980's
More complex than a PAL, less than an FPGA
Non-volatile mmemory
Useful for providing "boot loader" funcitionality
http://en.wikipedia.org/wiki/CPLD

Microsoft Windows Embedded Developer Center
Articles and resources from the MSDN library regarding Windows embedded.
http://msdn2.microsoft.com/en-us/embedded/default.aspx

Embedded Technology Journal
http://www.embeddedtechjournal.com/

Nuts and Volts Magazine
http://www.nutsvolts.com/

Circuit Cellar
http://www.circuitcellar.com/

Labels: ,

Friday, May 25, 2007

Windows XP Embedded....just like Novell


I'm dating myself here...but I remember about twenty years ago when the Novell NetWare operating system was compiled from components. In the earlier case, the operating system was linked to include object files for specific networking hardware. I recall provisions for up to a dozen different hardware manufacturers and topologies, including ArcNet, Ethernet, IBM Systems Network Architecture, and something called OmniNet. The linking and build process used 30 or more floppy disks, and the process was fraught with errors and mixups. The target hard drives were tested with the infamous CompSurf program (for Comprehensive Surface Test), and this could take several hours to run if the disk was a large one, like 40 megabytes. We would routinely let these tests run overnight, and hope in the morning that our disk would have a clean bill of health.

So it is interesting to build a Windows XP embedded image, which basically gives you 1200 possible components that can be selected to build a version of Windows XP that will run on embedded hardware or for a dedicated device. This is displayed in the Microsoft Virtual Labs, which create a virtual PC environment ActiveX control that shows up embedded in an Internet Explorer Window. Pretty slick actually. And, as the second picture shows...it is just like real life. Here is what I ended up with after working through ninety minutes of the lab when I attempted to reboot the virtual machine.

Labels:

Martin Geddes: Cold on VoIP? Exactly

Martin Geddes is sceptical.
I ought to explain why I�ve suddenly gone cold on VoIP.

It�s just I�ve watched my own behaviour. I�ve grown tired of the inconsistency of PC VoIP calls, and instead I�ve reverted to using landlines, mobiles and Jajah (for callback). But I�m still using IM to set up many of those calls!

The problem isn�t unique to any one client � they�re all proving unsuitable for business use with clients (which is most of my telephony needs covered).

The worst of all seems to be Skype conference calling. We probably would rate the quality as �unacceptable� for 50% of the attempts. When it�s good, it�s great. But that isn�t what I�m after.


He goes on to talk about how softphones don't work very well.

Another problem with PCs is they�re just lousy telephones. When you hibernate Windows XP on my HP laptop, all kinds of audio settings seem to go wrong and the volume buttons stop working. Bluetooth is hopelessly unreliable, and who wants another wireless headset device to remember to charge up (and bring the charger when you travel)? Or to have to rush to fish out a headset and plug it in when a call arrives?


Before I get accused of plagiarizing the whole piece, you can read the full post.

There are a couple of issues here:

VoIP qua VoIP is really a very broad spectrum of technologies, encompassing softphones, free calling, replacing million dollar hardware PBX switches with open source software switches, and new applications. Martin's definition for purposes of his discussion, if I read his article correctly cites two problematic applications; softphones on PCs, and conference calling on Skype.

I agree with his scepticism. My own interest in more in Asterisk/Trixbox and replacing the traditional circuit switched phone line infrastructure with packet switched calls over the internet. While I have made a couple of calls from my laptop, it seems a little bit silly to do so when I've got my $15.00/month cell-phone handy. So if softphones don't work I'm personally not going to slit my throat.

But, the internet calls thing, is more problematic. Clearly, we are at the mercy of the internet when placing such calls... once your packets get outside your own local area network, they are flung out on the storm-tossed seas of the public internet. And, as we all are getting what we wished for with network neutrality, our packets are being treated like everyone else's packets. So, your 911 call's packets might be held up by an image of Johnny Depp, or even the whole movie.

One solution of this so far, as been "quality of service", which is a euphemism for "prioritizing packets". If people played nice, then, every router on the net would be smart enough to know that some packets are more equal than others, and voice and media packets in particular need to be forwarded before eMail and ftp packets. And indeed, if I'm making VoIP calls from my Trixbox while downloading those bloody updates for Windows, call quality goes down the tubes, (and this is with me, placing a single call, and downloading from a single workstation on my LAN).

The second solution, and really the only one at this point, has been to provide enough bandwidth so that whatever the exigencies of packet transfer there is enough slack in the network so that most of the voice packets will arrive, in the correct order. In buildings that use VoIP phones, the best practice is to run a separate set of 10BaseT cabling for the softphones. Mind you, this is a separate subnet from the data network that is currently in place. (Note: Someone will argue that this already in place, because we've got the existing two or four pair wiring in place for the telphone...)

So, is it responsible of us to suggest for a non-profit that they should:
1. Invest in new desk phones at $125.00 for each desktop location
2. Double their cable infrastructure
3. Purchase a quality of service router that at least will prioritize packets moving in and out of their own location
4. Purchase a dedicated server, with attendant UPS backup and management
5. Figure out how all this goes together.

when it may not work. Specifically, that you won't be able to rely on 99.99% availability when placing internet calls, and you won't be able to ensure that 99.99% of inbound calls to your internet-brokered phone lines will reach you.

when you can go to Best Buy or Amazon and get a Panasonic key phone system with six phones for $2500 or so, which you can forget about once it is installed.

I'm just asking.

Labels: , ,

Tuesday, May 08, 2007

Trixbox and FreePBX

In one of those serendipitous moments, I found that by upgrading one thing, I fixed another thing.

One of the nifty things that you can do with VoIP is add a virtual number to your system. The number can be located pretty much anywhere, as long as your "voice ISP" has a block of numbers available in the locale that you want to have the number.

In my case, I wanted to have a local number available in Albany, New York which is area code 518. So, I logged into the VoicePulse web site, chose the location and selected a number from the ones available. VoicePulse charges US$11.00 to set up a number, and then $11.00 at the beginning of each month for the number.

That should have solved the issue. I was able to verify almost immediatly that my credit card had been charged. But when I called the number I'd get the "the number you have dialed is not in service" message, which follows the three high-pitched tones.

What to do? First, of course, send a note the VoicePulse tech support. They called back and asked for a transcript of the SIP debugger in Asterisk. So, I logged into the Trixbox with my SSL terminal program, logged on to the Asterisk command line, and then activated SIP Debug.

AsteriskBox$ asterisk -vvvvvvvvvvr
AsteriskBox$ sip debug


This gave me a transcript of all the SIP commands, and it was obvious that indeed the call was getting as far as the Trixbox, but was being rejected for some reason. So, I figured it had to be an issue with inbound routes in the Asterisk configuration. These are configured using FreePBX. Poking around on the FreePBX forums, I found that the version I was using was still a release candidate, and indeed other people had had problems with inbound routes. So, an upgrade was in order, and excellent instructions were given on the forum. And indeed, now the inbound number works.
I now have a "local presence" in Albany, even though I'm in Vermont.

Labels: , , ,

Thursday, May 03, 2007

Erasing your Hard Drive - Really

How to REALLY erase a hard drive by Robin Harris

Who Knew? Turns out there is a way to do a full erase on a hard drive already built into the firmware on the drive.

So what�s the magic?
Something called Secure Erase, a set of commands embedded in most ATA drives built since 2001. If this is so wonderful, why haven�t you heard of it before? Because it�s been disabled by most motherboard BIOSes.

Secure Erase is a loaded gun aimed right at all your data. And Murphy�s Law is still in force. But hey, if you�re smart enough to read Storage Bits, you�re smart enough to not play with Secure Erase until you need to.


I use Boot 'N Nuke myself, which he also mentions.

Labels: , ,

Friday, April 20, 2007

Tech Friday: Creating a Virtual Private Network

Over at Lifehacker, there is an excellent summary of ten networking tools to use on your home network. Several have been discussed here, but the updates are useful. One of more interesting is: Geek to Live: Create your own virtual private network with Hamachi

Labels: ,

Friday, February 23, 2007

Simulate Access 2007 runtime

Clint Covington has a hint to allow us to get a preview of what a project will look like when running under the Access 2007 runtime:
I know, the runtime hasn�t shipped yet. If you are looking for a simple way to share a database with co-workers and you don�t want them messing around with things� Try renaming the file to ACCDR. This is the equivalent of running the database with the /runtime switch. Basically the ribbon and nav pane get turned off.

I found a comment on a German blog quoting somebody who was quoting somebody that the runtime would ship "sometime in the March timeframe". Let's hope so.

Labels: , ,

Friday, January 26, 2007

SQL Command Box for Microsoft Access

Among the many things I miss in Access from Foxpro is the ability to enter SQL statements on-the-fly into the command box. So, as a first cut, I created a form with a textbox and a button. The textbox holds the SQL code, and a button that calls a subroutine to stuff the code into a scratch query defined in the .MDB Queries collection.

There are lots of possible refinements, error checking, parsing of other commands, etc, but already I�m taken with this as it eliminates half the clicking around when doing SQL queries. Thanks to Martin Green's Office tips for most of the code. Here is the VBA code for the command button.

Private Sub cmdExecute_Click()
' The following code processes an on-the-fly SQL command
' entered in the text box. The command requires a "scratch"
' query be included in the database query collection. The code
' takes the SQL string, passes it to the scratch query, and
' then executes it.
' Code cribbed from Martin Green's Office Tips at
' http://www.fontstuff.com

Dim strSQL As String
Dim db As DAO.Database
Dim qdf As DAO.QueryDef

strSQL = Trim(Me.txtQuery.value)

'Here is the code which will apply the SQL statement to the query:

Set db = CurrentDb
Set qdf = db.QueryDefs("qryScratch")
qdf.SQL = strSQL
Set qdf = Nothing
Set db = Nothing

DoCmd.OpenQuery "qryScratch"
End Sub

Labels: , ,

Tuesday, January 23, 2007

Tech Friday Daily = Daily Cup of Tech

If our Tech Friday feature could be published every day, it might look something like Tim Fehlman's Daily Cup of Tech. Tons of practical tech ideas over there; check out the discussion of making your USB thumb drive come up with a menu of tools and utilities. And, you might see the the occasional contribution by a certain non-profit technologist.

Labels:

Saturday, January 13, 2007

Debugging SIP in Asterisk/Trixbox

Here's the scenario:

Significant Other calls Mother. Gets a "ring no-answer"...which means of course, that it just rings and rings and rings. The assumption, then, is that Mother is not at home. Or she might be downstairs doing in the laundry room, or something, but she definitely is someplace else.

However, what is happening in reality, is that Mother is on the phone with Sister. So we should be getting a busy signal, but we're not.

My theory was that since my PSTN connection provider, Voicepulse, couldn't complete the call, that it just kept things ringing. However, they said that they actually send back a SIP message 486 [Busy here] to Asterisk...and Asterisk should then be dealing with that by changing the ring tone to a busy signal.

So, there is a SIP debug mode within Asterisk, and I'll set this up by going into the Asterisk Command Line interface. I'll log into this remotely using Putty using SSH (the secure shell). I'll also set this up to log everything that appears in the terminal to a file.

So, I place a call to a known busy PSTN line.

But, nowhere in the transcript is there any evidence of a SIP message 486 Busy. So, I placed an outbound call via my ZAP hardware line to the PSTN number for that number. This is the same as calling your own phone number from a conventional phone. In this case, I get an immediate busy signal, as expected. But, looking at the transcript of that call, there is no evidence of a SIP message 486 there either. So now I'm wondering about the phone. In the transcript it shows the following entry:

<-- SIP read from 192.168.0.161:5060:
BYE sip:98639587@192.168.0.180 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.161
From: "Larry Keyes" ;tag=8d48abf7-9a54-5966-3784-6ae80bce9d87
To: ;tag=as5fa85f66
Contact:
Proxy-Authorization: DIGEST username="200", realm="asterisk", algorithm=MD5, uri="sip:98639587@192.168.0.180", nonce="1c3041c5", response="759f615b48878ff3d617936450ae3c8e"
Call-ID: fc430bce-606a-00c1-18aa-c326d5af2e1b@192.168.0.161
CSeq: 45540 BYE
User-Agent: Grandstream SIP UA 1.0.4.17
Max-Forwards: 70
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, OPTIONS, INFO, SUBSCRIBE
Content-Length: 0

I'm wondering about the Allow:. Does this mean that the phone doesn't accept any SIP message except those that are offered by the phone?

Now, my own opinion is that we can indeed live with this, just like we can live without E911 calling and all that. Still, it is just one more damn thing that is different between my VoIP implementation and the "real" PSTN. But, there is a safety issue there...if we can't reliably determine when the phone is off the via a VoIP call, then we may want to place a PSTN call to verify. Which seems to sort of defeat the purpose.

We could solve this by just getting her an answering machine.

Here is another viewpoint about the anomolies of VoIP. Men are from VoIP and Women from PSTN.
My wife has been using Vonage for the past 3 years with me and she complains at every little Vonage hiccup, every little "fast busy" when dialing, every little Internet outage that brings down the phone line. She used to complain about the sound quality on the VoIP connection all the time, but she has gotten better. Or perhaps she's resigned to the fact that I'm never going back to PSTN.

Me? I'm like "Hey, sounds great to me. I never have any problems when I'm making a call using Vonage. Sure, when the power goes off or the Internet connection dies, we lose our phone, but hey, we're saving a ton of money each month. And it's a cool technology to boot. Plus I write about this stuff all day long, so I should practice what I preach."

I don't think she bought it.

Labels: , ,