Software


Refactoring (Book Review)

Thu Feb 18, 2010 8:35:20 pm by Dustin
Filed under Book Review, General, Software

*This is a technical post. Ye be warned.*

Full Title: Refactoring: Improving the Design of Existing Code by Martin Fowler
ISBN: 978-0-201-48567-7
Get it cheap.

Summary:

As people change code – changes to realize short-term goals or changes made without a full comprehension of the design of the code – the code loses its structure… Refactoring is rather like tidying up the code.

As this quote explains, refactoring code is necessary. A single feature may disregard high level architecture. The sales department may set a deadline rushing implementation while ignoring long-term development issues. For these reasons, we occasionally (or continuously) clean our code.

This book was kind enough to outline a couple dozen quick refactoring types (name this, move that, etc). When these tips are combined, they create a more solid code base.

What I thought: My career has put me in a position where I have seen many types of projects. Good architecture, bad architecture, good architecture with bad code, etc. In all cases, an occasional clean-up is helpful. I enjoyed this book because it put the examples out there for ‘Spring Clean’ partaking. There were a couple of ‘well duh’ instances, but a nice reference indeed.

Good enough to make the migration to my desk at work.


Disabling Gmail Spam Filter

Sun Jan 17, 2010 12:02:17 pm by Dustin
Filed under General, Software, Tools and Tricks

You might wonder why anybody would ever want to disable their spam filter. Well let me explain why I have.

For the last seven years I have been managing this domain. For the first six or so, my buddy hosted the site and mail for me. About two years I started to use Gmail to read my mail. Gmail was not hosting it, so essentially it was fancy interface. Other users on the domain were still using the provided mail interface. Six months ago, I moved my domain to professional hosting, including converting mail to Google Apps.

This worked just fine for the first couple months. I still forwarded my mail to my Gmail account and the rest of the users had everything Google Apps provides.

This brings me to my problem. In a few cases, some mail was incorrectly marked as spam and not forwarded for me to read. Quite frustrating.

Obviously, anything marked as spam will not be forwarded. Two solve this I created two filters.

The Gmail filters allow you to put some unpublished ‘tokens’ to refine your search. This like ‘in:’, ‘is:’, and ‘before:’ will work.

The main filter will move anything marked as spam into a new label. Add these entries:

‘Has the words:’ -> ‘is:spam’
‘Apply the label:’ -> ‘Spammy’ (spam is reserved)
Select ‘Never send it to spam’

Normally, spam will be deleted after 30 days. The previous filter will stop this from happening. We also need a filter to get rid of these occasionally.

‘Has the words: -> ‘label:spammy AND before:2009/12/31′
Select ‘Delete it’ and ‘Apply filter to XYZ conversations below’.

This last filter will not work naturally and thus needs to be run occasionally. Sorry. On some frequency the date will need to be update and rerun. Should take two minutes.

Doing these steps will forward all the ’spammy’ messages to the second account when it had be stopped at the source. Since I started this, no messages have been incorrectly marked as spam.


Analyzing Corporate Web Application Needs

Thu Oct 8, 2009 10:26:23 am by Dustin
Filed under General, Software

I have always been interested in creating software that either is the foundation to easily meet a corporate need or makes making software easier. For example, a shopping cart to integrate into any web application or a tool for optimizing the software development process, respectively.

I thought I would brainstorm some areas of the former. The hope will be to narrow where gaps exist in the market.

For starters, what are the web needs of the typical business? They probably fall into these categories:

  • Informative Website
  • Productivity
  • Products/Service
  • Infrastructure
  • Integration

I think I will step through each of these. I am pulling this from memory, so nothing formal at this stage.

Informative Website

Any business has some form of an informative website. They range from Berkshire Hathaway’s 1994-style site to very complex.

From the software side, this lower market seems tapped. A general CMS will meet the needs for anybody. Everybody and their brother does web skinning and CMS customization for basic informative sites. Additionally, I would call these websites not web apps so not interested. The middle market seems tapped as well. There are software packages to assist these slightly more advanced sites. Think of Wordpress for blogging or DotNetNuke for advanced features. So how about the high end (enterprise) market? Image a CMS behind an online newspaper, magazine, or advanced forum.

I think I will leave that question open for now.

Productivity

You might also call this collaboration. Consider email, chat options, word processing, etc as examples of this section. Google Apps and Office Live, among many others, may not make this area full, but it will make it very competitive.

Entering this section is going to vastly competitive. Highly niche products and services may succeed.

Products/Service

Custom development obviously fits into this category. Many organizations will build these in-house (Google). Others outsource (eBay – rumored, do not quote me). There are options for many custom development firms. I am more curious in making a tool in a specific market to make these sites easier. Ning did this with social networks – supposedly. Additionally, coming up with a fresh idea would be fun.

Options are definitely available.

Infrastructure

Some may also call this the company intranet or portal. I am going to group these into a single category. A company may have a project management system, ERP, document management system, hr/payroll processing, and many many more. There are a myriad of options here. Some systems combine all these processes. Some industries have off the shelf tools to aid those companies. Higher Education has Banner. Construction has Viewpoint.

More research is needed in this area.

Integration

Integration is a rather ambiguous category. I am going to call it anything that either combines two or more of the above categories or converts a legacy system into a new system.

I would say this market is very open if you know integrating X with Y does not have competition. Finding X and Y will be the challenge.

Some final thoughts…

It may seem there are some availabilities in the market. The high end versions of an Informational Website will need more research. I think I will stay out of the Productivity section – too much competition. I love products, so Products/Services is not out of line. This area requires an idea. Infrastructure, similar to Productivity, is a huge market with many competitors. More research will need to be done here too. I am not going to remove Integration from any list either.

And now, I read and talk to people and, well, research. Anybody have any thoughts?