Subscribe to qcodo

qcodo

Zcodo Launches

Submitted by mikehostetler on Mon, 03/31/2008 - 10:18

I've got some exciting news. Over the weekend, Zcodo officially launched! Zcodo is a PHP5 framework built for rapid prototyping web applications that is based upon the Qcodo framework.

The motivation for creating Zcodo could more than fill this blog post. Suffice it to say that contributing to Qcodo was becoming difficult and my efforts for the last year to change this were uneffective.

Additionally, the future of QDrupal will be based upon Zcodo, so stay tuned for exciting news in that area.

http://zcodo.com

The past few months have brought many changes to my life. As I've blogged about before, I am a new father!!! My daughter was born in December 2007. In addition, today I'm announcing that I have founded a new consulting company, A Mountain Top, LLC, and will be leaving the ranks of Crowd Favorite.

This is an exciting opportunity for me. Alex has been very gracious and we are parting as friends.

A Mountain Top, LLC will be focused on jQuery, Qcodo and Drupal. If you have a project, or are thinking of starting a project using any of these technologies, we'd love to hear from you!

Talk at Refresh Denver

Submitted by mikehostetler on Thu, 12/06/2007 - 16:58

I'll be speaking at the upcoming meeting of Refresh Denver on December 17th. The topic of the night will be "A jQuery Introduction, with Drupal and Qcodo".

If you're in the area, we'd love to have you attend. Matt and Chip have done a great job with the Refresh group. I was able to attend the November meeting and thoroughly enjoyed it.

Custom QForm Control Tutorial - QIntegerSpinBox

Submitted by mikehostetler on Fri, 05/04/2007 - 12:59

The following is a tutorial on creating a custom QForm Control. QForms is a forms library and are a component of the Qcodo framework. Additionally, this control makes use of the excellent jQuery library and the SpinBox Control Plugin.

Overview
In this tutorial I lay out the steps necessary to create a new QControl. The control is very simple, but very useful. The control utilizes javascript to create a spin box, something you'd typically see in any GUI based toolkit.

For an example of the finished product, take a look at the control demonstration page.

I've been working on a re-architecture of a project and I've been experimenting with using MySQL Stored Procedures for some of my business level logic. I'm using PHP 5.2.0, PHP's MySQLi Extension and MySQL 5.0, so stored procedures are new, but stable.

I also make use of the Qcodo ORM framework. Qcodo has support for both of the MySQL API's; Original Mysql and Mysqli. I created my first Stored Procedure using the following code:

How I build an application - Part 4 - Use Cases

Submitted by mikehostetler on Thu, 04/05/2007 - 13:42

This article the 4th installment in of a series titled 'How I build an application'. You can find the other two installments and subsection here.

I've written about my Idea, but before I get into the code, I need to flesh out how the idea is translated into a usable application a bit more. When I come up with an idea, I have a general page flow diagram in my head. Translating that in-memory page flow into code is generally straightforward, and most of the time I can simply sit down and code it.

For the use of this article, that brain dump process is hard to explain. The purpose of this article is to explain that process. Without further ado, here's my page flow diagram created in Microsoft Visio using their Use Case template set.

How I build an application - Part 3 - The Tables

Submitted by mikehostetler on Thu, 03/29/2007 - 13:40

This article the 3rd installment in of a series titled 'How I build an application'. You can find the other two installments and subsection here.

I mentioned last time that I would discuss why I choose certain data types for certain fields.

Recipe Ingredient Table

--
-- Table structure for table recipe_ingredient
--

CREATE TABLE IF NOT EXISTS recipe_ingredient (
  recipe_ingredient_id int(10) unsigned NOT NULL auto_increment,
  recipe_id int(10) unsigned NOT NULL default '0',
  unit_id int(10) unsigned NOT NULL default '0',
  ingredient_id int(10) unsigned NOT NULL default '0',
  unit_amount tinyint(3) NOT NULL default '0',
  PRIMARY KEY  (recipe_ingredient_id),
  KEY IDX_recipe_ingredient_recipe_id (recipe_id),
  KEY IDX_recipe_ingredient_unit_id (unit_id),
  KEY IDX_recipe_ingredient_ingredient_id (ingredient_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

This table is one that ties a lot together, so we'll start here. This table contains a primary key and three foreign keys. I try to always construct my integer keys using a display length of 10, marking them unsigned with a default of zero. Whether a field is marked at 'NULL' or 'NOT NULL' depends on the design.

How I build an application - Part 2 - The Database

Submitted by mikehostetler on Tue, 03/20/2007 - 09:29

Onto the next stage. I've got my vision nailed, now it's time to start building.

This article is a continuation of How I build an application - Part 1. Check it out if you missed it. Last time, I came up with the idea of a little tool to help plan meals with the goal of eating healthier and spending grocery money more efficiently. I came up with the following drawing for my database.

How I build an application - Part 1

Submitted by mikehostetler on Thu, 03/15/2007 - 21:00

Every few months I get an idea for a neat little application I'd like to have. If somebody hasn't built it yet, I usually take a crack at it in my spare time.

This time around, I found I need a tool to help me plan a weekly menu. I figured it would be cool to blog about it, so here you go. I'll try to describe the steps I move through from start to finish.

The Problem
Being busy and working a lot, I tend to eat a lot of junk. However, cooking is tough. There's the problem of figuring out what I want to eat, the shopping, preparation and finally cooking before I get to the good part, the eating. I want to make that easier. I find the planning part the most time consuming and difficult, so that's where I am focusing.