Friday, November 13, 2009

Spiceworks 4.5 Beta III is out; my adventure

I use Spiceworks to keep track of everything connected to our network and also as a help desk solution. To tell you the truth, I use it as a help desk solution much more than any other of the millions of tools built into Spiceworks.

So when I heard that version 4.5 was going to be released, I immediately signed up for the beta so I could test out all the new and cool features.

I installed the Beta I and couldn't get the service started. I ended up uninstalling it and didn't have time to troubleshoot the problems before Beta II came out. So I installed Beta II and ended up with a "503 service unavailable" error. I reinstalled once and came up with the same error. Since the Spiceworks team is so fast at coming up with new versions, they had already come out with Beta III by the time I had gotten a chance to look into the problems I was having. I installed that version the day it came out. I tried to log in and received another 503 error. It was really pretty frustrating.

I came in the next day and logged in to my computer only to find it was running really really slow. I opened up the task manager and found that spiceworks-finder.exe was running and hogging all my resources. I thought to myself "hmm isn't that executable only running if Spiceworks is running?" So I went to the login screen, and voila, it was running. Needless to say I was excited.

Looking back, I realize that I probably wasn't having any problems with the Spiceworks beta, I just have too many things installed on my machine and too many services running so it took forever to load.

So far, I've only taken a quick look around and am quite excited by what I've seen so far. The first place I looked was the plugin screen. It looks so much better than before with customizable ticket rules and views built in.


The next place I looked was the plugin editor. I had heard that there were improvements made to the editor so I needed to check it out. All I have to say is wow. They separated out the title, description, and versioning to keep you concentrated on the actual code in the code area. And you can separate the code into different files inside the editor. These are really nice improvements.


Here is a video sneak-peek of 4.5 from Spiceworks.

Friday, October 30, 2009

Version 1.0 of the Helpdesk Customization Plugin

Well, it has finally happened. I've hit version 1.0 of the Helpdesk Customizations Plugin.

In the most recent version, I've added info for tickets relating to software items and fixed a bug where the plugin would only retrieve 100 tickets in the info bar.

If you run into this problem, here is the code to get around it for now.


tkt_ct = (new Ajax.Request('/api/tickets.json?total_count=true&filter=open', {method:'get', asynchronous:false})).transport.responseText.evalJSON().count;

Monday, October 26, 2009

The Spiceworld 2009 Aftermath

I wasn't able to attend Spiceworld Austin this year but it sounds like it was a fun event. I just want to say congratulations to the plugin and poster winners.
Great job everybody.

Monday, October 5, 2009

Giorgio Sironi just finished his writeup on an introduction to PHPUnit testing. If you are new to PHPUnit, you should check it out.


Thursday, August 27, 2009

Free extending Spiceworks webinar

Pretty exciting webinar for those looking to get into Spiceworks plugin creation but haven't yet jumped in. Plugin writers can win some neat prizes just as mentioned below.

Love Spiceworks but wish it did one thing differently? With the plugin functionality you can extend Spiceworks to meet the needs of your network. From fun widgets and skins to new functionality you can make Spiceworks yours. Join this webinar and learn how you can get started writing plugins & more. Plus you could win an all expense paid trip to SpiceWorld Austin and a $250 Amazon gift card by submitting your plugin to the plugin contest.

Title: Extending Spiceworks
Date: Tuesday, September 1, 2009
Time: 10:00 AM - 11:00 AM CDT
Registration Link: https://www2.gotomeeting.com/register/246101330

Tuesday, August 25, 2009

A new version of Spiceworks, a new helpdesk customization revision

Well Spiceworks released version 4.1 of their software so I have gone and updated the helpdesk optimization plugin. You will notice that there is a check for version 4.1 due to a small bug in the search for devices, but not to worry, as everything works. For the next release, I plan on having info for software too and not just devices.

Anyway, the code is as follows:

// ==SPICEWORKS-PLUGIN==
// @name Help Desk Customizations Clone
// @description Adds minor enhancements to your Help Desk, including ticket status in the toolbar, colors for past due tickets and private messages, and information on devices in the Related To field.
// @version 0.9
// ==/SPICEWORKS-PLUGIN==
//
// Author: Brent Wong
// Date: June 30, 2009
// SW Version: 3.6, 4.0, 4.1

var is4 = SPICEWORKS.version && SPICEWORKS.version.is(">= 4.0");
var is41 = SPICEWORKS.version && SPICEWORKS.version.is(">= 4.1");

var helpdeskCustSettings = [
{name:'past_due_color', label:'Past Due Highlight Color', type:'string', defaultValue:'#ffdede', example:'Default: #ffdede'},
{name:'private_note_color', label:'Private Note Color', type:'string', defaultValue:'#cccccc', example:'Default: #cccccc'},
{name:'tickets_open_display', label:'Display Open Tickets', type:'checkbox', defaultValue:true},
{name:'tickets_due_display', label:'Display Past Due Tickets', type:'checkbox', defaultValue:true},
{name:'tickets_unassigned_display', label:'Display Unassigned Tickets', type:'checkbox', defaultValue:true},
{name:'priority_low_color', label:'Priority Low Color', type:'string', defaultValue:'#c9dcc8', example:'Default: #c9dcc8'},
{name:'priority_med_color', label:'Priority Medium Color', type:'string', defaultValue:'#ffffd7', example:'Default: #ffffd7'},
{name:'priority_high_color', label:'Priority High Color', type:'string', defaultValue:'#fc939c', example:'Default: #fc939c'}
]

// Setup based on Spiceworks version
if (is4){
// For version 4.0
var strToolbar = 'main-toolbar';
var strToolbarDown = 'span.right';
var strDevLink = 'related_to_property';
var strDevLinkDown = '.value a';
var strDevURL = 'devices/';
var strDevInfoAdd = 'related_to_section';
}else{
// For older versions
var strToolbar = 'toolbar';
var strToolbarDown = 'span.advanced_controls';
var strDevLink = 'ticket_review_summary_view';
var strDevLinkDown = 'p.related_to a';
var strDevURL = 'id-';
var strDevInfoAdd = 'ticket_purchase_container';
helpdeskCustSettings.push(
{name: 'expanded_height_enabled', label:'Enable Increased Window Height', type:'checkbox', defaultValue: false},
{name: 'expanded_height', label: 'Ticket Window Height (in px)', type: 'string', defaultValue: '500', example: 'Default: 500'}
);
}

plugin.configure({
settingDefinitions: helpdeskCustSettings
});

function refreshToolbarTicketInfo(){
// display ticket stats
if (plugin.settings.tickets_open_display || plugin.settings.tickets_due_display || plugin.settings.ticket_unassigned_display){
var displayString = '';

if (plugin.settings.tickets_open_display){
displayString += '<span><strong>Open:</strong> ' + SPICEWORKS.data.Ticket.find('all', {filter:'open'}).length + '</span>';
}
if (plugin.settings.tickets_due_display){
displayString += '<span><strong>Past Due:</strong> ' + SPICEWORKS.data.Ticket.find('all', {filter:'past_due'}).length + '</span>';
}
if (plugin.settings.tickets_unassigned_display){
displayString += '<span><strong>Unassigned:</strong> ' + SPICEWORKS.data.Ticket.find( 'all', {filter:'unassigned'}).length + '</span>';
}

var toolbarTicketInfo = $(strToolbar).down(strToolbarDown + ' span.toolbar_ticket_info');

if (toolbarTicketInfo){
toolbarTicketInfo.remove();
}

$(strToolbar).down(strToolbarDown).insert({top:'<span class="toolbar_ticket_info">' + displayString + '</span>'});
}
}

