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.

New Year's Optimism

Thursday, January 07, 2010

With the dawn of this new year it's hard for me not to regard 2010 as the start of a new decade. Statements about there being no "year zero" notwithstanding, I, as an information systems professional who worked on the colossal Y2K programming effort, regard the year 2000 as the beginning of the new millennium. So for me, this is the start of a new decade.

It's also hard for me not to be optimistic about the year and decade ahead.

I'm not talking only about economic indicators and such. While there are bright spots there, my optimism is largely based on the general mood and comments I've picked up on in the past few days. There seems to be renewed energy and a dedication to making good things happen. And in my experience, optimism can generate its own momentum. If we focus our attention on what works and simply stop expending energy on what doesn't work, we'll see improvements in everything we're involved with.

For me, an optimistic attitude goes well beyond the personal "feel good" realm - it has become a bona fide business strategy.

So… work hard, keep good records, and enjoy yourself along the way.

Happy New Year!

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.

My Quick and Simple Software Generator

Monday, June 29, 2009

A significant part of my business involves developing software and I'm always seeking ways to create source code more quickly. The less time I can spend on the task of writing code, the more time I can spend on designing the business logic that the software will deliver.

Something that I've started doing lately has ended up being a big timesaver: I use Excel as a poor-man's code generator to produce some of my markup and code-behind.

I do a lot of ASP.Net Web development using Microsoft Visual Studio 2008. A common task for me involves dragging a group of controls to a page, renaming each of them so that they are associated with the same field, then linking those controls to corresponding CSS styles. Each group of controls can take two or three minutes to configure in this way so repeating this process 10 or 15 times, as is common, can use up a lot of time.

So I built a simple spreadsheet wherein I type in the key field named just once and the =concatenate() function does the rest of the work for me inserting the unique tags in the appropriate places. Then I simply paste the resulting code into my development environment and away I go. This has ended up saving me a lot of time.

Yes I know, I could write a macro that would prompt me for the field name and spit out the code.But my way takes a lot less time to customize whatever I need to and I didn't have to debug yet another programming routine.

So for those of you who must write the same thing repeatedly with only minor differences, consider something similar to my decidedly not-so-high-tech solution... and use the time you save for something more valuable.

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.

Virtual Machine Networking

Wednesday, May 20, 2009

Microsoft Virtual PC 2007 is very useful for software development and testing new software.

I use this form of virtualization for developing most of the financial applications Amplus provides. I also use it as a test environment for new accounting software.

I can create a virtual machine on my computer, install an operating system, and work in that environment as if it were a totally separate machine. If something goes wrong such as an application not "playing nicely with others", I just delete the whole thing and try again.

Paul Sterling of Motus Connect introduced me to this handy tool and now I use it all the time.

I find it relatively straightforward to use except when it comes to networking. Seems like it always takes me a while to set up a virtual machine to access the Internet through the Shared Networking Adapter (NAT).

The settings that have worked for me are

Network Discovery: On

Local Area Connection|TCP/IPv4|Preferred DNS Server: 192.168.131.254.

Settings such as this seem so esoteric that it surely must frustrate many who simply need a test environment but aren't network administrators. I've experienced that same frustration when all I want to do is get on with my work but end up spending most of a day running down some small but critical detail. Two days ago it was Umbraco (the terrifically promising CMS). I wanted to get more familiar with it but couldn't get the virtual machine to access the Internet to download a required component.

Now that I've got that ironed out - I can start my real work of learning more about the powerful features of Umbraco.

Essential Support for Accounting Operations

Wednesday, May 06, 2009

As one would expect, the Business Journal reports on the bigger national/global corporations and publicly traded firms, but it also covers small and medium businesses very well.  That's important because SMBs are HUGELY important to the regional economy.  This fact has become even more obvious since mid -2008 when the national economy began to stumble.

My sense is that the immediate general health of the small business economy will largely depend on the ability of the owners of those businesses to manage cash flow and costs, and generally run a tight ship. My concern is that a lot of owners don't have time or don't know how to do that. That's why I've been positioning Amplus to be more inclusive with the services it offers to small businesses.

By providing essential operations support (bookkeeping, GL, software training, for example), I hope more small businesses will survive and endure.  Then they can turn their attention to strategic financial management. That's what will enable them to grow and thrive.

Planning to Succeed

Tuesday, April 28, 2009

As a member of the Portland Business Alliance (Portland's Chamber of Commerce), I have the opportunity to meet a lot of interesting people. At a recent meeting, I exchanged business cards with a banker who loans money to businesses. On the back of her card was a "Business Loan Application Checklist", a brief reminder for how to prepare when applying for a loan. Putting such information on a business card is a great way to get small business owners thinking about their goals in the context of a longer time frame.

It's easy to find similar checklists; they're all over the Web. Nearly every one contains the item, "Business Plan". A business plan, including a complete set of projected financial statements, is certainly essential for getting a loan. But I believe the planning process is equally, if not more important. Such an exercise brings the hopeful business owner face-to-face with one of the central realities of running a business: that "flying by the seat of your pants" is a very poor substitute for forecasting likely outcomes based on reasonable assumptions.

I've heard business people say that creating a business plan is difficult. Thinking through the various aspects of a business operation can seem daunting, especially
the first time. But it pales in comparison to being caught off guard by events that would have been predictable had one gone through the exercise of writing a plan. Maybe it would help to think of it this way: business plans are for bankers, business planning is for owners.

The Old Days

Tuesday, March 03, 2009

This really is NOT a nostalgia piece about "back in the old days", but…

In the mid-eighties when I first started consulting/programming, I noticed right away that most of the people who were hiring me were the CFOs and accountants of their companies.  Most of the training I provided and programs I wrote related to accounting and finance systems.  (That's not too much different from today except that now I actively pursue that type of work.)

When I returned to business school to get my accounting degree, one thing really struck me about the majority of projects I've done for small businesses: they are concerned mostly with looking back, not looking forward.   Maybe this is because when most people think about accounting they picture adding up where the money came from and where it all went and counting what's left over.  I've developed plenty of systems in which reporting on past financial performance was a key component.

My point is this: most small businesses operators do nothing more with their financial information than use it to report on past performance - always to the IRS and sometimes to themselves.  Reporting on "the old days" is important (a requirement, really) but we cannot change those old days - they're done.  The "new days", the upcoming quarters and fiscal years, are the only thing businesses have any control over.

Rarely do I encounter small businesses that prepare any sort of financial projections and forecasts and the ones that do tend to be more successful than the ones that don't.  But the most ironic thing is that systems for reporting past performance are likely to be more complex and expensive than those for preparing forecasts and projections.

Go figure.