Busted days.

February 14th, 2008

As a parent, I’m involved in my kid’s education. Somebody’s got to make sure homework is done, and that school material is being understood.

Yesterday and today have been…busy.

Sorry for the break from the Symfony App Days of learning, but, life does that. I’ll do what I can to crank out another suspense-filled episode tomorrow night. (Her scrapbooking habit may be good for something after all!)

Greetings! (Back for more? There’s medication for that, you know..)

At the end of day 2, I had built a DB schema in YAML, and symfony seemed to be reasonably comfortable with it, at least symfony propel-build-model didn’t toss up any errors.

But, symfony propel-build-all started griping about a mysql connection, so I’m thinking something isn’t right in my symfony config files.

Warning: SoapboxA personal note, I’m writing this from the Druid City Hospital’s Cath Lab waiting room. Evidently, DCH doesn’t allow SSH connections out. Grr^3. C’mon, folks, realize that of the few visitors with data devices, there is likely to be an admin who would really appreciate SSH or other access. Either provide Internet access or don’t. It’s not like SSH is bandwidth-intensive. Assuming a good security policy, it’s not a risk to devices inside the hospital. All blocking SSH does is annoy people like me who are actually trying to DO something while doing the “be there for a loved one” routine.End Soapbox.

Reading through (mt)’s docs, it looks like you’ve got to use internal-db.s###.gridserver.com (#’s replaced by your server number) for db connections. I’ve modified the ~/domains/domain.com/symfony/config for this name. Now to find some way to test …grr..no..SSH

Well, it looks like I’m out of luck. No SSH from the Hospital. Cell phone has got net access, but SSH doesn’t work on it for some reason. So, by reason of limited net access, today is going to be cut short. On the other hand, I’m going to play some Nintendo DS!

More evidence I’m a geek. Just couldn’t stop fiddling with SSH on the phone, now it’s working.

Gave it a symfony propel-build-all, no luck – properties file doesn’t exist. What?

symfony clear-cache, tried again..better – at least a different error message. Now, it’s saying “wrapped: No driver has been registered to handle connection type:” Google, wherefore art thou? Possibility – here talks about this – adding a datasource: symfony in the database.yml file is reported to fix this.

Changed that line in database.yml, removed the insert in the schema.yml, and changed the propel.ini, but..nothing yet. Same error.

This may help, if I’ll read the whole thing. Yes, I’m impatient.

Day 2 – First Symfony App

February 10th, 2008

Well, from yesterday, we have web hosting, PEAR, and symfony installed.

Since data is the whole point of any application, I want to start this project with the Model part of MVC. Symfony uses YAML to define what the data will look like. One of the neat points of this framework is symfony’s ability to build the database from this YAML “sketch”.

For this DVD database, I would like to store the DVD type, title, and the leading actors/actresses. (Yes, I’m being a bit overly optimistic about HD disks making their way into the library anytime soon!) So, in my head, I’m going to need a table for type, another for titles, and another for actors.

In the type table, I want a primary key (just a serial number) and a bit of text describing the type. In SQL-eese, I would do this like this:

create database dvddatabase;
create table type (type_id integer primary key, type varchar(15));
insert into type values ("1", "DVD");
insert into type values ("2", "HD-DVD");
insert into type values ("3", "Blue-Ray");

But, alas, I’m not – this needs to be implemented in YAML. So, off to YAML land…


dvd:
  type:
    type_id: ~
    type: varchar(15)