SPICEWORKS.app.helpdesk.ready(function(){
// set styling
if (is4){
SPICEWORKS.utils.addStyle("\
span.toolbar_ticket_info{margin-right:20px;padding:0 5px;border:1px solid #999;}\
span.toolbar_ticket_info span{margin-right:5px;}\
#related_to_summary{clear:both;border:1px solid #ccc;padding:10px;margin:5px 0;overflow:hidden;}\
#related_to_summary ul{margin:0;padding:0;text-align:left;}\
#related_to_summary p{float:right;}\
.filter-priority-low td.priority{background-color:" + plugin.settings.priority_low_color + ";}\
.filter-priority-med td.priority{background-color:" + plugin.settings.priority_med_color + ";}\
.filter-priority-high td.priority{background-color:" + plugin.settings.priority_high_color + ";}\
");
}else{
SPICEWORKS.utils.addStyle("\
span.toolbar_ticket_info{font-size:1em;color:#000;float:right;background:#e8e8e8;padding:3px 5px;border:#888 1px solid;}\
span.toolbar_ticket_info span{margin-right:5px;}\
#related_to_summary{clear:both;border:1px solid #ccc;padding:10px;margin:5px 0;overflow:hidden;}\
#related_to_summary ul{margin:0;padding:0;}\
#related_to_summary li{float:left;width:200px;}\
#related_to_summary p{float:right;}\
.filter-priority-low td.priority{background-color:" + plugin.settings.priority_low_color + ";}\
.filter-priority-med td.priority{background-color:" + plugin.settings.priority_med_color + ";}\
.filter-priority-high td.priority{background-color:" + plugin.settings.priority_high_color + ";}\
");

// Only Expand the height on version 3
if(plugin.settings.expanded_height_enabled){
SPICEWORKS.utils.addStyle("body.tickets #active_overview {height: " + plugin.settings.expanded_height + "px !important;}");
}
}

// mark past due ticket rows
$('td.past_due').each(function(item){
item.up().setStyle({backgroundColor: plugin.settings.past_due_color});
});

refreshToolbarTicketInfo();

});

SPICEWORKS.app.helpdesk.ticket.closed(function(){
refreshToolbarTicketInfo();
});

SPICEWORKS.app.helpdesk.ticket.ready(function(){
// color private messages
$('li.private').each(function(item){
item.setStyle({backgroundColor: plugin.settings.private_note_color})
});

// add device summary
var deviceLink = $(strDevLink).down(strDevLinkDown);
if(deviceLink) {
var deviceURL = deviceLink.readAttribute('href');
var startIndex = deviceURL.indexOf(strDevURL);

if(startIndex != -1) {
var substring = deviceURL.substring(startIndex);
var deviceID = substring.gsub(/[^\d]/, '');
if (is41) {
var devices = SPICEWORKS.data.Device.find('all', {ids:deviceID});
var device = devices.first();
} else {
var device = SPICEWORKS.data.Device.find(deviceID);
}
if(device) {
var displayInfo = '<div id="related_to_summary" style="display:none;"><ul>'
var listStyle = '<li>'
if(device.ip_address && !device.ip_address.empty()) {
displayInfo += listStyle + '<strong>IP:</strong> ' + device.ip_address + '</li>';
}
if(device.mac_address && !device.mac_address.empty()) {
displayInfo += listStyle + '<strong>MAC:</strong> ' + device.mac_address + '</li>';
}
if(device.manufacturer && !device.manufacturer.empty()) {
displayInfo += listStyle + '<strong>Vendor:</strong> ' + device.manufacturer + '</li>';
}
if(device.current_user && !device.current_user.empty()) {
displayInfo += listStyle + '<strong>Last Login:</strong> ' + device.current_user + '</li>';
}
if(device.primary_owner_name && !device.primary_owner_name.empty()) {
displayInfo += listStyle + '<strong>Owner:</strong> ' + device.primary_owner_name + '</li>';
}
if(device.asset_tag && !device.asset_tag.empty()) {
displayInfo += listStyle + '<strong>Asset Tag:</strong> ' + device.asset_tag + '</li>';
}
if(device.operating_system && !device.operating_system.empty()) {
displayInfo += listStyle + '<strong>OS:</strong> ' + device.operating_system + '</li>';
}
if(device.serial_number && !device.serial_number.empty()) {
displayInfo += listStyle + '<strong>Serial No:</strong> ' + device.serial_number + '</li>';
}
displayInfo += '</ul><p><a href="#" onclick="new Effect.BlindUp(\'related_to_summary\', {duration:0.20}); return false;">hide</a></p></div>';
$(strDevInfoAdd).insert({after: displayInfo});
deviceLink.insert({after: '&nbsp;&nbsp;(<a href="#" onclick="new Effect.BlindDown(\'related_to_summary\', {duration:0.20}); return false;">info</a>)'})
}
}
}
});

Tuesday, July 28, 2009

Why will socialized health care work?

What I want to know is why people think that socialized health care will work.  I mean let's break this problem down into it's components, the actual problem and the solution.

What I am told is that the problem we are facing are rising health care costs.  Over the last few years health care costs have continued to rise and are going to increase at a more rapid pace.  I am not going to say that this doesn't happen, because it does, but let's take a look at the reasons that health care costs have been rising.  Health care costs can be split into two different categories from my point of view, medical insurance and out-of-pocket, or a-la-carte, expenses.  First, the insurance costs go up because insurance companies have to make a profit and their costs go up because of both administrative costs and reimbursement costs.  Let's say that administrative costs only need to go up when there is a raise in the minimum wage or there is added red tape, and therefore could be pretty much static.  That leaves us with the reimbursement costs being the main factor in the rise of medical insurance rates.  There are also two main factors in the rise of reimbursement costs, rising cost of service and increase in the number of services performed.  We'll say that reimbursement costs are equivalent to costs incurred by someone paying out-of-pocket.

Okay, we've looked at the problem, so let's take a look at the solution.  The proposed governmental solution is one of socialized health care in the form of a tax based public insurance option.  In other words, everybody pays into this system and is helping to support it.  Well, gee, if it is another insurance option, isn't it still affected by reimbursement costs.  Why, yes, yes it is.  And the only way that an insurance company can cut those costs are by decreasing the number of services performed or to lower the cost of service.  To decrease the number of services performed, the government could put in age restrictions or just other restrictions on procedures.  And to lower the cost of service, the government can put caps on the price of services performed.  Are either of those options going to make health care better?

What I'm not saying is that insurance companies are the best option.  What I am saying is that a government run insurance company isn't a better option.  What our Nation was founded on is Capitalism and competition breeds lower prices and innovation.

Regular Expressions and an MVC introduction

This morning, upon reading my RSS feeds, I came across two interesting and very useful posts.  The first titled "MVC anatomy for PHP developers" is a great introduction as to why the model, view, controller design is good and is really meant for people just beginning out with PHP or have never used the MVC design before.  The post doesn't go into much depth, but it does cover that first step.

The next post I came across was "15 PHP regular expressions for web development." This post goes across some basics of regular expressions but then goes on to list some very useful and commonly used ones.  There are a couple strictly WordPress regular expressions in there, but most of them are universal.

Thursday, July 9, 2009

The caveats of phone conversations

So I was having a chat with someone about PHP over the phone the other day and they ask me to explain the "Foreesh" pattern in PHP. To which I am saying to myself "Is there a 'foreesh' pattern, I've never heard of it." but respond with "I'm sorry, can you say that one more time?". The person I am talking to tries to spell it out "F-O-R-E-S-E-H" at which point I am more confused than ever.

This is one of the biggest problems with talking to people over the phone (especially with people that have a different accent than you), you are just very limited in ways of communication. When you are chatting with someone in person, there is body language, you can watch the way their mouth moves, hand gestures, and even writing or drawing things out on a piece of paper. I have heard that video chats work better but then you are stuck with slow imitation of the real thing.

BTW, I think the person I was talking with meant foreach.

Tuesday, July 7, 2009

This just in...Michael Jackson is dead

I don't know if you guys have heard or not because not many places are reporting this, but Michael Jackson died. I mean it's like no one even cares about him.

Okay, really, he was great for pop back in the 80's and 90's, but recently he hasn't even done anything notable. I think this just goes to show the sad state of America where we care more about one person two weeks after his death than the state of our Nation.

Tuesday, June 30, 2009

Updated the spiceworks helpdesk customization plugin

Just a quick update with the source code. I added a field to the toolbar thanks to Paul_Maxim and now all of those fields are optional. Oh yeah, I separated the css out from the inline styling.

// ==SPICEWORKS-PLUGIN==
// @name Help Desk Customizations Clone
// @description Adds minor enhancements to your Help Desk, including ticket status in the toolbar, colors for past due tickets and private messages, and information on devices in the Related To field.
// @version 0.6
// ==/SPICEWORKS-PLUGIN==

