Stupidly Easy App Walkthough

One day, the phone rings.
Joe: Hey!! can you make a website for my Candy Wrapper Club?
You: "Candy Wrapper Club?!?"
Joe: "Yes! We collect Candy Wrappers! We just need a little bit about the group, how to contact us and a membership list. It will probably only take you a week. My cousin has a webserver with PHP and MySQL. How about it?
You: <sigh> Sureeeeeeee, I've been wanting to try this MVC thing with PHP.
This is a long one, so grab a cup of coffee!

[Anon] Management and Refactoring

Well, we have our second victim for the Anonymous Blog. As noted before, this is not a single person's space, it is available to anyone who requests it. Therefore, I and no one else around here can claim accuracy or accept blame for anything said here. Please add your thoughts or if you'd like to post yourself, please let me know. - Editor, KC

I am part of a team working on a fairly big, complex piece of software. Over the last six years many, many different programmers have worked on it. The code shows it, too. There are various serious issues with the program: The performance could be much, much better and a lot of code could be simplified greatly. My colleagues and I have identified several areas that would lend themselves to meaningful refactoring work, some of them involving quite significant internal changes. Here's the problem though: All our development (be it new features or fixing of existing bugs) are very much schedule driven. This is a huge problem for us.

Indexing Experiment

Not that the discussion of web crawling is over - far from it - but I thought it would be nice to start tinkering with indexing a little bit. This post will bring a very simple example of creating such an index then. The example is intentionally simple to show how easy it is to get started on writing an indexing scheme in Python.

Learning Design Patterns – Facade Pattern

This week I'll be simplifying my life with the Facade Pattern in my series on design patterns plucked from this book and from examples on the Internet.

What is it?
The Facade Pattern simplifies a complex interface so that it's client can rely on simple methods in the facade that handle multi-step calls to subclasses. The client might call facade.PowerUp, then the facade would turn on all of the subcomponents in the correct order and adjust their initial properties.

Micro ISV Blogging: Summary

Over the last few weeks I posted a series on Micro ISV blogging, here is a brief summary of the five articles so far.

Don't Worry, it's Just Computer-Generated...

This has been happening a lot lately, but the canonical example ocurred today with my <sarcasm>wonderful</sarcasm> DSL provider, SBC. Some scary and/or irritating bit of correspondence arrives in the post, declaiming that I'm about to lose my health insurance, or my house, or my savings, or my left leg. Today, with SBC, it was along the lines of "your contract expires at the end of this month; if you renew for another year, we'll only jack up your rates 20%. If you fail to renew, we'll jack them up 150%."

How nice of them. You'd think that maybe, just maybe, they'd think to reward loyal customers by, oh, say... lowering their rates? Or at the very least, not sticking them with an increase?

Interactive Programming with the REPL

In this week’s post I’ll discuss the joys of interactive programming. For those who write only in compiled (or byte code compiled) languages this may be a foreign concept. There seems to be some level of this feature in most scripted languages. In Lisp interactive programming is supported by a feature known as the REPL, or read-eval-print-loop. It is also known as the top-level listener or simply the top level. Ruby has something similar called the IRB, or interactive ruby shell. In Python it’s just the interactive shell.

Outsourcing viability, part 2

Last week, I talked about the viability of outsourcing as relating to contrasting pricing models.

One topic I discussed was the difference in price based on geography. I aluded to a worldwide scheme, but I got to thinking more about just the US, which I am most familiar with.

I currently reside in an area where the cost of life is low, relative to other parts of the country. If you look at my house payment vs. the house payment for someone living in a much more metropolitan area, they are paying considerably more.

Process over programs

Software development, at heart, is the discipline of modeling business logic (or il-logic, if you will). The classic steps go something like the following:

  1. Document the existing process, such as an accounting form or communication need between entities
  2. Determine if there are any existing IT system driving the process
  3. Build a prototype or story board a solution, accounting for #1 and #2
  4. Supposing that the prototype solves the problem (or least makes thing better), go ahead and build it using whatever design/code methodology that suits the project.
  5. Deploy the system to production and commit to caring and feeding for it until doomsday or the process needs revision, whichever comes first

While this is a fine way to build software, it isn't a fine way to solve core problems. For that, I suggest we add step 1.5: evaluate the process.

Stupidly Easy MVC - Directory Structure

There are probably many ways to setup a structure using MVC and this article will talk about two of the ways I have done it and explain why I did it that way and how I think it works out after the fact.

Structure 1
For this project, I used Ruby On Rails as inspiration (Imitation is the best form of flattery, yes?) and used a separate directory for each of the Model, View and Controller. I knew I I was going to have multiple models as well. I used inline php/html for the view for this project since it was only a few forms and we didn't want to do a template system yet. It would be easy to change to templates later of course by just editing the view methods to call a template instead of spitting out html.