The tilde (“~”) is used to tell symfony to “figure it out”. (so, does that mean I could make them all ~? (laugh.)

Need a a table for DVD Titles:

    id: ~
      dvdname: varchar(128)
      type: ~

One for who starred in the film:

    starring:
      starring_id: ~
      actor: varchar(50)

Finally, one to link the id and the starring tables together:

    id_starring:
      id_starring_id: ~
      id_id: ~
      starring_id: ~

So, the completed YAML file looks like this:
propel:
  dvd:
    type:
      type_id: ~
      type_name: varchar(15)
    id: ~
      id_id: ~
      dvdname: varchar(128)
      type: ~
      created_date: ~
    starring:
      starring_id: ~
      actor: varchar(50)
    id_starring:
      id_starring_id: ~
      id_id: ~
      starring_id: ~

This setup is quite odd to me. I tend to think of data in terms of one-to-many relationships (like the table above), it seems to me that some sort of declaration is needed.

Just for fun, since the type table will be rather short, I think I’ll try directly inputting the starting data:

propel:
  dvd:
    type:
      type_id: ~
      type_name: varchar(15)
        - DVD
        - HD-DVD
        - Blu-Ray
    id: ~
      id_id: ~
      dvdname: varchar(128)
      type: ~
      created_date: ~
    starring:
      starring_id: ~
      actor: varchar(50)
    id_starring:
      id_starring_id: ~
      id_id: ~
      starring_id: ~

So, save all that to config/schema.yml, then (from the project directory) symfony propel-build-model, and experience our first problem. Symfony says schema.yml can contain only one DB entry. I’m assuming it’s referring to the 3 rows I was trying to add in one table. Ok, I can play this game, and remove the HD entries, then rerun the propel-build-model.

Qapla!

We now have a DB schema, which symfony recognizes and thinks it knows how to handle.

Boldly going… to symfony propel-build-all, looks good, right until the end. Looks like there is a problem connecting to mysql through a socket. It’s late, I’ve got traveling to do tomorrow, so I’m going to sign off for now.


Quick index:
Day 1
Day 2

Day 1 – First symfony app

February 9th, 2008

Quinn has gotten me interested in web development with Symfony. For those who don’t know, Symfony is a PHP framework which implements the Model-View-Controller (MVC) architecture. This system allows breaking development down into a model (data), view (web stuff), and controller (how to get and what to do with data once we get it).

For my first app, I’m going to develop an app that keeps track of DVDs. We have a decent collection, and have gotten to the point where we frequently ask the question “do we have this one?” when shopping. Since we both have PDA Phones, I think this will be a big help to us. (Truthfully, it’ll be a small, quick app for me to learn on, too)

I’ve gotten hosting through (mt) MediaTemple. Specifically, their (gs) Grid Service (hey, I’m not running anything as big as Tech-Recipes!)

For starters, in this service, PEAR needs to be set up. (mt)’s knowledge base tells you how to do this for their service, others may need different procedures. PEAR’s own instructions are here.

With PEAR up and running, it’s time to see what we can do with symfony. (mt)’s KB takes you through installing symfony into a directory, then linking (mt)’s default ~/domains/yourdomain.com/html to the symfony/web directory.

Once all of this is done, you should be able to point your web browser to http://yourdomain.com and get the wonderful “Symfony project created” welcome page. In my case, I got the page, but didn’t get the graphics. I needed to link the ~/domains/yourdomain.com/symfony/sf to the sf directory on the main installation point of symfony. In (mt) (gs), this is /home/users/.home/pear/data/symfony/web/sf

Enough for day 1! Stay tuned for day 2…..

Ted Dekker – Black

February 6th, 2008

Here is my quickie post about the first book in Ted Dekker’s Circle Trilogy, Black.

Nintendo Support

January 17th, 2008

As much as I hate to admit it, I called Nintendo support.

We had downloaded some virtual console games, but the jump button for player two had stopped working. I re-downloaded the game, swapped controllers, nothing worked.

Then I called support. It was a Sunday night, so I didn’t have high hopes. Within three minutes, I was on the phone with a great tech! In another couple of minutes, she had diagnosed the problem and we had it working.

Oh, the problem was I had the GameCube controllers plugged in! Removed those, and all is well.

I have a re-branded HTC Wizard PDA phone. All in all, it’s a nice device. There are some annoyances, such as “Internet Access” really means “web access”.

Then, I lost my power cord. No problem, I went to my local ATT (I call them the Death Star – look at the logo again) store and purchased a replacement. The phone would not charge. All sorts of disaster scenarios went through my head. A little research online, however, noted something interesting. The charger I purchased was a 5v, 750ma unit, but the charger that came with the phone was a 5v 1A unit.

Luckily, I found the charger that came with the phone, plugged it up, and it started to charge.

Two things irk me. First, since the phone uses a USB connector for power, HTC should have made the phone charge a fully discharged battery from the USB standard 5v/500ma power. Sure, it may take all night – no big deal. The bigger irk is the Death Star store selling a “replacement” charger that does not produce enough power to charge the phone.

Long story short – verify the power needs before going to a store. I made the assumption (yes, I know all about that word) that a replacement part from the same store from which I purchased the phone would work.

Here is the announcement.

First, thanks to zap2it for providing good guide data for a long time.

However, I’ve got to wonder.  Tribune is running the show at zap2it, so this move has the appearance of cutting off free access in favor of paid access.  The strange part – there isn’t an option for individuals to subscribe to this data!

Where does this leave MythTV?  Well, now we’ve got to go back to HTML scraping, for the most part.

For what it is worth, I have sent an email to Zap2It asking for them to reconsider.  I would urge anyone who uses, or is thinking about using, MythTV to send a nice email as well.

Moving.

June 12th, 2007

It’s been a while since I’ve posted, so I thought I would compose a couple.  There’s not much of a point to this post, just some random musings about the process.
We have realized that our house is too dang small.  Well, it could be said that we’ve just got too much stuff, but that would involve taking personal responsibility for throwing stuff out.  Nah, that won’t do.

So, we’re searching for a new place to call “home”.

Those of you with houses, do yourself a favor – don’t skimp on updating.   We are somewhat fortunate, we had done some updates in our present (soon to be old) house, but needed to do a couple more major items.  Installing 200+ square feet (approx. 19 m^2) of floor tile in a weekend isn’t my idea of fun.  Neither is painting, you know, the stuff that you keep putting off because you don’t want to do it.

I’m also coming to remember that the whole house thing is a compromise – space, appointments, fixtures, location, etc, etc, etc.  Then, throw in being a geek – one of my first thoughts upon entering a prospective dwelling is about running wire – speaker wire, network, power to different places.  I have realized that what I would like to see in the “infrastructure” part of a house and what a builder puts into houses are two very different things.  It looks like my Mrs. is right – I’m weird.

So, the long-term goals here, once we have a new address – build out the MythTV system, then start on a MAME cabinet, and acquire/refurbish a pinball machine.

Stay tuned, hopefully this ride will be short…

Hauppague Kudos!

June 12th, 2007

While the local CompUSA was still in business, I picked up a Hauppauge PVR-150 for the MythTV build.

When I took it out of the box, I had a bit of a surprise. The card should look like this.

Instead, it looked like:hauppauge card

What’s missing, you say? This: hauppauge thingey

Eeek! Since the store was closing, they were in a “no returns” mode, not that they were every very nice about returns. So, I emailed Hauppauge, and sent a couple of pics.

Hauppauge’s return team has got to be one of the best I’ve used. No problems, immediately got an RMA number, sent the card back, got a new one.

Kudos to Hauppauge for a great experience!