plugin.configure({
settingDefinitions: [
{name:'past_due_color', label:'Past Due Highlight Color', type:'string', defaultValue:'#ffdede', example:'Default: #ffdede'},
{name:'private_note_color', label:'Private Note Color', type:'string', defaultValue:'#cccccc', example:'Default: #cccccc'},
{name:'tickets_open_display', label:'Display Open Tickets', type:'checkbox', defaultValue:true },
{name:'tickets_due_display', label:'Display Past Due Tickets', type:'checkbox', defaultValue:true },
{name:'tickets_unassigned_display', label:'Display Unassigned Tickets', type:'checkbox', defaultValue:true }
]
});

function refreshToolbarTicketInfo(){
// display ticket stats
if (plugin.settings.tickets_open_display || plugin.settings.tickets_due_display || plugin.settings.ticket_unassigned_display){
var displayString = '';

if (plugin.settings.tickets_open_display){
displayString += '<span><strong>Open:</strong> ' + SPICEWORKS.data.Ticket.find('all', {filter:'open'}).length + '</span>';
}
if (plugin.settings.tickets_due_display){
displayString += '<span><strong>Past Due:</strong> ' + SPICEWORKS.data.Ticket.find('all', {filter:'past_due'}).length + '</span>';
}
if (plugin.settings.tickets_unassigned_display){
displayString += '<span><strong>Unassigned:</strong> ' + SPICEWORKS.data.Ticket.find( 'all', {filter:'unassigned'}).length + '</span>';
}

var toolbarTicketInfo = $('main-toolbar').down('span.right span.toolbar_ticket_info');

if (toolbarTicketInfo){
toolbarTicketInfo.remove();
}

$('main-toolbar').down('span.right').insert({top:'<span class="toolbar_ticket_info">' + displayString + '</span>'});
}
}

SPICEWORKS.app.helpdesk.ready(function(){
// set styling
SPICEWORKS.utils.addStyle("\
span.toolbar_ticket_info{margin-right:20px;padding:0 5px;border:1px solid #999;}\
span.toolbar_ticket_info span{margin-right:5px;}\
#related_to_summary{display:none;clear:both;border:1px solid #ccc;padding:10px;margin:5px 0;overflow:hidden;}\
#related_to_summary ul{margin:0;padding:0;text-align:left;}\
#related_to_summary p{float:right;}\
");

// mark past due ticket rows
$('td.past_due').each(function(item){
item.up().setStyle({backgroundColor: plugin.settings.past_due_color});
});

refreshToolbarTicketInfo();

});

SPICEWORKS.app.helpdesk.ticket.closed(function(){
refreshToolbarTicketInfo();
});

SPICEWORKS.app.helpdesk.ticket.ready(function(){
// color private messages
$('li.private').each(function(item){
item.setStyle({backgroundColor: plugin.settings.private_note_color})
});

// add device summary
var deviceLink = $('related_to_property').down('.value a');
if(deviceLink) {
var deviceURL = deviceLink.readAttribute('href');
var startIndex = deviceURL.indexOf('devices/');

if(startIndex != -1) {
var substring = deviceURL.substring(startIndex);
var deviceID = substring.gsub(/[^\d]/, '');
var device = SPICEWORKS.data.Device.find(deviceID);
if(device) {
var displayInfo = '<div id="related_to_summary"><ul>'
var listStyle = '<li>'
if(device.ip_address && !device.ip_address.empty()) {
displayInfo += listStyle + '<strong>IP:</strong> ' + device.ip_address + '</li>';
}
if(device.mac_address && !device.mac_address.empty()) {
displayInfo += listStyle + '<strong>MAC:</strong> ' + device.mac_address + '</li>';
}
if(device.manufacturer && !device.manufacturer.empty()) {
displayInfo += listStyle + '<strong>Vendor:</strong> ' + device.manufacturer + '</li>';
}
if(device.current_user && !device.current_user.empty()) {
displayInfo += listStyle + '<strong>Last Login:</strong> ' + device.current_user + '</li>';
}
if(device.primary_owner_name && !device.primary_owner_name.empty()) {
displayInfo += listStyle + '<strong>Owner:</strong> ' + device.primary_owner_name + '</li>';
}
if(device.asset_tag && !device.asset_tag.empty()) {
displayInfo += listStyle + '<strong>Asset Tag:</strong> ' + device.asset_tag + '</li>';
}
if(device.operating_system && !device.operating_system.empty()) {
displayInfo += listStyle + '<strong>OS:</strong> ' + device.operating_system + '</li>';
}
if(device.serial_number && !device.serial_number.empty()) {
displayInfo += listStyle + '<strong>Serial No:</strong> ' + device.serial_number + '</li>';
}
displayInfo += '</ul><p><a href="#" onclick="new Effect.BlindUp(\'related_to_summary\', {duration:0.20}); return false;">hide</a></p></div>';
$('related_to_section').insert({after: displayInfo});
deviceLink.insert({after: '&nbsp;&nbsp;(<a href="#" onclick="new Effect.BlindDown(\'related_to_summary\', {duration:0.20}); return false;">info</a>)'})
}
}
}
});

Tuesday, June 23, 2009

Cost and Time Estimation

Ibuildings had a great little post on best practices in estimating. I think it is a good lesson for people who are just getting in to running their own business or as a reminder for people who are already. The main points laid out are:
  • Right size your estimating process to the project
  • Use qualified people
  • Constantly monitor your estimates and estimators
  • The estimate is what it is

Follow up: An Open Letter to our Nation's Leadership

I hope this is okay to repost. I feel it is very important so I wanted to give everyone a chance to read it. This is the letter that started the online petition that I posted last week.
I'm a home grown American citizen, 53, registered Democrat all my life. Before the last presidential election I registered as a Republican because I no longer felt the Democratic Party represents my views or works to pursue issues important to me. Now I no longer feel the Republican Party represents my views or works to pursue issues important to me. The fact is I no longer feel any political party or representative in Washington represents my views or works to pursue the issues important to me. There must be someone. Please tell me who you are. Please stand up and tell me that you are there and that you're willing to fight for our Constitution as it was written. Please stand up now. You might ask yourself what my views and issues are that I would horribly feel so disenfranchised by both major political parties. What kind of nut job am I? Will you please tell me?

Well, these are briefly my views and issues for which I seek representation:

One, illegal immigration. I want you to stop coddling illegal immigrants and secure our borders. Close the underground tunnels. Stop the violence and the trafficking in drugs and people. No amnesty, not again. Been there, done that, no resolution. P.S., I'm not a racist. This isn't to be confused with legal immigration.

Two, the TARP bill, I want it repealed and I want no further funding supplied to it. We told you no, but you did it anyway. I want the remaining unfunded 95% repealed. Freeze, repeal.

Three: Czars, I want the circumvention of our checks and balances stopped immediately. Fire the czars. No more czars. Government officials answer to the process, not to the president. Stop trampling on our Constitution and honor it.

Four, cap and trade. The debate on global warming is not over. There is more to say.

Five, universal healthcare. I will not be rushed into another expensive decision. Don't you dare try to pass this in the middle of the night and then go on break. Slow down!

Six, growing government control. I want states rights and sovereignty fully restored. I want less government in my life, not more. Shrink it down. Mind your own business. You have enough to take care of with your real obligations. Why don't you start there.

Seven, ACORN. I do not want ACORN and its affiliates in charge of our 2010 census. I want them investigated. I also do not want mandatory escrow fees contributed to them every time on every real estate deal that closes. Stop the funding to ACORN and its affiliates pending impartial audits and investigations. I do not trust them with taking the census over with our taxpayer money. I don't trust them with our taxpayer money. Face up to the allegations against them and get it resolved before taxpayers get any more involved with them. If it walks like a duck and talks like a duck, hello. Stop protecting your political buddies. You work for us, the people. Investigate.

Eight, redistribution of wealth. No, no, no. I work for my money. It is mine. I have always worked for people with more money than I have because they gave me jobs. That is the only redistribution of wealth that I will support. I never got a job from a poor person. Why do you want me to hate my employers? Why ‑‑ what do you have against shareholders making a profit?

