Tag Archives: PHP

Happy New Year

I can’t believe it is just hours away from 2006 already. Looking back, 2005 was one of the best. I spent my first year at my dream job, moved into my dream home, practiced a respectable amount of music, completed some study on CSS and PHP, and watched my kids grow up. Dylan began walking and talking, and is hitting his terrible twos a tad early, while Max has been progressing very well and enjoying his preschool activities. Yingwen is fully booked for piano teaching for 2006, and she has a waiting list. Not bad.

One of my long-term goals, and I’m talking decades at this point, was to get the notes for the G minor Violin Sonata by Bach under my fingers on the guitar (transcribed for the instrument in A minor). I found a Bach folio of lute works while browsing bins of old sheet music at Lark in the Morning in Mendocino, California (or were they in Fort Bragg then?) way back sometime in the mid-1980s. I never really got serious about playing classical guitar though until exactly one year ago when I finally went and purchased an instrument. After one year of having the guitar and practicing regularly, I have that piece memorized, as well as most of the Lute Suite No.1 in E minor learned.

I didn’t practice the double bass with as much consistency as I would have liked, although I did practice way more guitar than I expected, and to be fair I did practice the bass a lot in spurts. It is a less resistant path to pick up a guitar and start working on something while the baby sleeps, as opposed to picking up the bass and getting everything set with the music, bow, rosin, metronome, etc. So one goal for 2006 is to spend a little more practice time on the bass – If I can get in a consistent bass practice session in each night then I’ll be very happy. On top of that, I need to find some venues for performance. I have been playing a lot of music “in the lab”, relearning my instruments after a long break, and it’s time to take some of the theory to the real world. Public solo performance is a skill in itself.

Another 2006 goal is to continue the exercise thing that I started back in November, but again with more consistency. I have a treadmill now in my office, and it’s really easy to prop up my PowerBook on a music stand and start watching DVDs during the workout.

One goal that is a bit newer this year is to start with some serious composition and arranging. I’m about halfway done with the first movement of the Bottessini Concerto No.2 arrangement for guitar accompaniment, and have sketches going for a prelude for piano and a string quintet. My aim is to complete the above three items for 2006, and re-orchestrate the variations on a theme by Grieg that I did back in 1986 that won me the Dave Brubeck scholarship award.

Book-wise, I have on my stand three PHP books and one inspirational book written by an old friend (more on that one later.) I’m just about to finish one of the PHP books on security, and the other two are on more advanced concepts. Let’s call this goal “always have a book open”. I also want to try to read more non-geek material for a change. In ten years, I think I read only one book that wasn’t about code or computers, but I used to read tons of novels back in the day. That’s the thing with being an obsessive personality in a technology career: You always feel like you have to stay on top of the trends, and any new book on something interesting winds up in the queue on my nightstand. My thinking the past several years has been: “If it’s not going to help me with my career, then I don’t have time right now.” But now I think it’s time to introduce a little balance in my reading curriculum.

I think that should do it. A bit of playing music, some exercise, and four compositions. Let’s see how we do…

Finale PrintMusic: Can’t RTFM?

This is such a simple thing, and I call this a major oversight on the part of the software vendor: I kept getting errors when trying to access the user manual or tutorials from within Finale PrintMusic 2006, getting errors that read something like “Could not open PMTOC.pdf”. I found the file after a quick search via Spotlight on my machine and it launched into Preview as this is the default Mac OS X handler for PDF. I got a table of contents, but it was only that. None of the links worked and it was essentially useless. I then noticed that the entire documentation was broken out into separate files. Linking to other local files apparently isn’t supported in Preview, or it doesn’t use the same protocol as Adobe Reader. Would have been better to make one PDF document, where anchors are supported in both Reader and Preview.

I hate Adobe Reader (and when the hell did they start calling it “Reader” instead of “Acrobat Reader”), but I suspected that this wasn’t going to work otherwise. There was no readme file to suggest that Acrobat was a requirement, so I’m guessing at this point. I grudgingly went and downloaded the Acrobat Reader from the Adobe site and installed it, and I’d like to take a moment to lament on Acrobat Reader’s strange installer: You download a download utility and it downloads another installer. Geeks will say “WTF? OK, whatever…” Non-geeks will just wonder what happened and why they still can’t open PDFs. Just make one installer, or one binary app that can be dragged to one’s hard drive.

And now everything works fine, except I have an extra PDF-reading program that I hoped I would never need.

Documentation has always been a tough subject. We have seen the demise of printed manuals. Electronic equivalents have been formatted to PDF, HTML, Flash, and so on, and sent to browsers, PDF readers, operating system help programs, or displayed within the programs own constructs. Vendors often will switch the tools they use, and wildly, between software version releases. It’s nutty how many ways it can exist, and I don’t know of any solution to this madness or even if there is one. My favorite method is the style that is used by PHP, complete and updated frequently as it lives online, with printer-friendly formatting and downloadable archives, and a number of freely-available tools that make it easy to use including Dashboard and Konfabulator Widgets.

Zend/PHP Conference, days 3 & 4

