Site Feed

Tuesday, November 10, 2015

Online Learning Resources

I recently started exploring online resources that my company provides for free to their employees. 

I was pleasantly surprised to see all my favorite O'Reilly books, but also amazed at how much new technology has been developed over the last few years.  Areas that I thought I was very familiar with have suddenly shifted to include new tools, and new ways of doing things with cloud, big data, and all kinds of new Apache products.

Check to see if your company provides free subscriptions, and then have a look at some of these resources: -- Huge selection of technical books -- High Quality, from overview to advanced topics for programmers -- High Quality, some topics are not very advanced, but courses are very well done

When discussing career development ideas with my colleagues, I usually recommend training courses, or books, or documents to improve skills in some area. 

One reason a formal class is so effective is that the homework forces the student to learn.  I had a book with the title "Data Structures and Algorithms in C", which I had every intention of digging into "some day."  The examples are difficult to understand, and code snippets seemed incomplete, so I felt kind of lost.  Then I took a "Data Structures and Algorithms" class at UCSD Extension, which used that exact book.  Sure the examples were still hard to follow, but taking a formal structured approach to study made the book come to life.  Of course, a good instructor is an important part of any class, but the point is, that having a reason to dig into the content every week made the learning experience much more valuable.

Friday, October 2, 2015

How to Protect Online Activity

Introduction to Online Security, Internet Privacy, Anonymous browsing.  

As an honest hard-working citizen, you may think you have nothing to hide, but at the same time you may be annoyed with intrusive advertizing, or you may be concerned with the ability of hackers to see your bank accounts, or for governments, foreign or domestic to watch what you do online.


Some people are surprised to see ads shortly after visiting a website.  For example, suppose you want to check the price of flights to Seattle, just out of curiosity to compare prices to different cities, but with no intention of ever going there.  Then, you notice over the next few days, that there all kinds of advertisements in your browser for flights, or hotels in Seattle.  Then you wonder how did those advertisers get the crazy idea that I might be interested in going to Seattle?  Or why do I keep seeing ads for something in which I have no interest?  That is tracking technology known as Interest-Based Advertising.

Criminal Hackers

People have the erroneous idea that their passwords are secure, and that a little router at home will protect them from the bad kind of hackers.  Malware can be installed by viruses that come from file sharing, and phishing is another technique used to get people to go to a fake website, and install some kind of malware.  One example is an email with a link to a fake website, with a logo that may look like a familiar bank.  The unsuspecting user clicks on the link in the email (not a good idea), and is directed to the hacker's website.  Then the user enters his username and password for the user to see, before redirecting to the bank.  There was a documentary about how a team of students would collect small amounts into their bank accounts, and funnel the funds back to the leader, in an effort to try to avoid detection.  Of course they were caught, eventually.  The way they got into the accounts was by installing a keystroke logger -- a piece of malware that takes every keystroke, and sends it somewhere for them to analyze.  Then when the user connects to their bank, they enter the username, and password.  The browser uses SSL, so there is a little lock icon, so the user feels safe.  The SSL connection was secure, but the computer was not.  The user could change their password every day, and the hacker would have the new password every time, as long as the malware was still running and communicating back to them.  This is why password security is not always enough, and anti-malware should include anti-spyware or anti-tracking.  Advertising is annoying enough, but obviously it is more important for banking to be secure.


There has been some discussion in the news about a particular government blocking internet access, or spying on it's citizens at one time or another, but this topic can really be about any government at any time.  Again, as law-abiding upstanding citizens with nothing to hide, there is no need to be paranoid, but who knows how strong the fourth amendment right to privacy will be in the online world, since some information may be considered to be in "plain view".  It is easy to see the need for any government to protect it's people, but also for people to protect themselves, so both sides make some good points.

Yes, employers often spy on employees, either to protect company confidential information, or to gather evidence of inappropriate, or even illegal activities.  If you work for a company, you should have no expectation of privacy, and should consider that there may be snapshots taken of your screen every 10 minutes.

PBS had a Frontline Roundtable on Privacy and Surveillance, called

How to Protect Yourself (and Your Data) Online

On SystemNotes, we love free, open-source software, so we have listed here some of the tools that were mentioned when discussing how to keep online activities safe from criminal hackers, advertisers, and the government.