Nine, charitable contributions. Although I never got a job from a poor person, I have helped many in need. Charity belongs in our local communities, where we know our needs best and can use our local talent and our local resources. Butt out, please. We want to do it ourselves.

Ten, corporate bailouts. Knock it off. Sink or swim like the rest of us. If there are hard times ahead, we'll be better off just getting into it and letting the strong survive. Quick and painful. Have you ever ripped off a Band‑Aid? We will pull together. Great things happen in America under great hardship. Give us the chance to innovate. We cannot disappoint you more than you have disappointed us.

Eleven, transparency and accountability. How about it? No, really, how about it? Let's have it. Let's say we give the buzzwords a rest and have some straight honest talk. Please try ‑‑ please stop manipulating and trying to appease me with clever wording. I am not the idiot you obviously take me for. Stop sneaking around and meeting in back rooms making deals with your friends. It will only be a prelude to your criminal investigation. Stop hiding things from me.

Twelve, unprecedented quick spending. Stop it now.

Take a breath. Listen to the people. Let's just slow down and get some input from some nonpoliticians on the subject. Stop making everything an emergency. Stop speed reading our bills into law. I am not an activist. I am not a community organizer. Nor am I a terrorist, a militant or a violent person. I am a parent and a grandparent. I work. I'm busy. I'm busy. I am busy, and I am tired. I thought we elected competent people to take care of the business of government so that we could work, raise our families, pay our bills, have a little recreation, complain about taxes, endure our hardships, pursue our personal goals, cut our lawn, wash our cars on the weekends and be responsible contributing members of society and teach our children to be the same all while living in the home of the free and land of the brave.

I entrusted you with upholding the Constitution. I believed in the checks and balances to keep from getting far off course. What happened? You are very far off course. Do you really think I find humor in the hiring of a speed reader to unintelligently ramble all through a bill that you signed into law without knowing what it contained? I do not. It is a mockery of the responsibility I have entrusted to you. It is a slap in the face. I am not laughing at your arrogance. Why is it that I feel as if you would not trust me to make a single decision about my own life and how I would live it but you should expect that I should trust you with the debt that you have laid on all of us and our children. We did not want the TARP bill. We said no. We would repeal it if we could. I am sure that we still cannot. There is such urgency and recklessness in all of the recent spending.

From my perspective, it seems that all of you have gone insane. I also know that I am far from alone in these feelings. Do you honestly feel that your current pursuits have merit to patriotic Americans? We want it to stop. We want to put the brakes on everything that is being rushed by us and forced upon us. We want our voice back. You have forced us to put our lives on hold to straighten out the mess that you are making. We will have to give up our vacations, our time spent with our children, any relaxation time we may have had and money we cannot afford to spend on you to bring our concerns to Washington. Our president often knows all the right buzzword is unsustainable. Well, no kidding. How many tens of thousands of dollars did the focus group cost to come up with that word? We don't want your overpriced words. Stop treating us like we're morons.

We want all of you to stop focusing on your reelection and do the job we want done, not the job you want done or the job your party wants done. You work for us and at this rate I guarantee you not for long because we are coming. We will be heard and we will be represented. You think we're so busy with our lives that we will never come for you? We are the formerly silent majority, all of us who quietly work , pay taxes, obey the law, vote, save money, keep our noses to the grindstone and we are now looking up at you. You have awakened us, the patriotic spirit so strong and so powerful that it had been sleeping too long. You have pushed us too far. Our numbers are great. They may surprise you. For every one of us who will be there, there will be hundreds more that could not come. Unlike you, we have their trust. We will represent them honestly, rest assured. They will be at the polls on voting day to usher you out of office. We have cancelled vacations. We will use our last few dollars saved. We will find the representation among us and a grassroots campaign will flourish. We didn't ask for this fight. But the gloves are coming off. We do not come in violence, but we are angry. You will represent us or you will be replaced with someone who will. There are candidates among us when hewill rise like a Phoenix from the ashes that you have made of our constitution.

Democrat, Republican, independent, libertarian. Understand this. We don't care. Political parties are meaningless to us. Patriotic Americans are willing to do right by us and our Constitution and that is all that matters to us now. We are going to fire all of you who abuse power and seek more. It is not your power. It is ours and we want it back. We entrusted you with it and you abused it. You are dishonorable. You are dishonest. As Americans we are ashamed of you. You have brought shame to us. If you are not representing the wants and needs of your constituency loudly and consistently, in spite of the objections of your party, you will be fired. Did you hear? We no longer care about your political parties. You need to be loyal to us, not to them. Because we will get you fired and they will not save you. If you do or can represent me, my issues, my views, please stand up. Make your identity known. You need to make some noise about it. Speak up. I need to know who you are. If you do not speak up, you will be herded out with the rest of the sheep and we will replace the whole damn congress if need be one by one. We are coming. Are we coming for you? Who do you represent? What do you represent? Listen. Because we are coming. We the people are coming.

Friday, June 19, 2009

Spiceworks 4.0 released, helpdesk customization plugin updated

I got in to work today and found out that a final version of Spiceworks 4.0 had been released. That was very exciting as they have added a network map and carbon-copying people on helpdesk tickets. Those were the two features that I wanted to add the most. So I went ahead and upgraded my 3.5 installation and everything went as smooth as butter.

I then went and checked my helpdesk and aghhh, the helpdesk customization plugin I helped write was no longer working. That just wouldn't do, so I decided to fix all the things that were broken in it. I also removed the expanding height for the ticket responses box since the height is now liquid with the new version. I also went and shared the new version of the plugin.

It looks like it hasn't been updated with the new release yet and I'm not sure how long it will take, but there is a direct link to the plugin by going here. There is also the new source below. Enjoy.

// ==SPICEWORKS-PLUGIN==
// @name Help Desk Customizations Clone
// @description Adds minor enhancements to your Help Desk, including ticket status in the toolbar, colors for past due tickets and private messages, and information on devices in the Related To field.
// @version 0.4
// ==/SPICEWORKS-PLUGIN==

plugin.configure({
settingDefinitions: [
{name: 'past_due_color', label: 'Past Due Highlight Color', type: 'string', defaultValue: '#ffdede', example: 'Default: #ffdede'},
{name: 'private_note_color', label: 'Private Note Color', type: 'string', defaultValue: '#cccccc', example: 'Default: #cccccc'}
]
});

function refreshToolbarTicketInfo(){
// display ticket stats
var numOpenTickets = SPICEWORKS.data.Ticket.find('all', {filter:'open'}).length;
var numPastDue = SPICEWORKS.data.Ticket.find('all', {filter:'past_due'}).length;

var toolbarTicketInfo = $('main-toolbar').down('span.right span.toolbar_ticket_info');

if (toolbarTicketInfo){
toolbarTicketInfo.remove();
}
$('main-toolbar').down('span.right').insert({top:'<span class="toolbar_ticket_info" style="margin-right: 40px; padding: 0 5px; border: 1px solid #999;"><strong>Open Tickets:</strong> ' + numOpenTickets + '&nbsp;&nbsp;&nbsp;<strong>Past Due:</strong> ' + numPastDue + '</span>'});
}

SPICEWORKS.app.helpdesk.ready(function(){


// mark past due ticket rows
$('td.past_due').each(function(item){
item.up().setStyle({backgroundColor: plugin.settings.past_due_color});
});

refreshToolbarTicketInfo();

});

SPICEWORKS.app.helpdesk.ticket.closed(function(){
refreshToolbarTicketInfo();
});