We wrapped up the Zend/PHP conference today and overall it was quite a good show. At the very least, I have my work cut out for me here. I have a stack of books that I picked up at a nice show discount from the Sams booth, based on recommendations from many of the others I met at the show.

I’ve been teaching CSS classes for the past several months, and one colleague described my sessions as something like “sit down, fly by the seat of your pants, and try to hang on…” OK, now I really know what that feels like! Each session was only 45 minutes, and some of these guys were really plowing through some deep coding concepts at warp speed.

My personal highlights for the last two days of event were Chris Shiflett’s Security Audit Howto session, learning about the Qcodo development framework, and meeting up with the guys at Interakt. It was especially cool to finally meet Alexandru Costin face to face, since we’ve had conversations via email for years.

Another unforgettable piece of this event overall has to be reiterated: Marc Andreessen’s keynote, where he discussed PHP as being one of the first really developer-centric programming languages and picking up where Java left off in this respect, really got the attention of everyone there as well as the media. The Slashdot article on Marc’s comments will give you a flavor of the discussion, and it’s really tipped off something very large. We will see more of this debate in the months and years to come.

If I had to pick one thing as a chief takeaway from this show, it would have to be just being able to meet all these other great developers and share ideas. This was the first Zend/PHP conference, and I’m really looking forward to next year.

Zend/PHP Conference, Days 1 & 2

I’ve been here the past couple of days at the Zend PHP conference in Burlingame. Quite a good show all around so far. This is the first event of a planned annual series, and from what I hear the attendance has greatly exceeded expectations. Looking forward to many more of these.

Yesterday I attended an all-day refresher session given by Marco Tabini. This was actually a really helpful session – reviewing all the basic nuts and bolts of PHP to provide myself with a more well-rounded understanding of all that hacking I’ve been doing over the past few years.

Did get to briefly talk with Chris Shiflett to discuss some security-related issues as well as get his take on PHP books. His own book Essential PHP Security is due out any day. Looking forward to his presentation this coming Friday morning.

The nice thing about this event has been it’s relatively small size, and the openness of the people that are attending. I have met a bunch of really cool, really intelligent PHP developers, and was able to discuss some real meaningful issues at a high level.

Today was a full day of breakout sessions and keynotes. I think my brain is reaching capacity for now. Thankfully it’s about time to wind down to open the exhibit booths and get some free snacks and libations.

Blueberry Tiger

While my old PowerBook waits in the shop for a new motherboard (yes, the PB12 shall rise again), I am using a blueberry iMac. This was a low-end 350 MHz type, and it has a decent 576 MB RAM installed.

I had no problem wiping the system and installing Panther. But of course I can’t leave well enough alone, so I set myself about the task of figuring out a way to install Tiger on this old heap.

Now given that Tiger ships on DVD, and given that the blueberry gumdrop sitting on my desk has no DVD drive, nor FireWire port for booting up from an external DVD drive, this was a bit of a problem. Sure, I had a whole bunch of spare external hard drives, and some even had USB. This might work.

So the first thing I did was to borrow my wife’s iBook, which had the internal DVD drive. I took one of the old external drives, in this case a LaCie 20GB external 2.5″ Pocket Drive with both USB and FireWire ports, and plugged it in to the iBook. I then installed Tiger onto the LaCie drive. In the process, I experimented with the custom installations. This iMac has a 7 GB internal hard drive, and the default Tiger install is around 4.7 GB. I’d like to add an order of fries with that whopper. Interestingly, I found that if I remove all but the Epson printer drivers from the install configuration, I could save myself a full gigabyte of disk space. Removing all but the Traditional Chinese language translations saved me almost as much. I got the final instal down below 2.8 GB (although that seems to balloon up later…)

The installation completed rather quickly over a FireWire cable, and now I had a good lightweight install of Tiger on the LaCie drive. I tested a boot of it to the iBook and it worked perfectly.

Now I went over to the iMac. First, I plugged in the LaCie via USB to the iMac. This drive requires external power if you’re using USB, so I had to plug it in to it’s A/C adapter. I popped in a Panther install CD and ran the installer. The computer reboots off the CD and I now can do things to the internal drive via Disk Utility, available from the Installer drop-down menu. I clicked the Restore tab and dragged the external LaCie icon to the Source field, and the internal drive to the Destination field. For good measure, I clicked the Erase Destination preference. I clicked the Restore button, and let ‘er rip. Went to bed. These iMacs were notoriously quiet, so I couldn’t hear a thing during the cutover process, and slept soundly

Next morning I checked and the process seemed to work. Unplugged the LaCie, set my Startup Disk preference, and it rebooted into Tiger. After a billion updates, she’s running 10.4.2.

Now, this thing is of course slow, but surprisingly responsive enough to get basic work done. I am running BBEdit, Interarchy 7, and surprisingly, Dreamweaver 8 effectively. Dreamweaver is a bit of a hog, but I’m mostly just working in code view and applying some PHP behaviors and using file synchronization. Really, with the code completion, it’s still faster than typing in BBEdit. I’m currently installing PHP5 and MySQL 4.1, and those ran OK under 10.3, at least good enough for local development.

Well, good. Now to install that image on the old Tangerine 266 MHz box…