Wednesday, December 31, 2008

GoodShop, NewEgg and PackageMapping

I've just ordered some new computer equipment, and I'm rather excited and anxious about it's arrival! But when will that be? I have the UPS tracking number

Firstly I have to say that I've been buying from NewEgg for many years, and they've always been wonderful. Among other things, I've ordered at least 5 motherboards and over 15 hard drives. I point those out because I have received faulty equipment (odds are with that volume that it will happen), but NewEgg support has always been helpful and courteous. I just spoke with them today about a 1 yr old Samsung hard drive that Samsung refused to warantee, to which NewEgg then offered me a full refund. They have great prices, and great service. And you can help a charity dear to my heart if you shop NewEgg from this link:

GoodShop
No additional costs or registration. The charity will be preselected, just select NewEgg or any other store and shop as normal.



Ok, so I've place my order. When will it get here?!?!?!?!
I've just discovered PackageMapping.com, which uses any tracking number and shows you the path and current location of your package on Google Maps! Very cool. I now have a sense for the geographic proximity of my package and how soon it may arrive!

Tuesday, November 18, 2008

Computer Backups @ Home

After trying lots of different backup strategies for my home computers, I’ve finally settled on a backup system that is fault, fire and theft tolerant. With a convenient combination of live recovery and offsite backup, I can easily recover from single hard drive failures, and even a complete system loss.

The trick is that I’m using a RAID 1 mirror approach with an extra drive. In this scenario, I’ve got two drives working as one that tolerates the complete loss of one of the drives, and the system continues to operate without interruption. Each week, I power down the systems and remove one of the drives (which is a perfect copy of the other). I then install a drive that I had kept offsite in a safe deposit box at my bank. During the boot process I tell the machine to rebuild the RAID 1 array and overwrite the newly inserted drive. The RAID rebuild doesn’t take much processing power, and a few hours later the machine is back to full redundancy.

At any one time, I have 2 drives in a machine acting as fault tolerance, and a third drive at the bank acting as standby for a complete and total loss disaster. I’ve experimented with my motherboard built in ICH8R hardware assisted RAID controller, and I know that I can easily rebuild from only the offsite drive.

To make the process better, I put mobile drive racks into my 5.25 bays. The rack accepts direct insertion of SATA drives (no sleds needed). I don’t even have to disassemble anything to make the drive swap. These days 500GB drives are cheap, which makes this scheme very affordable.

KINGWIN KF-1000-BK 3.5" Internal hot swap rack ($25)
http://www.newegg.com/Product/Product.aspx?Item=N82E16817990001


OEM 500GB drives ($60-$70)

http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&N=2010150014%20103530113&bop=And&Order=PRICE


This is arguably not a backup strategy. Considering that I have fault tolerance AND an offsite copy, this simple system satisfies all my needs. The offsite “backup” is about a week old at any one point, but I would suggest that it’s more current, more reliable, more viable and more convenient than most people’s backup strategies. Considering that most people backup by taking hours copying files to an external drive, my backup is basically just pulling the drive out of the machine.

Also consider that my RAID 1 mirror strategy can be used like a Virtual Machine rollback feature. If I wanted to, remove one of the drives, and try arbitrary system changes and software installs. If I didn’t like the result, I could remove the remaining drive, and reinsert the one I had pre-removed. At that point the system would be in pre-experimentation mode. The system would need to rebuild the array, but a small price to pay for having rollback capabilities on a physical machine.

There are some issues/annoyances to this approach. First, when a drive is failing, typical consumer drives make “heroic” attempts to prevent data loss. This means it can take extremely long amounts of time retrying and remapping bad sectors (hard drives are S.M.A.R.T. you know :-) I’ve seen this occur on my systems, and it takes a while to realize why the system is semi-freezing, acting erratic, or possibly not shutting down properly. Once I recognize it, I shut down and run my vendor supplied drive diagnostics to find (and possibly correct) the bad drive. I don’t like any drive problems, but these days the diagnostic software will correct them enough that a warrantee exchange can’t be done. The other annoyance is having to shutdown my systems once a week, and drive to the bank. The systems aren’t down for long and it is a short drive to the bank, but it is slightly annoying. If you wanted to attempt this scheme, you would have to RAID enable your system in some way. Maybe buying a new motherboard, or a PCI card, or external NAS RAID… I can see that being annoying too if you don’t have it already.

With my frequent visits to my safe deposit box in the vault, and bringing my precious data (photo collection, word docs, personal projects, etc…), I feel like it would be cool to have one of those steel secret-agent brief cases handcuffed to my wrist :-)

Note:
I could use an online Internet cloud-based backup solution, but my Honda Civic can transfer 1.5TB of data to/from offsite in about 20 minutes. My cable modem at home can't achieve that type of bandwidth every week :-)

Friday, October 3, 2008

Telemarketers and Robo Callers

Sigh.

There's only so much attention that I can give to unwanted callers interrupting me during all hours of the day. Whether the attention I give is to annoy them in return, research them on the Internet, provide "public service messages" about the ethics of these callers and the do-not-call list, ... there's just too many annoyances in the world, and giving them any attention at all has become too much.