SPICEWORKS.app.helpdesk.ticket.ready(function(){
// color private messages
$('li.private').each(function(item){
item.setStyle({backgroundColor: plugin.settings.private_note_color})
});

// add device summary
var deviceLink = $('related_to_property').down('.value a');
if(deviceLink) {
var deviceURL = deviceLink.readAttribute('href');
var startIndex = deviceURL.indexOf('devices/');
if(startIndex != -1) {
var substring = deviceURL.substring(startIndex);
var deviceID = substring.gsub(/[^\d]/, '');
var device = SPICEWORKS.data.Device.find(deviceID);
if(device) {
var displayInfo = '<div id="related_to_summary" style="display: none; clear: both; border:1px solid #ccc; padding: 10px; margin: 5px 0; overflow: hidden;"><ul style="margin: 0; padding: 0; text-align: left;">'
var listStyle = '<li>'
if(device.ip_address && !device.ip_address.empty()) {
displayInfo += listStyle + '<strong>IP:</strong> ' + device.ip_address + '</li>';
}
if(device.mac_address && !device.mac_address.empty()) {
displayInfo += listStyle + '<strong>MAC:</strong> ' + device.mac_address + '</li>';
}
if(device.manufacturer && !device.manufacturer.empty()) {
displayInfo += listStyle + '<strong>Vendor:</strong> ' + device.manufacturer + '</li>';
}
if(device.current_user && !device.current_user.empty()) {
displayInfo += listStyle + '<strong>Last Login:</strong> ' + device.current_user + '</li>';
}
if(device.primary_owner_name && !device.primary_owner_name.empty()) {
displayInfo += listStyle + '<strong>Owner:</strong> ' + device.primary_owner_name + '</li>';
}
if(device.asset_tag && !device.asset_tag.empty()) {
displayInfo += listStyle + '<strong>Asset Tag:</strong> ' + device.asset_tag + '</li>';
}
if(device.operating_system && !device.operating_system.empty()) {
displayInfo += listStyle + '<strong>OS:</strong> ' + device.operating_system + '</li>';
}
if(device.serial_number && !device.serial_number.empty()) {
displayInfo += listStyle + '<strong>Serial No:</strong> ' + device.serial_number + '</li>';
}
displayInfo += '</ul><p style="float: right;"><a href="#" onclick="new Effect.BlindUp(\'related_to_summary\', {duration:0.20}); return false;">hide</a></p></div>';
$('related_to_section').insert({after: displayInfo});
deviceLink.insert({after: '&nbsp;&nbsp;(<a href="#" onclick="new Effect.BlindDown(\'related_to_summary\', {duration:0.20}); return false;">info</a>)'})
}
}
}
});

Thursday, June 18, 2009

An Open Letter to our Nation's Leadership - The Petition Site

I found this petition about our government yesterday and thought it was fitting to post for all the people unhappy with OUR government. Be it the Democratic President or Republican Senators or just the laws or stimulus packages that were enacted without even being fully read. The officials we elect are supposed to help us, not help themselves. And I'm fully aware that internet petitions don't really mean anything or do anything, but if it can help spread ideas and get people thinking about how to fix some of the problems in our country, that is even better. I love the United States of American and am proud to be a citizen, and I want to be a part of a better America.

An Open Letter to our Nation's Leadership - The Petition Site

Wednesday, June 10, 2009

I got some swag, contest announcement

Yesterday I got some cool new decals from Tracy Arakaki of PunishUM Motorsports. It is so cool to have these and I thought about putting them on my car, but I don't know if that would do them justice. I have an 1986 RX-7 that is rusting; just not in good shape. Anyway, I put a picture of the decals below.

Speaking of decals, PunishUM is starting to have monthly giveaways just for being a member of their site. This months giveaway is a commemorative final Drift event shirt from the stadium and a limited edition PunishUM window decal.

Friday, June 5, 2009

Always be learning

Today is a wonderful day. Not only is it Friday (casual day at my work) but I got in to work and found an inspirational post by Seth Godin. It was inspirational because it reminds me what I usually think, and that is to try to know as much as possible so that I can make informed decisions. Here is an exerpt:
The second approach is to write it down and not go to bed that night until you know the topic better than the person who brought it up. How else, precisely, are you going to become one of the smart people?
Really, shouldn't everyone try to be smart? That is how we go about advancing our careers. And doesn't it just feel good to know things? I know it does for me.

Tuesday, June 2, 2009

Follow up: jQuery social bookmarking plugin

I just wanted to follow the last post up by saying that the plugin has been added to the jQuery repository and to github's repository.

Monday, June 1, 2009

jQuery social bookmarking plugin

I was just working on trying to get a social bookmarking tool installed on one of my sites and came across two very good ones ShareThis and AddThis. Both seem to be very good but the AddThis tool operates on ssl sites. So, accordingly, I went with AddThis. The plugin code was a little too long for me, an example as follows:


Bookmark and Share



I decided to write a jQuery plugin to leverage simpler code. The following is the plugin jquery.addthis.js:

/*
* Addthis 1.0
* (c)2009 Brent Wong
*/
(function($){
$.addthis = function(code){

function init(){
try{
// determine whether to include the normal or SSL version
var addthisurl = (location.href.indexOf('https') == 0 ? 'https://' : 'http://') + 's7.addthis.com/js/250/addthis_widget.js?pub=' + code;

// include the script
$.getScript(addthisurl, function(){
$('a.addthis').append('<img src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/>').attr('href', 'http://www.addthis.com/bookmark.php?v=250').mouseover(
function(){
return addthis_open(this, '', '[URL]', '[TITLE]');
}).mouseout(
function(){
addthis_close();
}).click(
function(){
return addthis_sendto();
});
});
} catch(err) {
// log any failure
console.log('Failed to load AddThis Script:' + err);
}
}

init();
}
})(jQuery);


Then all you have to do is create a link such as this:

<a class="addthis"></a>


And include the jQuery command in the header:

$(function(){
$.addthis('publishername');
});


And voila, you have AddThis links.

Thursday, May 28, 2009

Useful jQuery Plugins

These are a few useful jQuery plugins that I have found while working with a few websites. I think they are great and easy to use. I'm sure I'll have to add more down the line, but jQuery is a great javascript library in and of itself that lends well to writing simple custom scripts.

Pngfix: fixes problems with transparent png images in Internet Explorer 5 and 6
Corner: creates rounded corners (as well as other corner effects) with only javascript.
GATracker: allows you to load the google analytics tracker very simply at the beginning of the page. Also allows for tracking of internal links such as pdfs.
AddThis: adds social bookmarking links to your website.
BeautyTips: Nice looking and flexible tooltips

ed. 6/1/2009 - added AddThis
ed. 6/12/2009 - added BeautyTips

Easy audio recording on your computer

I was looking for a simple way to record audio running in to a computer. The simplicity factor was a major deciding factor as it was going to be used by someone without that much computer experience. So, as I was looking for an inexpensive option, I took to looking through SourceForge to try and find something open source. I went through a ton of programs searching for just the right one and finally happened upon the Alis Recording Tool way down towards the bottom. The downloadable files hadn't been updated since 2006 but it does look like there is some activity in the SVN. Anyway, I made some changes to better fit it to our usage and decided to share the source which you can download here.

P.S. The build file uses Launch4j and Nullsoft Scriptable Installer System

Friday, May 22, 2009

How to Enable Automatic Complete for the Command Prompt (Cmd.exe)

While using the command prompt today, I started to wonder why the tab key didn't auto-complete the file paths I was trying to get to. Well, a simple search landed me on the Microsoft TechNet knowledge base article on how to fix it.
It turns out that the fix is a simple registry change:
To enable automatic complete for Cmd.exe, use Registry Editor (Regedt32.exe) to view the following registry key:


HKEY_CURRENT_USER/Software/Microsoft/Command Processor


Edit the CompletionChar value, and set the value of REG_DWORD to 9. Note that you do not need to restart your computer.



Thursday, April 30, 2009

Socialized Electricity, everybody give to the poor

This article was just posted on Pacific Business News.

HECO plans credits for low-income customers - Pacific Business News (Honolulu):
Hawaiian Electric Co. has proposed raising rates on all customers to help cut the electric bills of low-income households.

The utility filed an application Thursday with the state Public Utilities Commission to offer so-called “lifeline rates” in the form of fixed monthly bill credits to qualifying families.

The proposed credit amounts are: $25 on Oahu, $30 on Maui, and $35 on the Big Island, Molokai and Lanai.

All ratepayers would pay a monthly surcharge to cover the cost of the credit program.

If approved, the surcharge for a typical monthly residential electric bill is estimated to be up to 31 cents on Oahu; up to 77 cents in Maui County; and up to $1.54 on the Big Island.

“We started developing this proposal late last year, but it’s especially timely now given the economic challenges our community is facing, and the need to help those most vulnerable,” Dick Rosenblum, HECO’s president and CEO, said in a statement.

The credits would be available to customers currently enrolled in one of three government assistance programs: Low Income Home Energy Assistance Program, Medicaid, and Supplemental Security Income.