The Tools listed in the discussion, are quick and easy to implement:

Encrypt Internet Browsing

Https-Everywhere --

Install https-everywhere to encrypt web traffic on all sites visited.  Usually, https (SSL) is enabled only on sites were encryption is considered important by the company providing the site.  Online banking and shopping is where https is almost always enabled.  This software enables https by default.
Hide Tracking Information -- Use instead of something like Google, Bing, or Yahoo, to avoid having all searches recorded.

Probably only one of these is needed, since they seem to accomplish the same thing:

Privacy Badger:
Disconnect Me:  Disconnect browser add-on

Note that web browsers continue to add security features, and new plugins may be available.  Here are some links to notes on popular browsers:

For more info, check out the site:
EFF - Surveillance Self-Defense - Defensive Technology
Basic technical information on how to protect the privacy of your data

PBS Frontline: United States of Secrets
May 13 & May 20, 2014
    Part One - "The Program"How did the gov't come to spy on millions of Americans?  114:11
    Part Two - "Privacy Lost"How Silicon Valley feeds the NSA's global dragnet  53:41

Related Posts:  Free AntiVirus and AntiSpyware Software --

All Antivirus Articles:

Of course there are other ways to protect a home, or businees network, such as installing a firewall, and using OpenDNS, but those are topics for another article.

Thursday, January 9, 2014

Get a List of rpms for a Specific Program or Version

Systems that use rpm as the package manager can often be managed by using yum, but sometimes a simple rpm command can quickly give the required information.

The RPM Package Manager has a huge number of options, but most commonly only a few are used on a regular basis.

Get a list of rpms for mysql-5.1

Check for mysql version 5.1
$ rpm -qa |grep mysql | grep 5.1

Of course we can use egrep, and sort to get a more specific list

$ rpm -qa |egrep -i "bash|ntpdate|httpd"|sort

xargs - build and execute command lines from standard input

Now suppose we want to remove all the rpms found by the rpm query. Sometimes we can just pipe the output to xargs.

$ rpm -qa |grep mysql | xargs rpm -e

Other times there are dependencies the prevent removal of some rpms.  In that case we can come up with some other tricks.  Create a list, and then run "rpm -e" on the list.  As a last resort we can use --force, or --nodeps, but that is usually not recommended.

Saturday, May 25, 2013

Use awk to Extract a Column from a Text File

Here is an example of how to use awk to extract a column from a text file.

The default field separator is a space, so this will work with some text files:

   cat somefile.txt | awk '{print $2}'

But, if the fields are separated by a delimiter, such as tab, or comma, just specify the field separator by using "-F" before the print statement

   cat somefile.txt | awk -F"\t" '{print $2}'

 Unix and linux distributions generally come with sed and awk, among other things.

The problem.

You want to get a list of companies to research before investing in them, and paste only the stock symbols into a Yahoo finance portfolio.   You run a stock screen on a site such as, or but if you try to paste the text into a spreadsheet it may show up as a single row, with no way to extract the column.

Here is the process

1.)  Run a Stock Screen

Get output similar to this:

Company Name (in alphabetical order) Ticker Market Cap ($ Millions) Price From Most Recent Quarter Data
Almost Family Inc     AFAM     201.49     09/24     06/30
Apollo Group Inc     APOL     3,317.35     09/24     05/31
Argan Inc     AGX     231.55     09/24     07/31
Block (H&R) Inc.     HRB     4,635.98     09/24     07/31
Body Central Corp     BODY     179.63     09/24     06/30
CACI International Inc.     CACI     1,333.66     09/24     06/30
Capella Education Co     CPLA     478.40     09/24     06/30
CF Industries Holdings Inc     CF     13,579.97     09/24     06/30
Cisco Systems Inc     CSCO     99,628.89     09/24     07/31
Dell Inc     DELL     17,586.96     09/24     07/31
Deluxe Corp     DLX     1,567.52     09/24     06/30
Dice Holdings Inc     DHX     522.27     09/24     06/30
Dolby Laboratories Inc     DLB     3,681.33     09/24     06/30
Express Inc     EXPR     1,313.50     09/24     07/31
GameStop Corp.     GME     2,755.19     09/24     07/31
Great Northern Iron Ore Properties     GNI     129.44     09/24     06/30
GT Advanced Technologies Inc     GTAT     703.72     09/24     06/30
Iconix Brand Group Inc     ICON     1,269.35     09/24     06/30
Intersections Inc     INTX     188.20     09/24     06/30
ITT Educational Services Inc     ESI     839.48     09/24     06/30
j2 Global Inc     JCOM     1,435.93     09/24     06/30
KLA-Tencor Corp     KLAC     7,857.04     09/24     06/30
Kulicke and Soffa Industries Inc     KLIC     763.82     09/24     06/30
Lender Processing Services Inc     LPS     2,435.63     09/24     06/30
LML Payment Systems Inc     LMLP     96.04     09/24     06/30
ManTech International Corp     MANT     900.87     09/24     06/30
Maxygen Inc     MAXY     73.00     09/24     06/30
Metabolix Inc     MBLX     54.72     09/24     06/30
Microsoft Corp     MSFT     257,967.20     09/24     06/30
Momenta Pharmaceuticals Inc     MNTA     754.55     09/24     06/30
Nature's Sunshine Products Inc     NATR     254.74     09/24     06/30
Nevsun Resources Ltd     NSU     913.88     09/24     06/30
Nu Skin Enterprises Inc.     NUS     2,263.52     09/24     06/30
PDL BioPharma Inc     PDLI     1,086.98     09/24     06/30
PetMed Express Inc     PETS     201.72     09/24     06/30
Pozen Inc     POZN     194.06     09/24     06/30
Questcor Pharmaceuticals Inc.     QCOR     1,138.54     09/24     06/30
Raytheon Co.     RTN     19,209.52     09/24     06/30
Seagate Technology Plc     STX     12,175.83     09/24     06/30
Spirit Airlines Inc     SAVE     1,272.78     09/24     06/30
Strayer Education Inc     STRA     792.35     09/24     06/30
TeleNav Inc     TNAV     250.19     09/24     06/30
Ubiquiti Networks Inc     UBNT     1,103.50     09/24     06/30
Unisys Corp     UIS     939.02     09/24     06/30
USA Mobility Inc     USMO     263.79     09/24     06/30
Utstarcom Holdings Corp     UTSI     159.41     09/24     06/30
Vaalco Energy Inc     EGY     505.50     09/24     06/30
Veeco Instruments Inc     VECO     1,229.09     09/24     06/30
Vonage Holdings Corp     VG     514.25     09/24     06/30
Warner Chilcott Plc     WCRX     3,334.05     09/24     06/30

2.)  Copy and paste to a text file

    vi magic_20120925_50M_50.txt

3.)  Extract the column

 Use awk with a field separator of "\t" for tab, and print the second column:

    cat magic_20120925_50M_50.txt | awk -F"\t" '{print $2}'


4.)  Then just copy the text, and paste it into your portfolio.

That's all there is to it. 

For more advanced processing, you may have to use printf, which follows the standard C format.

Disclaimer: We do not provide investing advice or recommend stocks.  We may or may not have positions in some of these stocks.  To understand what to do with the information from the stock screener, it is best to read the book listed on the site.

More awk Examples

We will use a one-liner using echo, so the incoming data and the output are both visible.

Here it is in action on a comma separated list:

  $ echo "Almost Family Inc,     AFAM,     201.49,     09/24,     06/30" | awk -F, '{print $2}'

Where have we seen comma separated lists before?  Oh yeah, spreadsheets can be saved as .csv files.
Here we can print any number of fields:

$ echo "Almost Family Inc,     AFAM,     201.49,     09/24,     06/30" | awk -F, '{print $2,$3}'
     AFAM      201.49

Now suppose we want columns one and two, but in reverse order?  We try this:

$ echo "Almost Family Inc,     AFAM,     201.49,     09/24,     06/30" | awk -F, '{print $2 $1}'
     AFAMAlmost Family Inc

Not quite what we want.  Or should we say Almost..., no pun intended?  What we really want is column two, followed by a space, and then column one.  Separating the fields by a comma may give us what we want.

$ echo "Almost Family Inc,AFAM,201.49,09/24,06/30" | awk -F, '{print $2,$1}'
AFAM Almost Family Inc

Much better, but if we want exact control of the output, we could use printf instead of print.

$ echo "Almost Family Inc,     AFAM,     201.49,     09/24,     06/30" | awk -F, '{printf("%s %s\n",$2,$1)}'
     AFAM Almost Family Inc

