Free Geek: Technology Recycling and Training

Tuesday, February 16, 2010

A few days ago I volunteered at a Portland area non-profit called Free Geek (www.freegeek.org) and I will definitely be doing back. Free Geek is an organization that recycles and refurbishes used computers as well as providing valuable technology training to folks who might not otherwise get to learn about this stuff.

While I was aware of Free Geek because I have donated computers and components to them over the years, I had no idea how broad their operation is and what a value it provides to the community.

My initial interest in volunteering was brought about because I had the opportunity to tour the facility several weeks ago. On the tour, I got to see first-hand how organized and thorough the process is for receiving hardware donations, evaluating them, and ultimately either responsibly recycling the materials or, even better, putting them back to use in working computers.
The tour was all I needed to begin volunteering my time with Free Geek so I can help reduce the amount of hazardous e-waste and provide educational opportunities for people in the community.

Free Geek is a terrific organization and I'll certainly be volunteering more.

jQuery and Creating a Compelling Web Experience

Tuesday, August 25, 2009

A project that I am currently working on has a requirement for a series of "pop-up" dialog boxes that display static content. This is a made-to-order call for some client-side scripting using JavaScript. For all you jQuery enthusiasts out there, I will admit I may be a little late to the party. But what a party it is!

In short order, the jQuery library has completely transformed my way of looking at the world of JavaScript. Most of my software development has focused on the server-side and I have tended to regard JavaScript as a somewhat wordy approach for adding punch to a Web site visitor's experience.  jQuery changed all that. Not only do I see this aspect of the presentation of content as essential, I see it as having gotten much more approachable with jQuery.

It's brief but highly readable syntax makes short work of the tasks at hand and the sheer volume of custom libraries available is staggering. I especially appreciate the ability to "chain" functions together in a most efficient manner.

So now, when the topic of enhancing the visitor experience comes up in client meetings, I will not be saying, "that can be done with JavaScript". Instead I'll be saying, "jQuery is the only way to fly".

The Promise of Umbraco

Monday, July 27, 2009

Last year I began hearing about Umbraco, the content management system built on ASP.Net. And as this year has progressed, I've become more familiar with it in terms of its functionality and capabilities. I must say, this CMS holds a lot of promise for my firm for its Web development projects.

Amplus has always tried to give clients as much control over their software as possible. And where Web systems are concerned, the need for clients to be able to update content without involving the developer is even more pronounced.

This is where a content management system comes in.

The optimal project model I see for a CMS implementation goes something like this: we create the site structure based on the client's requirements and the client can add, modify, or delete the content as needed. They only call us back in when the site structure needs adjustment.

Umbraco offers a lot of flexibility in the way one can approach a Web system. Plus, being based on .Net lets developers leverage logic and controls they've already created. In addition, Umbraco doesn't limit what may be done from a layout and design standpoint. To the contrary, by keeping a strict separation of content, markup, and styling, we're able to be more creative without impacting the structure.
Finally, it's open source with no license fees. Some proprietary CMSs are very expensive and lack the active development community that Umbraco has that keeps innovations coming.

The Cost/Benefit Ratio of Technology

Tuesday, June 09, 2009

I have been working on a demo version of a Web-based software application for employee time and attendance. The demo system duplicates the functionality for an ASP.Net application I had developed for a client last year. The purpose of the demo is to highlight how small businesses can get a great deal of benefit from straightforward information systems that are quite affordable yet can result in significant gains in productivity.

In order to make the demo work with multiple anonymous users - I moved as many SQL statements to stored procedures as possible - simple. I try to use "off-the-rack" controls where possible to reduce dependence on custom or third-party controls. For example, I use a SqlDataSource control for data access and for navigating among the saved time entries, I use a GridView control. The stored procedures worked well until I got to the "Update" procedure for changed entries.

The system generated a "Too many arguments" error that I couldn't figure out.

For hours I searched forums and blog entries trying to find a solution. I finally stumbled on one that I dismissed at first as being "too weird to be useful" but it ended up solving the problem.

(See http://forums.asp.net/t/1000526.aspx)

The approach calls for putting the following C# code in the Updating event of the SqlDataSource.

protected void SqlDataSource1_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
DbParameterCollection CmdParams = e.Command.Parameters;
ParameterCollection UpdParams = ((SqlDataSourceView)sender).UpdateParameters;
Hashtable ht = new Hashtable();
foreach (Parameter UpdParam in UpdParams)
ht.Add(UpdParam.Name, true);
for (int i = 0; i < CmdParams.Count; i++)
{
if (!ht.Contains(CmdParams[i].ParameterName.Substring(1)))
CmdParams.Remove(CmdParams[i--]);
}
}

As my niece would have said, "Are you kidding me right now?"

This solution is so esoteric that I would have never come up with it on my own - and I've been developing software for 20 years!

As one who focuses on accounting and software, one of my goals is to help business owners use technology to address their accounting and business challenges.

When resolving programming problems takes up too much time, the cost/benefit ratio begins to be too heavily weighted on the cost side. This is one thing that stands in the way of small businesses in using technology efficiently to grow. Conclusion: The creators of programming tools have a lot more work ahead of them.