HECO committed to develop the program as part of an energy agreement signed in October 2008 with the state as part of the Hawaii Clean Energy Initiative.

I know it is just 31 cents on Oahu, but it is the principle of the matter. Do we have any say in what policies natural monopolies are enacting. I guess they can use the political swing to their advantage whenever they see fit.

Tuesday, April 28, 2009

Java Installation: Update 13 note

I just wanted to let everyone know that after getting JRE 6 update 13 installed on my own computer, I created a GPO to have it install to the network computers. Little did I know that there were also going to be problems with that. It seems that it is taking a long time, like half an hour long, to install via GPO. Luckily a long install time is the only problem and doesn't result in a non-install.

Tuesday, April 21, 2009

Java Installation: Internal Error 2753. regutils.dll

I was recently installing/uninstalling a ton of programs and at the end, ran CCleaner. Well that turned out to be a mistake (also because I didn't back up the registry) and ended up with a botched Java Runtime Environment (JRE) install. I only found that out when the newest update to Java came up and returned with an error box stating "Internal Error 2753. regutils.dll". Wow, such a specific message. I did some searching around and found that you can use the Windows Installer CleanUp Utility to get rid of all your old Java installations and then install the newest version. That's what worked for me, I hope it works for you too.

Friday, April 17, 2009

Spiceworks Help Desk Customization Plugin

I use the Spiceworks helpdesk function every day for work to keep track of the things I need to do. I think that it is a great built in function that lets me use one piece of software to handle many different functions. I really love the helpdesk feature but still find it a little lacking compared to some of the more full featured helpdesks such as OTRS. With the invention of plugins with the 3.6 (maybe it was 3.5) line of Spiceworks, there are a whole bunch of new posibilities out there. Cat, a Spiceworks UI Developer, created a neat little plugin that let you customize a few options in the helpdesk.
  • ticket status in the toolbar
  • increased ticket window height
  • colors for past due tickets and private messages
  • information on devices in the Related To field
Well, that wasn't enough for me so I delved into the world of plugin making. I added:
  • custom color codes
  • enabling/disabling ticket window height
  • custom ticket window height
  • more refreshes in the ticket status toolbar
It's still not perfect and I have to rely on the API provided, but I think it is a good start.

If you have Spiceworks, you can install the plugin here. If not, what's wrong with you? Download Spiceworks

The following is the source code for the plugin. Feel free to borrow from it or use it as a tutorial to start programming plugins for Spiceworks.
// ==SPICEWORKS-PLUGIN==
// @name Help Desk Customizations Clone
// @description Adds minor enhancements to your Help Desk, including ticket status in the toolbar, increased ticket window height, colors for past due tickets and private messages, and information on devices in the Related To field. From Kat's plugin, I made the expanding height optional and put a refresh of the status bar on ticket close.
// @version 0.3
// ==/SPICEWORKS-PLUGIN==

plugin.configure({
settingDefinitions: [
{name: 'past_due_color', label: 'Past Due Highlight Color', type: 'string', defaultValue: '#ffdede', example: 'Default: #ffdede'},
{name: 'private_note_color', label: 'Private Note Color', type: 'string', defaultValue: '#e3eaf2', example: 'Default: #e3eaf2'},
{name: 'expanded_height_enabled', label:'Enable Increased Window Height', type:'checkbox', defaultValue: false},
{name: 'expanded_height', label: 'Ticket Window Height (in px)', type: 'string', defaultValue: '500', example: 'Default: 500'}
]
});

function refreshToolbarTicketInfo(){
// display ticket stats
var numOpenTickets = SPICEWORKS.data.Ticket.find('all', {filter:'open'}).length;
var numPastDue = SPICEWORKS.data.Ticket.find('all', {filter:'past_due'}).length;

var toolbarTicketInfo = $('toolbar').down('span.advanced_controls span.toolbar_ticket_info');

if (toolbarTicketInfo){
toolbarTicketInfo.remove();
}
$('toolbar').down('span.advanced_controls').insert('<span class="toolbar_ticket_info" style=" float: right; background: #e8e8e8; padding: 3px 5px; border: #888 1px solid;"><strong>Open Tickets:</strong> ' + numOpenTickets + ' <strong>Past Due:</strong> ' + numPastDue + '</span>');
}

SPICEWORKS.app.helpdesk.ready(function(){
// increase window size
if(plugin.settings.expanded_height_enabled){
SPICEWORKS.utils.addStyle("body.tickets #active_overview {height: " + plugin.settings.expanded_height + "px !important;}");
}

// mark past due ticket rows
$$('td.past_due').each(function(item){
item.up().setStyle({backgroundColor: plugin.settings.past_due_color});
});

refreshToolbarTicketInfo();

});

SPICEWORKS.app.helpdesk.ticket.closed(function(){
refreshToolbarTicketInfo();
});

SPICEWORKS.app.helpdesk.ticket.ready(function(){
// color private messages
$$('li.private').each(function(item){
item.setStyle({backgroundColor: plugin.settings.private_note_color})
});

// add device summary
var deviceLink = $('ticket_review_summary_view').down('p.related_to a');
if(deviceLink) {
var deviceURL = deviceLink.readAttribute('href');
var startIndex = deviceURL.indexOf('id-');
if(startIndex != -1) {
var substring = deviceURL.substring(startIndex);
var deviceID = substring.gsub(/[^\d]/, '');
var device = SPICEWORKS.data.Device.find(deviceID);
if(device) {
var displayInfo = '<div id="related_to_summary" style="display: none; clear: both; border:1px solid #ccc; padding: 10px; margin: 5px 0; overflow: hidden;"><ul style="margin: 0; padding: 0;">'
var listStyle = '<li style="float: left; width: 200px;">'
if(device.ip_address && !device.ip_address.empty()) {
displayInfo += listStyle + '<strong>IP:</strong> ' + device.ip_address + '</li>';
}
if(device.mac_address && !device.mac_address.empty()) {
displayInfo += listStyle + '<strong>MAC:</strong> ' + device.mac_address + '</li>';
}
if(device.manufacturer && !device.manufacturer.empty()) {
displayInfo += listStyle + '<strong>Vendor:</strong> ' + device.manufacturer + '</li>';
}
if(device.current_user && !device.current_user.empty()) {
displayInfo += listStyle + '<strong>Last Login:</strong> ' + device.current_user + '</li>';
}
if(device.primary_owner_name && !device.primary_owner_name.empty()) {
displayInfo += listStyle + '<strong>Owner:</strong> ' + device.primary_owner_name + '</li>';
}
if(device.asset_tag && !device.asset_tag.empty()) {
displayInfo += listStyle + '<strong>Asset Tag:</strong> ' + device.asset_tag + '</li>';
}
if(device.operating_system && !device.operating_system.empty()) {
displayInfo += listStyle + '<strong>OS:</strong> ' + device.operating_system + '</li>';
}
if(device.serial_number && !device.serial_number.empty()) {
displayInfo += listStyle + '<strong>Serial No:</strong> ' + device.serial_number + '</li>';
}
displayInfo += '</ul><p style="float: right;"><a href="#" onclick="new Effect.BlindUp(\'related_to_summary\', {duration:0.20}); return false;">hide</a></p></div>';
$('ticket_purchase_container').insert({after: displayInfo});
deviceLink.insert({after: ' (<a href="#" onclick="new Effect.BlindDown(\'related_to_summary\', {duration:0.20}); return false;">info</a>)'})
}
}
}
});


Mmm....Pepsi

I found this over at Business Pundit and couldn't help but repost it.

Thursday, April 16, 2009

Free Success Manifesto

While browsing the good old Google reader, I came across a post from Seth Godin with an abstract title 'Making a living online.' Seth usually posts some pretty interesting things so I decided to go check it out. It turns out that there was a free guide to overnight success posted by Chris Guillebeau. From a first glance, it is an interesting and quick read.
On another note, his site looks pretty awesome.

Tuesday, April 14, 2009

Congratulations Hawaii...not the worst Pork spenders

According to the new report released by the Citizens Against Government Waste (or CAGW for short,) Hawaii ranks as the second worst per capita pork spenders in the Nation. The good news is that we aren't the worst.

According to the CAGW site,

Citizens Against Government Waste (CAGW) is a private, non-partisan, non-profit organization representing more than one million members and supporters nationwide. CAGW's mission is to eliminate waste, mismanagement, and inefficiency in the federal government. Founded in 1984 by the late industrialist J. Peter Grace and syndicated columnist Jack Anderson, CAGW is the legacy of the President's Private Sector Survey on Cost Control, also known as the Grace Commission.

This story makes me wonder, does CAGW also stand for Citizens Against Global Warming?

Monday, April 13, 2009

First they came...

Very good poem written by Pastor Martin Niemöller that will probably apply to every era.

They came first for the Communists,
and I didn't speak up because I wasn't a Communist.

Then they came for the Jews,
and I didn't speak up because I wasn't a Jew

Then they came for the trade unionists
and I didn't speak up because I wasn't a trade unionist.

Then they came for the Catholics
and I didn't speak up because I was a Protestant

Then they came for me,
and by that time no one was left to speak up

Tuesday, March 24, 2009

Scheduling a Weekly Defrag in Windows

Just a tip if you want to have your computer defragment itself every week. I found an article titled Windows XP: Schedule a weekly defragmentation that gives nice pictures and makes it easy for the most basic computer user.
If it seems like your computer has gotten slower since you bought it, it probably has. One of the biggest factors that slows down your computer’s performance is fragmentation, a situation that occurs over time, in which files on your hard drive become divided into small pieces. Your computer must read a file to open, save, or close it. So when it reads each piece of a fragmented file separately, the effect is that the file can seem “slow” when you’re working with it.

Defragmenting your hard drive is the process of putting all the scattered pieces of files back together. Microsoft Windows XP includes a tool that will defragment your hard drive for you. To keep your system performing well, it’s a good idea to have Windows XP automatically defragment your hard drive every week.


Just a note, there are some helpful command line options for Windows XP and Windows Server 2003:
Usage:
defrag <volume> [-a] [-f] [-v] [-?]
volume drive letter or mount point (d: or d:\vol\mountpoint)
-a Analyze only
-f Force defragmentation even if free space is low
-v Verbose output
-? Display this help text


On Vista and Server 2008, there seem to be a few more options according to this article:
The list of supported command line parameters for "defrag.exe" is the following:

  • drive letter - this parameter specifies the drive letter or the mount point path of the volume that will be analyzed or defragmented. (e.g. "defrag c:" or "defrag e:\volume\mountpoint");

  • -c - using this parameters forces "defrag.exe" to defragment all volumes on your computer. (e.g. "defrag -c");

  • -a - performs only fragmentation analysis and it doesn't defragment the specified drive. (e.g. "defrag d: -a");

  • -r - performs a partial defragmentation which consolidates only the fragments which are smaller than 64 MB. This is the default setting. This means that "defrag v:" and "defrag v: -r" are equivalent and the Disk Defragmenter will perform the same type of defragmentation;

  • -w - when you use this switch, "defrag.exe" will perform a full defragmentation, regardless of the fragments size. (e.g. "defrag c: -w");

  • -f - forces the defragmentation even if the free space is lower than 15%. (e.g. "defrag c: -f");

  • -v - verbose mode. In this mode, "defrag.exe" will show a detailed analysis and defragmentation output. (e.g. "defrag d: -v");

  • -? - displays help information about how to use "defrag.exe". (e.g. "defrag -?").


Monday, March 23, 2009

Bothering me: Outrageous Salaries for CEOs

In a new post, Seth's Blog: The myth of big salaries (it's all marketing), Seth Godin speaks about how CEOs are getting too much money. This is something that has bothered me recently. I mean, really, how many people are worth $50 million. If you look at all the lower positions where people are fighting for lower paying jobs, there are a ton of qualified individuals. When was it that MBAs became so rare?
Maybe now with it being an "employers-market" we can get away with paying CEOs only $5 million instead of 50.


