RSS

Job Search Update

0 Comments | This entry was posted on Jun 08 2009

I’ve been searching heavily for a web app job in the Seattle/Tacoma area for the last month, and despite the fact that I’ve probably applied to 200+ jobs, I’ve only ever spoken to someone about maybe 40 of those jobs, and I haven’t yet found someone who will give me an in-person interview (I even state up-front that I’ll pay for all my travel costs for an interview).

Since Rice’s CS curriculum really pushes OO Design in Dr. Nguyen and Dr. Wong courses, I feel like I have a more-solid-than-most command of OOD and (some) design patterns. Combine that with my 6 years of writing web apps in PHP, and I feel like I’m a pretty strong candidate for all entry-level PHP dev jobs, and probaly most mid-level ones. Good fundamentals, experience and samples to back it up. And most of all, I am very confident in my ability to tackle a design problem in PHP.

But obviously that’s not good enough, and I need to do more to grab hiring managers’ attentions. I’ve recently been trying to bolster my portfolio with an impressive app build on the industry’s latest and greatest technologies. Right now I’m working on my “car identification” site, WhatTheCar, and I’ve been building it using as much prewritten good code as possible: CodeIgniter PHP RAD Framework, FancyUpload (used by Flickr) by digitarald which uses the MooTools js library, reCAPTCHA (used by fb and craigslist), the Template library by Collin Williams, the Redux Authentication Library, base styles from BlueprintCSS, and prototype and scriptaculous js libraries for effects. Integrating all these different components into WhatTheCar will at least give me more experience in engineering complete application systems from an existing codebase.

But I have no idea how long this site is going to take, and I need a job now. So I’ve decided I need to maximize my immediate future in getting noticed. And one of the ways I think that I can do that is by getting Zend Certified for PHP5.

So over the next few days I’ll go over the study guide for the certification exam to get a better idea of what certification entails. And then if I get certified I can use the certification as an extra testament to my php experience.

Cheers.

Current LaSalon.com design

1 Comment | This entry was posted on May 20 2009
Latest LaSalon.com Design

Latest LaSalon.com Design

Village La Salon - Draft 1

2 Comments | This entry was posted on Mar 18 2009

I’m currently working on the website for a local salon and spa in Rice Village, Village la Salon.  They own a pretty fancy domain name (lasalon.com) so I’m trying to create an equally fancy design for them.

Here’s my first draft that I showed them.  They’ve asked for a steeper angle on the photo to show more of the salon.  I also think that the colors are too flashy, and I should scale back the design to something a little less colorful.

A screenshot of the first draft for the salon site

System Fail

0 Comments | This entry was posted on Feb 20 2009

COMP410 Presentation

0 Comments | This entry was posted on Dec 03 2008

 

Deceit, More than Just a game

Deceit, More than Just a game

Intra-site Server Hopping

0 Comments | This entry was posted on Nov 25 2008

Have you ever had to add dynamic features to an existing website that ran on a webserver that only supported static HTML?  I’ve been presented with this situation twice in the last six months, and I’ve solved it the same way.  I use a different server with the capabilities I need, clone the layout, and host the few dynamic pages on this other server.  Here’s the two examples.

bakercollege.net was running on JSP/Tomcat when I inherited it.  I’d never written a JSP before and I didn’t see any need to spend the time, so I just threw some static HTML pages up with a fresh Layout.  At the beginning of the academic year, the college president asked me to add a couple “Anonymous E-mail” forms.  The only way I knew how to do this was with PHP’s mail function.  So I threw up a couple new pages in a directory on THIS site, http://justinfaulkner.com, I copied the layout from the main site so as not to throw off the users, and I linked to the forms from bakercollege.net.

Here’s some screens.  First, here’s bakercollege.net, the static webserver:

 

bakercollege.net running on a static webserver

bakercollege.net running on a static webserver

 

 

Now, here’s the cloned layout on a page on justinfaulkner.com.

 