Although it's interesting to document and blog about "Freedom's watch against Kay Hagan", "Associated Builders Association against Kay Hagan" (both of whom called today), the democratic party doing opinion surveys yesterday, or whatever... I'm done with them. The next time I get a robo message on my voice mail, or a person calls at 9:30pm... I'm done. I'm going to delete the message. I'm going to cut the phone calls short. I'm going to stop blogging about how the do-not-call doesn't stop all the annoying phone calls, and how wrong the whole system is.

I'm done.

Wednesday, September 17, 2008

What Telemarketer Research ? For WHO ?

I got ANOTHER call today from a telemarketer claiming market research.

TELL ME YOUR CONCERNS
The call was from Mountain West Research Center (http://www.mwrcenter.com) wanting to ask me about national and local issues facing communities. As I probed for answers about who they were and who would get the results of the survey, the caller could not provided me with an answer on where my responses would end up. Why would anyone volunteer information that may go toward causes or political interests that they do not agree with. For example, lets say that I'm concerned about local businesses losing out to big corporations. Now anyone can bring up that topic to try to sway my opinion, regardless of their real intent. If I said pollution was my national concern, any corporation or political machine would know to how to gain my favor or dollars.

Are you a republican? How would you answer the survey if it was democrats calling?
Are you a democrat? How would you answer the survey if it was republicans calling?

I don't mind giving my opinions in the proper forum, but phone calling blind (which is annoying enough) and not telling me how my answers will be used. Its easy for both friends and enemies to use a person's opinion to sway or coerce them.

As an aside, I asked their company name, location, phone number... they told me they didn't have a phone number, that they were calling from the Internet (how ridiculous is that?).

YOU LIKE PET FOOD?
I had a different call recently (at 9:00 pm) researching my views on pet food products. They too weren't selling anything and felt the Do-Not-Call list didn't apply to them. I kept them on the line for a while asking about who was paying for and receiving the survey. As they said the survey results would be free, I asked them to send me the results. They then said it was not free, to which I asked who was paying for it. I had the guy talking in circles before he suggested I speak with his supervisor. The supervisor was rather unapologetic about calling anyone and about not revealing who was getting the survey. My point with these people was that it WAS a commercial phone call, and that they shouldn't be able to call me due to the Do-Not-Call List.

YOUR HOMEWORK
When they call YOU, be sure to get any identifying information so that you can look them up on the Internet, and blog about them. Get company name, address, phone number anything you can search on. Also insist that they tell you where your information is going, and who is paying for it. Good luck.

Wednesday, September 10, 2008

Enterprise Library Logging with WMI

In Enterprise Library for Microsoft (EntLib v3.1), you can use the WMI TraceListener (WMITraceListener class) to send logging events/statistics to the Windows Performance Monitor application.

Steps:

  1. Enable Instrumentation on the host: Start / All Programs / Microsoft Patterns & Practices / Enteprise Library 3.1 - May 2007 / Install Instrumentation
  2. With Enterprise Library Configuration, configure your app.config or web.config to use the WMI TraceListener.
  3. With Enterprise Library Configuration, add Instrumentation
  4. Edit the resulting config file (from previous steps) to set the instrumentation properties to "true": <instrumentationconfiguration performanceCountersEnabled="true"
    eventLoggingEnabled="true" wmiEnabled="true" />
  5. If you have subclassed LogEntry, make sure any custom typed Attributes are decorated with [IgnoreMember] (you'll have to have System.Management as a Reference)
  6. Run your program
  7. Add a new Counter in Windows Performance Monitor: Performance Object "Enterprise Library Logging Counter"; Select counters from list; Select your program's instance.
Troubleshooting:
  • If "Enterprise Library Logging Counter" isn't available in Performance Monitor, then you didn't Install Instrumentation in EntLib.
  • If you can't select an instance while adding the Counter, then your program probably isn't running, or something is preventing it from being instrumentable
  • If the application event log contains errors suggesting that you use IgnoreMember, then you are logging a subclassed EventLog that has Attributes with special types (the event log error will say which one). Or change the type of you attributes to string, int, etc... to avoid the problem.

Monday, September 8, 2008

Don't Give to Rude Telemarketers

Hey Telemarketers!
Telemarketers, when you call me midday or in the evenings, I am not happy or receptive to your message... but I am polite. I generally will try to end the call gracefully. If you are rude to me, then I start to question why I am being polite to you.

Fraternal Order of Police
Yesterday evening I received a call from the Fraternal Order of Police, asking for a donation to their noble cause. I listened and waited for a chance to reply and when I calmly said "no thank you" they immediately hung up.
Today, to my surprise, I received another call from the Fraternal Order of Police (in the afternoon). I interrupted the telemarketer a few times to make sure that I was talking with the same organization, as I made notes. Then I interrupted again and said that they had called yesterday and were rather rude to me. I conveyed that they hung up on me after I had politely refused. As this telemarketer tried to break in, I said that I was NOT happy with them, and I hung up. I'm surprised that I was able to hang up on them before they hung up on me.

March of Dimes
I like the intent of this organization, but their fund raising efforts are ruthless. The March of Dimes has called my house asking for my wife... I'll ask who they are. After they respond I tell them that my wife isn't around, but I can help them. At that point they tend to hang up without further response. Later (sometimes hours, sometimes days) they call back, identified by caller ID, and hang up quickly when they find out that my wife isn't available. To me, that's rude and devious. It is also impossible to get off their mailing list.

Not Over the Phone
Additionally, stop insisting that I give right now! I tell anyone who calls that I do not make donation decisions over the phone. Send me information in the mail, and I'll make my decisions casually when I sit down to pay bills. I've had telemarketers hang up when I tell them that I do not commit to donations over the phone, but that I would like them to send information to me.

Who are the Telemarketers Helping? Themselves?
Some of the telemarketers that call me are not doing justice to the charities that they represent. Either through poor phone etiquette, or not providing a high enough percentage back to the charity. The telemarketers that are now blocked by do-not-call lists seem to have moved to calling for charities. They see the potential for raising money for a charity, the potential to get around the do-not-call list, and a way to make profits again. I've asked some of the telemarketers that call me about what percentage goes to the charity... some don't know, some are low percentages, and others are more reasonable. I don't know how March of Dimes works, but do your own googling on the telemarketers calling for Fraternal Order of Police... I've seen horrible reports stating the charity gets as low as 12%. All of these comments are about the telemarketers representing the charities. I'm sure the charities are worth while, but ask some questions and do some quick research (Google) before you give to any charity through a second party service (ex: what percent goes to the charity?)... that's why I don't make decisions over the phone!

Give, but Not to Telemarketers
I do suggest that everyone find a charity they feel is deserving, and find a comfortable way to donate to them. Each year I tithe to our church and give to some charities. I'm also on the board of NathanCan Foundation (NathanCan.org) working to help chronically sick kids. If I weren't giving or directly participating in a charity, I'd feel like this entire discussion was merely an excuse not to give anyone anything... but there ARE good and deserving causes out there, and GOOD ways to donate.

Sunday, August 24, 2008

Porting YetAnotherForum.NET to SharePoint

Idea

YetAnotherForum.NET (YAF.NET) on SharePoint, sounds like a great idea!
(The main focus of this article is partitioning data between YAF.NET forums based on SharePoint site.)

It sounds like YAF.NET might already handle authentication of users arriving through Active Directory (ie: auto register), but I don't want just a YAF.NET install next to my SharePoint system. My needs are to have YAF.NET be a feature that can be deployed across hundreds (thousands?) of SharePoint sites without intermingling the content (Topics/Posts) between sites.

It seemed like it might be a weekend effort, but with family activities, other personal projects and the size of the effort, I've decided that I just won't have the time to port YetAnotherForum.NET to SharePoint 2007 (WSSv3). I will share my findings though.

Approach #1

Inversion of Control, decoupling the data access mechanism from the application so a new data store (ie: SharePoint) could be injected. The approach would be to take all the DB access methods in YAF.NET, and make them use an interface, and put the existing DB access code into a class to satisfy that data interface. The phase 1 result would be a code refactored YAF.NET that works exactly the same as it did.

The second phase of the port would be to create another implementation of the data access interface that utilizes SharePoint lists instead of the SQL database. Plug in that new interface, and the YAF.NET should work fine without knowing that its running on SharePoint. It should be possible to satisfy all the database needs of YAF.NET with SharePoint lists and CAML for access. The only need that might not work is YAF.NET's free-text search capabilities.

Data will need to be compartmentalized into the SharePoint sites that YAF.NET was enabled for. This will help application scaling and content ownership. There are some practical data limits to SharePoint's core list capabilities, but utilizing separate YAF.NET lists per SharePoint site avoid those issues. The YAF.NET SharePoint data access would have to utilize the lists for the current site to make this work, would be pretty easy once the rest was in place.

Example YAF.NET loading from SharePoint site context:
http://hostname/sites/TestSite/_layouts/YAF/default.aspx

The SharePoint site at "/sites/TestSite" would have the normal YAF.NET data sources:

[...]

The entire YAF.NET for SharePoint system would be packaged as a SharePoint site collection or web scoped feature in a SharePoint solution file. That means that once the solution has been added to your SharePoint system, site administrators could go to Site Features (or Site Collection Features) and enable that feature. The initialization of the feature would run, creating the proper lists and default data.

This approach sounds like the best SharePoint solution, but without in-depth knowledge of YAF.NET, it feels like 3-4 weeks worth of development and testing.

Approach #2

A compromise solution to porting YAF.NET to SharePoint would be to partition the data for SharePoint sites within the current YAF.NET SQL database. By adding a new "Context" column to all existing tables, then slightly modifying all the SQL in YAF.NET, the system could function within the context of the SharePoint site it was accessed from. This approach simulates different data stores for each SharePoint site, but does not change the native source YAF.NET already uses, so the approach is less complex.

This approach sounds like a reasonable SharePoint solution, and avoids some of the questions about SharePoint list data scalability issues by continuing to use native SQL Server. Because this approach is generally many simple modifications, it feels more like 1-3 weeks worth of development and testing.

I started some work down this approach to flush out the main issues. Some of these steps are required for either approach...

Live in SharePoint Layouts
YAF.NET would need to function in the common SharePoint "layouts" directory. This is where common SharePoint functions/systems need to live, and they are given the opportunity to be "aware" of the site context that they are invoked from. This part was quick and easy.

Misc:
In \web.config, I enabled session state, and switched trust level to full. Neither is a great idea for SharePoint, but worked for my development purposes...
pages enablesessionstate="true" ...
trust level="Full" originUrl=""

For this url to work:
http://hostname/sites/TestSite/_layouts/YAF/default.aspx

...YAF.NET needs to be copied to:
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\YAF
(I put the YAF.NET binaries into the webroot/bin for testing)

Config.cs needs to know about site context:


///
/// Determine the site context from the http request.
/// /
/// /sites/TestSite
///
static public string UrlContextPath
{
get
{
string scriptUrl = HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"];
string rawUrl = HttpContext.Current.Request.RawUrl;
int pos = rawUrl.ToUpper().IndexOf(scriptUrl.ToUpper());
if (pos <>
{
return "/";
}
return "/" + rawUrl.Substring(0, pos);
}
}


UrlBuilder.cs needs to build urls with site context:

public string BuildUrl(string url)
{
return string.Format("{0}{1}?{2}",
Config.UrlContextPath.Substring(1),
HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"],
url
);

//return string.Format("{0}?{1}",HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"],url);
}


Partition Data by Site Context

This is the BIGGEST porting task, requiring changes to all 31 database tables, 1 view, 162 stored procedures, and all corresponding code invocations of SQL and stored procedures.

Add the Context field to all database tables. For example:

IF NOT EXISTS (SELECT 1
FROM sysobjects
WHERE id = Object_id(N'yaf_AccessMask')
AND Objectproperty(id,N'IsUserTable') = 1)
CREATE TABLE dbo.yaf_AccessMask (
[AccessMaskID] INT IDENTITY NOT NULL,
[Context] NVARCHAR(255) NOT NULL,
[BoardID] INT NOT NULL,
[Name] NVARCHAR(50) NOT NULL,
[Flags] INT NOT NULL CONSTRAINT DF_yaf_AccessMask_Flags DEFAULT (0))
GO

IF NOT EXISTS (SELECT 1
FROM syscolumns
WHERE id = Object_id('yaf_AccessMask')
AND name = 'Context')
BEGIN
ALTER TABLE dbo.yaf_AccessMask
ADD Context NVARCHAR(255) NOT NULL DEFAULT '/'
END
GO



Modify all SQL and Stored Procedures to use the new Context field. For example:

CREATE PROCEDURE [dbo].[yaf_accessmask_delete](
@AccessMaskID INT,
@Context NVARCHAR(255) = '/')
AS
BEGIN
DECLARE @flag INT
SET @flag = 1
IF EXISTS (SELECT 1
FROM yaf_ForumAccess
WHERE AccessMaskID = @AccessMaskID)
OR EXISTS (SELECT 1
FROM yaf_UserForum
WHERE AccessMaskID = @AccessMaskID)
SET @flag = 0
ELSE
DELETE FROM yaf_AccessMask
WHERE AccessMaskID = @AccessMaskID
AND Context = @Context
SELECT @flag
END
GO



Modify all invocations to SQL and Stored Procedures to use the new Context field. For example:


static public bool accessmask_delete( object accessMaskID )
{
using ( SqlCommand cmd = new SqlCommand( "yaf_accessmask_delete" ) )
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue( "@AccessMaskID", accessMaskID );
cmd.Parameters.AddWithValue("@Context", Config.UrlContextPath);
return (int)ExecuteScalar(cmd) != 0;
}
}



With a few of these changes in effect, YAF.NET continued to function properly, which helped prove the viability of the approach, but also proved that it would take a non-trivial amount of time to complete. I did not continue the effort due to my lack of availability.

Additional Issues:

Web Part - These approaches are targeted at making YAF.NET work as a companion to SharePoint, not fully integrate it. An expectation of any SharePoint admin would be how to drop a dynamic view of the forum onto a SharePoint Web Part Page. Luckily YAF.NET is constructed with web user controls, which translate pretty easily into web parts. Look at SmartPart WebPart (or other sample code) for how to load a normal web user control in a Web Part container.

Isolation - Some elements of YAF.NET need to be shared rather than isolated between SharePoint web sites. Data such as Users, Permissions and Access Masks are some examples of data that might need to be shared across all SharePoint sites (especially users!)

Overlapping domains - Some elements of YAF.NET need to pull data from SharePoint rather than handled by YAF.NET. For instance, Users and Permissions should come from SharePoint, otherwise SharePoint admins will need to setup users/permissions TWICE (once for SharePoint sites, and another time for YAF.NET).

Default data - Some data is provisioned during the one-time YAF.NET install. Some amount of data provisioning may need to occur once per SharePoint site. During setup/initialization. For instance, the AccessMask is setup with some default permissions. If data in YAFF.NET is merely partitioned between SharePoint sites, that one-time data initialization will only benefit one SharePoint site.

Monday, August 18, 2008

Microsoft Update - the following updates were not installed

I kept receiving "the following updates were not installed" when trying to use Microsoft Update on one of my plain Windows XP VMware machines. I have HEAVILY relied on Microsoft Update for a long time for many machines, and this is the first time updates just wouldn't install. In my scenario, I would choose "Custom" and anything I chose would go through the motions, but ultimately fail to install.

I followed the simple instructions here which solved my problem: Updates are not installed successfully from Windows Update, from Microsoft Update, or by using Automatic Updates after you perform a new Windows XP installation or you repair a Windows XP installation

Method 1: Register the Wups2.dll file in Windows

To register the Wups2.dll file in Windows, follow these steps:
1.Stop the Automatic Updates service. To do this, follow these steps:
a. Click Start, click Run, type cmd, and then click OK.
b. At the command prompt, type the following command, and then press ENTER:
net stop wuauserv
2.Register the Wups2.dll file. To do this, follow these steps:
a. At the command prompt, type the following command, and then press ENTER:
regsvr32 %windir%\system32\wups2.dll
Note For a computer that is running Windows XP Professional x64 Edition, type the following command, and then press ENTER:
regsvr32 %windir%\syswow64\wups2.dll
b. Click OK on each verification message that you receive.
3.Start the Automatic Updates service. To do this, type the following command at the command prompt, and then press ENTER:
net start wuauserv
4.Exit the command prompt. To do this type exit, and then press ENTER.

Sunday, August 10, 2008

Service manuals are very useful !

My printer broke and I was confident that I'd be able to fix the simple problem once I downloaded the service manual. I have to say it was very cool to be able to get a hold of that manual ! It has instructions on how to diagnose, disassemble and fix. The printer went through the motions, just didn't lay any ink... must be clogged, should be easy to fix.

The printer actually stopped printing about 2 years ago, and I had since abandoned the overly expensive and questionable ethics of that printer's manufacturer. Since I HAD purchased extra printer ink cartridges with that company's settlement to the class action lawsuit (pertaining to questionable ink practices)... I wanted to use up that ink, and spare some ink on my new Canon PIXMA MP780.

I have to applaud any company (even the maker of this printer and its expensive ink) that has a service manual that I can find online (I got it at this site). Kudos ! I also found community help for exactly the problem I had. Regardless of technical expertise or skills, I think everyone should have the chance to get the full manuals and self-help for all the products they own.

My project started following A FIX for Clogged Printheads which was VERY nice. The disassembly, construction of make-shift tools, and use of anti-freeze... all went great removing tons of gunk from my old printhead. Followed all instructions, didn't help in the end. I was still happy and empowered by the community help.

Then I found and dove into the service manual. I wouldn't gotten nearly as far carefully and gracefully locating and removing the proper screws without it. I usually break things as I'm being careful, which I didn't do as I followed the manual.

As the manual pointed me at screws that could only be reached with long narrow specialized screwdrivers I started to get frustrated, but still thinking there was SOME hope that I'd be able to reseat them all and get this thing back together.

Having to ultimately go for removing the printhead itself (ugh), I abandoned the manual, and honestly all hope of ever getting this darn thing back together. Just think though, without the manual I wouldn't have ended up with this, or potentially in the mood to buy a new printer. Too bad I already decided I didn't like this one's manufacturer, I might have bought another of their printers merely because I was empowered with the service manual to destroy my old one!


Care with the service manual lead to not caring and destruction.

Well, at least the 3 day project is now over, and I've got some additional neat parts for my Junk box.

Wednesday, July 16, 2008

Send Email Attachment Through Filter

Through much trial and error, I've found an obscure but reliable way to send any attachment through an email system that normally prohibits DLL, CMD, VBS, etc... files. Even zipping the files or renaming files usually isn't enough to trick the filter into letting the file through. Sending emails through gmail and corporate systems, the attachment can cause the email to be partially or fully rejected. With a solid need to send .CMD and .CAB files (with a DLL inside the CAB) through a corporate email system, I figured this out:

  1. Create original.zip, NOT password protected.
  2. Rename original.zip to something else original.zip.RemoveThisExtension.
  3. Zip the original.zip.RemoveThisExtension file with a password.
  4. Send the original.zip.RemoveThisExtension.zip file to someone.
  5. Tell recipient the password to unzip the outer file and that they should remove the ".RemoveThisExtension" portion of the inner file.

I think password'ed zip files still provide the directory without needing the password. So "double embed + password " doesn't let the email scanner see past the one non-zip extension'ed file. Here's a shocker, I suspect that the file doesn't even have to be renamed! I didn't have time to try zipping the zip (while adding the password).

Saturday, July 12, 2008

AVG Free v8 - Start automatic updates fix

Recently I found that my AVG Free (version 8 / AVG8), was not updating definitions and complained that "Database update is disabled" (strange since I had installed only this Vista x64 (64 bit) machine only about 1-2 months ago). I didn't reinstall, but I did find a fix:

The problem was that automatic updates were not enabled. But when I was not able to make AVG save my settings when I tried to enable it via:
Update Manager / Update Manager settings / Start automatic updates

I found Error: e001018b in the log file (C:\ProgramData\avg8\Log\avgcfg.log):

[AVG8.CFGMGR] ERROR 2008-07-12 14:25:06,155 AAFRY PID:3800 THID:2848 ID:{4B69726F-6E736B79-4C696C69-32303036-30393034}:519.134.79458 MSG:'DWORD:0x455295d4', 'DWORD:0x2', 'DWORD:0xffffffff', 'DWORD:0xffffffff', 'ERRORCODE:0xe001018b'

The solution was to remove the schedule config file (C:\ProgramData\avg8\Cfg\sched.cfg), and let it be recreated. Here's what I did:

  1. Move "C:\ProgramData\avg8\Cfg\*.cfg" to "C:\ProgramData\avg8\Cfg\old" (NOTE: you might want to try moving JUST sched.cfg... that might be enough)
  2. Open AVG console from the system tray
  3. Check the box at Update Manager / Update Manager settings / Start automatic updates
  4. Perform "update now" on all AVG components
  5. Reboot
At this point everything seems fine.

These files were automatically recreated:
C:\ProgramData\avg8\Cfg\mail.cfg
C:\ProgramData\avg8\Cfg\sched.cfg
C:\ProgramData\avg8\Cfg\update.cfg
These files were NOT auto recreated:
C:\ProgramData\avg8\Cfg\krnl.cfg
C:\ProgramData\avg8\Cfg\user.cfg

File paths/directories will probably be different on Windows Vista vs Windows XP. To reiterate, I'm using Vista x64, so the paths above are for Vista.

If anyone does the above procedure with moving JUST sched.cfg, let me us know if it worked for you.

Tuesday, July 8, 2008

Accumalizer.com Pretends to Care

I've been getting a lot of spam recently from Accumalizer.com. Various spam offerings always with the Accumalizer.com top banner with the sugar speckled gumdrop, makes it easy to identify and delete the spam.

I'm enraged by the good-neighbor spam policy at the bottom. It reads (FYI: I made the email change to someone@somewhere.com):

"Accumalizer.com thanks you for opting-in to receiving email advertising with us. You signed up one of our partners with the address someone@somewhere.com, but if you would prefer to you may unsubscribe from future correspondence at anytime.
Please visit the original website where you opted-in to view the relevant privacy policies.
Or, you may contact us at: 3 The Drive, Great Warley, Brentwood, CM13 3FR, UK (CoNo: 06187068)"

This is not only a half truth (I didn't opt-in in any fashion), but it's also intentionally vague and probably impossible to opt-out electronically. Since I didn't opt-in, or I don't know what horrible site gave them my email address, how do I return to the original site to tell them to stop? Even if I did figure it out, it probably WON'T stop Accumalizer since they already have my email address, and wouldn't notice an off-site unsubscribe!

It looks to me like they want to appear legit in being a good and responsible custodian of your personal information. Meanwhile they've made it impossible for anyone to actually unsubscribe!

I've tried their unsubscribe link, which is basically this form: http://accumalizer.com/webforms/accumalizer/unsub/
Yet I'd bet that it doesn't ultimately stop them. I'll add a comment later if the emails stop (or if they continue).

Saturday, July 5, 2008

Blockbuster Knew

I just got home from Blockbuster and I am impressed. Their "bricks and mortar" store is connected directly to the online rent-by-mail service, and as far as I can tell, the connection is real-time.

I have the online plan where they send me one movie at a time via the mail (like Netflix), but I get the added advantage of getting a free rental and an immediate return of the mailer. Its great that I can have a different movie almost every 2 days with this setup, but that's not what this post is about.

Yesterday I went online and put Futurama "The Beast with a Billion Backs" on the top of my Queue. Today, I went to return a mailer and get a free movie... and lo and behold, the Futurama "The Beast with a Billion Backs" movie was right there on the shelf! I formed a plan to rent the movie, and rush home and remove it from the queue. I raced home and within 5 minutes I was in my online blockbuster queue. I was greeted with an alert that said that I had just rented Futurama "The Beast with a Billion Backs", and that it was also in my queue... and would I like to remove it from the Queue?... and would I like to always remove rented movies from the queue.

I'm impressed that they have this feature, but I'm more impressed that the system kicked in SO fast! Wow.

Saturday, June 28, 2008

Samsung ESTOOL Drive Diagnostic Does Nothing (here's why)

Or does it?

http://www.samsung.com/global/business/hdd/support/utilities/ES_Tool.html

I have been trying to get the ESTOOL hard drive diagnostic program to work for over a day now, and just figured out the problem. The bootable floppy disk seems to work. It lets me auto detect and select my Samsung hard drive. It lets me see information about the drive and its settings. When I choose "Drive Diagnostic," it asks how many loops to run, and when I hit enter (defaulting to 1), I end up back at the main menu.

Ends up that the ESTOOLS boot floppy disk MUST NOT BE WRITE PROTECTED ! It wants to write a status log to the disk, but fails silently if the disk can't be written to. I'd guess that if the floppy disk were full, the same silent error would occur. So, to save yourself the grief I went through, don't lock the disk, and make sure there is at least 10K for log files (they are actually less than 5K each).

Would have been nice if the program told me what the problem was !!!
(I thought it was that my chipset was Nvidia, which was the problem with another vendor's hard drive diagnostic toolset)

Wednesday, April 2, 2008

Web Routines - In the Wild

This is a log of Web Routine concept "sightings" in the real world:

1) 1999-2004 : DailyRoutine.com (Web Archive)
Free proof-of-concept site, addicted many before shutdown due to cost of maintenance.

2) 2000 : Backflip (Backflip.com)
Backflip adds "My Daily Routine" feature.
"Backflip is a free service currently being run by volunteers."

3) 2001 : SunGard (Web Archive)
SunGard Launches High Net Worth Portal Solution
Birmingham, AL, March 7, 2001- SunGard Asset Management Systems, an operating group of SunGard (NYSE:SDS), has launched the SunGard AMS High Net Worth Portal, a customized, private-labeled Internet portal for financial institutions providing asset management services to high net worth clientele.
[..] Traditional portal features such as news, weather, sports, stock quotes, charts, and market updates are also provided. In addition, using patent pending WebRoutine( technology from DailyRoutine.com.Inc., clients can organize Web sites into channels that can be cycled through in a manner similar to using a TV's remote control. This unique personalization tool allows clients to surf their favorite Web sites without ever leaving the portal.

4) 2006 : US Patent issued (6,993,531)
A system and method for navigating through routinely visited web pages with a browser that allows a user to navigate through the web pages using a “Next/Previous” paradigm.[..]

[ Return to index (Web Routines) ]

Wednesday, March 26, 2008

Web Routines

Web Routines organize a user's web browsing habits to provide convenience and efficiency for frequent browsing. RSS readers are a way to browse special web site feeds in a list format (like email), while Web Routines guide the user through a live browsing session to ANY web site, providing each one in its full and intended glory.

A web browser with bookmarks works well when searching for answers, entertainment and shopping. But when you visit a list of specific pages frequently (a routine), you are stuck digging around a potentially huge list of bookmarks, in an attempt to find the next one, then the next one, ... Web Routines solve the problem, and provide additional enhancements, like preloading web pages before you get to them, and allowing tangential browsing without losing track of the next page in your intended sequence.

This is the growing index of the postings I've made on Web Routines.

Index

Sunday, March 23, 2008

Web Routines - Fair Use License


Patent number: 6993531
Filing date: Feb, 1999 (Provisional)
Filing date: May, 1999 (Utility)
Issue date: Jan 31, 2006

I, AAron nAAs, am the sole named inventor of U.S. Patent Number 6,993,531 (the “’531 Patent”), which is directed to the Web Routines technology I developed and describe on this site.  Licensing inquiries and/or questions regarding the ‘531 Patent should be directed to Empire IP LLC at the following email address:  info@empireipllc.com

[ Return to index (Web Routines) ]

Friday, March 7, 2008

Web Routines - InfoPorn 2000

Back in 2000 and before, there was evidence that users sit down and “routinely” browse their favorite web sites. See the table.

Consider that these numbers suggest that average users browse about once per day to 5 web sites. They view about 7 sub-pages at each site (36 pageviews) - their whole session (routine) lasting 30 minutes.

Consider yourself falling into this pattern just by browsing for news (two sites), then weather, then stocks, then email. With the extreme advances in web technologies, businesses flooding the web with services, and the ever increasing numbers of households with broadband, you probably do a lot more!

These “Routine” habits already exist. I've been touting that “Web Routines” are an opportunity to capture user loyalty and understand user interests.

[ Return to index (Web Routines) ]

Mood/Rage not eco friendly? More costly?

It would be interesting for someone to do a study on the effects of road rage on the environment and driving expenses. I'm not even considering the increased risk of accidents, which is an obvious issue.

Consider that someone in a bad mood (or generally rage-inclined) drives from here to there, they probably race their engine, break hard at stoplights, and quickly accelerate off of a stop and to drive around other cars. Anytime you consider how much energy is used for something, consider that the energy consumed is dependant on the path chosen. If your car was at the top of a hill, and you coasted down in neutral (or off), you would use much less energy than if you raced down the hill with your foot on the accelerator, then braked hard at the bottom. The more energy you use, the more gasoline consumed and the more pollution expelled.

If someone in a bad mood gets into their car and drives to/from work, they are more likely to use more gasoline and create more pollution than someone in a good mood. I wonder how much difference there is across a years time.

Maybe road-raged drivers should be required to buy carbon offsets for the extra pollution they are adding to the environment?

Web Routines - Elegant and Powerful

Originating in 1998, Web Routines are one of the first implementations of “tabbed” type browsing, but further addressed user browsing habits rather than just session window organization.

This idea lays the foundation for compelling feature sets and user reliance, while the host gains insight into user interests, allowing automated site suggestions, useful product and service endorsements and other value added services.




[ Return to index (Web Routines) ]

Thursday, March 6, 2008

Web Routines - Browse with Purpose

Web Routines are about organizing users’ web browsing habits into a natural flow. The resulting system is as sticky and personal as email, and frequently leaves the users feeling satisfied-as if they’ve just browsed the entire Internet.



“It’s like bookmarks on steroids” ... “Sometimes bookmarks and Favorites aren't enough. Sometimes you need a little guidance to keep track of your daily routine on the Web.” - Al Fasoldt (tech columnist/radio/tv)

[ Return to index (Web Routines) ]

Wednesday, March 5, 2008

Consuming Podcasts (virtually anywhere)

I just listened to this week's TWiT (fantastic podcast), where they were talking about Blogs, RSS, iPod, Twitter, Podcatchers, etc... That sent me back a few years with my initial experimentation with consuming podcasts. I didn't get an iPod at first, and had a Samsung YEPP YP-T7Z (1GB) mp3 player, which was nice, but I would soon find that it was rather bland.

It felt like the device needed to both be the bucket to hold the mp3 files, but also the mechanism to receive them. ITunes plays on the concept of your "home base," tying up, and tying you to your home computer to receive and update your iPod. It should be that plugging in your media player into ANY computer should auto start the appropriate software to look for and receive new content, for storage back on the device. When you disconnected, your device would be both power and content charged. This is similar to the Windows-on-a-thumbdrive virtualization concept, utilizing the host computers's (PC or Mac, why not?) cpu and bandwidth.

I tried putting some lightweight podcatchers on the device to varying degrees of success, but didn't get anything solid or compelling enough to believe I had it right. I even provided feedback to some of the authors that the software should be runnable from (and to) the player hardware's filesystem.

It ends up the the iPod was vastly superior for listening to podcasts with it's content switching and resume features. ITunes really isn't that bad since I have to charge the iPod each day or so anyway... now my thoughts have turned to trying to connect the iPod (while at work) back to the home PC via a virtual USB connection and LogMeIn.com (which would probably CRAWL so slowly as to be useless).

I wonder if putting a virtual machine (VMware or VPC) on my iPod to be the ITunes "home base" would work. I would want it to run on any PC box I connected it to, and ITunes would have to recognize the iPod as being "plugged in" when it would in fact, be the unmountable "C:" drive. Too bad ITunes is such a heavyweight program. In this scenario, ITunes would use 2x the diskspace necessary to store music/podcasts for consuming on the run. For example, ITunes would download a TWiT episode onto on the C: drive somewhere to have it available... then detecting the the iPod was connected, it would copy the TWiT episode to the iPod (C: drive remember?)... What a colossal waste of space and effort for what MIGHT work, and certainly would be burden/timewaste and disk corruption risk... but it would be fun to try :-)

Web Routines - The Beginning

Navigate through your favorite web sites with a natural flow. Let your web browser help.

I had this compelling idea back in 1998 and began to secretly pursue it. We were in the middle of the Dot-com Bubble and this new web browsing concept that had more potential than most of the products of the day that were getting millions of dollars from VCs and IPOs. I was more interested in product success than a quick sellout. Now, after almost 10 years I’d built a proof of concept, seen its addictiveness, acquired a patent (7 years after the initial filing), and approached Google, Microsoft, Yahoo, Apple, etc... about acquiring the technology.

Big companies have very strict (paranoid) rules about receiving unsolicited product ideas, due to concern over law suits, and would prefer to have an idea be public knowledge before give it any consideration. I, on the other hand, felt it was a golden opportunity for an Internet savvy corporation to benefit by offering unique features before their competitors.

Now that the key companies are aware of my pursuit, and they need the concepts to be more visible before further consideration, I am posting the ideas. I’ve committed a lot to this effort across the last 10 years, and before a large company can deny or dictate terms of public use, I will use this opportunity to spell out the terms at which the public may utilize my work without cost or fear of cease-and-desist retribution.

[ Return to index (Web Routines) ]

Saturday, February 23, 2008

Easy Opening - First Blood

I am astonished at how dangerous sealed plastic packaging has become.

It was one thing when I was now required to use a knife or hefty pair of scissors (metal cutters) to open a product from its throw-away plastic casing. If I didn't cut myself with the knife (not yet), I'd quickly find the plastic to be razor sharp (which HAS hurt). I'm surprised that no big product recalling law suits have resulted from that alone.

Now, I'm seeing the same plastic now in an "Easy Opening" form. The pre-perforated plastic corner DOES break nicely, but going beyond the corner is extremely difficult. The plastic is still hard and sharp, but now it's got jagged razor sharp teeth ! Each stiff triangular breakaway is extremely sharp and pointy. I was extremely careful as I tried to get at my new gadget trapped inside. I still recoiled in pain MANY times at that cautious pace.










I really like the company that made the gadget I had just ordered, but I'm positive that they've not done any usability standards or gathered any first impressions (bloody) on the customer contending with the disposable plastic shell casing. I'd love to see the CEO get his hands on one of his products, and try to open it. He'd probably be swearing his head off and looking for band aids in less than 60 seconds.
Surely some one's been sued over this by now. Any severe lacerations anyone? ANYONE?