Thursday, July 7. 2005
So, last night, Maeve fell asleep in the early evening, on the couch, clutching
her sippy cup and sucking on her bink while watching Scooby Doo. She woke up an
hour later, and after she'd been up for a while and was less groggy, she
announced to Jen and me that, "I'm not going to use my bink ANY MORE. Every
little girl has to give up the bink some time, when they're four, so I'm not
going to use the bink EVER AGAIN." (Imagine dramatic pauses between the all-caps
words there...)
This coming from the girl who has a fit every time her bink isn't within
eyesight and reach. Needless to say, we didn't quite believe her, but we were
willing to support her. We told her that if she wants to stop using the bink,
that's okay; it's also okay if she decides to use it again. (Fully expecting
she'd want it within minutes of going to bed.)
Well... Maeve slept all night without it, and didn't want it this morning, nor
in the car. She's adamant, our little warrior queen! (Which is what the Gaelic
Maeve translates to in English, in case you were wondering.)
I might be jumping the gun here, but I get the feeling our little girl has taken
another step in growing up... and I'm bewildered and a little sad. Much as I've
hated the bink the past year, I also associate it with my little girl... and
she's getting so she's not so little any more!
UPDATE: I jumped the gun. She did go a full 24 hours, but the
following night decided she wanted the bink again. But there is hope
for a bink-less future...
Tuesday, June 28. 2005
Got the official notification: I passed the Zend
PHP Certification Exam, and can now report I'm a Zend Certified
Engineer (ZCE)!
Thanks go to my bosses at NGA for
giving me the opportunity to attend php|Tropics, to Marco Tabini for offering the ZCE
exam as part of the php|Tropics conference fee, and to my wife, Jen, and
daughter, Maeve, for putting up with me while I studied... and being good
sports about having to stay home while I went to Cancun. Hopefully next time I can take you along!
Sunday, June 5. 2005
We did it... we moved, again.
However, unlike our previous two moves, which were interstate, this time we
stayed in the same state. The same county, even. What made (makes; we're
still finishing up as I write this) this one so jarring is the fact that
we're going from the rural mountainside to the fourth floor of a new
apartment/condo building adjoining an interstate spur.
Why would we do this?
Continue reading "Moving into City Living"
Saturday, April 23. 2005
I can't believe I haven't announced this to the world yet, but Jen and I are
expecting another baby! The due date is mid-September. And.... we decided at
the ultrasound this past week we would go ahead and find out the gender...
and....
Continue reading "We're having a baby!"
Sunday, March 20. 2005
I couldn't resist... the car model demands it...
For those not familiar with where I live, my family and I live in West
Bolton, VT -- about 20 miles from Burlington, and at the base of Bolton
Mountain. Our daily commute is 4 miles on a dirt road, another 3 to 4 miles
on some twisty two-laners at 35mph to the interstate, and around 10 miles
on the interstate into Burlington. Then there's all the miles in town
getting Maeve to day-care, Jen or myself dropped off, and whomever has the
car to work. And we only have one car.
So, you can imagine the crisis when, almost a month ago, our Toyota Rav4
died on the way in to work.
We started it up that day, and it had this funny knocking sound. I
remembered a similar sound in my old pickup back in Montana... the one that
died. I determined to get it into a shop that day to get it diagnosed. The
noise came and went while we were on the backroads, and because it wasn't
constant, I figured it couldn't be too serious.
And then we tried to get to highway speeds.... a few miles on the
interstate, and it was evident we were in trouble. The Rav was having
trouble maintaining 60mph on the way up French Hill -- when it normally was
able to accelerate past 70mph. And the knocking sound was getting worse and
louder.
We resolved to pull off at the first exit, at Tafts Corners in Williston. I
pulled into the first gas station there, and as we tried to find a place to
park the vehicle, a mechanic was flagging at us to stop the car. He came
over to where we parked and said, "Sounds like you've blown your engine."
These, of course, were the absolute last words I wanted to hear.
To make a long story short, apparently a bearing was thrown when we started
the engine that day, and because we decided to drive it, we basically
destroyed the engine. The cost to replace it: around $6,000.
Now, we're not exactly what you'd call "financially secure". We've had a lot
of transitions in the past five years, and except for the past year and a
few months, haven't typically both been working at the same time. We've been
in a perpetual cycle of having enough to pay the bills... but having to pay
consistently late. And we haven't been able to do much, if anything, about our
educational debt. In short, our credit sucks. Which means that $6,000 is a
big deal.
Did I mention that, at the time of the incident, we still had 17 months left
on our car payments?
And, on top of it, I've been in the middle of a huge project for
work that's required a fair bit of overtime -- and very little wiggle room
for personal time?
The timing could not have been worse, either professionally or financially.
We've been very fortunate, however. Jen's parents very graciously offerred
to pay off our existing car loan -- which helped tremendously. It bought us
both the time to figure things out, as well as eliminated one factor that
may have barred our ability to borrow towards repairs or a new car.
Additionally, a friend of Jen's turns out to be absolutely ruthless when it
comes to dealing with car salespeople, and went to bat for us in working out
a deal. If it hadn't been for her efforts -- and those of the salesperson,
who also went to bat for us -- we would not have gotten more than a thousand
or so for the vehicle; we ended up getting over $3,000 for it, as is.
Finally, the finance guy at the dealership advocated for us tremendously so
we could get a loan on a new vehicle, with the Rav as our trade in.
So, to conclude: We're now proud owners of a 2005 Toyota Matrix! (And now
the mystery of the title is revealed... to all you Matrix fans out there...)
I'll try to get a photo of the car up soon... about the time we update the
year-old photos on our site...
Well, it's official: My IT Manager convinced those in the upper echelons
(well, considering it's a non-profit with only around 20 employees, that
meant the president and the CFO) that (1) he and I need to attend a PHP
conference, (2) due to the amount of work we've been putting in to bring
money into the organization, cost shouldn't be too much of a
deciding factor, and (3) php|Tropics isn't too expensive, especially
considering the sessions involved cover some of the very issues we've been
struggling with the past few months (PHP/MySQL/Apache and clusters, PHP5
OOP, PHP Security, test-driven development, Smarty, and more).
So, we're going to Cancun in May!
This is incredibly exciting! I've never been to Mexico, nor even a resort,
so I'll finally get to find out what my wife and friends have been talking
about all these years. Plus, the conference is top-notch -- many of the
presenters are well-known in the PHP community, and have blogs I've been
following for the past year. (I only wish that Chris Shiflett's PHP Security
series wasn't running head-to-head with the PHP5 OOP Extensions and PHP 5
Patterns sessions; I suspect Rob and I will have to do a divide-and-conquer
that day.)
Drop me a line if you'll be attending -- I'm looking forward to meeting
other PHP junkies!
Saturday, February 19. 2005
I've been extremely busy at work, and will continue to be through the end of
March. I realized this past week that I'd set a goal of having a SourceForge website up
and running for Cgiapp by the end of January -- and it's now mid-February.
Originally, I was going to backport some of my libraries from PHP5 to PHP4
so I could do so... and I think that was beginning to daunt me a little.
Fortunately, I ran across a quick-and-dirty content management solution
yesterday called Gunther. It does templating in Smarty, and uses a
wiki-esque syntax for markup -- though page editing is limited to admin
users only (something I was looking for). I decided to try it out, and
within an hour or so had a working site ready to upload.
Cgiapp's new site can be found at cgiapp.sourceforge.net.
UPDATE
Shortly after I wrote this original post, I figured out what the strength of
Gunther was -- and why I no longer needed it. Gunther was basically taking
content entered from a form and then inserting that content (after some
processing for wiki-like syntax) into a Smarty template. Which meant that I
could do the same thing with Cgiapp and Text_Wiki. Within an hour, I
wrote an application module in Cgiapp that did just that, and am proud to
say that the Cgiapp website is 100% Cgiapp.
Friday, January 14. 2005
1.5.3 fixes an issue introduced by 1.5.2 that creates a performance hit
whenever the run mode is being determined by function name or CGI
parameter. More details on the
Cgiapp download page.
At work, we've been developing a new platform for our website, based
entirely on Cgiapp. This week we released the first stage of it: garden.org and assoc.garden.org. These should stand
as good testament to Cgiapp's robustness!
With all that development, and also with some communication from other
Cgiapp users, I've made some changes to Cgiapp, and release version 1.5.2
this evening.
1.5.2 is mainly security and bugfixes. Error handling was somewhat broken in
1.5.1 -- it wouldn't restore the original error handler gracefully. This is
now corrected. Additionally, I've made run() use the array returned by
query() -- consisting of the $_GET and $_POST arrays -- in determining the
run mode. Finally, I've modified the behaviour of how run() determines the
current run mode: if the mode parameter is a method or function name, it
cannot be a Cgiapp method or a PHP internal function. This allows more
flexibility on the part of the programmer in determining the mode param --
words like 'run' and 'do' can now be used without causing massive problems
(using 'run' would cause a race condition in the past).
As usual, Cgiapp is avaiable in
the downloads area. Grab your tarball today!
Saturday, January 8. 2005
I picked up on this article on
Friday, glanced through it and moved on, but noticed this evening it had
been slashdotted
-- at which point I realized the author is the current CGI::Application
maintainer, so I looked again. At my first glance through it, it
appeared the author was looking for a nice, easy-to-use pre-processor script
for generating a site out of templates and content files. To that end, he,
in the end, recommended ttree, part of the Template
Toolkit distribution.
However, the real gist of the article -- something that should probably have
been summarized at the end -- is that the author was looking for an free and
OSS replacement for DreamWeaver's Templates functionality. This
functionality allows a developer to create a template with placeholders for
content, lock it, and then create pages that have the bits and pieces of
content. Finally, the developer compiles the site -- creating final HTML
pages out of the content merged with the templates.
Now, I can see something like this being useful. I've used webmake
for a couple of projects, and, obviously, utilize PHP in many places as a
templating language. However, several comments on Slashdot also gave some
pause. The tone of these comments was to the effect of, "real developers
shouldn't use DW; they should understand HTML and code it directly." Part of
me felt this was elitist -- the web is such an egalitarian medium that there
should be few barriers to entry. However, the webmaster in me --
the professional who gets paid each pay period and makes a living off the
web -- also agreed with this substantially.
I've worked -- both professionally and as a freelancer -- with individuals
who use and rely on DW. The problem I see with the tool and others of its
breed is precisely their empowerment of people. Let me explain.
I really do feel anybody should be able to have a presence on the 'net.
However, HTML is a fragile language: trivial errors can cause tremendous
changes in how a page is rendered -- and even crash browsers on occasion.
The problem I see is that DW and other GUI webpage applications create, from
my viewpoint, garbage HTML. I cannot tell you how many pages generated by
these applications that I've had to clean up and reformat. They spuriously
add tags, often around empty content, that are simply unnecessary.
The problem is compounded when individuals have neither time nor inclination
to learn HTML, but continue using the tool to create pages. They get a false
sense of accomplishment -- that can be quickly followed by a very real sense
of incompetence when the page inexplicably breaks due to an edit they've
made -- especially when the content is part of a larger framework that
includes other files. Of course, as a web professional, I get paid to fix
such mistakes. But I feel that this does everybody a disservice -- the
individual/company has basically paid twice for the presentation of content
-- once to the person generating it, a second time to me to fix the errors.
This is a big part of the reason why I've been leaning more and more heavily
on database-driven web applications. Content then goes into the database,
and contains minimal -- if any -- markup. It is then injected into
templates, which go through a formal review process, as well as through the
W3C validators, to prevent display
problems. This puts everybody in a position of strength: the editor
generating content, the designer creating the look-and-feel, and the
programmer developing the methods for mapping content with the templates.
There's still a part of me that struggles with what I perceive as an elitist
position. However, there's another part of me that has struggled heavily
with the multitasking demands made on all web professionals -- we're
expected to be editors, graphic designers, programmers, and more. In most
cases, we're lucky if we're strong in one or two such areas, much less
passionate about staying abreast of the changing face of our medium.
|
|