Uncategorized (33)

What PHP Needs!

I’ve been thinking about the things PHP needs to remain relevant. I don’t mean to say that it is becoming irrelevant, but as many people are becoming wooed by Ruby on Rails, the way PHP is done is becoming more and more … tiresome.

We like Rails because, well, it’s just cool. PHP as a language isn’t all that great, just as Ruby as a language is yet another scripting language, however the framework makes all the difference. As I mentioned, Rails is great because it take care of a lot of tedium and makes programming actually kinda fun. PHP has several frameworks available, but nothing is standard. And that’s a problem. These projects, even the popular ones, remain on the fringe of PHP development; each framework is competing with the others for users and developers. We’re playing a game of divide and conquer on ourselves. The winner might be Ruby on Rails, or whatever the next new language/framework will be.

Install PHP mb_string in Fedora

Q: How do you install the mb_string PHP extension in Fedora?

A: % sudo yum install php-mbstring

It’s really painless. Answer a few y/n questions (probably want to answer “yes” to all of them), restart apache, and you’re done! Also see my recent post on adding gd support to PHP in Fedora.

__CMS milestone

I still haven’t decided on a name for my CMS, though I have a couple of good ideas that I’m going to think about in the next couple days/weeks. On the same note I’m also considering a name for my company. My First/Last name works well enough, but I’d like something a bit more formal sounding, and since my San Diego business tax is going to be due soon, now is a good time to decide on something official.

On to the milestone: The CMS is finally at a point where the content management works all on its own. New pages and content can all be edited/added/deleted from within the CMS itself. There are still several major things required on the backend, but a significant number of those items should take a very small amount of time to fix/implement (for example, only displaying navigation links to pages a user has privileges for).

I never finish anyth

One of the latest tees from ThinkGeek is probably one of my favorites so far. White text on a black shirt says “I Never Finish Anyth”. Product page can be found here.

You gotta admit this is pretty funny – especially if you’re somebody like me with a lot of interests, but never the time to dedicate enough energy to all of them. Well, usually in hobby land, at least. Work is another story.

DFL major release!

Lots of news over here at the Digital Fish Library. We just moved the production, qa, and dev staging sites to our new servers over the weekend, and at the same time made some major updates public that will surely allow the website to grow with few pains over the next several months.

1) Family accounts: read-up on various fish families we have in our digital collection. Be forewarned that a lot of the content is not yet available because our editing timeline is a bit behind schedule.
2) Different browse views: peruse the collection by recent additions/edits, species name, family name, and soon by Order.
3) Habitat identification tags: quick visual reference of what types of habitats the fish are typically found in.
4) RSS Feeds! We now have an RSS feed of all recently updated species accounts. You can also plug it into your Apple RSS screen saver (how cool!): http://www.digitalfishlibrary.org/feed/. We have it running on the active display in our lab’s waiting area right now.
5) Lots more content (just about). We have a lot more content going up today. Stay tuned.
6) Cross-linking: We link back and forth between family and species accounts, as well as to the SIO MVC database and Fishbase.
7) Photos: we’re in the process of adding photographs of the fish to the species accounts. It just makes everything look nice and museum-like.

My last day on the project is Oct 23, but you can expect a few more minor updates before I leave.

Anchor tags and Safari

I found an interesting “bug” in Apple’s Safari today while updating a page on Flood’s deprecating website (new version coming up in September). First of all, for the record, nobody on the team designed the template currently in-use (Aug, 2006).

I just needed to put an anchor near the end of the page… pretty standard stuff. The problem is that Safari wasn’t jumping down the page – only a couple lines. Odd because IE and FireFox jumped just fine. I’d never had that problem before, but I traced it down to something pretty simple (and maybe even conceivably reasonable). Safari jumps to the beginning of the paragraph or div that the named anchor resides in. The problem with the Flood page is that the original designers didn’t really use p tags, or divs, for that matter (in fact, simply adding a p tag will disrupt the page design… go figure). So Safari would simply jump down to just below the heading tag.

The fix? I put empty div tags around the a name tags. Problem solved!

Mr. Fish Lite is coming

If you’re interested in the DFL project, you’ll be happy to know that German and I are tasked with a bit of a crack programming job in the next week or so. Actually, we told our boss the idea we had about making a “Lite” version of the data viewer program that runs through some fancy AJAX and DOM scripting, with a Java frontend on VTK for the image production.

Crash course on DOM here I come!


Siggraph2006 Poster

We got the good news today: our poster for Siggraph2006 has been accepted!

Look for Interactive 3D Graphics for Web-based Data Analysis and Visualization for the Digital Fish Library (DFL). I likely won’t be there for the conference, but German will – he is the first author, after all.

DFL Publications.

Caching HTML Output with Smarty

I’ve begun using the Smarty template engine for my projects requiring dynamic content – you know, the good ol’ MVC (model-view-controller) approach to (web) applications. Because the sites I work on aren’t particularly high-traffic, I never really thought too hard about caching… until I actually began thinking about caching. The question is “why not?”.

With servers as quick as they are these days, even highly dynamic pages can be processed rather quickly. On one of my development machines, I’m getting between 65 and 70 fulfilled requests per second on a page with little in the way of optimization and no caching. By adding a simple caching scheme to this page via some built-in Smarty functions, that number jumps to about 105-110 fulfilled requests per second. Super!

Honestly, it’s so simple I might as well just point you to the appropriate documentation that tells you how to do it: HERE. The most important thing to notice is that you at least need $smarty->caching=TRUE;, and for goodness sakes, make sure your cache directory is writable by Apache (I would also make sure to either have your Smarty directory outside the site root or disallow access via a .htaccess file).

Here’s to a 70% performance boost!

DFL site update

I’ve been making a lot of minor updates to the DFL website. I finally got around to making the site look decent in Internet Explorer. I really should have done it earlier. The only major rendering differences between the Safari/Opera/Firefox camp and IE is the location of the main page block: IE positioned against the left edge of the screen, S/O/F is centered (the way it’s intended). Essentially IE doesn’t recognize the align=center attribute on div tags to mean the div should be centered on the page. Oh well. You win some, you lose some.

Near-term plans:

  • The hierarchy algorithms I’m working on for my own personal (read: consulting job) use are going to be put to use to create a fish cladogram – essentially a tree diagram showing the relationships between different species of fish.
  • Carina is workring on writing and rewriting content for the site – make it a bit more user-friendly.
  • We’re going to be adding habitat profiles for all the fish in coming weeks. Among them: Fresh water, Pelagic and deep sea, intertidal, hard bottom, soft bottom, neritic, and continental slope.
  • Glossary of terms: Carina is collaborating with the Phil Hastings and HJ Walker on putting together a glossary of terms we’re going to be using on the site.

I’ll post updates as new features are added.