ed. Here are some great ideas from BusinessPundit on the issue.

Friday, March 20, 2009

Reprint: Speed Safely by Tracy Arakaki

I just wanted to reprint this article from around hawaii. It was written by my friend Tracy Arakaki who has experienced first hand the effects of speeding. If you want to see more of the work he does, you can see his site at punishum.com.

2001 was a year to forget in regards to tragedy caused due to illegal street racing. Young Logan Fujimoto lost his life after he flew off the freeway and landed in a service station parking lot near Kahala Mall. A month later school teacher Elizabeth Kekoa was killed just a few miles from where young Logan lost his life. The driver Nicolas Tudisco is sitting in a prison cell serving 10 years for his poor decision.

Since January 1st of this year there has been 15 fatal crashes resulting in 17 deaths. 60% or 9 of these fatal accidents were due to excessive speeding. In 2008 Honolulu Police gave out over 58,800 citations for speeding. On a recent Friday evening I was listening to a police frequency for a single district and within 30 minutes there were 6 calls to officers on the beat of racing or speeding vehicles.


In 2001 with the help of import drag racer Shaun Carlson PunishUM Motorsports produced a 30 second Public Service Announcement with the help of a well known marketing firm. This PSA had gotten air time on all the network stations during the 2001 holiday season.

This year with the help of Lieutenant Governor Duke Aiona PunishUM Motorsports is producing 3 Public Service Announcements and a half hour television special addressing illegal "Street Racing" or just plain "SPEEDING" and its consequences. Featured on the show is Prosecutor Peter Carlisle, Representative Glenn Wakai and others inform viewers that Speeding can lead to jail time or worse, Death.

Just a few days ago 3 young adults were killed again due to excessive speeding. A tragic loss due to really, there is no other word for it but being plain "STUPID".

The only place is a racetrack and "NOT" the streets.

If you would like more information in regards to this "Speed Safely" campaign you can log onto punishum.com.

Obama: Out of Touch, but Popular

