Skip to main content

Posts

Showing posts from 2005

Java vs C#/.NET

Well-authored, factual comparison.

Why Java hasn't lived up to expectations on the client. Java rules on the server but has faltered on the client. Presumably due to the runtime distribution issue.

Giga weighs in. A 2003 article but applicable. See "Rich Clients Stand-Alone".

XML Rich Client Technology Strengthens Java. Lines of code comparison in this article is misleading because much of the .Net code listed would be generated by the IDE automatically. Lines of code written would be comparable to that of the XML rich client (and a more interesting comparison). A good article nonetheless.

C and C++ give way to managed code

InfoWorld 2005 App Dev Survey

A slaughter of SWT (vs. Swing)

A COMPARISON OF MICROSOFT'S C# PROGRAMMING LANGUAGE TO SUN MICROSYSTEMS' JAVA PROGRAMMING LANGUAGE

Effective Presentation Tips

What I'm reading...

A Whole New Mind
Freakonomics
China, Inc.
Awaken the Giant Within
The 8th Habit
The World is Flat
Polar Shift
State of Fear
Now, Discover your Strengths

Really more for me than anything. I need to remember what I've read now that I'm utilizing the library more often. Another phenomonym I've discovered is I read a lot faster now that I have a due date. Before, I'd just pick up whatever I was in the mood for. Now, I have a queue of books on hold which flow in lockstep; one after the other. The online reservation system at the library really feeds my reading appetite heartily!

CIO: What Will You Do When the Cyber-Levee Breaks?

What would you do in the event of the failure of the Internet?

I used to think about this kind of thing more often but maybe I've become too accepting of the distributed nature of the Internet as a safety measure. This article got me thinking about an EMP pulse or a small nuke knocking out a major portion of the Internet...say a few backbones in Chicago or something. Not having an Internet connection often brings my work to a complete halt...let alone operations at most businesses.

I'm growing weary of complete communication failures during traumatic homeland events: 9/11, Katrina, etc. Shouldn't local or state government contract with private industry to get satellite phones to major incidents within 4-6 hours? I mean, how hard can this be? C'mon. Or portable Wi-Fi / cellular towers. Whatever.

Technology aside, I think the bigger problem is lack of leadership. The average person lacks a sniff of a clue about what actions to take during a crisis situation. Politicians, wh…

My Home Network

Recently, I established a home network using the existing single-run CAT5e cabling running throughout my house. Fortunately, my builder had the foresight to use CAT5e to connect the phones. Ideally, I'd have future-proof bundled cables running through the house, but I didn't want to pull the cable through exisitng construction nor incur the expense. While carrying data and voice on separate twisted pairs within the same cable isn't CAT5e compliant, it worked well for this situation.

Planning
First, I visited many home networking sites and spoke with my networking-savy friends to understand materials needed and how to architect my network. Next, I created a matrix outlining all the drops in the house and what materials were necessary. Afterwards, I surfed the non-user-friendly ;-) Leviton site learning how their products worked together. Finally, I created a simple paper-based diagram detailing the wires and materials.

Materials
I bought all Leviton equipment. My choice stemed …

HOWTO: Secure your wireless network

Usually, WiFi vendors will provide browser-based interfaces to secure a wireless access point. However, sometimes those interfaces aren't the most intuitive so it helps to understand the issues and gain additional background. These are the best articles I've found:

Securing Your Wireless Network
Configuring Windows XP IEEE 802.11 Wireless Networks for the Home and Small Business

In summary, the most important steps to securing your wireless access point:
-Read vendor documentation throughly
-Use 128-bit encryption
-Change your SSID
-Update the access point firmware
-Enable the firewall (if built-in)

Happy hacking.

HOWTO: Remove the My Way Search Assistant

I abhor spyware. Recently, I was chagrinned to discover the "My Way Search Assistant" element within my Windows XP Add/Remove Programs on my new Dell Inspiron 6000. At first, I though I'd accidentally picked it up installing other software. After a Google search, I realized Dell factory installs the utility. Dell denies My Way is spyware but mysteriously prohibit its removal. (As you can tell, I love a conspiracy theory!)

So, here's how I removed the My Way Search Assistant:

1. Open the registry using a command line prompt regedit
2. Search for the string "My Way Search Assistant"
3. Once found, examine the other nodes within the same parent registry key. There should be one referencing an .msi file.
4. Browse to the directory of the .msi file.
5. Right-mouse on the .msi file selecting uninstall.

Happy hacking.

Recovering from Windows XP virus annihilation

Recently, several members of the family have had their computers "owned" by viruses or spyware. At my house, I'm more focused on prevention but if all else fails, here's a great write up of using Windows XP Recovery features to repair your down and out home computer.