Here's a form from bakercollege.net sneakily hosted on justinfaulkner.com

Here's a form from bakercollege.net sneakily hosted on justinfaulkner.com

 

And here’s the other (more recent) example.  The Rice Computer Science Club Website runs on Rice’s RUF (Rice Unix Facility)  servers.  As far as I know, it doesn’t support any server-side scripting languages.  When we needed a Polling application, I immediately sought a way to host PHP, and temporarily converted http://justinlol.com into our Poll Booth.  Once again, I cloned the site look-and-feel and hosted a couple pages on justinlol.com that I linked to from http://www.ruf.rice.edu/~geeks .  Here are the shots:

This is the Rice Computer Science Club Website:

 

The Rice CS Club Website.  Notice the Look & Feel and URL

The Rice CS Club Website. Notice the Look & Feel and URL

And now here’s the cloned pages running on justinlol.com

 

Here I'm trying to hide the fact that this page is on a different server than the main CS Club Website

Here I'm trying to hide the fact that this page is on a different server than the main CS Club Website

So I guess my question now is, “Is this ethical?”  

There is a certain trust between the Look & Feel of a site, and the identity of that site.  Am I allowed to define the Rice CS Club Website to exist on both the Rice RUF and on JustinLOL.com?  I would say so: I’m the webmaster, I define where the pages are stored.  

But then again, am I weakening that trust in website brand identity by legitimately splitting up the site between servers/domains like this?  These two independent servers may both host content from the same party (me) but who’s to say that other people won’t copy the Rice CS Club layout and try to pretend like they’re legitimate off-server clones?  And even scarier, what if you were to arrive at one of these clones from a link on my site?  Would you even notice?  What if, say, a text-based ad from AdSense on bakercollege.net just happened to point to a bakercollege.net illegitimate clone?

I feel like my uses of multiple servers to host dynamic content and static content for the same site is fair, although perhaps I should warn the user that they are technically leaving the Rice-managed web-world, lest someone notice on their own and feel like I’ve breached their privacy.

MySQL INSERT Syntax Error key

2 Comments | This entry was posted on Nov 24 2008

Problem

I was working on the Vote page for the Rice Computer Science Club for a Tshirt design and I got this error.

Error inserting into databse: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key) VALUES ('asdfasd','asdfasdf','283a7384578c2')' at line 1


And here’s the whole query…

INSERT INTO users (netid,name,key) VALUES ('asdfasd','asdfasdf','283a7384578c2')