I watched the last half of the Obama interview on the Tonight Show last night. People that say he's not suave guy is just fooling themselves. He is a very personable, easy-going, smooth-talking character. Just darn likable, if you take the politics out of it. But because he is likable doesn't make him a great (or even a good) president. He has calmed down his out of control spending ever so slightly and has settled on left-wing in talk but still pushes his (Pelosi's?) extreme agenda through his actions.

That is what makes me think that he is just out of touch. I don't know what they learn in Chicago, but it doesn't seem to be about thinking things through (No, not a ding against Chicago-ans, just of the political bunch.) The economy is doing bad and that is something we all know about. So why keep pushing frivolous spending such as $2.4B USD for electric vehicles, continuing subisidies for corn based ethanol, and multi-billion dollars to many other programs. It is just ludicrous. Not only that, but the Federal Reserve is going to create $1 trillion out of thin air.

It is just so frustrating to see everything skewed so far to the political left. Personally I am more of a moderate and didn't exactly like the previous administration either. But take a step back and look at what you are doing before you rush in to frivolous off the cuff spending. Politicians need to look back at history and see what hurts and what helps. The can even look at the lives of the common citizen for help. When we (the common man) are in trouble financially, we save and spend money on the things that have a good ROI. That is what our politicians need to see.

Sorry about my little rant. Now back to working with FoxPro.

Thursday, March 19, 2009

Tried out Alfresco, Uninstalled

Well I tried out Alfresco Document Management and then uninstalled it.

Why?

For a few reasons actually. First of all, it didn't do too well running on as a Windows service. There are some instructions online but that is just a dead end as it is written for an older version of Alfresco, and it appears that I am not the only one having that problem. I tried just about everything to get it to run as a service, pre-setting all the environmental variables in the tomcat service, adding more memory to the heap, and copied all the settings from the older tutorial. All of that to no avail.

It also is not very well documented in how to run everything. It does look like a good starting point and is probably awesome after you get it set up by someone that knows what they are doing, but for simple uses, it just wasn't the product for me.

Monday, March 16, 2009

Charting libraries for PHP

A new post on code-diesel piqued my interest as it deals with one of those more "business-like" applications of php. 6 excellent charting libraries for php : CodeDiesel is a post describing 6 excellent charting libraries for php. Really this is just one of those things that I want to remember and use for future reference. Here is a quick list.
  1. Visifire
  2. PHP/SWF
  3. pChart
  4. Open Flash Chart
  5. AmCharts
  6. eZ components
I have already used eZ components to make bar graphs and that was pretty easy and quick to set up.

Tuesday, March 10, 2009

Trying out Alfresco Document Management

I was interested in how other companies do Document Management so I decided to install Alfresco Labs 3 on my own machine and try it out.

Being that I run Windows XP with OpenOffice.org already installed, I ran into some problems right off the bat. The first thing that happend was that I thought I didn't have to install the JDK. That was a silly mistake on my part, so I just reran the installer again. The next problem I ran into was when I ran the startup of the Alfresco Server. I kept reading the log lines as it started up and noticed that it said something to the effect of "Cannot run C:\Alfresco\OpenOffice.org\programs\soffice". I thought "Wow, that's funny, that's not where I have my OpenOffice installed." So going through the startup program alfresco.bat, I noticed that it called another program SetPaths.bat. I looked in there and noticed that it set an environmental variable called OPENOFFICE_HOME. But the path was my CORRECT install directory. Great I was at a dead end. I ran through a search for the path it was trying to run but Windows XP and Windows Search 4.0 wasn't indexing all the right files fully so it wasn't returning anything. Then i saw that the Tomcat startup was looking at a .properties file. So I adjusted the Windows Search to fully index those files and got a hit. C:\Alfresco\tomcat\shared\classes\alfresco\extension\custom-repository.properties. These files are similar to ini files and had the assignment "ooo.exe=C:\Alfresco\OpenOffice.org\programs\soffice." I just changed that to the correct path and voila! it started up perfectly.

So far I haven't done much with Alfresco so I can't give a really good review. It does seem to be the best open source document management system out there at this time.

Tuesday, February 24, 2009

EU to Strike Another Blow to the "Evil" Microsoft

This is in response to an article on DailyTech, DailyTech - EU to Require Microsoft to Offer Competitors' Browsers With Windows. I am sick of the EU pushing around Microsoft and making them lower the quality of their products in order to make things more "fair." Taking a good product and pulling it down to the lowest common denominator. Sure, you can hate Microsoft for the way it was in the 90's and a lot of people do. But they way they do business now days is totally legit. Don't take away features that are included in the Operating System just because there are competitors. I mean, come on, if there are better products or better price points people will use those products.

I see some correlation between this and the way the US is headed. Socialism. Woops, did I really say that. Now me, I grew up as a Liberal and now days I am more of a moderate. You know, I can see what people like about socialism, the lowest common denominator is taken care of and everyone lives a "happier life." But what about the person that wants to change their position in life? The person that grew up in the lower or lower-middle class and has dreams of being rich. That person wants to work hard and change their life. Well Socialism works against that and won't allow for the outliers. Sort of like a bell-curve on life.

Seth Godin is the luckiest guy

In a new post, Seth's Blog: Luckiest guy, Seth Godin racked up his 3000th post. Well that certainly is a milestone and I just have to say congratulations. My blog which is just spewing nonsense and randomness, has less than 50 posts. I guess our goals are very different as he is a "marketing guy" and I am just an IT guy with no real goal, just to share my ideas and leave a few notes for myself to read.

Again, congratulations Seth Godin.

P.S. Posted with ScribeFire and hopefully no tracking bug :)

Friday, February 20, 2009

A caveat with MySQL and INNODB

While creating a new database using MySQL Workbench, I ran into a problem while running the "CREATE" script that it generated.
ERROR 1005: Can't create table (errno: 150)

There was no description of the error that I could use to fix it so I was stumped. So after doing a little searching, I came across this thread on the MySQL forums. Basically the problem was that the column for the referenced foreign key was not the same as the referencing column. It seems that a lot of people will forget the "Unsigned" property.

Another simple problem was
ERROR 1005: Can't create table (errno: 121)

This error stems from a duplicate foreign key name. Just be sure to name all of your foreign keys unique names.

Monday, February 16, 2009

Got my book in the mail

Just wanted to let everyone know that I got my book in the mail this past Friday. I just browsed through it so far but it does seem to have some very good tips on beginning a job as a freelancer or contractor. One of the most interesting things I've seen so far was a link to the Freelanceswitch.com rate calculator. It basically adds up some figures based on expenses, investments, and hours worked to come up with a rate that you should be charging. Of course it leaves out some basics such as taxes and such, but that is very difficult to deal with when you have a calculator that calculates internationally. Some other good mentions are certifications. Of course, coming from Php|architect, there would be.

I think the best part of the book is that it could be used across different languages. Most of the focus is not on php, but on the aspect of finding a job or running a business. I'd deffinetly recommend this book for anyone looking to get into the business.

Posting this with ScribeFire

Just got this neat little add-on for the Firefox browser. Being a web developer, I use Firefox, Internet Explorer and sometimes Opera and Safari. I thought I'd try this add-on out just to see how easy it is to use. The installation was very simple and adding an account was very fast. One of the nice things about it is that it has some tools to keep links to your past articles that allows you to link very quickly to them. Another nice thing is the ability to monetize your posts through ScribeFire's quick ads.

I'll continue using this to posts my entries and maybe post some updates in the future.

Update:
Alright, I just noticed that ScribeFire does something that will probably make me stop using it. That thing is adding a little 1px by 1px gif image that uses the Zemanta linking service. I didn't see any warning prior to using ScribeFire but did see a little empty square at the bottom of my new posts. The following is the example code:

<div class='zemanta-pixie'><img src='http://img.zemanta.com/pixy.gif?x-id=2d26f023-deb5-4bb3-b6d1-6892a134c0ee' class='zemanta-pixie-img'/></div>

Thursday, February 12, 2009

USDA Urges EPA to Increase Amount of Ethanol in Gasoline

Reading my morning dose of DailyTech, I came upon an article about the government wanting to INCREASE the amount of ethanol in gas. And just when I thought the economy was getting bad enough to STOP subsidies of corn ethanol, this comes around. Here in Hawaii, I haven't seen a gas station that doesn't have E10. I live with it because there is no other choice. But if the government wants to increase that amount, I say screw 'em; it's a horrible idea. Got the following quote from a user gstrickler:

Corn based ethanol is good for drinking (e.g. Bourbon), but it's a terrible fuel. In addition to the above reasons, corn requires huge amounts of water to grow and the increase in corn production for ethanol has accelerated the lowering of the ground water table in the massive Ogallala aquifer.

Corn based ethanol uses up precious farm land, uses huge amounts of water, and only produces about 30% more energy that it takes to produce (and that's considered a generous estimate, it may be closer to break even).

Stop the insanity! No subsidies for corn, corn based ethanol, or cornstarch/HFCS. Tell your congresspersons to end the subsidies on corn, end the taxes on sugar cane, and end or delay the ethanol blend requirements. That will affect the ethanol and alternative fuel markets as well as the sugar and sweetener market and food prices.

The corn growers and corn based ethanol distillers may not like it, but until they can demonstrate a viable way to make cellulosic ethanol, the only ethanol made from corn should be in liquor stores.

Friday, January 30, 2009

I won a book, I think

It looks as though I won a book from Dave Marshall. He held a contest whereby you could sign up for the feed for his php jobs site and win the Php|architect's PHP Job Hunter's Handbook.

I know it's stupid but I didn't realize his site was based in the UK and not in the US where I am. But looking at what he's doing with his site got me interested in making my own phppositions site. What it is is a learning process for him to learn the Zend Framework. That works out for me because I am interested in learning about the Zend Framework as well. We'll just have to see if I decide to go through with it.

And thanks to Dave Marshall.

Tuesday, January 6, 2009

Also from Wallstats.com: Death and Taxes

Reprint: The Fall of GM - a visual guide

I found this from the businesspundit blog. It just so happens to be a very good explanation.


Source: Wallstats.com

Friday, January 2, 2009

Swagbucks search and win?

Today my wife found a site that you can supposedly search and win prizes. It's called Swagbucks. There are actually some good prizes on the site but I am not sure yet how many points you can get every day. One of the tips is to search as you would normally search.

So far we've only gotten 8 swagbucks (including the 3 that registering gives you) and a $5 amazon gift certificate is 45. If you want to sign up, click the banner and you can sign up using my wife as the referrer. I guess we get a swagbuck for everyone who signs up.

Search & Win