Notice how printf follows the C or perl syntax, and requires a newline character "\n", unless you want all the output on the same line.  We use "%s" for string, and anything between the quotes including spaces, and special characters such as tab \t, and newline \n will give us the format we want.  Then after the close quote we give it a comma separated list of variables.  The number of variables must match the format in the quotes.  In the example above we want to print two variables with a space in between, and a newline at the end.  The first part of printf is for the format, and the second is for the variables.

Tuesday, April 10, 2012

Free Tax Preparation Software

At SystemNotes, we love free software. Especially when it is Open Source (source code is readable and may be freely modified by the end users), and available on different platforms (Linux, Mac, Windows, iPad, Android, etc.).

When preparing tax returns, many people turn to paid software, or tax professionals. There's nothing wrong with paying for a useful service or software, but linux geeks often turn to shell scripts, or whatever open source software they can find before shelling out any cash -- no pun intended.

Here are some useful tools for preparing the US 1040 tax return and most common schedules:

Open Tax Solver

If your needs are simple, Open tax solver is quick and easy. There are even options for some state taxes.
There is a simple interface that takes inputs, and when finished, just click "Compute Tax." for the results.

Microsoft Excel Spreadsheet Income Tax Calculator

If you prefer to have a spreadsheet, or have more complicated tax needs try the "Microsoft Excel spreadsheet income tax calculator."

The way to use this is simple. Just fill out the information starting with whatever you have. For example, start with W-2's, Schedule A, Schedule D, etc. and the information automatically gets filled in on the 1040 spreadsheet.
Free Spreadsheet Software

If you want to use a spreadsheet, but don't want to spend money on Microsoft Office, or Excel, there are some excellent free alternatives.

Schedule D

If you have a large amount of stock or options trades, you might want to rearrange columns with a little shell script that uses awk.

You may have a report that shows items in a different order, e.g.
XYZ, 100, 01/02/2012, $100, 12/28/2012, $120

You want columns to line up for form 8949.
100 XYZ, , 01/02/2012, 12/28/2012, $120, $100

This little one-liner can handle columns in a .csv file that you download from your broker.



cat ${CSV_FILE} |awk -F, '{printf("%s %s, ,%s ,%s, %s, %s\n ", $2, $1, $3, $6, $8, $5)}' >> Processed-${CSV_FILE}

Of course, you can always copy and paste columns manually in your spreadsheet editor, but this little script allows combining of columns automatically, and is a good example of the power of awk. You just have to line up the columns you want to extract, as the format may be different from each broker.

Note that if you are running Windows, and don't have awk, you can install cygwin, or write a perl script to do the same thing.

Official Tax Forms and Publications

Online Filing

The IRS, and some states allow online filing. Check the websites. State returns should be completed after the federal tax return is prepared, so that all the information is available.

Check with the IRS website to see whether to use Free File, or Free Fillable Forms.

Other Links

You may find other useful software by using your favorite search engines, or checking one of these sites:
Please comment, if you find any other useful links.


If for nothing else, at least these programs are worth trying in order to compare the results with other methods. Oh, and did we mention they're free?

Friday, October 28, 2011

Advanced Linux Networking Tools

Some of the more common tools for advanced networking include: tcpdump, netstat, wireshark, and tshark.

A previous article covered Basic Linux Networking Tools.

Discover Switch Information

Now for the advanced stuff. We use tcpdump, and write it to a file pkt.cap. Then we use tshark to read the file.

How to check the router to which the linux host is connected.

# tcpdump -nvi eth0 -c 1 -s 1500 -w pkt.cap ether proto 0xaa and ether dst 01:00:0c:cc:cc:cc and ether\[20\] \=\= 0x20 and ether\[21\] \=\= 0x00
# tshark -V -r pkt.cap