The users table structure:
-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `userid` int(11) NOT NULL auto_increment,
  `netid` varchar(7) NOT NULL default '',
  `name` varchar(40) NOT NULL default '',
  `key` varchar(64) NOT NULL default '',
  PRIMARY KEY  (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
For the life of me, I couldn’t figure out what was going on.  I read through the entire MySQL Manual on doing INSERTS.  As far as I could tell, I was doing everything exactly right.

 

Solution
Turns out it’s the word “key”.  There’s obviously other meanings for “key” than just the name of my table column, and unless you distinguish the column name from the other “key”, MySQL will get confused.
Surround your potentially-confusing column names with `s, like so:

 

INSERT INTO users (netid,name,`key`) VALUES ('asdfasd','asdfasdf','283a7384578c2')
` <- the apostrophe-ish mark sharing a key with the ~.

How popular are File Sharing sites?

0 Comments | This entry was posted on Nov 23 2008

I was curious how much traffic Bittorrent tracker sites actually got, so I headed over to Alexa.com and checked out their Top-100 Rankings for the United States.  The top two tracker sites in the States are The Pirate Bay and mininova.org, but they rank in at a surprisingly low 91 and 99 out of 100 for traffic rank (defined here).

Non-Bittorrent sharing site RapidShare Ranks in at an impressive 31.

Gmail’s down! What do I do!?!

1 Comment | This entry was posted on Aug 11 2008

I’ve become painfully aware of how Gmail dependant I am.  I was expecting an e-mail from a friend when their Gmail account went down.  By the time they’d sent the message from a different account, my Gmail account had kicked me out to this error screen:

Gmail's down!

 

In Google Talk, slowly all of my buddies signed off.  I even got a few messages via AIM lamenting their broken Gmails.  A quick Google News search pulled up a few articles about the outage.  Here’s a post from the Gmail Help Discussion
The Gmail team is currently aware of a subset of users being affected
by the 502 error on login. Our engineers are looking into the issue
and we will provide updates here as they become available.
Thanks,
Gmail Guide

At first I was pretty sure that “subset” meant “majority” but now I’m not so sure.  Oddly enough, my father’s still signed into Google Talk.  And I can actually access his e-mail, no problem. 
Regardless, I can’t read e-mails I need to read, I can’t send e-mails I need to send, and I can’t talk via Google Chat to the people who are perma-signed-in to Gmail.
And… this post is moot.  Gmail’s back.  Woot.

Object-oriented PHP and Codeigniter

1 Comment | This entry was posted on Aug 08 2008

My project of the moment is my restaurant review concept, Yum Houston.  I’ve been working for about three weeks and I’m now in the early development.  I’m starting off by building a large codebase of classes that I’ll need.  My framework of choice for going from idea-to-product fast is (as always) Codeigniter.  Armed with my trusty-duty sidekicks Dreamweaver CS3 and Filezilla, development has been quick and easy =).  I also recently moved off my terrible dedicated server onto a new Grid account with Mediatemple (mt).  Everything is fast, easy to use, and I’m extremely motivated.

I’m taking my time on this project, trying to make sure I code things right the first time.  I’m trying to use as much object-oriented (OO) principles as seem appropriate as I go (you know, make the Rice CS profs proud).  I’ve developed using Codeigniter (CI)  several times before, but exactly how to apply my in-class OO knowledge in the Codeigniter framework escapes me at times:  I’m usually extremely uncertain as to where I should create my own classes that actually DO STUFF.  There are these controller and model classes floating around, but where do I put my class “Restaurant” that knows its location and its food type and knows how to display itself?

I stumbled across a great introduction to writing applications using CI on Jim O’Halloran’s Weblog – I ended up deciding to create a “single record” class Restaurant that was a model.  I gave it the appropriate fields (location, food type, name) and wrote a load($id) method.  I’ve honestly never written OO code that accessed a database before, so the concept is new to me.  Generally, you load the data from the db into your object:  my load($id) function takes a restaurant id, looks up its name, location, and food types, and sets its fields to the appropriate values.  Getters and setters let me modify the object.  And when I’m ready to save it back in the database, my save() function does just that.  This is apparantly really common, I remember seeing it before.  Up til now, I just havn’t realised where I could use it.

This brings me to the second point of this post.  I’ve been happily coding for about a week now on my new (mt) account with CI.  While I’m developing all sorts of errors show up, usually because I’m careless, or I don’t quite remember PHP syntax or CI convention.  While I was trying to code all “OOey” I tried modifying the visibility of some of my class fields.  PHP kept throwing my “privates” back in my face, though.  public, protected, it didn’t matter.  I also tried privatizing one of my controller functions.  When private function function_name() didn’t work, I even tried swapping the function and private, in a last ditch attempt.

It didn’t take long before I realised that the keyword var seemed to always solve my field problems.  And the var keyword looks so very old in my nubile PHP-coder eyes.  That’s when I decided to throw up a phpinfo() in my script.

Sure enough,

PHP Version 4.4.8

I’m terrified that it’s taken me this long to figure out that I’m not running “all new, with great OO!” PHP5.  All that I even noticed was that __construct() and private never worked.  What were some other clues that could have tipped me off?

Well, anyway, I’ll be sure to look into how to switch to PHP5 tomorrow — It’s just a setting in the (mt) control panel, I’m sure.  And then hopefully I’ll be off __construct()ing and privating in no time.