Also, a correspondence with one of my pals (a conversation I've had many times with lots of folks):

---------------------------------------------------------------------

Nope. I think you're on the right path. Good write-up:

Afterwards, I would recommend the following:

1. Set only 1 person within the household as an Administrator...I've found the Mom is usually best. Disable the ability to install software for all other users (i.e. they only belong to Users group)
2. Install virus scanning software; set to update nightly, scan nightly
3. Update Windows with all patches from www.windowsupdate.com. Set Windows to update automatically. Make sure you install SP2
4. Enable the Windows firewall from SP2
5.…

Custom Exception Handling in C#

Rule of thumb is to avoid throwing System.Exception or System.ApplicationException. I created a custom exception (below) which inherits from Exception.

Implement standard exception constructors

Types should not extend certain base types

[Serializable]
public class MyCustomException : System.Exception
{
public MyCustomException(){}

public MyCustomException (string message) : base (message) {}

public MyCustomException (string message, Exception innerException) :
base(message, innerException){}

protected ProcessorException(SerializationInfo info, StreamingContext context) :
base (info, context) {}

}

Inno installation script: VB6, MSDE, MDAC

An Inno installation script I wrote to install a VB6 application and optionally, MSDE and MDAC. It also executes several database scripts as well as prompts the user to install MSDE or choose an existing SQL Server database.


; MyApp Install Script
; Author: Jeff Hunsaker
; Version: 1.0.0.0


#define AppName "MyApp"
#define AppNameLong "My App"
#define AppPublisher "My Firm, Inc."
#define Ver1 "1"
#define Ver2 "0"
#define Ver3 "0"
#define Ver4 "0"
#define MinVersion "4.1.1998,4.0.1381sp5"
#define DBInstance "DBInstance" ;when MSDE installed locally/new
#define DBDatabase "DBDatabase"
#define DBDefaultSaPassword "sapassword"
#define DBDefaultSaAccount "sa"
#define DBAppUserName "AppUser"
#define DBAppPassword "password"
#define DBDefaultServer "(LOCAL)"
#define DBDSN "MyApp"
#define DBDSNDescription = "My App"

[Setup]
MinVersion={#MinVers…

Google Hack: overriding word breaks

Recently, while working on an Inno installer project, I grew frustrated at Google for returning many "...in no..." results while searching for the string "inno". The solution to override word breaks in Google is to add a preceeding "+" (e.g. +Inno). Not sure why but I thought it was cool I actually received a response from Google:

--------------------------------------------------------------------------------

Re: [#26513876] inno search
1 message

--------------------------------------------------------------------------------
help@google.com Mon, May 23, 2005 at 8:02 PM
To: jeff.com
Hi Jeff,

Thank you for your note. To help "force" a particular search term, you can include a + symbol in front of the word or words you're searching for. For example, a search for [ +inno ] returns the following search results:

http://www.google.com/search?hl=en&lr=&safe=off&c2coff=1&q=%2Binno&btnG=Search

For additional tips, please see http://w…

Virtual PC for MSDN Windows 98

I had the darnest time establishing a MS Virtual PC instance using the MSDN copy of Windows 98 SE. The Windows XP and 2000 bootable CDs prompted me during installation while Windows 98, living in a subdirectory and not bootable, just kept throwing errors. Finally, I came up with the following:

1. Obtain a Window 98 boot disk (I ended up using Bootdisk.com). (A little scary from a security aspect, but I needed to get this done)
2. Boot from this disk normally until arriving at a command prompt
3. fdisk the virtual C: drive
4. format the virtual C: drive
5. copy the Windows 98 installation directory and files from the CD onto the virtual C:
6. execute setup.exe from the directory where you just copied the files

BTW, it would be an improvement if Virtual PC MSDN would include vanilla installations for all the MS operating systems. Windows XP and 2000 are straightforward but Windows 98 is tricky and they all consume quite a bit of time to establish. A fat DVD containing vanilla instances would …

Great discussion implementation: Scotts.com

I think Scott's lawn care site does an outstanding job providing very helpful information in a discussion format. The branding matches the root web site dead on, it looks very professional yet fresh and appealing, and real live experts (e.g. "Scotts WebLawn Guy") monitor the site providing resolution to otherwise elusive problems. Accounts are integrated with the scotts.com site but one doesn't need to log in to view discussion postings. The technology is Fuse Talk available in Cold Fusion and ASP.Net. Basic edition is $129.

Finally, this vehicle creates a huge marketing win for Scott's. For example, check out this softball thread. Scotts WebLawn Guy knocks one out of the park when asking "If Scotts could make (product idea) that would (blank), I would definitely buy it." and receiving 21 posts!

FxCop .Net code analyzer

http://www.gotdotnet.com/team/fxcop/

FxCop is a code analysis tool that checks .NET managed code assemblies for conformance to the Microsoft .NET Framework Design Guidelines. It uses reflection, MSIL parsing, and callgraph analysis to inspect assemblies for more than 200 defects in the following areas:
Library design
Localization
Naming conventions
Performance
Security
FxCop includes both GUI and command line versions of the tool, as well as an SDK to create custom rules.

HOWTO: SQL Server: Reporting on performance

Some resources to draw info on SQL Server memory usage, locks, fragmentation, etc. This is my favorite SQL Server tuning site: http://www.sql-server-performance.com/

SQL Server Perf Mon

SQLServer: Access Methods - Page Splits/sec: Number of page splits occurring as the result of index pages overflowing.
SQLServer: Databases - Data File Size (KB)
SQLServer: Databases - Log File Size (KB)
SQLServer: Databases - Log File Used Size (KB)
SQLServer: General Statistics - User Connections: Number of users connected to the system.
SQLServer: Locks - Average Wait Time (ms): The average amount of wait time (milliseconds) for each lock request that resulted in a wait.
SQLServer: Locks - Number of Deadlocks/sec: Number of lock requests that resulted in a deadlock.
SQLServer: Memory Manager - Total Server Memory (KB): Total amount of dynamic memory the server is currently consuming
Many, many others…

Queries

View Blocks
SELECT spid, blocked, waittype, getdate() AS 'Time'
FROM master..sysprocesse…

HOWTO: Restore a differential database backup

ALTER DATABASE DB_Restore_To SET SINGLE_USER
GO

RESTORE DATABASE DB_Restore_To FROM DISK = 'C:\MSSQL\DB_Restore_From_Full.BAK' WITH NORECOVERY
GO

RESTORE DATABASE DB_Restore_To FROM DISK = 'C:\MSSQL\DB_Restore_From_Diff.BAK' WITH NORECOVERY
GO

RESTORE LOG DB_Restore_To FROM DISK = 'C:\MSSQL\DB_Restore_From_Tran.TRN'
GO

ALTER DATABASE DB_Restore_To SET MULTI_USER
GO