# tcpdump -nvi eth0 -c 1 -s 1500 -w pkt.cap ether proto 0xaa and ether dst 01:00:0c:cc:cc:cc and ether\[20\] \=\= 0x20 and ether\[21\] \=\= 0x00;tshark -V -r pkt.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes
1 packets captured
1 packets received by filter
0 packets dropped by kernel
Running as user "root" and group "root". This could be dangerous.
Frame 1 (416 bytes on wire, 416 bytes captured)
Arrival Time: Aug 26, 2011 12:49:00.909559000
[Time delta from previous captured frame: 0.000000000 seconds]
[Time delta from previous displayed frame: 0.000000000 seconds]
[Time since reference or first frame: 0.000000000 seconds]
Frame Number: 1
Frame Length: 416 bytes
Capture Length: 416 bytes
[Frame is marked: False]
[Protocols in frame: eth:llc:cdp:data]
IEEE 802.3 Ethernet
Destination: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
Address: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: 00:27:0c:b0:5d:87 (00:27:0c:b0:5d:87)
Address: 00:27:0c:b0:5d:87 (00:27:0c:b0:5d:87)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Length: 402
Logical-Link Control
DSAP: SNAP (0xaa)
IG Bit: Individual
SSAP: SNAP (0xaa)
CR Bit: Command
Control field: U, func=UI (0x03)
000. 00.. = Command: Unnumbered Information (0x00)
.... ..11 = Frame type: Unnumbered frame (0x03)
Organization Code: Cisco (0x00000c)
PID: CDP (0x2000)
Cisco Discovery Protocol
Version: 2
TTL: 180 seconds
Checksum: 0xde0a [correct]
[Good: True]
[Bad : False]
Device ID:
Type: Device ID (0x0001)
Length: 33
Device ID:
Software Version
Type: Software version (0x0005)
Length: 190
Software Version: Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 12.2(44)SE6, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2009 by Cisco Systems, Inc.
Compiled Mon 09-Mar-09 18:10 by gereddy
Platform: cisco WS-C2960G-24TC-L
Type: Platform (0x0006)
Length: 26
Platform: cisco WS-C2960G-24TC-L
Type: Addresses (0x0002)
Length: 17
Number of addresses: 1
IP address:
Protocol type: NLPID
Protocol length: 1
Protocol: IP
Address length: 4
IP address:
Port ID: GigabitEthernet0/7
Type: Port ID (0x0003)
Length: 22
Sent through Interface: GigabitEthernet0/7
Type: Capabilities (0x0004)
Length: 8
Capabilities: 0x00000028
.... .... .... .... .... .... .... ...0 = Not a Router
.... .... .... .... .... .... .... ..0. = Not a Transparent Bridge
.... .... .... .... .... .... .... .0.. = Not a Source Route Bridge
.... .... .... .... .... .... .... 1... = Is a Switch
.... .... .... .... .... .... ...0 .... = Not a Host
.... .... .... .... .... .... ..1. .... = Is IGMP capable
.... .... .... .... .... .... .0.. .... = Not a Repeater
Protocol Hello: Cluster Management
Type: Protocol Hello (0x0008)
Length: 36
OUI: 0x00000C (Cisco)
Protocol ID: 0x0112 (Cluster Management)
Cluster Master IP:
Version?: 0x01
Sub Version?: 0x02
Status?: 0x21
Cluster Commander MAC: 00:00:00:00:00:00
Switch's MAC: 00:27:0c:b0:5d:80
Management VLAN: 0
VTP Management Domain:
Type: VTP Management Domain (0x0009)
Length: 4
VTP Management Domain:
Native VLAN: 205
Type: Native VLAN (0x000a)
Length: 6
Native VLAN: 205
Duplex: Full
Type: Duplex (0x000b)
Length: 5
Duplex: Full
Trust Bitmap: 0x00
Type: Trust Bitmap (0x0012)
Length: 5
Trust Bitmap: 00
Untrusted port CoS: 0x00
Type: Untrusted Port CoS (0x0013)
Length: 5
Untrusted port CoS: 00
Management Addresses
Type: Management Address (0x0016)
Length: 17
Number of addresses: 1
IP address:
Protocol type: NLPID
Protocol length: 1
Protocol: IP
Address length: 4
IP address:
Power Available: 0 mW, 4294967295 mW
Type: Power Available (0x001a)
Length: 16
Request-ID: 0
Management-ID: 1
Power Available: 0 mW
Power Available: 4294967295 mW


Another valuable tool is netstat

netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

To find out what port a service, such as sshd is listening on, use something like this:

# netstat -alp |grep ssh

tcp 0 0 *:ssh *:* LISTEN 3002/sshd

unix 2 [ ACC ] STREAM LISTENING 27251 4387/ssh-agent /tmp/ssh-tOqWgf4348/agent.4348

Note that some of these commands require root, or sudo. If you are not logged in as root, use sudo in front of the command. Also, most of the utilities are found in /sbin, or /usr/sbin.

Network Drivers

Another advanced topic is network drivers. The last time I checked, discussed /etc/modules.conf, but in newer versions of redhat variants the file has changed to /etc/modprobe.conf or /etc/modprobe.d/modprobe.conf.dist. Any of those files should have basically the same information:

alias eth0 module_name
options module_name option1=value1 option2=value2 ...

It may look something like this:

alias eth0 e1000


alias eth0 tg3

depending on the type of network card or module that is installed on the system.

Other Advanced Networking Topics

There are more topics to be covered, such as how to configure multiple NICs, how to use network configuration utilities, other tools, such as nmap, and configuration for other linux distributions.

For more advanced networking tips, check out

For more basic networking info, see this article:

Thursday, October 27, 2011

Free AntiVirus and AntiSpyware Software

Computers running Windows seem to have virus and spyware problems quite often. When fixing other peoples computers, I have found these free options to be very useful.

Free Windows Anti Virus Software

ClamWin Free Antivirus

ClamWin is a Free Antivirus program for Microsoft Windows 7 / Vista / XP / Me / 2000 / 98 and Windows Server 2008 and 2003.

avast! Free Antivirus

Free Anti-Adware / Anti-Spyware Information

Some of this Windows software is offered as a free version, with an option to upgrade. Generally, the free version is enough to clean any problems, but has to be run manually.

Ad-Aware – check for updates, and run occasionally

Spy Bot Search and Destroy


Malwarebyes Anti-Malware is often the best tool to remove fake anti-virus software.

Super Anti Spyware

Super Anti Spyware: Remove spyware, NOT just the easy ones!

More adware stuff here:

I have found this site to be an excellent resource, with information on computer security:

Behavioral Advertising Opt Out

Have you noticed that certain types of ads appear after you visited a particular website? That is called Behavioral Advertising, and is usually done by storing cookies on your computer.

The Network Advertising Initiative has to offer the ability to opt-out. Go to their website, and select opt out.

You may be surprised at how many active cookies you have.

Another place to opt out:

I am not a big fan of the opt-out idea, as it has to potential to give information to precisely the people you don't want to give it to.  It's like calling a telemarketing company and saying, "Here's my phone number, please don't call me."  The scammers can still use the do not call list to pretend they are a charity.  I would rather not be on a list.  By the way, there is an article on how to defeat telemarketers on the blog.

Web Browser Security

Browsers also have options to clear the cache, and history, but you may not want to clear all history and cookies, since they can make browsing your favorites sites easier. You may have to opt out again after clearing cookies.

Check for the latest Add-ons or Plugins for your browser.  For example, in Firefox, select Add-ons, and search for some of these terms:  "Do Not Track", privacy, block, security, ad, virus, etc.  There are lots of good options available.

Other Notes

People generally think of viruses when a computer starts acting strange, or starts running slower, but there are all kinds of bad programs known as malware. These include worms, trojans, rootkits, rouges, dialers, spyware, viruses, etc. It may be useful to search the internet on those terms when attempting to clean a computer. Your computer may be used to store someone else's illegally copied files.

There are plenty of other software options, but many do not offer a fully functional free version. Free trials are not as good, in my opinion. Some of the major anti-virus publishers offer free scanning tools as well, so it can be helpful to check their sites for the latest offers.

Remember, when all else fails, you can always re-install Windows. Or better yet, upgrade to Linux :-).

Sysadmin Notes:  Systems Administrators are usually familiar with resources for securing systems and networks they are responsible for, but software is updated frequently, so it is good to have sources to check for updates.  One of my favorite sources for Open Source software has been, but use caution, since anyone can upload software.

Security Software Resources - nmap, and network security

Be careful with this site, as malware seems to show up occasionally:

For example:
I'm not sure about the next one, since McAfee SiteAdvisor gave a warning that it may be a dangerous site:  YAC - Yet Another Cleaner

"YAC: The World's Fastest & Lightest PC Cleaner
Fast, Easy to use PC cleaning software.  Clean junk files, privacy files, potential adware, and malicious plugins."